Index: src/IceInstMIPS32.cpp |
diff --git a/src/IceInstMIPS32.cpp b/src/IceInstMIPS32.cpp |
index 85cf07b560ca4a2a2e2209b0937469c26ee62035..c83267d11166c748e01b80cbba755cc0903e9ab2 100644 |
--- a/src/IceInstMIPS32.cpp |
+++ b/src/IceInstMIPS32.cpp |
@@ -104,7 +104,13 @@ template <> const char *InstMIPS32Mflo::Opcode = "mflo"; |
template <> const char *InstMIPS32Mov_d::Opcode = "mov.d"; |
template <> const char *InstMIPS32Mov_s::Opcode = "mov.s"; |
template <> const char *InstMIPS32Movf::Opcode = "movf"; |
+template <> const char *InstMIPS32Movn::Opcode = "movn"; |
+template <> const char *InstMIPS32Movn_d::Opcode = "movn.d"; |
+template <> const char *InstMIPS32Movn_s::Opcode = "movn.s"; |
template <> const char *InstMIPS32Movt::Opcode = "movt"; |
+template <> const char *InstMIPS32Movz::Opcode = "movz"; |
+template <> const char *InstMIPS32Movz_d::Opcode = "movz.d"; |
+template <> const char *InstMIPS32Movz_s::Opcode = "movz.s"; |
template <> const char *InstMIPS32Mtc1::Opcode = "mtc1"; |
template <> const char *InstMIPS32Mthi::Opcode = "mthi"; |
template <> const char *InstMIPS32Mtlo::Opcode = "mtlo"; |
@@ -737,7 +743,8 @@ void InstMIPS32Mov::emitSingleDestSingleSource(const Cfg *Func) const { |
const Type SrcType = Src->getType(); |
// move GP to/from FP |
- if (DstType != SrcType) { |
+ if ((isScalarIntegerType(DstType) && isScalarFloatingType(SrcType)) || |
+ (isScalarFloatingType(DstType) && isScalarIntegerType(SrcType))) { |
obucinac
2016/09/14 12:39:02
e.g. IceType_i8 != IceType_i32, triggered emmiting
|
if (isScalarFloatingType(DstType)) { |
Str << "\t" |
"mtc1" |