diff options
-rw-r--r-- | gas/ChangeLog | 5 | ||||
-rw-r--r-- | gas/config/tc-arm.c | 5 | ||||
-rw-r--r-- | gas/testsuite/ChangeLog | 6 | ||||
-rw-r--r-- | gas/testsuite/gas/arm/neon-ldst-align-bad.d | 3 | ||||
-rw-r--r-- | gas/testsuite/gas/arm/neon-ldst-align-bad.l | 3 | ||||
-rw-r--r-- | gas/testsuite/gas/arm/neon-ldst-align-bad.s | 2 |
6 files changed, 22 insertions, 2 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog index f061250..e9cf498 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,8 @@ +2010-02-26 Jie Zhang <jie@codesourcery.com> + + * config/tc-arm.c (do_neon_ld_st_interleave): Reject bad + alignment. + 2010-02-25 Doug Evans <dje@sebabeach.org> * cgen.c: Whitespace fixes. diff --git a/gas/config/tc-arm.c b/gas/config/tc-arm.c index 7ef0f44..d172042 100644 --- a/gas/config/tc-arm.c +++ b/gas/config/tc-arm.c @@ -14662,12 +14662,13 @@ do_neon_ld_st_interleave (void) { case 64: alignbits = 1; break; case 128: - if (NEON_REGLIST_LENGTH (inst.operands[0].imm) == 3) + if (NEON_REGLIST_LENGTH (inst.operands[0].imm) != 2 + && NEON_REGLIST_LENGTH (inst.operands[0].imm) != 4) goto bad_alignment; alignbits = 2; break; case 256: - if (NEON_REGLIST_LENGTH (inst.operands[0].imm) == 3) + if (NEON_REGLIST_LENGTH (inst.operands[0].imm) != 4) goto bad_alignment; alignbits = 3; break; diff --git a/gas/testsuite/ChangeLog b/gas/testsuite/ChangeLog index 439e734..3dc4271 100644 --- a/gas/testsuite/ChangeLog +++ b/gas/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2010-02-26 Jie Zhang <jie@codesourcery.com> + + * gas/arm/neon-ldst-align-bad.d: New test. + * gas/arm/neon-ldst-align-bad.l: New test. + * gas/arm/neon-ldst-align-bad.s: New test. + 2010-02-25 Wu Zhangjin <wuzhangjin@gmail.com> * gas/mips/loongson-2f-2.s: New test of -mfix-loongson2f-nop. diff --git a/gas/testsuite/gas/arm/neon-ldst-align-bad.d b/gas/testsuite/gas/arm/neon-ldst-align-bad.d new file mode 100644 index 0000000..28ebb9d --- /dev/null +++ b/gas/testsuite/gas/arm/neon-ldst-align-bad.d @@ -0,0 +1,3 @@ +# name: Bad alignment in Advanced SIMD Neon instructions +# as: -mfpu=neon +# error-output: neon-ldst-align-bad.l diff --git a/gas/testsuite/gas/arm/neon-ldst-align-bad.l b/gas/testsuite/gas/arm/neon-ldst-align-bad.l new file mode 100644 index 0000000..89cafba --- /dev/null +++ b/gas/testsuite/gas/arm/neon-ldst-align-bad.l @@ -0,0 +1,3 @@ +[^:]*: Assembler messages: +[^:]*:1: Error: bad alignment -- `vld1.8 {d0},\[r0,:128\]' +[^:]*:2: Error: bad alignment -- `vld1.8 {q0},\[r0,:256\]' diff --git a/gas/testsuite/gas/arm/neon-ldst-align-bad.s b/gas/testsuite/gas/arm/neon-ldst-align-bad.s new file mode 100644 index 0000000..0efb0a0 --- /dev/null +++ b/gas/testsuite/gas/arm/neon-ldst-align-bad.s @@ -0,0 +1,2 @@ +vld1.8 {d0}, [r0, :128] +vld1.8 {q0}, [r0, :256] |