From d5d0e81a4bec76a56a1e7b2326ed12bfcbcab9b9 Mon Sep 17 00:00:00 2001 From: Jim Grosbach Date: Mon, 19 Sep 2011 23:31:02 +0000 Subject: [PATCH] Thumb2 assembly parsing and encoding for UMAAL/UMLAL/UMULL. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140095 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Target/ARM/AsmParser/ARMAsmParser.cpp | 8 ++--- test/MC/ARM/basic-thumb2-instructions.s | 36 +++++++++++++++++++++++ 2 files changed, 40 insertions(+), 4 deletions(-) diff --git a/lib/Target/ARM/AsmParser/ARMAsmParser.cpp b/lib/Target/ARM/AsmParser/ARMAsmParser.cpp index ce3f747f2fd..b5259d97ac1 100644 --- a/lib/Target/ARM/AsmParser/ARMAsmParser.cpp +++ b/lib/Target/ARM/AsmParser/ARMAsmParser.cpp @@ -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; diff --git a/test/MC/ARM/basic-thumb2-instructions.s b/test/MC/ARM/basic-thumb2-instructions.s index 4b3e84846c6..749edbc606b 100644 --- a/test/MC/ARM/basic-thumb2-instructions.s +++ b/test/MC/ARM/basic-thumb2-instructions.s @@ -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]