return std::make_pair(0U, nullptr);
case 'l': // use the `lo` register to store values
// that are no bigger than a word
- if (VT == MVT::i32 || VT == MVT::i16 || VT == MVT::i8)
+ if (VT == MVT::i32)
return std::make_pair((unsigned)Mips::LO0, &Mips::LO32RegClass);
return std::make_pair((unsigned)Mips::LO0_64, &Mips::LO64RegClass);
case 'x': // use the concatenated `hi` and `lo` registers
+++ /dev/null
-; Negative test. The constraint 'l' represents the register 'lo'.
-; Check error message in case of invalid usage.
-;
-; RUN: not llc -march=mips -filetype=obj < %s 2>&1 | FileCheck %s
-
-define void @constraint_l() nounwind {
-entry:
-
-; CHECK: error: invalid operand for instruction
-
- tail call i16 asm sideeffect "addiu $0,$1,$2", "=l,r,r,~{$1}"(i16 0, i16 0)
- ret void
-}
call i32 asm sideeffect "\09mtlo $3 \0A\09\09madd $1, $2 ", "=l,r,r,r"(i32 7, i32 6, i32 44) nounwind
store volatile i32 %4, i32* %bosco, align 4
-; Check the 'l' constraint for 16-bit type.
-; CHECK: #APP
-; CHECK: mtlo ${{[0-9]+}}
-; CHECK-NEXT: madd ${{[0-9]+}}, ${{[0-9]+}}
-; CHECK: #NO_APP
-; CHECK-NEXT: mflo ${{[0-9]+}}
- %bosco16 = alloca i16, align 4
- call i16 asm sideeffect "\09mtlo $3 \0A\09\09madd $1, $2 ", "=l,r,r,r"(i32 7, i32 6, i32 44) nounwind
- store volatile i16 %5, i16* %bosco16, align 4
-
ret i32 0
}