]> granicus.if.org Git - llvm/commitdiff
GlobalISel: Use default rounding mode when extending fconstant
authorMatt Arsenault <Matthew.Arsenault@amd.com>
Tue, 12 Feb 2019 14:54:54 +0000 (14:54 +0000)
committerMatt Arsenault <Matthew.Arsenault@amd.com>
Tue, 12 Feb 2019 14:54:54 +0000 (14:54 +0000)
I don't think this matters since the values should all be exactly
representable.

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

lib/CodeGen/GlobalISel/LegalizerHelper.cpp

index d232bb7578d4177e29878a79716e6a78ca9db2f0..b3170b039e7518b085e2d6207e87a29a50ca47da 100644 (file)
@@ -1148,14 +1148,19 @@ LegalizerHelper::widenScalar(MachineInstr &MI, unsigned TypeIdx, LLT WideTy) {
     bool LosesInfo;
     switch (WideTy.getSizeInBits()) {
     case 32:
-      Val.convert(APFloat::IEEEsingle(), APFloat::rmTowardZero, &LosesInfo);
+      Val.convert(APFloat::IEEEsingle(), APFloat::rmNearestTiesToEven,
+                  &LosesInfo);
       break;
     case 64:
-      Val.convert(APFloat::IEEEdouble(), APFloat::rmTowardZero, &LosesInfo);
+      Val.convert(APFloat::IEEEdouble(), APFloat::rmNearestTiesToEven,
+                  &LosesInfo);
       break;
     default:
-      llvm_unreachable("Unhandled fp widen type");
+      return UnableToLegalize;
     }
+
+    assert(!LosesInfo && "extend should always be lossless");
+
     Observer.changingInstr(MI);
     SrcMO.setFPImm(ConstantFP::get(Ctx, Val));