diff options
-rw-r--r-- | gas/ChangeLog | 5 | ||||
-rw-r--r-- | gas/config/tc-arm.c | 36 | ||||
-rw-r--r-- | gas/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gas/testsuite/gas/arm/thumb32.d | 52 | ||||
-rw-r--r-- | gas/testsuite/gas/arm/thumb32.s | 12 |
5 files changed, 84 insertions, 26 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog index cc855cd..ac2afd0 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,5 +1,10 @@ 2009-01-29 Mark Mitchell <mark@codesourcery.com> + * config/tc-arm.c (insns): Add qasx, qsax, shasx, shsax, ssax, + uasx, uhasx, uhsx, uqasx, uqsax, usax. + +2009-01-29 Mark Mitchell <mark@codesourcery.com> + * config/tc-arm.c (insns): Correct encoding of qadd, qdadd, qsub, qdsub in Thumb-2 mode. diff --git a/gas/config/tc-arm.c b/gas/config/tc-arm.c index 0d4d005..8472798 100644 --- a/gas/config/tc-arm.c +++ b/gas/config/tc-arm.c @@ -15283,40 +15283,64 @@ static const struct asm_opcode insns[] = TCE(pkhtb, 6800050, eac00020, 4, (RRnpc, RRnpc, RRnpc, oSHar), pkhtb, t_pkhtb), TCE(qadd16, 6200f10, fa90f010, 3, (RRnpc, RRnpc, RRnpc), rd_rn_rm, t_simd), TCE(qadd8, 6200f90, fa80f010, 3, (RRnpc, RRnpc, RRnpc), rd_rn_rm, t_simd), + TCE(qasx, 6200f30, faa0f010, 3, (RRnpc, RRnpc, RRnpc), rd_rn_rm, t_simd), + /* Old name for QASX. */ TCE(qaddsubx, 6200f30, faa0f010, 3, (RRnpc, RRnpc, RRnpc), rd_rn_rm, t_simd), + TCE(qsax, 6200f50, fae0f010, 3, (RRnpc, RRnpc, RRnpc), rd_rn_rm, t_simd), + /* Old name for QSAX. */ + TCE(qsubaddx, 6200f50, fae0f010, 3, (RRnpc, RRnpc, RRnpc), rd_rn_rm, t_simd), TCE(qsub16, 6200f70, fad0f010, 3, (RRnpc, RRnpc, RRnpc), rd_rn_rm, t_simd), TCE(qsub8, 6200ff0, fac0f010, 3, (RRnpc, RRnpc, RRnpc), rd_rn_rm, t_simd), - TCE(qsubaddx, 6200f50, fae0f010, 3, (RRnpc, RRnpc, RRnpc), rd_rn_rm, t_simd), TCE(sadd16, 6100f10, fa90f000, 3, (RRnpc, RRnpc, RRnpc), rd_rn_rm, t_simd), TCE(sadd8, 6100f90, fa80f000, 3, (RRnpc, RRnpc, RRnpc), rd_rn_rm, t_simd), + TCE(sasx, 6100f30, faa0f000, 3, (RRnpc, RRnpc, RRnpc), rd_rn_rm, t_simd), + /* Old name for SASX. */ TCE(saddsubx, 6100f30, faa0f000, 3, (RRnpc, RRnpc, RRnpc), rd_rn_rm, t_simd), TCE(shadd16, 6300f10, fa90f020, 3, (RRnpc, RRnpc, RRnpc), rd_rn_rm, t_simd), TCE(shadd8, 6300f90, fa80f020, 3, (RRnpc, RRnpc, RRnpc), rd_rn_rm, t_simd), + TCE(shasx, 6300f30, faa0f020, 3, (RRnpc, RRnpc, RRnpc), rd_rn_rm, t_simd), + /* Old name for SHASX. */ TCE(shaddsubx, 6300f30, faa0f020, 3, (RRnpc, RRnpc, RRnpc), rd_rn_rm, t_simd), + TCE(shsax, 6300f50, fae0f020, 3, (RRnpc, RRnpc, RRnpc), rd_rn_rm, t_simd), + /* Old name for SHSAX. */ + TCE(shsubaddx, 6300f50, fae0f020, 3, (RRnpc, RRnpc, RRnpc), rd_rn_rm, t_simd), TCE(shsub16, 6300f70, fad0f020, 3, (RRnpc, RRnpc, RRnpc), rd_rn_rm, t_simd), TCE(shsub8, 6300ff0, fac0f020, 3, (RRnpc, RRnpc, RRnpc), rd_rn_rm, t_simd), - TCE(shsubaddx, 6300f50, fae0f020, 3, (RRnpc, RRnpc, RRnpc), rd_rn_rm, t_simd), + TCE(ssax, 6100f50, fae0f000, 3, (RRnpc, RRnpc, RRnpc), rd_rn_rm, t_simd), + /* Old name for SSAX. */ + TCE(ssubaddx, 6100f50, fae0f000, 3, (RRnpc, RRnpc, RRnpc), rd_rn_rm, t_simd), TCE(ssub16, 6100f70, fad0f000, 3, (RRnpc, RRnpc, RRnpc), rd_rn_rm, t_simd), TCE(ssub8, 6100ff0, fac0f000, 3, (RRnpc, RRnpc, RRnpc), rd_rn_rm, t_simd), - TCE(ssubaddx, 6100f50, fae0f000, 3, (RRnpc, RRnpc, RRnpc), rd_rn_rm, t_simd), TCE(uadd16, 6500f10, fa90f040, 3, (RRnpc, RRnpc, RRnpc), rd_rn_rm, t_simd), TCE(uadd8, 6500f90, fa80f040, 3, (RRnpc, RRnpc, RRnpc), rd_rn_rm, t_simd), + TCE(uasx, 6500f30, faa0f040, 3, (RRnpc, RRnpc, RRnpc), rd_rn_rm, t_simd), + /* Old name for UASX. */ TCE(uaddsubx, 6500f30, faa0f040, 3, (RRnpc, RRnpc, RRnpc), rd_rn_rm, t_simd), TCE(uhadd16, 6700f10, fa90f060, 3, (RRnpc, RRnpc, RRnpc), rd_rn_rm, t_simd), TCE(uhadd8, 6700f90, fa80f060, 3, (RRnpc, RRnpc, RRnpc), rd_rn_rm, t_simd), + TCE(uhasx, 6700f30, faa0f060, 3, (RRnpc, RRnpc, RRnpc), rd_rn_rm, t_simd), + /* Old name for UHASX. */ TCE(uhaddsubx, 6700f30, faa0f060, 3, (RRnpc, RRnpc, RRnpc), rd_rn_rm, t_simd), + TCE(uhsax, 6700f50, fae0f060, 3, (RRnpc, RRnpc, RRnpc), rd_rn_rm, t_simd), + /* Old name for UHSAX. */ + TCE(uhsubaddx, 6700f50, fae0f060, 3, (RRnpc, RRnpc, RRnpc), rd_rn_rm, t_simd), TCE(uhsub16, 6700f70, fad0f060, 3, (RRnpc, RRnpc, RRnpc), rd_rn_rm, t_simd), TCE(uhsub8, 6700ff0, fac0f060, 3, (RRnpc, RRnpc, RRnpc), rd_rn_rm, t_simd), - TCE(uhsubaddx, 6700f50, fae0f060, 3, (RRnpc, RRnpc, RRnpc), rd_rn_rm, t_simd), TCE(uqadd16, 6600f10, fa90f050, 3, (RRnpc, RRnpc, RRnpc), rd_rn_rm, t_simd), TCE(uqadd8, 6600f90, fa80f050, 3, (RRnpc, RRnpc, RRnpc), rd_rn_rm, t_simd), + TCE(uqasx, 6600f30, faa0f050, 3, (RRnpc, RRnpc, RRnpc), rd_rn_rm, t_simd), + /* Old name for UQASX. */ TCE(uqaddsubx, 6600f30, faa0f050, 3, (RRnpc, RRnpc, RRnpc), rd_rn_rm, t_simd), + TCE(uqsax, 6600f50, fae0f050, 3, (RRnpc, RRnpc, RRnpc), rd_rn_rm, t_simd), + /* Old name for UQSAX. */ + TCE(uqsubaddx, 6600f50, fae0f050, 3, (RRnpc, RRnpc, RRnpc), rd_rn_rm, t_simd), TCE(uqsub16, 6600f70, fad0f050, 3, (RRnpc, RRnpc, RRnpc), rd_rn_rm, t_simd), TCE(uqsub8, 6600ff0, fac0f050, 3, (RRnpc, RRnpc, RRnpc), rd_rn_rm, t_simd), - TCE(uqsubaddx, 6600f50, fae0f050, 3, (RRnpc, RRnpc, RRnpc), rd_rn_rm, t_simd), TCE(usub16, 6500f70, fad0f040, 3, (RRnpc, RRnpc, RRnpc), rd_rn_rm, t_simd), - TCE(usub8, 6500ff0, fac0f040, 3, (RRnpc, RRnpc, RRnpc), rd_rn_rm, t_simd), + TCE(usax, 6500f50, fae0f040, 3, (RRnpc, RRnpc, RRnpc), rd_rn_rm, t_simd), + /* Old name for USAX. */ TCE(usubaddx, 6500f50, fae0f040, 3, (RRnpc, RRnpc, RRnpc), rd_rn_rm, t_simd), + TCE(usub8, 6500ff0, fac0f040, 3, (RRnpc, RRnpc, RRnpc), rd_rn_rm, t_simd), TUF(rfeia, 8900a00, e990c000, 1, (RRw), rfe, rfe), UF(rfeib, 9900a00, 1, (RRw), rfe), UF(rfeda, 8100a00, 1, (RRw), rfe), diff --git a/gas/testsuite/ChangeLog b/gas/testsuite/ChangeLog index 7bc3d8e..8895366 100644 --- a/gas/testsuite/ChangeLog +++ b/gas/testsuite/ChangeLog @@ -1,5 +1,10 @@ 2009-01-29 Mark Mitchell <mark@codesourcery.com> + * gas/arm/thumb32.s (qadd): Add tests for them. + * gas/arm/thumb32.d: Adjust accordingly. + +2009-01-29 Mark Mitchell <mark@codesourcery.com> + * gas/arm/thumb32.s (qadd): Add qadd, qdadd, qsub, and qdsub. * gas/arm/thumb32.d: Likewise. diff --git a/gas/testsuite/gas/arm/thumb32.d b/gas/testsuite/gas/arm/thumb32.d index 406100c..e77ed2f 100644 --- a/gas/testsuite/gas/arm/thumb32.d +++ b/gas/testsuite/gas/arm/thumb32.d @@ -686,42 +686,54 @@ Disassembly of section .text: 0[0-9a-f]+ <[^>]+> fa92 f113 qadd16 r1, r2, r3 0[0-9a-f]+ <[^>]+> fa82 f113 qadd8 r1, r2, r3 0[0-9a-f]+ <[^>]+> faa2 f113 qaddsubx r1, r2, r3 +0[0-9a-f]+ <[^>]+> faa2 f113 qaddsubx r1, r2, r3 0[0-9a-f]+ <[^>]+> fa82 f193 qdadd r1, r2, r3 0[0-9a-f]+ <[^>]+> fa82 f1b3 qdsub r1, r2, r3 0[0-9a-f]+ <[^>]+> fa82 f1a3 qsub r1, r2, r3 0[0-9a-f]+ <[^>]+> fad2 f113 qsub16 r1, r2, r3 0[0-9a-f]+ <[^>]+> fac2 f113 qsub8 r1, r2, r3 0[0-9a-f]+ <[^>]+> fae2 f113 qsubaddx r1, r2, r3 +0[0-9a-f]+ <[^>]+> fae2 f113 qsubaddx r1, r2, r3 0[0-9a-f]+ <[^>]+> fa92 f103 sadd16 r1, r2, r3 0[0-9a-f]+ <[^>]+> fa82 f103 sadd8 r1, r2, r3 0[0-9a-f]+ <[^>]+> faa2 f103 saddsubx r1, r2, r3 +0[0-9a-f]+ <[^>]+> faa2 f103 saddsubx r1, r2, r3 0[0-9a-f]+ <[^>]+> fad2 f103 ssub16 r1, r2, r3 0[0-9a-f]+ <[^>]+> fac2 f103 ssub8 r1, r2, r3 0[0-9a-f]+ <[^>]+> fae2 f103 ssubaddx r1, r2, r3 +0[0-9a-f]+ <[^>]+> fae2 f103 ssubaddx r1, r2, r3 0[0-9a-f]+ <[^>]+> fa92 f123 shadd16 r1, r2, r3 0[0-9a-f]+ <[^>]+> fa82 f123 shadd8 r1, r2, r3 0[0-9a-f]+ <[^>]+> faa2 f123 shaddsubx r1, r2, r3 +0[0-9a-f]+ <[^>]+> faa2 f123 shaddsubx r1, r2, r3 0[0-9a-f]+ <[^>]+> fad2 f123 shsub16 r1, r2, r3 0[0-9a-f]+ <[^>]+> fac2 f123 shsub8 r1, r2, r3 0[0-9a-f]+ <[^>]+> fae2 f123 shsubaddx r1, r2, r3 +0[0-9a-f]+ <[^>]+> fae2 f123 shsubaddx r1, r2, r3 0[0-9a-f]+ <[^>]+> fa92 f143 uadd16 r1, r2, r3 0[0-9a-f]+ <[^>]+> fa82 f143 uadd8 r1, r2, r3 0[0-9a-f]+ <[^>]+> faa2 f143 uaddsubx r1, r2, r3 +0[0-9a-f]+ <[^>]+> faa2 f143 uaddsubx r1, r2, r3 0[0-9a-f]+ <[^>]+> fad2 f143 usub16 r1, r2, r3 0[0-9a-f]+ <[^>]+> fac2 f143 usub8 r1, r2, r3 0[0-9a-f]+ <[^>]+> fae2 f143 usubaddx r1, r2, r3 +0[0-9a-f]+ <[^>]+> fae2 f143 usubaddx r1, r2, r3 0[0-9a-f]+ <[^>]+> fa92 f163 uhadd16 r1, r2, r3 0[0-9a-f]+ <[^>]+> fa82 f163 uhadd8 r1, r2, r3 0[0-9a-f]+ <[^>]+> faa2 f163 uhaddsubx r1, r2, r3 +0[0-9a-f]+ <[^>]+> faa2 f163 uhaddsubx r1, r2, r3 0[0-9a-f]+ <[^>]+> fad2 f163 uhsub16 r1, r2, r3 0[0-9a-f]+ <[^>]+> fac2 f163 uhsub8 r1, r2, r3 0[0-9a-f]+ <[^>]+> fae2 f163 uhsubaddx r1, r2, r3 +0[0-9a-f]+ <[^>]+> fae2 f163 uhsubaddx r1, r2, r3 0[0-9a-f]+ <[^>]+> fa92 f153 uqadd16 r1, r2, r3 0[0-9a-f]+ <[^>]+> fa82 f153 uqadd8 r1, r2, r3 0[0-9a-f]+ <[^>]+> faa2 f153 uqaddsubx r1, r2, r3 +0[0-9a-f]+ <[^>]+> faa2 f153 uqaddsubx r1, r2, r3 0[0-9a-f]+ <[^>]+> fad2 f153 uqsub16 r1, r2, r3 0[0-9a-f]+ <[^>]+> fac2 f153 uqsub8 r1, r2, r3 0[0-9a-f]+ <[^>]+> fae2 f153 uqsubaddx r1, r2, r3 +0[0-9a-f]+ <[^>]+> fae2 f153 uqsubaddx r1, r2, r3 0[0-9a-f]+ <[^>]+> faa2 f183 sel r1, r2, r3 0[0-9a-f]+ <[^>]+> ba00 rev r0, r0 0[0-9a-f]+ <[^>]+> fa90 f080 rev\.w r0, r0 @@ -917,26 +929,26 @@ Disassembly of section .text: 0[0-9a-f]+ <[^>]+> fa52 f183 uxtab r1, r2, r3 0[0-9a-f]+ <[^>]+> fa32 f183 uxtab16 r1, r2, r3 0[0-9a-f]+ <[^>]+> fa12 f183 uxtah r1, r2, r3 -0[0-9a-f]+ <[^>]+> f89f 12aa ldrb\.w r1, \[pc, #682\] ; 0+e12 <[^>]+> -0[0-9a-f]+ <[^>]+> f89f 1155 ldrb\.w r1, \[pc, #341\] ; 0+cc1 <[^>]+> -0[0-9a-f]+ <[^>]+> f81f 12aa ldrb\.w r1, \[pc, #-682\] ; 0+8c6 <[^>]+> -0[0-9a-f]+ <[^>]+> f81f 1155 ldrb\.w r1, \[pc, #-341\] ; 0+a1f <[^>]+> -0[0-9a-f]+ <[^>]+> f99f 12aa ldrsb\.w r1, \[pc, #682\] ; 0+e22 <[^>]+> -0[0-9a-f]+ <[^>]+> f99f 1155 ldrsb\.w r1, \[pc, #341\] ; 0+cd1 <[^>]+> -0[0-9a-f]+ <[^>]+> f91f 12aa ldrsb\.w r1, \[pc, #-682\] ; 0+8d6 <[^>]+> -0[0-9a-f]+ <[^>]+> f91f 1155 ldrsb\.w r1, \[pc, #-341\] ; 0+a2f <[^>]+> -0[0-9a-f]+ <[^>]+> f8bf 12aa ldrh\.w r1, \[pc, #682\] ; 0+e32 <[^>]+> -0[0-9a-f]+ <[^>]+> f8bf 1155 ldrh\.w r1, \[pc, #341\] ; 0+ce1 <[^>]+> -0[0-9a-f]+ <[^>]+> f83f 12aa ldrh\.w r1, \[pc, #-682\] ; 0+8e6 <[^>]+> -0[0-9a-f]+ <[^>]+> f83f 1155 ldrh\.w r1, \[pc, #-341\] ; 0+a3f <[^>]+> -0[0-9a-f]+ <[^>]+> f9bf 12aa ldrsh\.w r1, \[pc, #682\] ; 0+e42 <[^>]+> -0[0-9a-f]+ <[^>]+> f9bf 1155 ldrsh\.w r1, \[pc, #341\] ; 0+cf1 <[^>]+> -0[0-9a-f]+ <[^>]+> f93f 12aa ldrsh\.w r1, \[pc, #-682\] ; 0+8f6 <[^>]+> -0[0-9a-f]+ <[^>]+> f93f 1155 ldrsh\.w r1, \[pc, #-341\] ; 0+a4f <[^>]+> -0[0-9a-f]+ <[^>]+> f8df 12aa ldr\.w r1, \[pc, #682\] ; 0+e52 <[^>]+> -0[0-9a-f]+ <[^>]+> f8df 1155 ldr\.w r1, \[pc, #341\] ; 0+d01 <[^>]+> -0[0-9a-f]+ <[^>]+> f85f 12aa ldr\.w r1, \[pc, #-682\] ; 0+906 <[^>]+> -0[0-9a-f]+ <[^>]+> f85f 1155 ldr\.w r1, \[pc, #-341\] ; 0+a5f <[^>]+> +0[0-9a-f]+ <[^>]+> f89f 12aa ldrb\.w r1, \[pc, #682\] ; 0+e42 <[^>]+> +0[0-9a-f]+ <[^>]+> f89f 1155 ldrb\.w r1, \[pc, #341\] ; 0+cf1 <[^>]+> +0[0-9a-f]+ <[^>]+> f81f 12aa ldrb\.w r1, \[pc, #-682\] ; 0+8f6 <[^>]+> +0[0-9a-f]+ <[^>]+> f81f 1155 ldrb\.w r1, \[pc, #-341\] ; 0+a4f <[^>]+> +0[0-9a-f]+ <[^>]+> f99f 12aa ldrsb\.w r1, \[pc, #682\] ; 0+e52 <[^>]+> +0[0-9a-f]+ <[^>]+> f99f 1155 ldrsb\.w r1, \[pc, #341\] ; 0+d01 <[^>]+> +0[0-9a-f]+ <[^>]+> f91f 12aa ldrsb\.w r1, \[pc, #-682\] ; 0+906 <[^>]+> +0[0-9a-f]+ <[^>]+> f91f 1155 ldrsb\.w r1, \[pc, #-341\] ; 0+a5f <[^>]+> +0[0-9a-f]+ <[^>]+> f8bf 12aa ldrh\.w r1, \[pc, #682\] ; 0+e62 <[^>]+> +0[0-9a-f]+ <[^>]+> f8bf 1155 ldrh\.w r1, \[pc, #341\] ; 0+d11 <[^>]+> +0[0-9a-f]+ <[^>]+> f83f 12aa ldrh\.w r1, \[pc, #-682\] ; 0+916 <[^>]+> +0[0-9a-f]+ <[^>]+> f83f 1155 ldrh\.w r1, \[pc, #-341\] ; 0+a6f <[^>]+> +0[0-9a-f]+ <[^>]+> f9bf 12aa ldrsh\.w r1, \[pc, #682\] ; 0+e72 <[^>]+> +0[0-9a-f]+ <[^>]+> f9bf 1155 ldrsh\.w r1, \[pc, #341\] ; 0+d21 <[^>]+> +0[0-9a-f]+ <[^>]+> f93f 12aa ldrsh\.w r1, \[pc, #-682\] ; 0+926 <[^>]+> +0[0-9a-f]+ <[^>]+> f93f 1155 ldrsh\.w r1, \[pc, #-341\] ; 0+a7f <[^>]+> +0[0-9a-f]+ <[^>]+> f8df 12aa ldr\.w r1, \[pc, #682\] ; 0+e82 <[^>]+> +0[0-9a-f]+ <[^>]+> f8df 1155 ldr\.w r1, \[pc, #341\] ; 0+d31 <[^>]+> +0[0-9a-f]+ <[^>]+> f85f 12aa ldr\.w r1, \[pc, #-682\] ; 0+936 <[^>]+> +0[0-9a-f]+ <[^>]+> f85f 1155 ldr\.w r1, \[pc, #-341\] ; 0+a8f <[^>]+> 0[0-9a-f]+ <[^>]+> f200 0900 addw r9, r0, #0 ; 0x0 0[0-9a-f]+ <[^>]+> f60f 76ff addw r6, pc, #4095 ; 0xfff 0[0-9a-f]+ <[^>]+> f6a9 2685 subw r6, r9, #2693 ; 0xa85 diff --git a/gas/testsuite/gas/arm/thumb32.s b/gas/testsuite/gas/arm/thumb32.s index a4653d0..2757899 100644 --- a/gas/testsuite/gas/arm/thumb32.s +++ b/gas/testsuite/gas/arm/thumb32.s @@ -529,42 +529,54 @@ qadd: qadd r1, r2, r3 qadd16 r1, r2, r3 qadd8 r1, r2, r3 + qasx r1, r2, r3 qaddsubx r1, r2, r3 qdadd r1, r2, r3 qdsub r1, r2, r3 qsub r1, r2, r3 qsub16 r1, r2, r3 qsub8 r1, r2, r3 + qsax r1, r2, r3 qsubaddx r1, r2, r3 sadd16 r1, r2, r3 sadd8 r1, r2, r3 + sasx r1, r2, r3 saddsubx r1, r2, r3 ssub16 r1, r2, r3 ssub8 r1, r2, r3 + ssax r1, r2, r3 ssubaddx r1, r2, r3 shadd16 r1, r2, r3 shadd8 r1, r2, r3 + shasx r1, r2, r3 shaddsubx r1, r2, r3 shsub16 r1, r2, r3 shsub8 r1, r2, r3 + shsax r1, r2, r3 shsubaddx r1, r2, r3 uadd16 r1, r2, r3 uadd8 r1, r2, r3 + uasx r1, r2, r3 uaddsubx r1, r2, r3 usub16 r1, r2, r3 usub8 r1, r2, r3 + usax r1, r2, r3 usubaddx r1, r2, r3 uhadd16 r1, r2, r3 uhadd8 r1, r2, r3 + uhasx r1, r2, r3 uhaddsubx r1, r2, r3 uhsub16 r1, r2, r3 uhsub8 r1, r2, r3 + uhsax r1, r2, r3 uhsubaddx r1, r2, r3 uqadd16 r1, r2, r3 uqadd8 r1, r2, r3 + uqasx r1, r2, r3 uqaddsubx r1, r2, r3 uqsub16 r1, r2, r3 uqsub8 r1, r2, r3 + uqsax r1, r2, r3 uqsubaddx r1, r2, r3 sel r1, r2, r3 |