diff --git a/llvm/lib/Target/ARM/AsmParser/ARMAsmParser.cpp b/llvm/lib/Target/ARM/AsmParser/ARMAsmParser.cpp index 590887b765d7f..373d5b59bca66 100644 --- a/llvm/lib/Target/ARM/AsmParser/ARMAsmParser.cpp +++ b/llvm/lib/Target/ARM/AsmParser/ARMAsmParser.cpp @@ -11981,6 +11981,8 @@ bool ARMAsmParser::parseDirectiveInst(SMLoc Loc, char Suffix) { } getTargetStreamer().emitInst(Value->getValue(), CurSuffix); + forwardITPosition(); + forwardVPTPosition(); return false; }; diff --git a/llvm/test/MC/ARM/inst-directive-it-vpt.s b/llvm/test/MC/ARM/inst-directive-it-vpt.s new file mode 100644 index 0000000000000..8550d720ed422 --- /dev/null +++ b/llvm/test/MC/ARM/inst-directive-it-vpt.s @@ -0,0 +1,26 @@ +// RUN: llvm-mc %s -triple armv8m.main -mattr=+mve -filetype asm -o - | FileCheck %s + + .thumb + +// CHECK: it eq +// CHECK: .inst.n 0x3001 +// CHECK: add.w r0, r0, #1 + it eq + .inst.n 0x3001 // addeq r0, #1 + add r0, #1 + +// CHECK: vpst +// CHECK: .inst.w 0xef220844 +// CHECK: vadd.i32 q0, q1, q2 + vpst + .inst.w 0xef220844 // vaddt.i32 q0, q1, q2 + vadd.i32 q0, q1, q2 + +// CHECK: ite eq +// CHECK: .inst.n 0x3001 +// CHECK: addne r0, #1 +// CHECK: add.w r0, r0, #1 + ite eq + .inst.n 0x3001 // addeq r0, #1 + addne r0, #1 + add r0, #1