[llvm] r245535 - [PowerPC] Fix value type on XVCMPEQDP for v2f64 comparisons
Hans Wennborg via llvm-commits
llvm-commits at lists.llvm.org
Thu Aug 20 09:06:41 PDT 2015
Merged in r245574.
Cheers,
Hans
On Wed, Aug 19, 2015 at 8:33 PM, Hal Finkel <hfinkel at anl.gov> wrote:
> Hi Hans,
>
> This one too please.
>
> Thanks again,
> Hal
>
> ----- Original Message -----
>> From: "Hal Finkel via llvm-commits" <llvm-commits at lists.llvm.org>
>> To: llvm-commits at lists.llvm.org
>> Sent: Wednesday, August 19, 2015 10:02:02 PM
>> Subject: [llvm] r245535 - [PowerPC] Fix value type on XVCMPEQDP for v2f64 comparisons
>>
>> Author: hfinkel
>> Date: Wed Aug 19 22:02:02 2015
>> New Revision: 245535
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=245535&view=rev
>> Log:
>> [PowerPC] Fix value type on XVCMPEQDP for v2f64 comparisons
>>
>> XVCMPEQDP is used for VSX v2f64 equality comparisons, but the value
>> type needs
>> to be v2i64 (as that's the corresponding SETCC type).
>>
>> Fixes PR24225.
>>
>> Added:
>> llvm/trunk/test/CodeGen/PowerPC/xvcmpeqdp-v2f64.ll
>> Modified:
>> llvm/trunk/lib/Target/PowerPC/PPCISelDAGToDAG.cpp
>>
>> Modified: llvm/trunk/lib/Target/PowerPC/PPCISelDAGToDAG.cpp
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/PowerPC/PPCISelDAGToDAG.cpp?rev=245535&r1=245534&r2=245535&view=diff
>> ==============================================================================
>> --- llvm/trunk/lib/Target/PowerPC/PPCISelDAGToDAG.cpp (original)
>> +++ llvm/trunk/lib/Target/PowerPC/PPCISelDAGToDAG.cpp Wed Aug 19
>> 22:02:02 2015
>> @@ -2305,14 +2305,15 @@ SDNode *PPCDAGToDAGISel::SelectSETCC(SDN
>> if (Swap)
>> std::swap(LHS, RHS);
>>
>> + EVT ResVT = VecVT.changeVectorElementTypeToInteger();
>> if (Negate) {
>> - SDValue VCmp(CurDAG->getMachineNode(VCmpInst, dl, VecVT, LHS,
>> RHS), 0);
>> + SDValue VCmp(CurDAG->getMachineNode(VCmpInst, dl, ResVT, LHS,
>> RHS), 0);
>> return CurDAG->SelectNodeTo(N, PPCSubTarget->hasVSX() ?
>> PPC::XXLNOR :
>> PPC::VNOR,
>> - VecVT, VCmp, VCmp);
>> + ResVT, VCmp, VCmp);
>> }
>>
>> - return CurDAG->SelectNodeTo(N, VCmpInst, VecVT, LHS, RHS);
>> + return CurDAG->SelectNodeTo(N, VCmpInst, ResVT, LHS, RHS);
>> }
>>
>> if (PPCSubTarget->useCRBits())
>>
>> Added: llvm/trunk/test/CodeGen/PowerPC/xvcmpeqdp-v2f64.ll
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/PowerPC/xvcmpeqdp-v2f64.ll?rev=245535&view=auto
>> ==============================================================================
>> --- llvm/trunk/test/CodeGen/PowerPC/xvcmpeqdp-v2f64.ll (added)
>> +++ llvm/trunk/test/CodeGen/PowerPC/xvcmpeqdp-v2f64.ll Wed Aug 19
>> 22:02:02 2015
>> @@ -0,0 +1,38 @@
>> +; RUN: llc < %s | FileCheck %s
>> +target datalayout = "e-m:e-i64:64-n32:64"
>> +target triple = "powerpc64le-unknown-linux-gnu"
>> +
>> +; Function Attrs: nounwind
>> +define void @__fmax_double3_3D_exec() #0 {
>> +entry:
>> + br i1 undef, label %if.then.i, label %fmax_double3.exit
>> +
>> +if.then.i: ; preds = %entry
>> + %cmp24.i.i = fcmp ord <3 x double> undef, zeroinitializer
>> + %sext25.i.i = sext <3 x i1> %cmp24.i.i to <3 x i64>
>> + %neg.i.i = xor <3 x i64> %sext25.i.i, <i64 -1, i64 -1, i64 -1>
>> + %or.i.i = or <3 x i64> undef, %neg.i.i
>> + %neg.i.i.i = select <3 x i1> undef, <3 x i64> zeroinitializer, <3
>> x i64> %sext25.i.i
>> + %and.i.i.i = and <3 x i64> undef, %neg.i.i.i
>> + %and26.i.i.i = and <3 x i64> undef, %or.i.i
>> + %or.i.i.i = or <3 x i64> %and.i.i.i, %and26.i.i.i
>> + %astype32.i.i.i = bitcast <3 x i64> %or.i.i.i to <3 x double>
>> + %extractVec33.i.i.i = shufflevector <3 x double> %astype32.i.i.i,
>> <3 x double> undef, <4 x i32> <i32 0, i32 1, i32 2, i32 undef>
>> + store <4 x double> %extractVec33.i.i.i, <4 x double>* undef, align
>> 32
>> + br label %fmax_double3.exit
>> +
>> +; CHECK-LABEL: @__fmax_double3_3D_exec
>> +; CHECK: xvcmpeqdp
>> +
>> +fmax_double3.exit: ; preds =
>> %if.then.i, %entry
>> + br i1 undef, label %if.then, label %do.end
>> +
>> +if.then: ; preds =
>> %fmax_double3.exit
>> + unreachable
>> +
>> +do.end: ; preds =
>> %fmax_double3.exit
>> + ret void
>> +}
>> +
>> +attributes #0 = { nounwind }
>> +
>>
>>
>> _______________________________________________
>> llvm-commits mailing list
>> llvm-commits at lists.llvm.org
>> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>>
>
> --
> Hal Finkel
> Assistant Computational Scientist
> Leadership Computing Facility
> Argonne National Laboratory
More information about the llvm-commits
mailing list