Changeset View
Changeset View
Standalone View
Standalone View
llvm/test/CodeGen/PowerPC/p8-scalar_vector_conversions.ll
Show First 20 Lines • Show All 164 Lines • ▼ Show 20 Lines | |||||
; CHECK-LE: # %bb.0: # %entry | ; CHECK-LE: # %bb.0: # %entry | ||||
; CHECK-LE-NEXT: addis r3, r2, .LC0@toc@ha | ; CHECK-LE-NEXT: addis r3, r2, .LC0@toc@ha | ||||
; CHECK-LE-NEXT: ld r3, .LC0@toc@l(r3) | ; CHECK-LE-NEXT: ld r3, .LC0@toc@l(r3) | ||||
; CHECK-LE-NEXT: lxvdsx v2, 0, r3 | ; CHECK-LE-NEXT: lxvdsx v2, 0, r3 | ||||
; CHECK-LE-NEXT: blr | ; CHECK-LE-NEXT: blr | ||||
; | ; | ||||
; CHECK-AIX-LABEL: buildd: | ; CHECK-AIX-LABEL: buildd: | ||||
; CHECK-AIX: # %bb.0: # %entry | ; CHECK-AIX: # %bb.0: # %entry | ||||
; CHECK-AIX-NEXT: ld 3, L..C0(2) | ; CHECK-AIX-NEXT: ld 3, L..C0(2) # @d | ||||
; CHECK-AIX-NEXT: lxvdsx 34, 0, 3 | ; CHECK-AIX-NEXT: lxvdsx 34, 0, 3 | ||||
; CHECK-AIX-NEXT: blr | ; CHECK-AIX-NEXT: blr | ||||
entry: | entry: | ||||
%0 = load double, double* @d, align 8 | %0 = load double, double* @d, align 8 | ||||
%splat.splatinsert = insertelement <2 x double> undef, double %0, i32 0 | %splat.splatinsert = insertelement <2 x double> undef, double %0, i32 0 | ||||
%splat.splat = shufflevector <2 x double> %splat.splatinsert, <2 x double> undef, <2 x i32> zeroinitializer | %splat.splat = shufflevector <2 x double> %splat.splatinsert, <2 x double> undef, <2 x i32> zeroinitializer | ||||
ret <2 x double> %splat.splat | ret <2 x double> %splat.splat | ||||
▲ Show 20 Lines • Show All 2,380 Lines • ▼ Show 20 Lines | |||||
; CHECK-NEXT: sldi r4, r4, 32 | ; CHECK-NEXT: sldi r4, r4, 32 | ||||
; CHECK-NEXT: mtfprd f1, r3 | ; CHECK-NEXT: mtfprd f1, r3 | ||||
; CHECK-NEXT: mtfprd f0, r4 | ; CHECK-NEXT: mtfprd f0, r4 | ||||
; CHECK-NEXT: xxmrghd v2, vs0, vs1 | ; CHECK-NEXT: xxmrghd v2, vs0, vs1 | ||||
; CHECK-NEXT: blr | ; CHECK-NEXT: blr | ||||
; | ; | ||||
; CHECK-LE-LABEL: buildi2: | ; CHECK-LE-LABEL: buildi2: | ||||
; CHECK-LE: # %bb.0: # %entry | ; CHECK-LE: # %bb.0: # %entry | ||||
; CHECK-LE-NEXT: mtfprwz f0, r4 | ; CHECK-LE-NEXT: mtfprd f0, r4 | ||||
; CHECK-LE-NEXT: mtfprd f1, r3 | ; CHECK-LE-NEXT: mtfprd f1, r3 | ||||
; CHECK-LE-NEXT: xxmrgld v2, vs1, vs0 | ; CHECK-LE-NEXT: xxswapd vs0, vs0 | ||||
; CHECK-LE-NEXT: xxswapd v2, vs1 | |||||
; CHECK-LE-NEXT: xxmrgld v2, v2, vs0 | |||||
; CHECK-LE-NEXT: blr | ; CHECK-LE-NEXT: blr | ||||
; | ; | ||||
; CHECK-AIX-LABEL: buildi2: | ; CHECK-AIX-LABEL: buildi2: | ||||
; CHECK-AIX: # %bb.0: # %entry | ; CHECK-AIX: # %bb.0: # %entry | ||||
; CHECK-AIX-NEXT: sldi 4, 4, 32 | ; CHECK-AIX-NEXT: sldi 4, 4, 32 | ||||
; CHECK-AIX-NEXT: mtfprd 1, 3 | ; CHECK-AIX-NEXT: mtfprd 1, 3 | ||||
; CHECK-AIX-NEXT: mtfprd 0, 4 | ; CHECK-AIX-NEXT: mtfprd 0, 4 | ||||
; CHECK-AIX-NEXT: xxmrghd 34, 0, 1 | ; CHECK-AIX-NEXT: xxmrghd 34, 0, 1 | ||||
; CHECK-AIX-NEXT: blr | ; CHECK-AIX-NEXT: blr | ||||
entry: | entry: | ||||
%lhs.i32 = insertelement <4 x i32> undef, i32 %arg1, i32 0 | %lhs.i32 = insertelement <4 x i32> undef, i32 %arg1, i32 0 | ||||
%rhs = insertelement <2 x i64> undef, i64 %arg, i32 0 | %rhs = insertelement <2 x i64> undef, i64 %arg, i32 0 | ||||
%lhs = bitcast <4 x i32> %lhs.i32 to <2 x i64> | %lhs = bitcast <4 x i32> %lhs.i32 to <2 x i64> | ||||
%shuffle = shufflevector <2 x i64> %lhs, <2 x i64> %rhs, <2 x i32> <i32 0, i32 2> | %shuffle = shufflevector <2 x i64> %lhs, <2 x i64> %rhs, <2 x i32> <i32 0, i32 2> | ||||
ret <2 x i64> %shuffle | ret <2 x i64> %shuffle | ||||
} | } |