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

Unified Diff: src/IceTargetLoweringMIPS32.cpp

Issue 2358123002: Subzero, MIPS32: Remove duplicate functionalities (Closed) Base URL: https://chromium.googlesource.com/native_client/pnacl-subzero.git@master
Patch Set: Added new info lines Created 4 years, 3 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
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/IceTargetLoweringMIPS32.cpp
diff --git a/src/IceTargetLoweringMIPS32.cpp b/src/IceTargetLoweringMIPS32.cpp
index 6d6c6b9316f43f8e48f4e759d7493ea7a7eea595..05dfe3c0aef567d71e48fca6d444d677f5ed8d67 100644
--- a/src/IceTargetLoweringMIPS32.cpp
+++ b/src/IceTargetLoweringMIPS32.cpp
@@ -1839,15 +1839,6 @@ void TargetMIPS32::lowerArithmetic(const InstArithmetic *Instr) {
UnimplementedLoweringError(this, Instr);
return;
}
- switch (Instr->getOp()) {
- default:
- break;
- case InstArithmetic::Frem:
- UnimplementedLoweringError(this, Instr);
- return;
- }
-
- // At this point Dest->getType() is non-i64 scalar
Variable *T = makeReg(Dest->getType());
Variable *Src0R = legalizeToReg(Src0);
@@ -1979,6 +1970,7 @@ void TargetMIPS32::lowerArithmetic(const InstArithmetic *Instr) {
}
break;
case InstArithmetic::Frem:
+ llvm::report_fatal_error("frem should have been prelowered.");
break;
}
UnimplementedLoweringError(this, Instr);
@@ -2415,6 +2407,10 @@ void TargetMIPS32::lowerCast(const InstCast *Instr) {
break;
}
case InstCast::Fptosi: {
+ if (llvm::isa<Variable64On32>(Dest)) {
+ llvm::report_fatal_error("fp-to-i64 should have been prelowered.");
+ return;
+ }
if (Src0Ty == IceType_f32 && DestTy == IceType_i32) {
Variable *Src0R = legalizeToReg(Src0);
Variable *FTmp = makeReg(IceType_f32);
@@ -2426,9 +2422,17 @@ void TargetMIPS32::lowerCast(const InstCast *Instr) {
break;
}
case InstCast::Fptoui:
+ if (llvm::isa<Variable64On32>(Dest)) {
+ llvm::report_fatal_error("fp-to-i64 should have been prelowered.");
+ return;
+ }
UnimplementedLoweringError(this, Instr);
break;
case InstCast::Sitofp: {
+ if (llvm::isa<Variable64On32>(Dest)) {
+ llvm::report_fatal_error("i64-to-fp should have been prelowered.");
+ return;
+ }
if (Src0Ty == IceType_i32 && DestTy == IceType_f32) {
Variable *Src0R = legalizeToReg(Src0);
Variable *FTmp1 = makeReg(IceType_f32);
@@ -2442,11 +2446,44 @@ void TargetMIPS32::lowerCast(const InstCast *Instr) {
break;
}
case InstCast::Uitofp: {
+ if (llvm::isa<Variable64On32>(Dest)) {
+ llvm::report_fatal_error("i64-to-fp should have been prelowered.");
+ return;
+ }
UnimplementedLoweringError(this, Instr);
break;
}
case InstCast::Bitcast: {
- UnimplementedLoweringError(this, Instr);
+ switch (DestTy) {
+ case IceType_NUM:
+ case IceType_void:
+ llvm::report_fatal_error("Unexpected bitcast.");
+ case IceType_i1:
+ UnimplementedLoweringError(this, Instr);
+ break;
+ case IceType_i8:
+ assert(Src0->getType() == IceType_v8i1);
+ llvm::report_fatal_error(
+ "i8 to v8i1 conversion should have been prelowered.");
+ break;
+ case IceType_i16:
+ assert(Src0->getType() == IceType_v16i1);
+ llvm::report_fatal_error(
+ "i16 to v16i1 conversion should have been prelowered.");
+ break;
+ case IceType_v8i1:
+ assert(Src0->getType() == IceType_i8);
+ llvm::report_fatal_error(
+ "v8i1 to i8 conversion should have been prelowered.");
+ break;
+ case IceType_v16i1:
+ assert(Src0->getType() == IceType_i16);
+ llvm::report_fatal_error(
+ "v16i1 to i16 conversion should have been prelowered.");
+ break;
+ default:
+ UnimplementedLoweringError(this, Instr);
+ }
break;
}
}
@@ -2805,7 +2842,7 @@ void TargetMIPS32::lowerIntrinsicCall(const InstIntrinsicCall *Instr) {
return;
}
case Intrinsics::Ctpop: {
- UnimplementedLoweringError(this, Instr);
+ llvm::report_fatal_error("Ctpop should have been prelowered.");
return;
}
case Intrinsics::Ctlz: {
@@ -2829,42 +2866,19 @@ void TargetMIPS32::lowerIntrinsicCall(const InstIntrinsicCall *Instr) {
return;
}
case Intrinsics::Longjmp: {
- InstCall *Call = makeHelperCall(RuntimeHelper::H_call_longjmp, nullptr, 2);
- Call->addArg(Instr->getArg(0));
- Call->addArg(Instr->getArg(1));
- lowerCall(Call);
+ llvm::report_fatal_error("longjmp should have been prelowered.");
return;
}
case Intrinsics::Memcpy: {
- // In the future, we could potentially emit an inline memcpy/memset, etc.
- // for intrinsic calls w/ a known length.
- InstCall *Call = makeHelperCall(RuntimeHelper::H_call_memcpy, nullptr, 3);
- Call->addArg(Instr->getArg(0));
- Call->addArg(Instr->getArg(1));
- Call->addArg(Instr->getArg(2));
- lowerCall(Call);
+ llvm::report_fatal_error("memcpy should have been prelowered.");
return;
}
case Intrinsics::Memmove: {
- InstCall *Call = makeHelperCall(RuntimeHelper::H_call_memmove, nullptr, 3);
- Call->addArg(Instr->getArg(0));
- Call->addArg(Instr->getArg(1));
- Call->addArg(Instr->getArg(2));
- lowerCall(Call);
+ llvm::report_fatal_error("memmove should have been prelowered.");
return;
}
case Intrinsics::Memset: {
- // The value operand needs to be extended to a stack slot size because the
- // PNaCl ABI requires arguments to be at least 32 bits wide.
- Operand *ValOp = Instr->getArg(1);
- assert(ValOp->getType() == IceType_i8);
- Variable *ValExt = Func->makeVariable(stackSlotType());
- lowerCast(InstCast::create(Func, InstCast::Zext, ValExt, ValOp));
- InstCall *Call = makeHelperCall(RuntimeHelper::H_call_memset, nullptr, 3);
- Call->addArg(Instr->getArg(0));
- Call->addArg(ValExt);
- Call->addArg(Instr->getArg(2));
- lowerCall(Call);
+ llvm::report_fatal_error("memset should have been prelowered.");
return;
}
case Intrinsics::NaClReadTP: {
@@ -2878,10 +2892,7 @@ void TargetMIPS32::lowerIntrinsicCall(const InstIntrinsicCall *Instr) {
return;
}
case Intrinsics::Setjmp: {
- InstCall *Call =
- makeHelperCall(RuntimeHelper::H_call_setjmp, Instr->getDest(), 1);
- Call->addArg(Instr->getArg(0));
- lowerCall(Call);
+ llvm::report_fatal_error("setjmp should have been prelowered.");
return;
}
case Intrinsics::Sqrt: {
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698