[PATCH] D15134: Part 1 to fix x86_64 fp128 calling convention.
Sanjay Patel via llvm-commits
llvm-commits at lists.llvm.org
Fri Jan 8 11:59:57 PST 2016
spatel added a subscriber: spatel.
================
Comment at: llvm/trunk/lib/CodeGen/SelectionDAG/DAGCombiner.cpp:8728-8740
@@ -8725,1 +8727,15 @@
+ // copysign(x, fp_round(y)) -> copysign(x, y)
+ // Do not optimize out type conversion of f128 type yet.
+ // For some target like x86_64, configuration is changed
+ // to keep one f128 value in one SSE register, but
+ // instruction selection cannot handle FCOPYSIGN on
+ // SSE registers yet.
+ SDValue N1 = N->getOperand(1);
+ EVT N1VT = N1->getValueType(0);
+ EVT N1Op0VT = N1->getOperand(0)->getValueType(0);
+ return (N1.getOpcode() == ISD::FP_EXTEND ||
+ N1.getOpcode() == ISD::FP_ROUND) &&
+ (N1VT == N1Op0VT || N1Op0VT != MVT::f128);
+}
+
SDValue DAGCombiner::visitFCOPYSIGN(SDNode *N) {
----------------
Why is an x86-specific limitation being handled in DAGCombiner? Maybe no target supports f128, so it doesn't matter, but this seems wrong.
Repository:
rL LLVM
http://reviews.llvm.org/D15134
More information about the llvm-commits
mailing list