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

Unified Diff: src/IceTargetLoweringMIPS32.cpp

Issue 2357143002: [SubZero] Fix floating-point comparison 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/IceTargetLoweringMIPS32.cpp
diff --git a/src/IceTargetLoweringMIPS32.cpp b/src/IceTargetLoweringMIPS32.cpp
index dc6c71b3f5d2bb8bab5430efc6fbb39db61d4cab..6d6c6b9316f43f8e48f4e759d7493ea7a7eea595 100644
--- a/src/IceTargetLoweringMIPS32.cpp
+++ b/src/IceTargetLoweringMIPS32.cpp
@@ -2468,7 +2468,7 @@ void TargetMIPS32::lowerFcmp(const InstFcmp *Instr) {
auto *Zero = getZero();
InstFcmp::FCond Cond = Instr->getCondition();
- auto *DestR = legalizeToReg(Dest);
+ auto *DestR = makeReg(Dest->getType());
auto *Src0R = legalizeToReg(Src0);
auto *Src1R = legalizeToReg(Src1);
const Type Src0Ty = Src0->getType();
@@ -2493,6 +2493,7 @@ void TargetMIPS32::lowerFcmp(const InstFcmp *Instr) {
} else {
_c_eq_d(Src0R, Src1R);
}
+ _addiu(DestR, Zero, 1);
_movf(DestR, Zero, FCC0);
_mov(Dest, DestR);
break;
@@ -2503,6 +2504,7 @@ void TargetMIPS32::lowerFcmp(const InstFcmp *Instr) {
} else {
_c_ule_d(Src0R, Src1R);
}
+ _addiu(DestR, Zero, 1);
_movt(DestR, Zero, FCC0);
_mov(Dest, DestR);
break;
@@ -2513,6 +2515,7 @@ void TargetMIPS32::lowerFcmp(const InstFcmp *Instr) {
} else {
_c_ult_d(Src0R, Src1R);
}
+ _addiu(DestR, Zero, 1);
_movt(DestR, Zero, FCC0);
_mov(Dest, DestR);
break;
@@ -2523,6 +2526,7 @@ void TargetMIPS32::lowerFcmp(const InstFcmp *Instr) {
} else {
_c_olt_d(Src0R, Src1R);
}
+ _addiu(DestR, Zero, 1);
_movf(DestR, Zero, FCC0);
_mov(Dest, DestR);
break;
@@ -2533,6 +2537,7 @@ void TargetMIPS32::lowerFcmp(const InstFcmp *Instr) {
} else {
_c_ole_d(Src0R, Src1R);
}
+ _addiu(DestR, Zero, 1);
_movf(DestR, Zero, FCC0);
_mov(Dest, DestR);
break;
@@ -2543,6 +2548,7 @@ void TargetMIPS32::lowerFcmp(const InstFcmp *Instr) {
} else {
_c_ueq_d(Src0R, Src1R);
}
+ _addiu(DestR, Zero, 1);
_movt(DestR, Zero, FCC0);
_mov(Dest, DestR);
break;
@@ -2553,6 +2559,7 @@ void TargetMIPS32::lowerFcmp(const InstFcmp *Instr) {
} else {
_c_un_d(Src0R, Src1R);
}
+ _addiu(DestR, Zero, 1);
_movt(DestR, Zero, FCC0);
_mov(Dest, DestR);
break;
@@ -2563,6 +2570,7 @@ void TargetMIPS32::lowerFcmp(const InstFcmp *Instr) {
} else {
_c_ueq_d(Src0R, Src1R);
}
+ _addiu(DestR, Zero, 1);
_movf(DestR, Zero, FCC0);
_mov(Dest, DestR);
break;
@@ -2573,6 +2581,7 @@ void TargetMIPS32::lowerFcmp(const InstFcmp *Instr) {
} else {
_c_ole_d(Src0R, Src1R);
}
+ _addiu(DestR, Zero, 1);
_movt(DestR, Zero, FCC0);
_mov(Dest, DestR);
break;
@@ -2583,6 +2592,7 @@ void TargetMIPS32::lowerFcmp(const InstFcmp *Instr) {
} else {
_c_olt_d(Src0R, Src1R);
}
+ _addiu(DestR, Zero, 1);
_movt(DestR, Zero, FCC0);
_mov(Dest, DestR);
break;
@@ -2593,6 +2603,7 @@ void TargetMIPS32::lowerFcmp(const InstFcmp *Instr) {
} else {
_c_ult_d(Src0R, Src1R);
}
+ _addiu(DestR, Zero, 1);
_movf(DestR, Zero, FCC0);
_mov(Dest, DestR);
break;
@@ -2603,6 +2614,7 @@ void TargetMIPS32::lowerFcmp(const InstFcmp *Instr) {
} else {
_c_ule_d(Src0R, Src1R);
}
+ _addiu(DestR, Zero, 1);
_movf(DestR, Zero, FCC0);
_mov(Dest, DestR);
break;
@@ -2613,6 +2625,7 @@ void TargetMIPS32::lowerFcmp(const InstFcmp *Instr) {
} else {
_c_eq_d(Src0R, Src1R);
}
+ _addiu(DestR, Zero, 1);
_movt(DestR, Zero, FCC0);
_mov(Dest, DestR);
break;
@@ -2623,6 +2636,7 @@ void TargetMIPS32::lowerFcmp(const InstFcmp *Instr) {
} else {
_c_un_d(Src0R, Src1R);
}
+ _addiu(DestR, Zero, 1);
_movf(DestR, Zero, FCC0);
_mov(Dest, DestR);
break;

Powered by Google App Engine
This is Rietveld 408576698