Thumb2 assembly parsing and encoding for UMAAL/UMLAL/UMULL.
authorJim Grosbach <grosbach@apple.com>
Mon, 19 Sep 2011 23:31:02 +0000 (23:31 +0000)
committerJim Grosbach <grosbach@apple.com>
Mon, 19 Sep 2011 23:31:02 +0000 (23:31 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140095 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/ARM/AsmParser/ARMAsmParser.cpp
test/MC/ARM/basic-thumb2-instructions.s

index ce3f747f2fdaeda43c1967cf5d7c435d64b3f188..b5259d97ac1f5f35c235f2f8186eff9ee8aec21c 100644 (file)
@@ -3213,12 +3213,12 @@ getMnemonicAcceptInfo(StringRef Mnemonic, bool &CanAcceptCarrySet,
       Mnemonic == "rrx" || Mnemonic == "ror" || Mnemonic == "sub" ||
       Mnemonic == "add" || Mnemonic == "adc" ||
       Mnemonic == "mul" || Mnemonic == "bic" || Mnemonic == "asr" ||
-      Mnemonic == "umlal" || Mnemonic == "orr" || Mnemonic == "mvn" ||
+      Mnemonic == "orr" || Mnemonic == "mvn" ||
       Mnemonic == "rsb" || Mnemonic == "rsc" || Mnemonic == "orn" ||
-      Mnemonic == "sbc" || Mnemonic == "umull" || Mnemonic == "eor" ||
-      Mnemonic == "neg" ||
+      Mnemonic == "sbc" || Mnemonic == "eor" || Mnemonic == "neg" ||
       (!isThumb() && (Mnemonic == "smull" || Mnemonic == "mov" ||
-                      Mnemonic == "mla" || Mnemonic == "smlal"))) {
+                      Mnemonic == "mla" || Mnemonic == "smlal" ||
+                      Mnemonic == "umlal" || Mnemonic == "umull"))) {
     CanAcceptCarrySet = true;
   } else
     CanAcceptCarrySet = false;
index 4b3e84846c6cbb5ce1da50a7626d154b08a33370..749edbc606ba6f7da98070eff1abb12bff888f31 100644 (file)
@@ -2774,3 +2774,39 @@ _func:
 @ CHECK: itt   lt                      @ encoding: [0xbc,0xbf]
 @ CHECK: uhsub16lt     r4, r9, r12     @ encoding: [0xd9,0xfa,0x6c,0xf4]
 @ CHECK: uhsub8lt      r3, r1, r5      @ encoding: [0xc1,0xfa,0x65,0xf3]
+
+
+@------------------------------------------------------------------------------
+@ UMAAL
+@------------------------------------------------------------------------------
+        umaal r3, r4, r5, r6
+        it lt
+        umaallt r3, r4, r5, r6
+
+@ CHECK: umaal r3, r4, r5, r6          @ encoding: [0xe5,0xfb,0x66,0x34]
+@ CHECK: it    lt                      @ encoding: [0xb8,0xbf]
+@ CHECK: umaallt       r3, r4, r5, r6  @ encoding: [0xe5,0xfb,0x66,0x34]
+
+
+@------------------------------------------------------------------------------
+@ UMLAL
+@------------------------------------------------------------------------------
+        umlal r2, r4, r6, r8
+        it gt
+        umlalgt r6, r1, r2, r6
+
+@ CHECK: umlal r2, r4, r6, r8          @ encoding: [0xe6,0xfb,0x08,0x24]
+@ CHECK: it    gt                      @ encoding: [0xc8,0xbf]
+@ CHECK: umlalgt       r6, r1, r2, r6  @ encoding: [0xe2,0xfb,0x06,0x61]
+
+
+@------------------------------------------------------------------------------
+@ UMULL
+@------------------------------------------------------------------------------
+        umull r2, r4, r6, r8
+        it gt
+        umullgt r6, r1, r2, r6
+
+@ CHECK: umull r2, r4, r6, r8          @ encoding: [0xa6,0xfb,0x08,0x24]
+@ CHECK: it    gt                      @ encoding: [0xc8,0xbf]
+@ CHECK: umullgt       r6, r1, r2, r6  @ encoding: [0xa2,0xfb,0x06,0x61]