Index: src/IceTargetLoweringMIPS32.cpp |
diff --git a/src/IceTargetLoweringMIPS32.cpp b/src/IceTargetLoweringMIPS32.cpp |
index 70ddef531f88350f82bf5fc12e8d6b01cdca4ba9..2ac65c899dcf65b0748613d7106440393901947c 100644 |
--- a/src/IceTargetLoweringMIPS32.cpp |
+++ b/src/IceTargetLoweringMIPS32.cpp |
@@ -1565,8 +1565,11 @@ void TargetDataMIPS32::lowerJumpTables() { |
Variable *TargetMIPS32::copyToReg(Operand *Src, RegNumT RegNum) { |
Type Ty = Src->getType(); |
Variable *Reg = makeReg(Ty, RegNum); |
- if (isVectorType(Ty) || isFloatingType(Ty)) { |
+ if (isVectorType(Ty)) { |
UnimplementedError(getFlags()); |
+ } else if (isFloatingType(Ty)) { |
+ (Ty == IceType_f32) ? _mov_s(Reg, llvm::dyn_cast<Variable>(Src)) |
+ : _mov_d(Reg, llvm::dyn_cast<Variable>(Src)); |
} else { |
// Mov's Src operand can really only be the flexible second operand type |
// or a register. Users should guarantee that. |