[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