[PATCH] D11438: Part 2 to fix x86_64 fp128 calling convention.

David Li via llvm-commits llvm-commits at lists.llvm.org
Sat Dec 5 18:46:35 PST 2015


davidxl added inline comments.

================
Comment at: lib/Target/X86/X86ISelLowering.cpp:14628
@@ -14598,2 +14627,3 @@
   if ((isOneConstant(Op1) || isNullConstant(Op1)) &&
+      Op1.getValueType() != MVT::i128 &&  // getZExtValue() works up to i64 only.
       (CC == ISD::SETEQ || CC == ISD::SETNE)) {
----------------
This needs some explanation. Why can the Op1's value type be i128?

================
Comment at: lib/Target/X86/X86ISelLowering.cpp:27776
@@ -27743,2 +27775,3 @@
         return std::make_pair(0U, &X86::FR64RegClass);
+      // TODO: handle f128 and i128 in FR128RegClass.
       // Vector types.
----------------
Why TODO here? 'x' constraint should work.

================
Comment at: lib/Target/X86/X86ISelLowering.cpp:27889
@@ -27855,2 +27888,3 @@
 
+    // TODO: handle f128 and i128 in FR128RegClass.
     if (VT == MVT::f32 || VT == MVT::i32)
----------------
Explain TODO here.

================
Comment at: lib/Target/X86/X86InstrInfo.td:957
@@ -956,6 +956,3 @@
 
-def loadi8  : PatFrag<(ops node:$ptr), (i8  (load node:$ptr))>;
-def loadi64 : PatFrag<(ops node:$ptr), (i64 (load node:$ptr))>;
-def loadf32 : PatFrag<(ops node:$ptr), (f32 (load node:$ptr))>;
-def loadf64 : PatFrag<(ops node:$ptr), (f64 (load node:$ptr))>;
-def loadf80 : PatFrag<(ops node:$ptr), (f80 (load node:$ptr))>;
+def loadi8   : PatFrag<(ops node:$ptr), (i8  (load node:$ptr))>;
+def loadi64  : PatFrag<(ops node:$ptr), (i64 (load node:$ptr))>;
----------------
Unrelated format change here.


http://reviews.llvm.org/D11438





More information about the llvm-commits mailing list