[llvm-commits] [llvm] r82778 - /llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAGBuild.cpp
Sandeep Patel
deeppatel1987 at gmail.com
Fri Sep 25 11:37:32 PDT 2009
Why aren't the front-ends responsible for selecting the intrinsics again?
deep
On Fri, Sep 25, 2009 at 5:31 PM, Chris Lattner <clattner at apple.com> wrote:
>
> On Sep 25, 2009, at 10:23 AM, Dale Johannesen wrote:
>
>> Author: johannes
>> Date: Fri Sep 25 12:23:22 2009
>> New Revision: 82778
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=82778&view=rev
>> Log:
>> Generate FSQRT from calls to the sqrt function, which
>> allows appropriate backends to generate a sqrt instruction.
>>
>> On x86, this isn't done at -O0 because we go through
>> FastISel instead. This is a behavior change from before
>> this series of sqrt patches started. I think this is OK
>> considering that compile speed is most important at -O0, but
>> could be convinced otherwise.
>
> I'm fine with fastisel not doing this, but it should only happen if
> the sqrt function is readonly, otherwise the errno update is lost.
>
> -Chris
>
>>
>>
>> Modified:
>> llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAGBuild.cpp
>>
>> Modified: llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAGBuild.cpp
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAGBuild.cpp?rev=82778&r1=82777&r2=82778&view=diff
>>
>> =
>> =
>> =
>> =
>> =
>> =
>> =
>> =
>> ======================================================================
>> --- llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAGBuild.cpp
>> (original)
>> +++ llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAGBuild.cpp Fri
>> Sep 25 12:23:22 2009
>> @@ -4576,6 +4576,15 @@
>> Tmp.getValueType(), Tmp));
>> return;
>> }
>> + } else if (Name == "sqrt" || Name == "sqrtf" || Name ==
>> "sqrtl") {
>> + if (I.getNumOperands() == 2 && // Basic sanity checks.
>> + I.getOperand(1)->getType()->isFloatingPoint() &&
>> + I.getType() == I.getOperand(1)->getType()) {
>> + SDValue Tmp = getValue(I.getOperand(1));
>> + setValue(&I, DAG.getNode(ISD::FSQRT, getCurDebugLoc(),
>> + Tmp.getValueType(), Tmp));
>> + return;
>> + }
>> }
>> }
>> } else if (isa<InlineAsm>(I.getOperand(0))) {
>>
>>
>> _______________________________________________
>> llvm-commits mailing list
>> llvm-commits at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>
More information about the llvm-commits
mailing list