2010-02-26 Jie Zhang <jie@codesourcery.com>
authorJie Zhang <jie.zhang@analog.com>
Fri, 26 Feb 2010 15:49:07 +0000 (15:49 +0000)
committerJie Zhang <jie.zhang@analog.com>
Fri, 26 Feb 2010 15:49:07 +0000 (15:49 +0000)
* config/tc-arm.c (do_neon_ld_st_interleave): Reject bad
alignment.

testsuite/
* 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.

gas/ChangeLog
gas/config/tc-arm.c
gas/testsuite/ChangeLog
gas/testsuite/gas/arm/neon-ldst-align-bad.d [new file with mode: 0644]
gas/testsuite/gas/arm/neon-ldst-align-bad.l [new file with mode: 0644]
gas/testsuite/gas/arm/neon-ldst-align-bad.s [new file with mode: 0644]

index f061250..e9cf498 100644 (file)
@@ -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.
index 7ef0f44..d172042 100644 (file)
@@ -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;
index 439e734..3dc4271 100644 (file)
@@ -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 (file)
index 0000000..28ebb9d
--- /dev/null
@@ -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 (file)
index 0000000..89cafba
--- /dev/null
@@ -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 (file)
index 0000000..0efb0a0
--- /dev/null
@@ -0,0 +1,2 @@
+vld1.8 {d0}, [r0, :128]
+vld1.8 {q0}, [r0, :256]