[llvm] r245535 - [PowerPC] Fix value type on XVCMPEQDP for v2f64 comparisons
Hal Finkel via llvm-commits
llvm-commits at lists.llvm.org
Wed Aug 19 20:33:00 PDT 2015
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