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

Unified Diff: src/IceTargetLoweringX8632.cpp

Issue 1531623007: Add option to force filetype=asm for testing (Closed) Base URL: https://chromium.googlesource.com/native_client/pnacl-subzero.git@master
Patch Set: Fix merge ordering issue. Created 4 years, 11 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/IceTargetLoweringX8632.cpp
diff --git a/src/IceTargetLoweringX8632.cpp b/src/IceTargetLoweringX8632.cpp
index 8e78228d709a248537a9426bbd56c325069e8896..e0c23149eb5803a25fb0c3acb9e863d115dcb935 100644
--- a/src/IceTargetLoweringX8632.cpp
+++ b/src/IceTargetLoweringX8632.cpp
@@ -219,7 +219,8 @@ void TargetX8632::lowerCall(const InstCall *Instr) {
Variable *ReturnReg = nullptr;
Variable *ReturnRegHi = nullptr;
if (Dest) {
- switch (Dest->getType()) {
+ const Type DestTy = Dest->getType();
+ switch (DestTy) {
case IceType_NUM:
case IceType_void:
llvm::report_fatal_error("Invalid Call dest type");
@@ -228,7 +229,8 @@ void TargetX8632::lowerCall(const InstCall *Instr) {
case IceType_i8:
case IceType_i16:
case IceType_i32:
- ReturnReg = makeReg(Dest->getType(), Traits::RegisterSet::Reg_eax);
+ ReturnReg = makeReg(
+ DestTy, Traits::getGprForType(DestTy, Traits::RegisterSet::Reg_al));
Jim Stichnoth 2016/01/10 03:08:56 I don't really like this Reg_al trick. At the ver
sehr 2016/01/11 21:49:48 Done.
break;
case IceType_i64:
ReturnReg = makeReg(IceType_i32, Traits::RegisterSet::Reg_eax);
@@ -246,7 +248,7 @@ void TargetX8632::lowerCall(const InstCall *Instr) {
case IceType_v8i16:
case IceType_v4i32:
case IceType_v4f32:
- ReturnReg = makeReg(Dest->getType(), Traits::RegisterSet::Reg_xmm0);
+ ReturnReg = makeReg(DestTy, Traits::RegisterSet::Reg_xmm0);
break;
}
}
@@ -303,10 +305,11 @@ void TargetX8632::lowerCall(const InstCall *Instr) {
_mov(DestLo, ReturnReg);
_mov(DestHi, ReturnRegHi);
} else {
- assert(Dest->getType() == IceType_i32 || Dest->getType() == IceType_i16 ||
- Dest->getType() == IceType_i8 || Dest->getType() == IceType_i1 ||
- isVectorType(Dest->getType()));
- if (isVectorType(Dest->getType())) {
+ const Type DestTy = Dest->getType();
+ assert(DestTy == IceType_i32 || DestTy == IceType_i16 ||
+ DestTy == IceType_i8 || DestTy == IceType_i1 ||
+ isVectorType(DestTy));
+ if (isVectorType(DestTy)) {
_movp(Dest, ReturnReg);
} else {
_mov(Dest, ReturnReg);
@@ -352,20 +355,23 @@ void TargetX8632::lowerRet(const InstRet *Inst) {
Variable *Reg = nullptr;
if (Inst->hasRetValue()) {
Operand *Src0 = legalize(Inst->getRetValue());
+ const Type Src0Ty = Src0->getType();
// TODO(jpp): this is not needed.
- if (Src0->getType() == IceType_i64) {
+ if (Src0Ty == IceType_i64) {
Variable *eax =
legalizeToReg(loOperand(Src0), Traits::RegisterSet::Reg_eax);
Variable *edx =
legalizeToReg(hiOperand(Src0), Traits::RegisterSet::Reg_edx);
Reg = eax;
Context.insert<InstFakeUse>(edx);
- } else if (isScalarFloatingType(Src0->getType())) {
+ } else if (isScalarFloatingType(Src0Ty)) {
_fld(Src0);
- } else if (isVectorType(Src0->getType())) {
+ } else if (isVectorType(Src0Ty)) {
Reg = legalizeToReg(Src0, Traits::RegisterSet::Reg_xmm0);
} else {
- _mov(Reg, Src0, Traits::RegisterSet::Reg_eax);
+ assert(isScalarIntegerType(Src0Ty));
+ _mov(Reg, Src0,
+ Traits::getGprForType(Src0Ty, Traits::RegisterSet::Reg_eax));
Jim Stichnoth 2016/01/10 03:08:56 Similar comment to above. The lit tests that defi
sehr 2016/01/11 21:49:48 Done.
}
}
// Add a ret instruction even if sandboxing is enabled, because addEpilog

Powered by Google App Engine
This is Rietveld 408576698