| Index: src/IceTargetLoweringMIPS32.h
|
| diff --git a/src/IceTargetLoweringMIPS32.h b/src/IceTargetLoweringMIPS32.h
|
| index 65834642edb042e6dbaf00049fcc0358e8d3f0d6..6f47e2128d5b7a20035faee9cbbb734c2725af1d 100644
|
| --- a/src/IceTargetLoweringMIPS32.h
|
| +++ b/src/IceTargetLoweringMIPS32.h
|
| @@ -392,6 +392,11 @@ public:
|
| }
|
| }
|
|
|
| + void _mov_fp64_to_i64(Variable *Dest, Operand *Src, Int64Part Int64HiLo) {
|
| + assert(Dest != nullptr);
|
| + Context.insert<InstMIPS32MovFP64ToI64>(Dest, Src, Int64HiLo);
|
| + }
|
| +
|
| void _mov_d(Variable *Dest, Variable *Src) {
|
| Context.insert<InstMIPS32Mov_d>(Dest, Src);
|
| }
|
| @@ -659,7 +664,9 @@ public:
|
| Variable *makeReg(Type Ty, RegNumT RegNum = RegNumT());
|
|
|
| Variable *getZero() {
|
| - return getPhysicalRegister(RegMIPS32::Reg_ZERO, IceType_i32);
|
| + auto *Zero = makeReg(IceType_i32, RegMIPS32::Reg_ZERO);
|
| + Context.insert<InstFakeDef>(Zero);
|
| + return Zero;
|
| }
|
|
|
| Variable *I32Reg(RegNumT RegNum = RegNumT()) {
|
| @@ -809,6 +816,7 @@ protected:
|
| ///
|
| /// Moves to memory become store instructions, and moves from memory, loads.
|
| void legalizeMov(InstMIPS32Mov *Mov);
|
| + void legalizeMovFp(InstMIPS32MovFP64ToI64 *MovInstr);
|
|
|
| private:
|
| /// Creates a new Base register centered around [Base, +/- Offset].
|
|
|