Create an option to turn off generation of fcmp instructions while still
authorReid Spencer <rspencer@reidspencer.com>
Thu, 7 Dec 2006 04:22:23 +0000 (04:22 +0000)
committerReid Spencer <rspencer@reidspencer.com>
Thu, 7 Dec 2006 04:22:23 +0000 (04:22 +0000)
allowing integer setxx instructions to be converted to icmp.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32302 91177308-0d34-0410-b5e6-96231b3b80d8

tools/llvm-upgrade/UpgradeParser.y

index 1ee394c8272bfca0cf2e3b270778aa22b7c1f81a..f53369d6031bb258e52a96a53e8fcac92e584996 100644 (file)
@@ -24,6 +24,7 @@
 #define YYINCLUDED_STDLIB_H
 #define YYDEBUG 1
 #define UPGRADE_SETCOND_OPS 0
+#define GENERATE_FCMP_INSTS 0
 
 int yylex();                       // declaration" of xxx warnings.
 int yyparse();
@@ -247,8 +248,16 @@ getCompareOp(const std::string& setcc, const TypeInfo& TI) {
   result[6] = cc1;
   result[7] = cc2;
   if (TI.isFloatingPoint()) {
+#if GENERATE_FCMP_INSTS
     result[0] = 'f';
     result[5] = 'o'; // FIXME: Always map to ordered comparison ?
+    if (cc1 == 'n')
+      result[5] = 'u'; // NE maps to unordered
+    else
+      result[5] = 'o'; // everything else maps to ordered
+#else
+    result = setcc;
+#endif
   } else if (TI.isIntegral() || TI.isPointer()) {
     result[0] = 'i';
     if ((cc1 == 'e' && cc2 == 'q') || (cc1 == 'n' && cc2 == 'e'))