Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(18)

Unified Diff: src/IceTargetLoweringMIPS32.h

Issue 2380023002: [SubZero] Vector types support for MIPS (Closed) Base URL: https://chromium.googlesource.com/native_client/pnacl-subzero.git@master
Patch Set: Addressed review comments Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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;

Powered by Google App Engine
This is Rietveld 408576698