xref: /aosp_15_r20/external/llvm/test/CodeGen/PowerPC/pr28130.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; RUN: llc -O0 < %s | FileCheck %s
2*9880d681SAndroid Build Coastguard Workertarget triple = "powerpc64le-unknown-linux-gnu"
3*9880d681SAndroid Build Coastguard Worker
4*9880d681SAndroid Build Coastguard Worker%StructA = type { double, double, double, double, double, double, double, double }
5*9880d681SAndroid Build Coastguard Worker
6*9880d681SAndroid Build Coastguard Workerdefine void @Test(%StructA* %tmp) unnamed_addr #0 align 2 {
7*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: Test:
8*9880d681SAndroid Build Coastguard Worker; CHECK: lxvd2x
9*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: xxswapd
10*9880d681SAndroid Build Coastguard Worker; CHECK: lxvd2x
11*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: xxswapd
12*9880d681SAndroid Build Coastguard Worker; CHECK: lxvd2x
13*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: xxswapd
14*9880d681SAndroid Build Coastguard Worker; CHECK: lxvd2x
15*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: xxswapd
16*9880d681SAndroid Build Coastguard Worker; CHECK: xxswapd [[OUTPUT:[0-9]+]]
17*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: stxvd2x [[OUTPUT]]
18*9880d681SAndroid Build Coastguard Workerbb:
19*9880d681SAndroid Build Coastguard Worker  %tmp2 = getelementptr inbounds %StructA, %StructA* %tmp, i64 0, i32 0
20*9880d681SAndroid Build Coastguard Worker  %tmp4 = bitcast %StructA* %tmp to <2 x double>*
21*9880d681SAndroid Build Coastguard Worker  %tmp5 = getelementptr inbounds %StructA, %StructA* %tmp, i64 0, i32 2
22*9880d681SAndroid Build Coastguard Worker  %tmp9 = getelementptr inbounds %StructA, %StructA* %tmp, i64 0, i32 4
23*9880d681SAndroid Build Coastguard Worker  %tmp11 = getelementptr inbounds %StructA, %StructA* %tmp, i64 0, i32 5
24*9880d681SAndroid Build Coastguard Worker  %tmp13 = getelementptr inbounds %StructA, %StructA* %tmp, i64 0, i32 6
25*9880d681SAndroid Build Coastguard Worker  %tmp15 = getelementptr inbounds %StructA, %StructA* %tmp, i64 0, i32 7
26*9880d681SAndroid Build Coastguard Worker  %tmp18 = load double, double* %tmp2, align 16
27*9880d681SAndroid Build Coastguard Worker  %tmp19 = load double, double* %tmp11, align 8
28*9880d681SAndroid Build Coastguard Worker  %tmp20 = load double, double* %tmp9, align 16
29*9880d681SAndroid Build Coastguard Worker  %tmp21 = fsub double 1.210000e+04, %tmp20
30*9880d681SAndroid Build Coastguard Worker  %tmp22 = fmul double %tmp18, %tmp21
31*9880d681SAndroid Build Coastguard Worker  %tmp23 = fadd double %tmp20, %tmp22
32*9880d681SAndroid Build Coastguard Worker  %tmp24 = load double, double* %tmp13, align 16
33*9880d681SAndroid Build Coastguard Worker  %tmp25 = fsub double 1.000000e+02, %tmp24
34*9880d681SAndroid Build Coastguard Worker  %tmp26 = fmul double %tmp18, %tmp25
35*9880d681SAndroid Build Coastguard Worker  %tmp27 = fadd double %tmp24, %tmp26
36*9880d681SAndroid Build Coastguard Worker  %tmp28 = load double, double* %tmp15, align 8
37*9880d681SAndroid Build Coastguard Worker  %tmp29 = insertelement <2 x double> undef, double %tmp19, i32 0
38*9880d681SAndroid Build Coastguard Worker  %tmp30 = insertelement <2 x double> %tmp29, double %tmp28, i32 1
39*9880d681SAndroid Build Coastguard Worker  %tmp31 = fsub <2 x double> <double 1.100000e+04, double 1.100000e+02>, %tmp30
40*9880d681SAndroid Build Coastguard Worker  %tmp32 = insertelement <2 x double> undef, double %tmp18, i32 0
41*9880d681SAndroid Build Coastguard Worker  %tmp33 = insertelement <2 x double> %tmp32, double %tmp18, i32 1
42*9880d681SAndroid Build Coastguard Worker  %tmp34 = fmul <2 x double> %tmp33, %tmp31
43*9880d681SAndroid Build Coastguard Worker  %tmp35 = fadd <2 x double> %tmp30, %tmp34
44*9880d681SAndroid Build Coastguard Worker  %tmp36 = bitcast double* %tmp5 to <2 x double>*
45*9880d681SAndroid Build Coastguard Worker  %tmp37 = load <2 x double>, <2 x double>* %tmp36, align 16
46*9880d681SAndroid Build Coastguard Worker  %tmp38 = fsub <2 x double> <double 1.000000e+00, double 1.000000e+04>, %tmp37
47*9880d681SAndroid Build Coastguard Worker  %tmp39 = fmul <2 x double> %tmp33, %tmp38
48*9880d681SAndroid Build Coastguard Worker  %tmp40 = fadd <2 x double> %tmp37, %tmp39
49*9880d681SAndroid Build Coastguard Worker  %tmp41 = fsub <2 x double> <double 1.000000e+00, double 1.000000e+04>, %tmp40
50*9880d681SAndroid Build Coastguard Worker  %tmp42 = fmul <2 x double> %tmp33, %tmp41
51*9880d681SAndroid Build Coastguard Worker  %tmp43 = fadd <2 x double> %tmp40, %tmp42
52*9880d681SAndroid Build Coastguard Worker  %tmp44 = fsub <2 x double> <double 1.200000e+04, double 1.200000e+02>, %tmp35
53*9880d681SAndroid Build Coastguard Worker  %tmp45 = fmul <2 x double> %tmp33, %tmp44
54*9880d681SAndroid Build Coastguard Worker  %tmp46 = fadd <2 x double> %tmp35, %tmp45
55*9880d681SAndroid Build Coastguard Worker  %tmp48 = fsub double 1.440000e+04, %tmp23
56*9880d681SAndroid Build Coastguard Worker  %tmp49 = fmul double %tmp18, %tmp48
57*9880d681SAndroid Build Coastguard Worker  %tmp50 = fadd double %tmp23, %tmp49
58*9880d681SAndroid Build Coastguard Worker  store double %tmp50, double* %tmp9, align 16
59*9880d681SAndroid Build Coastguard Worker  %tmp51 = fsub double 1.000000e+02, %tmp27
60*9880d681SAndroid Build Coastguard Worker  %tmp52 = fmul double %tmp18, %tmp51
61*9880d681SAndroid Build Coastguard Worker  %tmp53 = fadd double %tmp27, %tmp52
62*9880d681SAndroid Build Coastguard Worker  store double %tmp53, double* %tmp13, align 16
63*9880d681SAndroid Build Coastguard Worker  %tmp54 = extractelement <2 x double> %tmp46, i32 1
64*9880d681SAndroid Build Coastguard Worker  store double %tmp54, double* %tmp15, align 8
65*9880d681SAndroid Build Coastguard Worker  %tmp55 = bitcast double* %tmp5 to <2 x double>*
66*9880d681SAndroid Build Coastguard Worker  store <2 x double> %tmp43, <2 x double>* %tmp55, align 16
67*9880d681SAndroid Build Coastguard Worker  ret void
68*9880d681SAndroid Build Coastguard Worker}
69*9880d681SAndroid Build Coastguard Worker
70*9880d681SAndroid Build Coastguard Workerattributes #0 = { nounwind "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="pwr8" "target-features"="+altivec,+bpermd,+crypto,+direct-move,+extdiv,+power8-vector,+vsx,-qpx" "unsafe-fp-math"="false" "use-soft-float"="false" }
71