diff options
-rw-r--r-- | llvm/lib/Target/Mips/MipsInstrInfo.td | 15 | ||||
-rw-r--r-- | llvm/test/MC/Mips/mips64r2/invalid.s | 6 |
2 files changed, 14 insertions, 7 deletions
diff --git a/llvm/lib/Target/Mips/MipsInstrInfo.td b/llvm/lib/Target/Mips/MipsInstrInfo.td index 5b4c4c812f6..e72d0b96bed 100644 --- a/llvm/lib/Target/Mips/MipsInstrInfo.td +++ b/llvm/lib/Target/Mips/MipsInstrInfo.td @@ -658,7 +658,7 @@ def uimm6_lsl2 : Operand<OtherVT> { foreach I = {16} in def uimm # I : Operand<i32> { - let PrintMethod = "printUImm<16>"; + let PrintMethod = "printUImm<" # I # ">"; let ParserMatchClass = !cast<AsmOperandClass>("UImm" # I # "AsmOperandClass"); } @@ -672,16 +672,17 @@ def uimm16_relaxed : Operand<i32> { foreach I = {5} in def uimm # I # _64 : Operand<i64> { - let PrintMethod = "printUImm<5>"; + let PrintMethod = "printUImm<" # I # ">"; let ParserMatchClass = !cast<AsmOperandClass>("ConstantUImm" # I # "AsmOperandClass"); } -def uimm16_64 : Operand<i64> { - let PrintMethod = "printUImm<16>"; - let ParserMatchClass = - !cast<AsmOperandClass>("UImm16AsmOperandClass"); -} +foreach I = {16} in + def uimm # I # _64 : Operand<i64> { + let PrintMethod = "printUImm<" # I # ">"; + let ParserMatchClass = + !cast<AsmOperandClass>("UImm" # I # "AsmOperandClass"); + } // Like uimm16_64 but coerces simm16 to uimm16. def uimm16_64_relaxed : Operand<i64> { diff --git a/llvm/test/MC/Mips/mips64r2/invalid.s b/llvm/test/MC/Mips/mips64r2/invalid.s index 8e290296cf4..84438c61528 100644 --- a/llvm/test/MC/Mips/mips64r2/invalid.s +++ b/llvm/test/MC/Mips/mips64r2/invalid.s @@ -6,6 +6,8 @@ .text .set noreorder + andi $2, $3, -1 # CHECK: :[[@LINE]]:22: error: expected 16-bit unsigned immediate + andi $2, $3, 65536 # CHECK: :[[@LINE]]:22: error: expected 16-bit unsigned immediate cache -1, 255($7) # CHECK: :[[@LINE]]:15: error: expected 5-bit unsigned immediate cache 32, 255($7) # CHECK: :[[@LINE]]:15: error: expected 5-bit unsigned immediate # FIXME: Check various 'pos + size' constraints on dext* @@ -56,6 +58,8 @@ ins $2, $3, 32, 1 # CHECK: :[[@LINE]]:21: error: expected 5-bit unsigned immediate jalr.hb $31 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: source and destination must be different jalr.hb $31, $31 # CHECK: :[[@LINE]]:{{[0-9]+}}: error: source and destination must be different + ori $2, $3, -1 # CHECK: :[[@LINE]]:21: error: expected 16-bit unsigned immediate + ori $2, $3, 65536 # CHECK: :[[@LINE]]:21: error: expected 16-bit unsigned immediate pref -1, 255($7) # CHECK: :[[@LINE]]:14: error: expected 5-bit unsigned immediate pref 32, 255($7) # CHECK: :[[@LINE]]:14: error: expected 5-bit unsigned immediate sll $2, $3, -1 # CHECK: :[[@LINE]]:21: error: expected 5-bit unsigned immediate @@ -66,3 +70,5 @@ sra $2, $3, 32 # CHECK: :[[@LINE]]:21: error: expected 5-bit unsigned immediate rotr $2, $3, -1 # CHECK: :[[@LINE]]:22: error: expected 5-bit unsigned immediate rotr $2, $3, 32 # CHECK: :[[@LINE]]:22: error: expected 5-bit unsigned immediate + xori $2, $3, -1 # CHECK: :[[@LINE]]:22: error: expected 16-bit unsigned immediate + xori $2, $3, 65536 # CHECK: :[[@LINE]]:22: error: expected 16-bit unsigned immediate |