diff --git a/lib/Target/ARM/AsmParser/ARMAsmParser.cpp b/lib/Target/ARM/AsmParser/ARMAsmParser.cpp index 3174e9ae46e..8d6cf3c77ef 100644 --- a/lib/Target/ARM/AsmParser/ARMAsmParser.cpp +++ b/lib/Target/ARM/AsmParser/ARMAsmParser.cpp @@ -4237,9 +4237,10 @@ parseMemory(SmallVectorImpl &Operands) { if (BaseRegNum == -1) return Error(BaseRegTok.getLoc(), "register expected"); - // The next token must either be a comma or a closing bracket. + // The next token must either be a comma, a colon or a closing bracket. const AsmToken &Tok = Parser.getTok(); - if (!Tok.is(AsmToken::Comma) && !Tok.is(AsmToken::RBrac)) + if (!Tok.is(AsmToken::Colon) && !Tok.is(AsmToken::Comma) && + !Tok.is(AsmToken::RBrac)) return Error(Tok.getLoc(), "malformed memory operand"); if (Tok.is(AsmToken::RBrac)) { @@ -4259,8 +4260,11 @@ parseMemory(SmallVectorImpl &Operands) { return false; } - assert(Tok.is(AsmToken::Comma) && "Lost comma in memory operand?!"); - Parser.Lex(); // Eat the comma. + assert((Tok.is(AsmToken::Colon) || Tok.is(AsmToken::Comma)) && + "Lost colon or comma in memory operand?!"); + if (Tok.is(AsmToken::Comma)) { + Parser.Lex(); // Eat the comma. + } // If we have a ':', it's an alignment specifier. if (Parser.getTok().is(AsmToken::Colon)) { diff --git a/test/CodeGen/ARM/inlineasm3.ll b/test/CodeGen/ARM/inlineasm3.ll index 2fcc45f4af9..390a44e375b 100644 --- a/test/CodeGen/ARM/inlineasm3.ll +++ b/test/CodeGen/ARM/inlineasm3.ll @@ -30,7 +30,7 @@ entry: define hidden void @conv4_8_E() nounwind { entry: -%asmtmp31 = call %0 asm "vld1.u8 {$0}, [$1, :128]!\0A", "=w,=r,1"(<16 x i8>* undef) nounwind +%asmtmp31 = call %0 asm "vld1.u8 {$0}, [$1:128]!\0A", "=w,=r,1"(<16 x i8>* undef) nounwind unreachable } diff --git a/test/MC/ARM/neon-vld-encoding.s b/test/MC/ARM/neon-vld-encoding.s index 3cc6bf11cf5..6e55c648cea 100644 --- a/test/MC/ARM/neon-vld-encoding.s +++ b/test/MC/ARM/neon-vld-encoding.s @@ -1,59 +1,59 @@ @ RUN: llvm-mc -mcpu=cortex-a8 -triple armv7-apple-darwin -show-encoding < %s | FileCheck %s - vld1.8 {d16}, [r0, :64] + vld1.8 {d16}, [r0:64] vld1.16 {d16}, [r0] vld1.32 {d16}, [r0] vld1.64 {d16}, [r0] - vld1.8 {d16, d17}, [r0, :64] - vld1.16 {d16, d17}, [r0, :128] + vld1.8 {d16, d17}, [r0:64] + vld1.16 {d16, d17}, [r0:128] vld1.32 {d16, d17}, [r0] vld1.64 {d16, d17}, [r0] vld1.8 {d1, d2, d3}, [r3] - vld1.16 {d4, d5, d6}, [r3, :64] + vld1.16 {d4, d5, d6}, [r3:64] vld1.32 {d5, d6, d7}, [r3] - vld1.64 {d6, d7, d8}, [r3, :64] + vld1.64 {d6, d7, d8}, [r3:64] vld1.8 {d1, d2, d3, d4}, [r3] - vld1.16 {d4, d5, d6, d7}, [r3, :64] + vld1.16 {d4, d5, d6, d7}, [r3:64] vld1.32 {d5, d6, d7, d8}, [r3] - vld1.64 {d6, d7, d8, d9}, [r3, :64] + vld1.64 {d6, d7, d8, d9}, [r3:64] - vld1.8 {d16}, [r0, :64]! + vld1.8 {d16}, [r0:64]! vld1.16 {d16}, [r0]! vld1.32 {d16}, [r0]! vld1.64 {d16}, [r0]! - vld1.8 {d16, d17}, [r0, :64]! - vld1.16 {d16, d17}, [r0, :128]! + vld1.8 {d16, d17}, [r0:64]! + vld1.16 {d16, d17}, [r0:128]! vld1.32 {d16, d17}, [r0]! vld1.64 {d16, d17}, [r0]! - vld1.8 {d16}, [r0, :64], r5 + vld1.8 {d16}, [r0:64], r5 vld1.16 {d16}, [r0], r5 vld1.32 {d16}, [r0], r5 vld1.64 {d16}, [r0], r5 - vld1.8 {d16, d17}, [r0, :64], r5 - vld1.16 {d16, d17}, [r0, :128], r5 + vld1.8 {d16, d17}, [r0:64], r5 + vld1.16 {d16, d17}, [r0:128], r5 vld1.32 {d16, d17}, [r0], r5 vld1.64 {d16, d17}, [r0], r5 vld1.8 {d1, d2, d3}, [r3]! - vld1.16 {d4, d5, d6}, [r3, :64]! + vld1.16 {d4, d5, d6}, [r3:64]! vld1.32 {d5, d6, d7}, [r3]! - vld1.64 {d6, d7, d8}, [r3, :64]! + vld1.64 {d6, d7, d8}, [r3:64]! vld1.8 {d1, d2, d3}, [r3], r6 - vld1.16 {d4, d5, d6}, [r3, :64], r6 + vld1.16 {d4, d5, d6}, [r3:64], r6 vld1.32 {d5, d6, d7}, [r3], r6 - vld1.64 {d6, d7, d8}, [r3, :64], r6 + vld1.64 {d6, d7, d8}, [r3:64], r6 vld1.8 {d1, d2, d3, d4}, [r3]! - vld1.16 {d4, d5, d6, d7}, [r3, :64]! + vld1.16 {d4, d5, d6, d7}, [r3:64]! vld1.32 {d5, d6, d7, d8}, [r3]! - vld1.64 {d6, d7, d8, d9}, [r3, :64]! + vld1.64 {d6, d7, d8, d9}, [r3:64]! vld1.8 {d1, d2, d3, d4}, [r3], r8 - vld1.16 {d4, d5, d6, d7}, [r3, :64], r8 + vld1.16 {d4, d5, d6, d7}, [r3:64], r8 vld1.32 {d5, d6, d7, d8}, [r3], r8 - vld1.64 {d6, d7, d8, d9}, [r3, :64], r8 + vld1.64 {d6, d7, d8, d9}, [r3:64], r8 @ CHECK: vld1.8 {d16}, [r0, :64] @ encoding: [0x1f,0x07,0x60,0xf4] @ CHECK: vld1.16 {d16}, [r0] @ encoding: [0x4f,0x07,0x60,0xf4] @@ -111,26 +111,26 @@ @ CHECK: vld1.64 {d6, d7, d8, d9}, [r3, :64], r8 @ encoding: [0xd8,0x62,0x23,0xf4] - vld2.8 {d16, d17}, [r0, :64] - vld2.16 {d16, d17}, [r0, :128] + vld2.8 {d16, d17}, [r0:64] + vld2.16 {d16, d17}, [r0:128] vld2.32 {d16, d17}, [r0] - vld2.8 {d16, d17, d18, d19}, [r0, :64] - vld2.16 {d16, d17, d18, d19}, [r0, :128] - vld2.32 {d16, d17, d18, d19}, [r0, :256] + vld2.8 {d16, d17, d18, d19}, [r0:64] + vld2.16 {d16, d17, d18, d19}, [r0:128] + vld2.32 {d16, d17, d18, d19}, [r0:256] - vld2.8 {d19, d20}, [r0, :64]! - vld2.16 {d16, d17}, [r0, :128]! + vld2.8 {d19, d20}, [r0:64]! + vld2.16 {d16, d17}, [r0:128]! vld2.32 {q10}, [r0]! - vld2.8 {d4-d7}, [r0, :64]! - vld2.16 {d1, d2, d3, d4}, [r0, :128]! - vld2.32 {q7, q8}, [r0, :256]! + vld2.8 {d4-d7}, [r0:64]! + vld2.16 {d1, d2, d3, d4}, [r0:128]! + vld2.32 {q7, q8}, [r0:256]! - vld2.8 {d19, d20}, [r0, :64], r6 - vld2.16 {d16, d17}, [r0, :128], r6 + vld2.8 {d19, d20}, [r0:64], r6 + vld2.16 {d16, d17}, [r0:128], r6 vld2.32 {q10}, [r0], r6 - vld2.8 {d4-d7}, [r0, :64], r6 - vld2.16 {d1, d2, d3, d4}, [r0, :128], r6 - vld2.32 {q7, q8}, [r0, :256], r6 + vld2.8 {d4-d7}, [r0:64], r6 + vld2.16 {d1, d2, d3, d4}, [r0:128], r6 + vld2.32 {q7, q8}, [r0:256], r6 @ CHECK: vld2.8 {d16, d17}, [r0, :64] @ encoding: [0x1f,0x08,0x60,0xf4] @ CHECK: vld2.16 {d16, d17}, [r0, :128] @ encoding: [0x6f,0x08,0x60,0xf4] @@ -157,7 +157,7 @@ vld3.8 {d16, d17, d18}, [r1] vld3.16 {d6, d7, d8}, [r2] vld3.32 {d1, d2, d3}, [r3] - vld3.8 {d16, d18, d20}, [r0, :64] + vld3.8 {d16, d18, d20}, [r0:64] vld3.u16 {d27, d29, d31}, [r4] vld3.i32 {d6, d8, d10}, [r5] @@ -171,7 +171,7 @@ vld3.p8 {d6, d7, d8}, [r8]! vld3.16 {d9, d10, d11}, [r7]! vld3.f32 {d1, d2, d3}, [r6]! - vld3.8 {d16, d18, d20}, [r0, :64]! + vld3.8 {d16, d18, d20}, [r0:64]! vld3.p16 {d20, d22, d24}, [r5]! vld3.32 {d5, d7, d9}, [r4]! @@ -196,24 +196,24 @@ @ CHECK: vld3.32 {d5, d7, d9}, [r4]! @ encoding: [0x8d,0x55,0x24,0xf4] - vld4.8 {d16, d17, d18, d19}, [r1, :64] - vld4.16 {d16, d17, d18, d19}, [r2, :128] - vld4.32 {d16, d17, d18, d19}, [r3, :256] - vld4.8 {d17, d19, d21, d23}, [r5, :256] + vld4.8 {d16, d17, d18, d19}, [r1:64] + vld4.16 {d16, d17, d18, d19}, [r2:128] + vld4.32 {d16, d17, d18, d19}, [r3:256] + vld4.8 {d17, d19, d21, d23}, [r5:256] vld4.16 {d17, d19, d21, d23}, [r7] vld4.32 {d16, d18, d20, d22}, [r8] - vld4.s8 {d16, d17, d18, d19}, [r1, :64]! - vld4.s16 {d16, d17, d18, d19}, [r2, :128]! - vld4.s32 {d16, d17, d18, d19}, [r3, :256]! - vld4.u8 {d17, d19, d21, d23}, [r5, :256]! + vld4.s8 {d16, d17, d18, d19}, [r1:64]! + vld4.s16 {d16, d17, d18, d19}, [r2:128]! + vld4.s32 {d16, d17, d18, d19}, [r3:256]! + vld4.u8 {d17, d19, d21, d23}, [r5:256]! vld4.u16 {d17, d19, d21, d23}, [r7]! vld4.u32 {d16, d18, d20, d22}, [r8]! - vld4.p8 {d16, d17, d18, d19}, [r1, :64], r8 + vld4.p8 {d16, d17, d18, d19}, [r1:64], r8 vld4.p16 {d16, d17, d18, d19}, [r2], r7 - vld4.f32 {d16, d17, d18, d19}, [r3, :64], r5 - vld4.i8 {d16, d18, d20, d22}, [r4, :256], r2 + vld4.f32 {d16, d17, d18, d19}, [r3:64], r5 + vld4.i8 {d16, d18, d20, d22}, [r4:256], r2 vld4.i16 {d16, d18, d20, d22}, [r6], r3 vld4.i32 {d17, d19, d21, d23}, [r9], r4 @@ -252,8 +252,8 @@ @ CHECK: vld1.8 {d4[], d5[]}, [r1], r3 @ encoding: [0x23,0x4c,0xa1,0xf4] vld1.8 {d16[3]}, [r0] - vld1.16 {d16[2]}, [r0, :16] - vld1.32 {d16[1]}, [r0, :32] + vld1.16 {d16[2]}, [r0:16] + vld1.32 {d16[1]}, [r0:32] vld1.p8 d12[6], [r2]! vld1.i8 d12[6], [r2], r2 vld1.u16 d12[3], [r2]! @@ -268,12 +268,12 @@ @ CHECK: vld1.16 {d12[2]}, [r2], r2 @ encoding: [0x82,0xc4,0xa2,0xf4] - vld2.8 {d16[1], d17[1]}, [r0, :16] - vld2.16 {d16[1], d17[1]}, [r0, :32] + vld2.8 {d16[1], d17[1]}, [r0:16] + vld2.16 {d16[1], d17[1]}, [r0:32] vld2.32 {d16[1], d17[1]}, [r0] vld2.16 {d17[1], d19[1]}, [r0] - vld2.32 {d17[0], d19[0]}, [r0, :64] - vld2.32 {d17[0], d19[0]}, [r0, :64]! + vld2.32 {d17[0], d19[0]}, [r0:64] + vld2.32 {d17[0], d19[0]}, [r0:64]! vld2.8 {d2[4], d3[4]}, [r2], r3 vld2.8 {d2[4], d3[4]}, [r2]! vld2.8 {d2[4], d3[4]}, [r2] @@ -383,15 +383,15 @@ vld4.16 {d17[1], d19[1], d21[1], d23[1]}, [r7] vld4.32 {d16[1], d18[1], d20[1], d22[1]}, [r8] - vld4.s8 {d16[1], d17[1], d18[1], d19[1]}, [r1, :32]! - vld4.s16 {d16[1], d17[1], d18[1], d19[1]}, [r2, :64]! - vld4.s32 {d16[1], d17[1], d18[1], d19[1]}, [r3, :128]! + vld4.s8 {d16[1], d17[1], d18[1], d19[1]}, [r1:32]! + vld4.s16 {d16[1], d17[1], d18[1], d19[1]}, [r2:64]! + vld4.s32 {d16[1], d17[1], d18[1], d19[1]}, [r3:128]! vld4.u16 {d17[1], d19[1], d21[1], d23[1]}, [r7]! vld4.u32 {d16[1], d18[1], d20[1], d22[1]}, [r8]! - vld4.p8 {d16[1], d17[1], d18[1], d19[1]}, [r1, :32], r8 + vld4.p8 {d16[1], d17[1], d18[1], d19[1]}, [r1:32], r8 vld4.p16 {d16[1], d17[1], d18[1], d19[1]}, [r2], r7 - vld4.f32 {d16[1], d17[1], d18[1], d19[1]}, [r3, :64], r5 + vld4.f32 {d16[1], d17[1], d18[1], d19[1]}, [r3:64], r5 vld4.i16 {d16[1], d18[1], d20[1], d22[1]}, [r6], r3 vld4.i32 {d17[1], d19[1], d21[1], d23[1]}, [r9], r4 @@ -490,8 +490,17 @@ @ Register lists can use the range syntax, just like VLDM - vld1.f64 {d2-d5}, [r2,:128]! - vld1.f64 {d2,d3,d4,d5}, [r2,:128]! + vld1.f64 {d2-d5}, [r2:128]! + vld1.f64 {d2,d3,d4,d5}, [r2:128]! @ CHECK: vld1.64 {d2, d3, d4, d5}, [r2, :128]! @ encoding: [0xed,0x22,0x22,0xf4] @ CHECK: vld1.64 {d2, d3, d4, d5}, [r2, :128]! @ encoding: [0xed,0x22,0x22,0xf4] + + +@ verify that the old incorrect alignment specifier syntax (", :") +@ still gets accepted. + vld2.8 {d16, d17}, [r0, :64] + vld2.16 {d16, d17}, [r0, :128] + +@ CHECK: vld2.8 {d16, d17}, [r0, :64] @ encoding: [0x1f,0x08,0x60,0xf4] +@ CHECK: vld2.16 {d16, d17}, [r0, :128] @ encoding: [0x6f,0x08,0x60,0xf4] diff --git a/test/MC/ARM/neon-vst-encoding.s b/test/MC/ARM/neon-vst-encoding.s index f5feca4c8c1..4629721380c 100644 --- a/test/MC/ARM/neon-vst-encoding.s +++ b/test/MC/ARM/neon-vst-encoding.s @@ -1,18 +1,18 @@ @ RUN: llvm-mc -mcpu=cortex-a8 -triple armv7-apple-darwin -show-encoding < %s | FileCheck %s - vst1.8 {d16}, [r0, :64] + vst1.8 {d16}, [r0:64] vst1.16 {d16}, [r0] vst1.32 {d16}, [r0] vst1.64 {d16}, [r0] - vst1.8 {d16, d17}, [r0, :64] - vst1.16 {d16, d17}, [r0, :128] + vst1.8 {d16, d17}, [r0:64] + vst1.16 {d16, d17}, [r0:128] vst1.32 {d16, d17}, [r0] vst1.64 {d16, d17}, [r0] - vst1.8 {d16, d17, d18}, [r0, :64] - vst1.8 {d16, d17, d18}, [r0, :64]! + vst1.8 {d16, d17, d18}, [r0:64] + vst1.8 {d16, d17, d18}, [r0:64]! vst1.8 {d16, d17, d18}, [r0], r3 - vst1.8 {d16, d17, d18, d19}, [r0, :64] - vst1.16 {d16, d17, d18, d19}, [r1, :64]! + vst1.8 {d16, d17, d18, d19}, [r0:64] + vst1.16 {d16, d17, d18, d19}, [r1:64]! vst1.64 {d16, d17, d18, d19}, [r3], r2 @ CHECK: vst1.8 {d16}, [r0, :64] @ encoding: [0x1f,0x07,0x40,0xf4] @@ -31,18 +31,18 @@ @ CHECK: vst1.64 {d16, d17, d18, d19}, [r3], r2 @ encoding: [0xc2,0x02,0x43,0xf4] - vst2.8 {d16, d17}, [r0, :64] - vst2.16 {d16, d17}, [r0, :128] + vst2.8 {d16, d17}, [r0:64] + vst2.16 {d16, d17}, [r0:128] vst2.32 {d16, d17}, [r0] - vst2.8 {d16, d17, d18, d19}, [r0, :64] - vst2.16 {d16, d17, d18, d19}, [r0, :128] - vst2.32 {d16, d17, d18, d19}, [r0, :256] - vst2.8 {d16, d17}, [r0, :64]! - vst2.16 {q15}, [r0, :128]! + vst2.8 {d16, d17, d18, d19}, [r0:64] + vst2.16 {d16, d17, d18, d19}, [r0:128] + vst2.32 {d16, d17, d18, d19}, [r0:256] + vst2.8 {d16, d17}, [r0:64]! + vst2.16 {q15}, [r0:128]! vst2.32 {d14, d15}, [r0]! - vst2.8 {d16, d17, d18, d19}, [r0, :64]! - vst2.16 {d18-d21}, [r0, :128]! - vst2.32 {q4, q5}, [r0, :256]! + vst2.8 {d16, d17, d18, d19}, [r0:64]! + vst2.16 {d18-d21}, [r0:128]! + vst2.32 {q4, q5}, [r0:256]! @ CHECK: vst2.8 {d16, d17}, [r0, :64] @ encoding: [0x1f,0x08,0x40,0xf4] @ CHECK: vst2.16 {d16, d17}, [r0, :128] @ encoding: [0x6f,0x08,0x40,0xf4] @@ -61,7 +61,7 @@ vst3.8 {d16, d17, d18}, [r1] vst3.16 {d6, d7, d8}, [r2] vst3.32 {d1, d2, d3}, [r3] - vst3.8 {d16, d18, d20}, [r0, :64] + vst3.8 {d16, d18, d20}, [r0:64] vst3.u16 {d27, d29, d31}, [r4] vst3.i32 {d6, d8, d10}, [r5] @@ -75,7 +75,7 @@ vst3.p8 {d6, d7, d8}, [r8]! vst3.16 {d9, d10, d11}, [r7]! vst3.f32 {d1, d2, d3}, [r6]! - vst3.8 {d16, d18, d20}, [r0, :64]! + vst3.8 {d16, d18, d20}, [r0:64]! vst3.p16 {d20, d22, d24}, [r5]! vst3.32 {d5, d7, d9}, [r4]! @@ -99,24 +99,24 @@ @ CHECK: vst3.32 {d5, d7, d9}, [r4]! @ encoding: [0x8d,0x55,0x04,0xf4] - vst4.8 {d16, d17, d18, d19}, [r1, :64] - vst4.16 {d16, d17, d18, d19}, [r2, :128] - vst4.32 {d16, d17, d18, d19}, [r3, :256] - vst4.8 {d17, d19, d21, d23}, [r5, :256] + vst4.8 {d16, d17, d18, d19}, [r1:64] + vst4.16 {d16, d17, d18, d19}, [r2:128] + vst4.32 {d16, d17, d18, d19}, [r3:256] + vst4.8 {d17, d19, d21, d23}, [r5:256] vst4.16 {d17, d19, d21, d23}, [r7] vst4.32 {d16, d18, d20, d22}, [r8] - vst4.s8 {d16, d17, d18, d19}, [r1, :64]! - vst4.s16 {d16, d17, d18, d19}, [r2, :128]! - vst4.s32 {d16, d17, d18, d19}, [r3, :256]! - vst4.u8 {d17, d19, d21, d23}, [r5, :256]! + vst4.s8 {d16, d17, d18, d19}, [r1:64]! + vst4.s16 {d16, d17, d18, d19}, [r2:128]! + vst4.s32 {d16, d17, d18, d19}, [r3:256]! + vst4.u8 {d17, d19, d21, d23}, [r5:256]! vst4.u16 {d17, d19, d21, d23}, [r7]! vst4.u32 {d16, d18, d20, d22}, [r8]! - vst4.p8 {d16, d17, d18, d19}, [r1, :64], r8 + vst4.p8 {d16, d17, d18, d19}, [r1:64], r8 vst4.p16 {d16, d17, d18, d19}, [r2], r7 - vst4.f32 {d16, d17, d18, d19}, [r3, :64], r5 - vst4.i8 {d16, d18, d20, d22}, [r4, :256], r2 + vst4.f32 {d16, d17, d18, d19}, [r3:64], r5 + vst4.i8 {d16, d18, d20, d22}, [r4:256], r2 vst4.i16 {d16, d18, d20, d22}, [r6], r3 vst4.i32 {d17, d19, d21, d23}, [r9], r4 @@ -140,22 +140,22 @@ @ CHECK: vst4.32 {d17, d19, d21, d23}, [r9], r4 @ encoding: [0x84,0x11,0x49,0xf4] - vst2.8 {d16[1], d17[1]}, [r0, :16] - vst2.p16 {d16[1], d17[1]}, [r0, :32] + vst2.8 {d16[1], d17[1]}, [r0:16] + vst2.p16 {d16[1], d17[1]}, [r0:32] vst2.i32 {d16[1], d17[1]}, [r0] vst2.u16 {d17[1], d19[1]}, [r0] - vst2.f32 {d17[0], d19[0]}, [r0, :64] + vst2.f32 {d17[0], d19[0]}, [r0:64] vst2.8 {d2[4], d3[4]}, [r2], r3 vst2.u8 {d2[4], d3[4]}, [r2]! vst2.p8 {d2[4], d3[4]}, [r2] vst2.16 {d17[1], d19[1]}, [r0] - vst2.32 {d17[0], d19[0]}, [r0, :64] + vst2.32 {d17[0], d19[0]}, [r0:64] vst2.i16 {d7[1], d9[1]}, [r1]! - vst2.32 {d6[0], d8[0]}, [r2, :64]! + vst2.32 {d6[0], d8[0]}, [r2:64]! vst2.16 {d2[1], d4[1]}, [r3], r5 - vst2.u32 {d5[0], d7[0]}, [r4, :64], r7 + vst2.u32 {d5[0], d7[0]}, [r4:64], r7 @ CHECK: vst2.8 {d16[1], d17[1]}, [r0, :16] @ encoding: [0x3f,0x01,0xc0,0xf4] @ CHECK: vst2.16 {d16[1], d17[1]}, [r0, :32] @ encoding: [0x5f,0x05,0xc0,0xf4] @@ -216,15 +216,15 @@ vst4.16 {d17[1], d19[1], d21[1], d23[1]}, [r7] vst4.32 {d16[1], d18[1], d20[1], d22[1]}, [r8] - vst4.s8 {d16[1], d17[1], d18[1], d19[1]}, [r1, :32]! - vst4.s16 {d16[1], d17[1], d18[1], d19[1]}, [r2, :64]! - vst4.s32 {d16[1], d17[1], d18[1], d19[1]}, [r3, :128]! + vst4.s8 {d16[1], d17[1], d18[1], d19[1]}, [r1:32]! + vst4.s16 {d16[1], d17[1], d18[1], d19[1]}, [r2:64]! + vst4.s32 {d16[1], d17[1], d18[1], d19[1]}, [r3:128]! vst4.u16 {d17[1], d19[1], d21[1], d23[1]}, [r7]! vst4.u32 {d16[1], d18[1], d20[1], d22[1]}, [r8]! - vst4.p8 {d16[1], d17[1], d18[1], d19[1]}, [r1, :32], r8 + vst4.p8 {d16[1], d17[1], d18[1], d19[1]}, [r1:32], r8 vst4.p16 {d16[1], d17[1], d18[1], d19[1]}, [r2], r7 - vst4.f32 {d16[1], d17[1], d18[1], d19[1]}, [r3, :64], r5 + vst4.f32 {d16[1], d17[1], d18[1], d19[1]}, [r3:64], r5 vst4.i16 {d16[1], d18[1], d20[1], d22[1]}, [r6], r3 vst4.i32 {d17[1], d19[1], d21[1], d23[1]}, [r9], r4 @@ -269,10 +269,17 @@ vst2.8 {d8, d10}, [r4] @ CHECK: vst2.8 {d8, d10}, [r4] @ encoding: [0x0f,0x89,0x04,0xf4] - vst1.32 {d9[1]}, [r3, :32] - vst1.32 {d27[1]}, [r9, :32]! - vst1.32 {d27[1]}, [r3, :32], r5 + vst1.32 {d9[1]}, [r3:32] + vst1.32 {d27[1]}, [r9:32]! + vst1.32 {d27[1]}, [r3:32], r5 @ CHECK: vst1.32 {d9[1]}, [r3, :32] @ encoding: [0xbf,0x98,0x83,0xf4] @ CHECK: vst1.32 {d27[1]}, [r9, :32]! @ encoding: [0xbd,0xb8,0xc9,0xf4] @ CHECK: vst1.32 {d27[1]}, [r3, :32], r5 @ encoding: [0xb5,0xb8,0xc3,0xf4] +@ verify that the old incorrect alignment specifier syntax (", :") +@ still gets accepted. + vst2.8 {d16, d17}, [r0, :64] + vst2.16 {d16, d17}, [r0, :128] + +@ CHECK: vst2.8 {d16, d17}, [r0, :64] @ encoding: [0x1f,0x08,0x40,0xf4] +@ CHECK: vst2.16 {d16, d17}, [r0, :128] @ encoding: [0x6f,0x08,0x40,0xf4] \ No newline at end of file diff --git a/test/MC/ARM/neont2-vld-encoding.s b/test/MC/ARM/neont2-vld-encoding.s index 031205a5cc8..7f7a099de91 100644 --- a/test/MC/ARM/neont2-vld-encoding.s +++ b/test/MC/ARM/neont2-vld-encoding.s @@ -4,7 +4,7 @@ .code 16 @ CHECK: vld1.8 {d16}, [r0, :64] @ encoding: [0x1f,0x07,0x60,0xf9] - vld1.8 {d16}, [r0, :64] + vld1.8 {d16}, [r0:64] @ CHECK: vld1.16 {d16}, [r0] @ encoding: [0x4f,0x07,0x60,0xf9] vld1.16 {d16}, [r0] @ CHECK: vld1.32 {d16}, [r0] @ encoding: [0x8f,0x07,0x60,0xf9] @@ -12,37 +12,37 @@ @ CHECK: vld1.64 {d16}, [r0] @ encoding: [0xcf,0x07,0x60,0xf9] vld1.64 {d16}, [r0] @ CHECK: vld1.8 {d16, d17}, [r0, :64] @ encoding: [0x1f,0x0a,0x60,0xf9] - vld1.8 {d16, d17}, [r0, :64] + vld1.8 {d16, d17}, [r0:64] @ CHECK: vld1.16 {d16, d17}, [r0, :128] @ encoding: [0x6f,0x0a,0x60,0xf9] - vld1.16 {d16, d17}, [r0, :128] + vld1.16 {d16, d17}, [r0:128] @ CHECK: vld1.32 {d16, d17}, [r0] @ encoding: [0x8f,0x0a,0x60,0xf9] vld1.32 {d16, d17}, [r0] @ CHECK: vld1.64 {d16, d17}, [r0] @ encoding: [0xcf,0x0a,0x60,0xf9] vld1.64 {d16, d17}, [r0] @ CHECK: vld2.8 {d16, d17}, [r0, :64] @ encoding: [0x1f,0x08,0x60,0xf9] - vld2.8 {d16, d17}, [r0, :64] + vld2.8 {d16, d17}, [r0:64] @ CHECK: vld2.16 {d16, d17}, [r0, :128] @ encoding: [0x6f,0x08,0x60,0xf9] - vld2.16 {d16, d17}, [r0, :128] + vld2.16 {d16, d17}, [r0:128] @ CHECK: vld2.32 {d16, d17}, [r0] @ encoding: [0x8f,0x08,0x60,0xf9] vld2.32 {d16, d17}, [r0] @ CHECK: vld2.8 {d16, d17, d18, d19}, [r0, :64] @ encoding: [0x1f,0x03,0x60,0xf9] - vld2.8 {d16, d17, d18, d19}, [r0, :64] + vld2.8 {d16, d17, d18, d19}, [r0:64] @ CHECK: vld2.16 {d16, d17, d18, d19}, [r0, :128] @ encoding: [0x6f,0x03,0x60,0xf9] - vld2.16 {d16, d17, d18, d19}, [r0, :128] + vld2.16 {d16, d17, d18, d19}, [r0:128] @ CHECK: vld2.32 {d16, d17, d18, d19}, [r0, :256] @ encoding: [0xbf,0x03,0x60,0xf9] - vld2.32 {d16, d17, d18, d19}, [r0, :256] + vld2.32 {d16, d17, d18, d19}, [r0:256] @ CHECK: vld3.8 {d16, d17, d18}, [r0, :64] @ encoding: [0x1f,0x04,0x60,0xf9] - vld3.8 {d16, d17, d18}, [r0, :64] + vld3.8 {d16, d17, d18}, [r0:64] @ CHECK: vld3.16 {d16, d17, d18}, [r0] @ encoding: [0x4f,0x04,0x60,0xf9] vld3.16 {d16, d17, d18}, [r0] @ CHECK: vld3.32 {d16, d17, d18}, [r0] @ encoding: [0x8f,0x04,0x60,0xf9] vld3.32 {d16, d17, d18}, [r0] @ CHECK: vld3.8 {d16, d18, d20}, [r0, :64]! @ encoding: [0x1d,0x05,0x60,0xf9] - vld3.8 {d16, d18, d20}, [r0, :64]! + vld3.8 {d16, d18, d20}, [r0:64]! @ CHECK: vld3.8 {d17, d19, d21}, [r0, :64]! @ encoding: [0x1d,0x15,0x60,0xf9] - vld3.8 {d17, d19, d21}, [r0, :64]! + vld3.8 {d17, d19, d21}, [r0:64]! @ CHECK: vld3.16 {d16, d18, d20}, [r0]! @ encoding: [0x4d,0x05,0x60,0xf9] vld3.16 {d16, d18, d20}, [r0]! @ CHECK: vld3.16 {d17, d19, d21}, [r0]! @ encoding: [0x4d,0x15,0x60,0xf9] @@ -53,15 +53,15 @@ vld3.32 {d17, d19, d21}, [r0]! @ CHECK: vld4.8 {d16, d17, d18, d19}, [r0, :64] @ encoding: [0x1f,0x00,0x60,0xf9] - vld4.8 {d16, d17, d18, d19}, [r0, :64] + vld4.8 {d16, d17, d18, d19}, [r0:64] @ CHECK: vld4.16 {d16, d17, d18, d19}, [r0, :128] @ encoding: [0x6f,0x00,0x60,0xf9] - vld4.16 {d16, d17, d18, d19}, [r0, :128] + vld4.16 {d16, d17, d18, d19}, [r0:128] @ CHECK: vld4.32 {d16, d17, d18, d19}, [r0, :256] @ encoding: [0xbf,0x00,0x60,0xf9] - vld4.32 {d16, d17, d18, d19}, [r0, :256] + vld4.32 {d16, d17, d18, d19}, [r0:256] @ CHECK: vld4.8 {d16, d18, d20, d22}, [r0, :256]! @ encoding: [0x3d,0x01,0x60,0xf9] - vld4.8 {d16, d18, d20, d22}, [r0, :256]! + vld4.8 {d16, d18, d20, d22}, [r0:256]! @ CHECK: vld4.8 {d17, d19, d21, d23}, [r0, :256]! @ encoding: [0x3d,0x11,0x60,0xf9] - vld4.8 {d17, d19, d21, d23}, [r0, :256]! + vld4.8 {d17, d19, d21, d23}, [r0:256]! @ CHECK: vld4.16 {d16, d18, d20, d22}, [r0]! @ encoding: [0x4d,0x01,0x60,0xf9] vld4.16 {d16, d18, d20, d22}, [r0]! @ CHECK: vld4.16 {d17, d19, d21, d23}, [r0]! @ encoding: [0x4d,0x11,0x60,0xf9] @@ -74,20 +74,20 @@ @ CHECK: vld1.8 {d16[3]}, [r0] @ encoding: [0x6f,0x00,0xe0,0xf9] vld1.8 {d16[3]}, [r0] @ CHECK: vld1.16 {d16[2]}, [r0, :16] @ encoding: [0x9f,0x04,0xe0,0xf9] - vld1.16 {d16[2]}, [r0, :16] + vld1.16 {d16[2]}, [r0:16] @ CHECK: vld1.32 {d16[1]}, [r0, :32] @ encoding: [0xbf,0x08,0xe0,0xf9] - vld1.32 {d16[1]}, [r0, :32] + vld1.32 {d16[1]}, [r0:32] @ CHECK: vld2.8 {d16[1], d17[1]}, [r0, :16] @ encoding: [0x3f,0x01,0xe0,0xf9] - vld2.8 {d16[1], d17[1]}, [r0, :16] + vld2.8 {d16[1], d17[1]}, [r0:16] @ CHECK: vld2.16 {d16[1], d17[1]}, [r0, :32] @ encoding: [0x5f,0x05,0xe0,0xf9] - vld2.16 {d16[1], d17[1]}, [r0, :32] + vld2.16 {d16[1], d17[1]}, [r0:32] @ CHECK: vld2.32 {d16[1], d17[1]}, [r0] @ encoding: [0x8f,0x09,0xe0,0xf9] vld2.32 {d16[1], d17[1]}, [r0] @ CHECK: vld2.16 {d17[1], d19[1]}, [r0] @ encoding: [0x6f,0x15,0xe0,0xf9] vld2.16 {d17[1], d19[1]}, [r0] @ CHECK: vld2.32 {d17[0], d19[0]}, [r0, :64] @ encoding: [0x5f,0x19,0xe0,0xf9] - vld2.32 {d17[0], d19[0]}, [r0, :64] + vld2.32 {d17[0], d19[0]}, [r0:64] @ CHECK: vld3.8 {d16[1], d17[1], d18[1]}, [r0] @ encoding: [0x2f,0x02,0xe0,0xf9] vld3.8 {d16[1], d17[1], d18[1]}, [r0] @@ -101,12 +101,12 @@ vld3.32 {d17[1], d19[1], d21[1]}, [r0] @ CHECK: vld4.8 {d16[1], d17[1], d18[1], d19[1]}, [r0, :32] @ encoding: [0x3f,0x03,0xe0,0xf9] - vld4.8 {d16[1], d17[1], d18[1], d19[1]}, [r0, :32] + vld4.8 {d16[1], d17[1], d18[1], d19[1]}, [r0:32] @ CHECK: vld4.16 {d16[1], d17[1], d18[1], d19[1]}, [r0] @ encoding: [0x4f,0x07,0xe0,0xf9] vld4.16 {d16[1], d17[1], d18[1], d19[1]}, [r0] @ CHECK: vld4.32 {d16[1], d17[1], d18[1], d19[1]}, [r0, :128] @ encoding: [0xaf,0x0b,0xe0,0xf9] - vld4.32 {d16[1], d17[1], d18[1], d19[1]}, [r0, :128] + vld4.32 {d16[1], d17[1], d18[1], d19[1]}, [r0:128] @ CHECK: vld4.16 {d16[1], d18[1], d20[1], d22[1]}, [r0, :64] @ encoding: [0x7f,0x07,0xe0,0xf9] - vld4.16 {d16[1], d18[1], d20[1], d22[1]}, [r0, :64] + vld4.16 {d16[1], d18[1], d20[1], d22[1]}, [r0:64] @ CHECK: vld4.32 {d17[0], d19[0], d21[0], d23[0]}, [r0] @ encoding: [0x4f,0x1b,0xe0,0xf9] vld4.32 {d17[0], d19[0], d21[0], d23[0]}, [r0] diff --git a/test/MC/ARM/neont2-vst-encoding.s b/test/MC/ARM/neont2-vst-encoding.s index b50d8b63c1c..fca7d5ed39f 100644 --- a/test/MC/ARM/neont2-vst-encoding.s +++ b/test/MC/ARM/neont2-vst-encoding.s @@ -4,7 +4,7 @@ .code 16 @ CHECK: vst1.8 {d16}, [r0, :64] @ encoding: [0x1f,0x07,0x40,0xf9] - vst1.8 {d16}, [r0, :64] + vst1.8 {d16}, [r0:64] @ CHECK: vst1.16 {d16}, [r0] @ encoding: [0x4f,0x07,0x40,0xf9] vst1.16 {d16}, [r0] @ CHECK: vst1.32 {d16}, [r0] @ encoding: [0x8f,0x07,0x40,0xf9] @@ -12,37 +12,37 @@ @ CHECK: vst1.64 {d16}, [r0] @ encoding: [0xcf,0x07,0x40,0xf9] vst1.64 {d16}, [r0] @ CHECK: vst1.8 {d16, d17}, [r0, :64] @ encoding: [0x1f,0x0a,0x40,0xf9] - vst1.8 {d16, d17}, [r0, :64] + vst1.8 {d16, d17}, [r0:64] @ CHECK: vst1.16 {d16, d17}, [r0, :128] @ encoding: [0x6f,0x0a,0x40,0xf9] - vst1.16 {d16, d17}, [r0, :128] + vst1.16 {d16, d17}, [r0:128] @ CHECK: vst1.32 {d16, d17}, [r0] @ encoding: [0x8f,0x0a,0x40,0xf9] vst1.32 {d16, d17}, [r0] @ CHECK: vst1.64 {d16, d17}, [r0] @ encoding: [0xcf,0x0a,0x40,0xf9] vst1.64 {d16, d17}, [r0] @ CHECK: vst2.8 {d16, d17}, [r0, :64] @ encoding: [0x1f,0x08,0x40,0xf9] - vst2.8 {d16, d17}, [r0, :64] + vst2.8 {d16, d17}, [r0:64] @ CHECK: vst2.16 {d16, d17}, [r0, :128] @ encoding: [0x6f,0x08,0x40,0xf9] - vst2.16 {d16, d17}, [r0, :128] + vst2.16 {d16, d17}, [r0:128] @ CHECK: vst2.32 {d16, d17}, [r0] @ encoding: [0x8f,0x08,0x40,0xf9] vst2.32 {d16, d17}, [r0] @ CHECK: vst2.8 {d16, d17, d18, d19}, [r0, :64] @ encoding: [0x1f,0x03,0x40,0xf9] - vst2.8 {d16, d17, d18, d19}, [r0, :64] + vst2.8 {d16, d17, d18, d19}, [r0:64] @ CHECK: vst2.16 {d16, d17, d18, d19}, [r0, :128] @ encoding: [0x6f,0x03,0x40,0xf9] - vst2.16 {d16, d17, d18, d19}, [r0, :128] + vst2.16 {d16, d17, d18, d19}, [r0:128] @ CHECK: vst2.32 {d16, d17, d18, d19}, [r0, :256] @ encoding: [0xbf,0x03,0x40,0xf9] - vst2.32 {d16, d17, d18, d19}, [r0, :256] + vst2.32 {d16, d17, d18, d19}, [r0:256] @ CHECK: vst3.8 {d16, d17, d18}, [r0, :64] @ encoding: [0x1f,0x04,0x40,0xf9] - vst3.8 {d16, d17, d18}, [r0, :64] + vst3.8 {d16, d17, d18}, [r0:64] @ CHECK: vst3.16 {d16, d17, d18}, [r0] @ encoding: [0x4f,0x04,0x40,0xf9] vst3.16 {d16, d17, d18}, [r0] @ CHECK: vst3.32 {d16, d17, d18}, [r0] @ encoding: [0x8f,0x04,0x40,0xf9] vst3.32 {d16, d17, d18}, [r0] @ CHECK: vst3.8 {d16, d18, d20}, [r0, :64]! @ encoding: [0x1d,0x05,0x40,0xf9] - vst3.8 {d16, d18, d20}, [r0, :64]! + vst3.8 {d16, d18, d20}, [r0:64]! @ CHECK: vst3.8 {d17, d19, d21}, [r0, :64]! @ encoding: [0x1d,0x15,0x40,0xf9] - vst3.8 {d17, d19, d21}, [r0, :64]! + vst3.8 {d17, d19, d21}, [r0:64]! @ CHECK: vst3.16 {d16, d18, d20}, [r0]! @ encoding: [0x4d,0x05,0x40,0xf9] vst3.16 {d16, d18, d20}, [r0]! @ CHECK: vst3.16 {d17, d19, d21}, [r0]! @ encoding: [0x4d,0x15,0x40,0xf9] @@ -53,13 +53,13 @@ vst3.32 {d17, d19, d21}, [r0]! @ CHECK: vst4.8 {d16, d17, d18, d19}, [r0, :64] @ encoding: [0x1f,0x00,0x40,0xf9] - vst4.8 {d16, d17, d18, d19}, [r0, :64] + vst4.8 {d16, d17, d18, d19}, [r0:64] @ CHECK: vst4.16 {d16, d17, d18, d19}, [r0, :128] @ encoding: [0x6f,0x00,0x40,0xf9] - vst4.16 {d16, d17, d18, d19}, [r0, :128] + vst4.16 {d16, d17, d18, d19}, [r0:128] @ CHECK: vst4.8 {d16, d18, d20, d22}, [r0, :256]! @ encoding: [0x3d,0x01,0x40,0xf9] - vst4.8 {d16, d18, d20, d22}, [r0, :256]! + vst4.8 {d16, d18, d20, d22}, [r0:256]! @ CHECK: vst4.8 {d17, d19, d21, d23}, [r0, :256]! @ encoding: [0x3d,0x11,0x40,0xf9] - vst4.8 {d17, d19, d21, d23}, [r0, :256]! + vst4.8 {d17, d19, d21, d23}, [r0:256]! @ CHECK: vst4.16 {d16, d18, d20, d22}, [r0]! @ encoding: [0x4d,0x01,0x40,0xf9] vst4.16 {d16, d18, d20, d22}, [r0]! @ CHECK: vst4.16 {d17, d19, d21, d23}, [r0]! @ encoding: [0x4d,0x11,0x40,0xf9] @@ -70,15 +70,15 @@ vst4.32 {d17, d19, d21, d23}, [r0]! @ CHECK: vst2.8 {d16[1], d17[1]}, [r0, :16] @ encoding: [0x3f,0x01,0xc0,0xf9] - vst2.8 {d16[1], d17[1]}, [r0, :16] + vst2.8 {d16[1], d17[1]}, [r0:16] @ CHECK: vst2.16 {d16[1], d17[1]}, [r0, :32] @ encoding: [0x5f,0x05,0xc0,0xf9] - vst2.16 {d16[1], d17[1]}, [r0, :32] + vst2.16 {d16[1], d17[1]}, [r0:32] @ CHECK: vst2.32 {d16[1], d17[1]}, [r0] @ encoding: [0x8f,0x09,0xc0,0xf9] vst2.32 {d16[1], d17[1]}, [r0] @ CHECK: vst2.16 {d17[1], d19[1]}, [r0] @ encoding: [0x6f,0x15,0xc0,0xf9] vst2.16 {d17[1], d19[1]}, [r0] @ CHECK: vst2.32 {d17[0], d19[0]}, [r0, :64] @ encoding: [0x5f,0x19,0xc0,0xf9] - vst2.32 {d17[0], d19[0]}, [r0, :64] + vst2.32 {d17[0], d19[0]}, [r0:64] @ CHECK: vst3.8 {d16[1], d17[1], d18[1]}, [r0] @ encoding: [0x2f,0x02,0xc0,0xf9] vst3.8 {d16[1], d17[1], d18[1]}, [r0] @@ -92,13 +92,13 @@ vst3.32 {d16[0], d18[0], d20[0]}, [r0] @ CHECK: vst4.8 {d16[1], d17[1], d18[1], d19[1]}, [r0, :32] @ encoding: [0x3f,0x03,0xc0,0xf9] - vst4.8 {d16[1], d17[1], d18[1], d19[1]}, [r0, :32] + vst4.8 {d16[1], d17[1], d18[1], d19[1]}, [r0:32] @ CHECK: vst4.16 {d16[1], d17[1], d18[1], d19[1]}, [r0] @ encoding: [0x4f,0x07,0xc0,0xf9] vst4.16 {d16[1], d17[1], d18[1], d19[1]}, [r0] @ CHECK: vst4.32 {d16[1], d17[1], d18[1], d19[1]}, [r0, :128] @ encoding: [0xaf,0x0b,0xc0,0xf9] - vst4.32 {d16[1], d17[1], d18[1], d19[1]}, [r0, :128] + vst4.32 {d16[1], d17[1], d18[1], d19[1]}, [r0:128] @ CHECK: vst4.16 {d17[3], d19[3], d21[3], d23[3]}, [r0, :64] @ encoding: [0xff,0x17,0xc0,0xf9] - vst4.16 {d17[3], d19[3], d21[3], d23[3]}, [r0, :64] + vst4.16 {d17[3], d19[3], d21[3], d23[3]}, [r0:64] @ CHECK: vst4.32 {d17[0], d19[0], d21[0], d23[0]}, [r0] @ encoding: [0x4f,0x1b,0xc0,0xf9] vst4.32 {d17[0], d19[0], d21[0], d23[0]}, [r0] diff --git a/test/MC/Disassembler/ARM/invalid-VST1d8Twb_register-thumb.txt b/test/MC/Disassembler/ARM/invalid-VST1d8Twb_register-thumb.txt index 2d2a62811ae..99da8ce9d85 100644 --- a/test/MC/Disassembler/ARM/invalid-VST1d8Twb_register-thumb.txt +++ b/test/MC/Disassembler/ARM/invalid-VST1d8Twb_register-thumb.txt @@ -7,7 +7,7 @@ # ------------------------------------------------------------------------------------------------- # # A8.6.391 VST1 (multiple single elements) -# This encoding looks like: vst1.8 {d0,d1,d2}, [r0, :128] +# This encoding looks like: vst1.8 {d0,d1,d2}, [r0:128] # But bits 5-4 for the alignment of 128 encoded as align = 0b10, is available only if # contains two or four registers. rdar://11220250 0x00 0xf9 0x2f 0x06