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

Unified Diff: src/IceInstMIPS32.cpp

Issue 2301303003: [SubZero] Implement load and store for MIPS (Closed) Base URL: https://chromium.googlesource.com/native_client/pnacl-subzero.git@master
Patch Set: 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
Index: src/IceInstMIPS32.cpp
diff --git a/src/IceInstMIPS32.cpp b/src/IceInstMIPS32.cpp
index f86c8b2d1e358c48060c423f36e0df672138efed..486d149ea46471794c260953d52e7af8129670dc 100644
--- a/src/IceInstMIPS32.cpp
+++ b/src/IceInstMIPS32.cpp
@@ -649,10 +649,8 @@ void InstMIPS32Mov::dump(const Cfg *Func) const {
Str << ", ";
DestHi->dump(Func);
}
-
dumpOpcode(Str, " = mov", getDest()->getType());
Str << " ";
-
dumpSources(Func);
}
@@ -711,9 +709,7 @@ void InstMIPS32Mov::emitSingleDestSingleSource(const Cfg *Func) const {
const char *ActualOpcode = nullptr;
const bool DestIsReg = Dest->hasReg();
- const bool DestIsMem = !Dest->hasReg();
const bool SrcIsReg = (SrcV && SrcV->hasReg());
- const bool SrcIsMem = !(SrcV && SrcV->hasReg());
// reg to reg
if (DestIsReg && SrcIsReg) {
@@ -728,9 +724,7 @@ void InstMIPS32Mov::emitSingleDestSingleSource(const Cfg *Func) const {
case IceType_i8:
case IceType_i16:
case IceType_i32:
- Str << "\t"
- "move"
- "\t";
+ Str << "\t" << "move" << "\t";
getDest()->emit(Func);
Str << ", ";
getSrc(0)->emit(Func);
@@ -748,64 +742,7 @@ void InstMIPS32Mov::emitSingleDestSingleSource(const Cfg *Func) const {
return;
}
- // reg to stack
- if (DestIsMem && SrcIsReg) {
- switch (Dest->getType()) {
- case IceType_f32:
- ActualOpcode = "swc1";
- break;
- case IceType_f64:
- ActualOpcode = "sdc1";
- break;
- case IceType_i1:
- case IceType_i8:
- case IceType_i16:
- case IceType_i32:
- ActualOpcode = "sw";
- break;
- default:
- UnimplementedError(getFlags());
- return;
- }
-
- assert(ActualOpcode);
- Str << "\t" << ActualOpcode << "\t";
- getSrc(0)->emit(Func);
- Str << ", ";
- getDest()->emit(Func);
- return;
- }
-
- // stack to reg
- if (DestIsReg && SrcIsMem) {
- switch (Dest->getType()) {
- case IceType_f32:
- ActualOpcode = "lwc1";
- break;
- case IceType_f64:
- ActualOpcode = "ldc1";
- break;
- case IceType_i1:
- case IceType_i8:
- case IceType_i16:
- case IceType_i32:
- ActualOpcode = "lw";
- break;
- default:
- UnimplementedError(getFlags());
- return;
- }
-
- assert(ActualOpcode);
- Str << "\t" << ActualOpcode << "\t";
- getDest()->emit(Func);
- Str << ", ";
- getSrc(0)->emit(Func);
- return;
- }
-
- // stack to stack
- llvm::report_fatal_error("mov cant copy stack to stack.");
+ llvm::report_fatal_error("Invalid mov instruction. Dest or Src is memory.");
}
template <> void InstMIPS32Addiu::emitIAS(const Cfg *Func) const {

Powered by Google App Engine
This is Rietveld 408576698