teak-llvm/llvm/test/CodeGen/PowerPC/xvcmpeqdp-v2f64.ll
Hal Finkel 9fdce9adee [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.

llvm-svn: 245535
2015-08-20 03:02:02 +00:00

39 lines
1.4 KiB
LLVM

; 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 }