simplify the code for printing x86 long double, don't do work
authorChris Lattner <sabre@nondot.org>
Tue, 19 Jan 2010 22:11:05 +0000 (22:11 +0000)
committerChris Lattner <sabre@nondot.org>
Tue, 19 Jan 2010 22:11:05 +0000 (22:11 +0000)
for -fverbose-asm unless it's on.

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

lib/CodeGen/AsmPrinter/AsmPrinter.cpp

index 2e576b323a67299dc8aff2bd1dccb4b52d73e1f2..a989b7622adb4243f2a805b32cf74afe9316cfd6 100644 (file)
@@ -1200,82 +1200,29 @@ void AsmPrinter::EmitGlobalConstantFP(const ConstantFP *CFP,
     // api needed to prevent premature destruction
     APInt api = CFP->getValueAPF().bitcastToAPInt();
     const uint64_t *p = api.getRawData();
-    // Convert to double so we can print the approximate val as a comment.
-    APFloat DoubleVal = CFP->getValueAPF();
-    bool ignored;
-    DoubleVal.convert(APFloat::IEEEdouble, APFloat::rmNearestTiesToEven,
-                      &ignored);
+    if (VerboseAsm) {
+      // Convert to double so we can print the approximate val as a comment.
+      APFloat DoubleVal = CFP->getValueAPF();
+      bool ignored;
+      DoubleVal.convert(APFloat::IEEEdouble, APFloat::rmNearestTiesToEven,
+                        &ignored);
+      O.PadToColumn(MAI->getCommentColumn());
+      O << MAI->getCommentString() << " x86_fp80 ~= "
+        << DoubleVal.convertToDouble() << '\n';
+    }
+    
     if (TD.isBigEndian()) {
-      O << MAI->getData16bitsDirective(AddrSpace) << uint16_t(p[1]);
-      if (VerboseAsm) {
-        O.PadToColumn(MAI->getCommentColumn());
-        O << MAI->getCommentString()
-          << " most significant halfword of x86_fp80 ~"
-          << DoubleVal.convertToDouble();
-      }
-      O << '\n';
-      O << MAI->getData16bitsDirective(AddrSpace) << uint16_t(p[0] >> 48);
-      if (VerboseAsm) {
-        O.PadToColumn(MAI->getCommentColumn());
-        O << MAI->getCommentString() << " next halfword";
-      }
-      O << '\n';
-      O << MAI->getData16bitsDirective(AddrSpace) << uint16_t(p[0] >> 32);
-      if (VerboseAsm) {
-        O.PadToColumn(MAI->getCommentColumn());
-        O << MAI->getCommentString() << " next halfword";
-      }
-      O << '\n';
-      O << MAI->getData16bitsDirective(AddrSpace) << uint16_t(p[0] >> 16);
-      if (VerboseAsm) {
-        O.PadToColumn(MAI->getCommentColumn());
-        O << MAI->getCommentString() << " next halfword";
-      }
-      O << '\n';
-      O << MAI->getData16bitsDirective(AddrSpace) << uint16_t(p[0]);
-      if (VerboseAsm) {
-        O.PadToColumn(MAI->getCommentColumn());
-        O << MAI->getCommentString()
-          << " least significant halfword";
-      }
-      O << '\n';
-     } else {
-      O << MAI->getData16bitsDirective(AddrSpace) << uint16_t(p[0]);
-      if (VerboseAsm) {
-        O.PadToColumn(MAI->getCommentColumn());
-        O << MAI->getCommentString()
-          << " least significant halfword of x86_fp80 ~"
-          << DoubleVal.convertToDouble();
-      }
-      O << '\n';
-      O << MAI->getData16bitsDirective(AddrSpace) << uint16_t(p[0] >> 16);
-      if (VerboseAsm) {
-        O.PadToColumn(MAI->getCommentColumn());
-        O << MAI->getCommentString()
-          << " next halfword";
-      }
-      O << '\n';
-      O << MAI->getData16bitsDirective(AddrSpace) << uint16_t(p[0] >> 32);
-      if (VerboseAsm) {
-        O.PadToColumn(MAI->getCommentColumn());
-        O << MAI->getCommentString()
-          << " next halfword";
-      }
-      O << '\n';
-      O << MAI->getData16bitsDirective(AddrSpace) << uint16_t(p[0] >> 48);
-      if (VerboseAsm) {
-        O.PadToColumn(MAI->getCommentColumn());
-        O << MAI->getCommentString()
-          << " next halfword";
-      }
-      O << '\n';
-      O << MAI->getData16bitsDirective(AddrSpace) << uint16_t(p[1]);
-      if (VerboseAsm) {
-        O.PadToColumn(MAI->getCommentColumn());
-        O << MAI->getCommentString()
-          << " most significant halfword";
-      }
-      O << '\n';
+      O << MAI->getData16bitsDirective(AddrSpace) << uint16_t(p[1]) << '\n';
+      O << MAI->getData16bitsDirective(AddrSpace) << uint16_t(p[0] >> 48)<<'\n';
+      O << MAI->getData16bitsDirective(AddrSpace) << uint16_t(p[0] >> 32)<<'\n';
+      O << MAI->getData16bitsDirective(AddrSpace) << uint16_t(p[0] >> 16)<<'\n';
+      O << MAI->getData16bitsDirective(AddrSpace) << uint16_t(p[0])      <<'\n';
+    } else {
+      O << MAI->getData16bitsDirective(AddrSpace) << uint16_t(p[0]) << '\n';
+      O << MAI->getData16bitsDirective(AddrSpace) << uint16_t(p[0] >> 16)<<'\n';
+      O << MAI->getData16bitsDirective(AddrSpace) << uint16_t(p[0] >> 32)<<'\n';
+      O << MAI->getData16bitsDirective(AddrSpace) << uint16_t(p[0] >> 48)<<'\n';
+      O << MAI->getData16bitsDirective(AddrSpace) << uint16_t(p[1]) << '\n';
     }
     OutStreamer.EmitZeros(TD.getTypeAllocSize(CFP->getType()) -
                             TD.getTypeStoreSize(CFP->getType()), AddrSpace);