Make ARMAsmParser accept the correct alignment specifier syntax in instructions.

The parser will now accept instructions with alignment specifiers written like
    vld1.8  {d16}, [r0:64]
, while also still accepting the incorrect syntax
    vld1.8  {d16}, [r0, :64]



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175164 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Kristof Beyls 2013-02-14 14:46:12 +00:00
parent b181919d86
commit b1d081230e
7 changed files with 177 additions and 157 deletions

View File

@ -4237,9 +4237,10 @@ parseMemory(SmallVectorImpl<MCParsedAsmOperand*> &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<MCParsedAsmOperand*> &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)) {

View File

@ -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
}

View File

@ -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]

View File

@ -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]

View File

@ -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]

View File

@ -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]

View File

@ -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 <list>
# contains two or four registers. rdar://11220250
0x00 0xf9 0x2f 0x06