| Index: src/IceTargetLoweringMIPS32.h
|
| diff --git a/src/IceTargetLoweringMIPS32.h b/src/IceTargetLoweringMIPS32.h
|
| index ea062e7d7d799f4c4495383adbb84e5f951f9d4e..cf4bca0614f753a95cc88b9e1232c575d750d0bf 100644
|
| --- a/src/IceTargetLoweringMIPS32.h
|
| +++ b/src/IceTargetLoweringMIPS32.h
|
| @@ -216,14 +216,26 @@ public:
|
| Context.insert<InstMIPS32Ori>(Dest, Src, Imm);
|
| }
|
|
|
| - void _sub(Variable *Dest, Variable *Src0, Variable *Src1) {
|
| - Context.insert<InstMIPS32Sub>(Dest, Src0, Src1);
|
| + void _slt(Variable *Dest, Variable *Src0, Variable *Src1) {
|
| + Context.insert<InstMIPS32Slt>(Dest, Src0, Src1);
|
| + }
|
| +
|
| + void _slti(Variable *Dest, Variable *Src, uint32_t Imm) {
|
| + Context.insert<InstMIPS32Slti>(Dest, Src, Imm);
|
| + }
|
| +
|
| + void _sltiu(Variable *Dest, Variable *Src, uint32_t Imm) {
|
| + Context.insert<InstMIPS32Sltiu>(Dest, Src, Imm);
|
| }
|
|
|
| void _sltu(Variable *Dest, Variable *Src0, Variable *Src1) {
|
| Context.insert<InstMIPS32Sltu>(Dest, Src0, Src1);
|
| }
|
|
|
| + void _sub(Variable *Dest, Variable *Src0, Variable *Src1) {
|
| + Context.insert<InstMIPS32Sub>(Dest, Src0, Src1);
|
| + }
|
| +
|
| void _subu(Variable *Dest, Variable *Src0, Variable *Src1) {
|
| Context.insert<InstMIPS32Subu>(Dest, Src0, Src1);
|
| }
|
| @@ -232,6 +244,10 @@ public:
|
| Context.insert<InstMIPS32Xor>(Dest, Src0, Src1);
|
| }
|
|
|
| + void _xori(Variable *Dest, Variable *Src, uint32_t Imm) {
|
| + Context.insert<InstMIPS32Xori>(Dest, Src, Imm);
|
| + }
|
| +
|
| void lowerArguments() override;
|
|
|
| /// Operand legalization helpers. To deal with address mode constraints,
|
| @@ -257,6 +273,10 @@ public:
|
|
|
| Variable *makeReg(Type Ty, RegNumT RegNum = RegNumT());
|
|
|
| + Variable *getZero() {
|
| + return getPhysicalRegister(RegMIPS32::Reg_ZERO, IceType_i32);
|
| + }
|
| +
|
| Variable *I32Reg(RegNumT RegNum = RegNumT()) {
|
| return makeReg(IceType_i32, RegNum);
|
| }
|
| @@ -293,6 +313,7 @@ protected:
|
| void lowerExtractElement(const InstExtractElement *Instr) override;
|
| void lowerFcmp(const InstFcmp *Instr) override;
|
| void lowerIcmp(const InstIcmp *Instr) override;
|
| + void lower64Icmp(const InstIcmp *Instr);
|
| void lowerIntrinsicCall(const InstIntrinsicCall *Instr) override;
|
| void lowerInsertElement(const InstInsertElement *Instr) override;
|
| void lowerLoad(const InstLoad *Instr) override;
|
|
|