Chromium Code Reviews| Index: src/IceTargetLoweringMIPS32.h |
| diff --git a/src/IceTargetLoweringMIPS32.h b/src/IceTargetLoweringMIPS32.h |
| index 7e87f0435ad41c4d8498f117e02b210005419155..b4d188838cb8ac3aede14c3508386898cf2338e4 100644 |
| --- a/src/IceTargetLoweringMIPS32.h |
| +++ b/src/IceTargetLoweringMIPS32.h |
| @@ -60,7 +60,8 @@ public: |
| void translateOm1() override; |
| void translateO2() override; |
| bool doBranchOpt(Inst *Instr, const CfgNode *NextNode) override; |
| - |
| + void setImplicitRet(Variable *Ret) { ImplicitRet = Ret; } |
| + Variable *getImplicitRet() const { return ImplicitRet; } |
| SizeT getNumRegisters() const override { return RegMIPS32::Reg_NUM; } |
| Variable *getPhysicalRegister(RegNumT RegNum, |
| Type Ty = IceType_void) override; |
| @@ -111,6 +112,10 @@ public: |
| return Ty == IceType_i64; |
| } |
| + bool shouldSplitToVariableVecOn32(Type Ty) const override { |
| + return isVectorType(Ty); |
| + } |
| + |
| // TODO(ascull): what is the best size of MIPS? |
| SizeT getMinJumpTableSize() const override { return 3; } |
| void emitJumpTable(const Cfg *Func, |
| @@ -609,9 +614,11 @@ public: |
| void split64(Variable *Var); |
| Operand *loOperand(Operand *Operand); |
| Operand *hiOperand(Operand *Operand); |
| + Operand *getOperandAtIndex(Operand *Operand, Type BaseType, uint32_t Index); |
| - void finishArgumentLowering(Variable *Arg, Variable *FramePtr, |
| - size_t BasicFrameOffset, size_t *InArgsSizeBytes); |
| + void finishArgumentLowering(Variable *Arg, bool PartialOnStack, |
| + Variable *FramePtr, size_t BasicFrameOffset, |
| + size_t *InArgsSizeBytes); |
| Operand *legalizeUndef(Operand *From, RegNumT RegNum = RegNumT()); |
| @@ -630,6 +637,7 @@ public: |
| /// appropriate register number. Note that, when Ty == IceType_i64, Reg will |
| /// be an I64 register pair. |
| bool argInReg(Type Ty, uint32_t ArgNo, RegNumT *Reg); |
| + void discardReg(RegNumT Reg) { GPRegsUsed |= RegisterAliases[Reg]; } |
| private: |
| // argInGPR is used to find if any GPR register is available for argument of |
| @@ -743,6 +751,7 @@ protected: |
| size_t FixedAllocaSizeBytes = 0; |
| size_t FixedAllocaAlignBytes = 0; |
| size_t PreservedRegsSizeBytes = 0; |
| + Variable *ImplicitRet; /// Implicit return |
|
Jim Stichnoth
2016/10/03 14:52:23
Variable *ImplicitRet = nullptr;
|
| private: |
| ENABLE_MAKE_UNIQUE; |