[llvm] [MIPS][float] Fixed SingleFloat codegen on N32/N64 targets (PR #140575)
Matt Arsenault via llvm-commits
llvm-commits at lists.llvm.org
Wed May 21 07:55:33 PDT 2025
================
@@ -4295,10 +4295,16 @@ parseRegForInlineAsmConstraint(StringRef C, MVT VT) const {
return std::make_pair(0U, nullptr);
if (Prefix == "$f") { // Parse $f0-$f31.
- // If the size of FP registers is 64-bit or Reg is an even number, select
- // the 64-bit register class. Otherwise, select the 32-bit register class.
- if (VT == MVT::Other)
- VT = (Subtarget.isFP64bit() || !(Reg % 2)) ? MVT::f64 : MVT::f32;
+ // If the targets is single float only, always select 32-bit registers,
+ // otherwise if the size of FP registers is 64-bit or Reg is an even number,
+ // select the 64-bit register class. Otherwise, select the 32-bit register
+ // class.
+ if (VT == MVT::Other) {
+ if (Subtarget.isSingleFloat())
+ VT = MVT::f32;
+ else
+ VT = (Subtarget.isFP64bit() || !(Reg % 2)) ? MVT::f64 : MVT::f32;
----------------
arsenm wrote:
Not sure this is properly covered in the tests, the only asm is a full clobber list which I'm assuming is to stress calling convention handling
https://github.com/llvm/llvm-project/pull/140575
More information about the llvm-commits
mailing list