diff options
-rw-r--r-- | llvm/lib/Target/ARM/ARMInstrThumb2.td | 6 | ||||
-rw-r--r-- | llvm/test/MC/ARM/thumb-hints.s | 32 |
2 files changed, 34 insertions, 4 deletions
diff --git a/llvm/lib/Target/ARM/ARMInstrThumb2.td b/llvm/lib/Target/ARM/ARMInstrThumb2.td index f09b65fd526..725e5054f72 100644 --- a/llvm/lib/Target/ARM/ARMInstrThumb2.td +++ b/llvm/lib/Target/ARM/ARMInstrThumb2.td @@ -4329,9 +4329,9 @@ def : t2InstAlias<"tst${p} $Rn, $Rm", (t2TSTrr GPRnopc:$Rn, rGPR:$Rm, pred:$p)>; // Memory barriers -def : InstAlias<"dmb${p}", (t2DMB 0xf, pred:$p)>, Requires<[IsThumb2, HasDB]>; -def : InstAlias<"dsb${p}", (t2DSB 0xf, pred:$p)>, Requires<[IsThumb2, HasDB]>; -def : InstAlias<"isb${p}", (t2ISB 0xf, pred:$p)>, Requires<[IsThumb2, HasDB]>; +def : InstAlias<"dmb${p}", (t2DMB 0xf, pred:$p)>, Requires<[HasDB]>; +def : InstAlias<"dsb${p}", (t2DSB 0xf, pred:$p)>, Requires<[HasDB]>; +def : InstAlias<"isb${p}", (t2ISB 0xf, pred:$p)>, Requires<[HasDB]>; // Alias for LDR, LDRB, LDRH, LDRSB, and LDRSH without the ".w" optional // width specifier. diff --git a/llvm/test/MC/ARM/thumb-hints.s b/llvm/test/MC/ARM/thumb-hints.s index 73e83621a95..b3c4cee40bb 100644 --- a/llvm/test/MC/ARM/thumb-hints.s +++ b/llvm/test/MC/ARM/thumb-hints.s @@ -17,9 +17,21 @@ @ CHECK: wfi @ encoding: [0x30,0xbf] @ CHECK: sev @ encoding: [0x40,0xbf] - @ CHECK-EVIL-PRE-UAL: mov r8, r8 @ encoding: [0xc0,0x46] + dmb sy + dmb + dsb sy + dsb + isb sy + isb +@ CHECK: dmb sy @ encoding: [0xbf,0xf3,0x5f,0x8f] +@ CHECK: dmb sy @ encoding: [0xbf,0xf3,0x5f,0x8f] +@ CHECK: dsb sy @ encoding: [0xbf,0xf3,0x4f,0x8f] +@ CHECK: dsb sy @ encoding: [0xbf,0xf3,0x4f,0x8f] +@ CHECK: isb sy @ encoding: [0xbf,0xf3,0x6f,0x8f] +@ CHECK: isb sy @ encoding: [0xbf,0xf3,0x6f,0x8f] + @ CHECK-ERROR: error: instruction requires: armv6m or armv6t2 @ CHECK-ERROR-NEXT: yield @@ -32,3 +44,21 @@ @ CHECK-ERROR: error: instruction requires: armv6m or armv6t2 @ CHECK-ERROR-NEXT: sev + +@ CHECK-ERROR: error: +@ CHECK-ERROR-NEXT: dmb sy + +@ CHECK-ERROR: error: instruction requires: data-barriers +@ CHECK-ERROR-NEXT: dmb + +@ CHECK-ERROR: error: +@ CHECK-ERROR-NEXT: dsb sy + +@ CHECK-ERROR: error: instruction requires: data-barriers +@ CHECK-ERROR-NEXT: dsb + +@ CHECK-ERROR: error: +@ CHECK-ERROR-NEXT: isb sy + +@ CHECK-ERROR: error: instruction requires: data-barriers +@ CHECK-ERROR-NEXT: isb |