ARM Assembler support for DMB instruction.
authorJim Grosbach <grosbach@apple.com>
Wed, 13 Jul 2011 23:40:38 +0000 (23:40 +0000)
committerJim Grosbach <grosbach@apple.com>
Wed, 13 Jul 2011 23:40:38 +0000 (23:40 +0000)
Flesh out the options supported for the instruction. Shuffle tests a bit and
add entries for the rest of the options. Add an alias to handle the default
operand of "sy".

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135109 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/ARM/ARMInstrInfo.td
lib/Target/ARM/AsmParser/ARMAsmParser.cpp
test/MC/ARM/arm_instructions.s
test/MC/ARM/basic-arm-instructions.s

index 29ab4eaef020af39085fb06222ee86fc250a560e..c4afe4043a56afd2c87ef6d2b5dd3af8b0843d29 100644 (file)
@@ -3304,6 +3304,8 @@ def DMB : AInoP<(outs), (ins memb_opt:$opt), MiscFrm, NoItinerary,
 }
 }
 
+def : InstAlias<"dmb", (DMB 0xf)>;
+
 def DSB : AInoP<(outs), (ins memb_opt:$opt), MiscFrm, NoItinerary,
                 "dsb", "\t$opt", []>,
                 Requires<[IsARM, HasDB]> {
index 499c95440c43b025adcbfd134d0abff178fcc122..2c45d2e7be8a83bdf28c9d4c0d3a241db7b84444 100644 (file)
@@ -1343,10 +1343,14 @@ tryParseMemBarrierOptOperand(SmallVectorImpl<MCParsedAsmOperand*> &Operands) {
   unsigned Opt = StringSwitch<unsigned>(OptStr.slice(0, OptStr.size()))
     .Case("sy",    ARM_MB::SY)
     .Case("st",    ARM_MB::ST)
+    .Case("sh",    ARM_MB::ISH)
     .Case("ish",   ARM_MB::ISH)
+    .Case("shst",  ARM_MB::ISHST)
     .Case("ishst", ARM_MB::ISHST)
     .Case("nsh",   ARM_MB::NSH)
+    .Case("un",    ARM_MB::NSH)
     .Case("nshst", ARM_MB::NSHST)
+    .Case("unst",  ARM_MB::NSHST)
     .Case("osh",   ARM_MB::OSH)
     .Case("oshst", ARM_MB::OSHST)
     .Default(~0U);
index 9c9980fe4417a66b9c54a22a6779b40477f61fd2..4f1083c5fae34c8950fc48968e116af64d4b3ecf 100644 (file)
 @ CHECK: nop @ encoding: [0x00,0xf0,0x20,0xe3]
         nop
 
-@ CHECK: dmb  sy @ encoding: [0x5f,0xf0,0x7f,0xf5]
-        dmb  sy
-
-@ CHECK: dmb  st @ encoding: [0x5e,0xf0,0x7f,0xf5]
-        dmb  st
-
-@ CHECK: dmb  ish @ encoding: [0x5b,0xf0,0x7f,0xf5]
-        dmb  ish
-
-@ CHECK: dmb  ishst @ encoding: [0x5a,0xf0,0x7f,0xf5]
-        dmb  ishst
-
-@ CHECK: dmb  nsh @ encoding: [0x57,0xf0,0x7f,0xf5]
-        dmb  nsh
-
-@ CHECK: dmb  nshst @ encoding: [0x56,0xf0,0x7f,0xf5]
-        dmb  nshst
-
-@ CHECK: dmb  osh @ encoding: [0x53,0xf0,0x7f,0xf5]
-        dmb  osh
-
-@ CHECK: dmb  oshst @ encoding: [0x52,0xf0,0x7f,0xf5]
-        dmb  oshst
-
 @ CHECK: dsb  sy @ encoding: [0x4f,0xf0,0x7f,0xf5]
         dsb  sy
 
index f2d5f7f57c76787d13801d3ae049bed3f5251bdd..1a78ba617882d9702e81cf6672dc07d9ef3caafe 100644 (file)
@@ -458,3 +458,35 @@ _func:
 @ CHECK: dbg #0                         @ encoding: [0xf0,0xf0,0x20,0xe3]
 @ CHECK: dbg #5                         @ encoding: [0xf5,0xf0,0x20,0xe3]
 @ CHECK: dbg #15                        @ encoding: [0xff,0xf0,0x20,0xe3]
+
+
+@------------------------------------------------------------------------------
+@ DMB
+@------------------------------------------------------------------------------
+  dmb sy
+  dmb st
+  dmb sh
+  dmb ish
+  dmb shst
+  dmb ishst
+  dmb un
+  dmb nsh
+  dmb unst
+  dmb nshst
+  dmb osh
+  dmb oshst
+  dmb
+
+@ CHECK: dmb   sy                      @ encoding: [0x5f,0xf0,0x7f,0xf5]
+@ CHECK: dmb   st                      @ encoding: [0x5e,0xf0,0x7f,0xf5]
+@ CHECK: dmb   ish                     @ encoding: [0x5b,0xf0,0x7f,0xf5]
+@ CHECK: dmb   ish                     @ encoding: [0x5b,0xf0,0x7f,0xf5]
+@ CHECK: dmb   ishst                   @ encoding: [0x5a,0xf0,0x7f,0xf5]
+@ CHECK: dmb   ishst                   @ encoding: [0x5a,0xf0,0x7f,0xf5]
+@ CHECK: dmb   nsh                     @ encoding: [0x57,0xf0,0x7f,0xf5]
+@ CHECK: dmb   nsh                     @ encoding: [0x57,0xf0,0x7f,0xf5]
+@ CHECK: dmb   nshst                   @ encoding: [0x56,0xf0,0x7f,0xf5]
+@ CHECK: dmb   nshst                   @ encoding: [0x56,0xf0,0x7f,0xf5]
+@ CHECK: dmb   osh                     @ encoding: [0x53,0xf0,0x7f,0xf5]
+@ CHECK: dmb   oshst                   @ encoding: [0x52,0xf0,0x7f,0xf5]
+@ CHECK: dmb   sy                      @ encoding: [0x5f,0xf0,0x7f,0xf5]