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

Unified Diff: crosstest/test_fcmp_main.cpp

Issue 1497033002: Fuse icmp/fcmp with select (Closed) Base URL: https://chromium.googlesource.com/native_client/pnacl-subzero.git@master
Patch Set: Code review changes. Created 5 years 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: crosstest/test_fcmp_main.cpp
diff --git a/crosstest/test_fcmp_main.cpp b/crosstest/test_fcmp_main.cpp
index b1bd4704a5bb5771fe29bc9434fdf4cf59d15090..187bf96eebe9716b750ea57002aa6ea0a0af7f8a 100644
--- a/crosstest/test_fcmp_main.cpp
+++ b/crosstest/test_fcmp_main.cpp
@@ -27,9 +27,15 @@
#define X(cmp) \
extern "C" bool fcmp##cmp##Float(float a, float b); \
extern "C" bool fcmp##cmp##Double(double a, double b); \
+ extern "C" int fcmpSelect##cmp##Float(float a, float b, int c, int d); \
+ extern "C" int fcmpSelect##cmp##Double(double a, double b, int c, int d); \
extern "C" v4si32 fcmp##cmp##Vector(v4f32 a, v4f32 b); \
extern "C" bool Subzero_fcmp##cmp##Float(float a, float b); \
extern "C" bool Subzero_fcmp##cmp##Double(double a, double b); \
+ extern "C" int Subzero_fcmpSelect##cmp##Float(float a, float b, int c, \
+ int d); \
+ extern "C" int Subzero_fcmpSelect##cmp##Double(double a, double b, int c, \
+ int d); \
extern "C" v4si32 Subzero_fcmp##cmp##Vector(v4f32 a, v4f32 b);
FCMP_TABLE;
#undef X
@@ -59,17 +65,25 @@ void initializeValues() {
void testsScalar(size_t &TotalTests, size_t &Passes, size_t &Failures) {
typedef bool (*FuncTypeFloat)(float, float);
typedef bool (*FuncTypeDouble)(double, double);
+ typedef int (*FuncTypeFloatSelect)(float, float, int, int);
+ typedef int (*FuncTypeDoubleSelect)(double, double, int, int);
static struct {
const char *Name;
FuncTypeFloat FuncFloatSz;
FuncTypeFloat FuncFloatLlc;
FuncTypeDouble FuncDoubleSz;
FuncTypeDouble FuncDoubleLlc;
+ FuncTypeFloatSelect FuncFloatSelectSz;
+ FuncTypeFloatSelect FuncFloatSelectLlc;
+ FuncTypeDoubleSelect FuncDoubleSelectSz;
+ FuncTypeDoubleSelect FuncDoubleSelectLlc;
} Funcs[] = {
#define X(cmp) \
{ \
"fcmp" STR(cmp), Subzero_fcmp##cmp##Float, fcmp##cmp##Float, \
- Subzero_fcmp##cmp##Double, fcmp##cmp##Double \
+ Subzero_fcmp##cmp##Double, fcmp##cmp##Double, \
+ Subzero_fcmpSelect##cmp##Float, fcmpSelect##cmp##Float, \
+ Subzero_fcmpSelect##cmp##Double, fcmpSelect##cmp##Double \
} \
,
FCMP_TABLE
@@ -110,6 +124,34 @@ void testsScalar(size_t &TotalTests, size_t &Passes, size_t &Failures) {
<< Value2Double << "): sz=" << ResultSz
<< " llc=" << ResultLlc << "\n";
}
+ ++TotalTests;
+ float Value1SelectFloat = Values[i];
+ float Value2SelectFloat = Values[j];
+ ResultSz = Funcs[f].FuncFloatSelectSz(Value1Float, Value2Float, 1, 2);
+ ResultLlc = Funcs[f].FuncFloatSelectLlc(Value1Float, Value2Float, 1, 2);
+ if (ResultSz == ResultLlc) {
+ ++Passes;
+ } else {
+ ++Failures;
+ std::cout << Funcs[f].Name << "SelectFloat(" << Value1Float << ", "
+ << Value2Float << "): sz=" << ResultSz
+ << " llc=" << ResultLlc << "\n";
+ }
+ ++TotalTests;
+ double Value1SelectDouble = Values[i];
+ double Value2SelectDouble = Values[j];
+ ResultSz =
+ Funcs[f].FuncDoubleSelectSz(Value1Double, Value2Double, 1, 2);
+ ResultLlc =
+ Funcs[f].FuncDoubleSelectLlc(Value1Double, Value2Double, 1, 2);
+ if (ResultSz == ResultLlc) {
+ ++Passes;
+ } else {
+ ++Failures;
+ std::cout << Funcs[f].Name << "SelectDouble(" << Value1Double << ", "
+ << Value2Double << "): sz=" << ResultSz
+ << " llc=" << ResultLlc << "\n";
+ }
}
}
}

Powered by Google App Engine
This is Rietveld 408576698