xref: /llvm-project/llvm/test/CodeGen/PowerPC/const-stov.ll (revision fc59f2cc0f191bb7a0706dfb65e3e46fef69f466)
1*fc59f2ccSRolandF77; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 5
2*fc59f2ccSRolandF77; RUN: llc -ppc-asm-full-reg-names -ppc-vsr-nums-as-vr -verify-machineinstrs \
3*fc59f2ccSRolandF77; RUN:     -mtriple=powerpc64-- -mcpu=pwr7 < %s | FileCheck \
4*fc59f2ccSRolandF77; RUN:     --check-prefix=PWR7-BE %s
5*fc59f2ccSRolandF77; RUN: llc -ppc-asm-full-reg-names -ppc-vsr-nums-as-vr -verify-machineinstrs \
6*fc59f2ccSRolandF77; RUN:     -mtriple=powerpc64-- -mcpu=pwr8 < %s | FileCheck \
7*fc59f2ccSRolandF77; RUN:     --check-prefix=PWR8-BE %s
8*fc59f2ccSRolandF77; RUN: llc -ppc-asm-full-reg-names -ppc-vsr-nums-as-vr -verify-machineinstrs \
9*fc59f2ccSRolandF77; RUN:     -mtriple=powerpc64le-- -mcpu=pwr8 < %s | FileCheck \
10*fc59f2ccSRolandF77; RUN:     --check-prefix=PWR8-LE %s
11*fc59f2ccSRolandF77
12*fc59f2ccSRolandF77define  <16 x i8> @i8(ptr nocapture noundef readonly %p) {
13*fc59f2ccSRolandF77; PWR7-BE-LABEL: i8:
14*fc59f2ccSRolandF77; PWR7-BE:       # %bb.0: # %entry
15*fc59f2ccSRolandF77; PWR7-BE-NEXT:    lxvw4x v3, 0, r3
16*fc59f2ccSRolandF77; PWR7-BE-NEXT:    addis r3, r2, .LCPI0_0@toc@ha
17*fc59f2ccSRolandF77; PWR7-BE-NEXT:    vspltisb v2, 10
18*fc59f2ccSRolandF77; PWR7-BE-NEXT:    addi r3, r3, .LCPI0_0@toc@l
19*fc59f2ccSRolandF77; PWR7-BE-NEXT:    lxvw4x v4, 0, r3
20*fc59f2ccSRolandF77; PWR7-BE-NEXT:    vperm v2, v3, v2, v4
21*fc59f2ccSRolandF77; PWR7-BE-NEXT:    blr
22*fc59f2ccSRolandF77;
23*fc59f2ccSRolandF77; PWR8-BE-LABEL: i8:
24*fc59f2ccSRolandF77; PWR8-BE:       # %bb.0: # %entry
25*fc59f2ccSRolandF77; PWR8-BE-NEXT:    lxvw4x v2, 0, r3
26*fc59f2ccSRolandF77; PWR8-BE-NEXT:    addis r3, r2, .LCPI0_0@toc@ha
27*fc59f2ccSRolandF77; PWR8-BE-NEXT:    addi r3, r3, .LCPI0_0@toc@l
28*fc59f2ccSRolandF77; PWR8-BE-NEXT:    lxvw4x v3, 0, r3
29*fc59f2ccSRolandF77; PWR8-BE-NEXT:    li r3, 10
30*fc59f2ccSRolandF77; PWR8-BE-NEXT:    mtvsrwz v4, r3
31*fc59f2ccSRolandF77; PWR8-BE-NEXT:    vperm v2, v2, v4, v3
32*fc59f2ccSRolandF77; PWR8-BE-NEXT:    blr
33*fc59f2ccSRolandF77;
34*fc59f2ccSRolandF77; PWR8-LE-LABEL: i8:
35*fc59f2ccSRolandF77; PWR8-LE:       # %bb.0: # %entry
36*fc59f2ccSRolandF77; PWR8-LE-NEXT:    lxvd2x vs0, 0, r3
37*fc59f2ccSRolandF77; PWR8-LE-NEXT:    addis r3, r2, .LCPI0_0@toc@ha
38*fc59f2ccSRolandF77; PWR8-LE-NEXT:    addi r3, r3, .LCPI0_0@toc@l
39*fc59f2ccSRolandF77; PWR8-LE-NEXT:    xxswapd v2, vs0
40*fc59f2ccSRolandF77; PWR8-LE-NEXT:    lxvd2x vs0, 0, r3
41*fc59f2ccSRolandF77; PWR8-LE-NEXT:    li r3, 10
42*fc59f2ccSRolandF77; PWR8-LE-NEXT:    mtvsrd v4, r3
43*fc59f2ccSRolandF77; PWR8-LE-NEXT:    xxswapd v3, vs0
44*fc59f2ccSRolandF77; PWR8-LE-NEXT:    vperm v2, v4, v2, v3
45*fc59f2ccSRolandF77; PWR8-LE-NEXT:    blr
46*fc59f2ccSRolandF77entry:
47*fc59f2ccSRolandF77  %0 = load <16 x i8>, ptr %p, align 16
48*fc59f2ccSRolandF77  %vecinit1 = insertelement <16 x i8> %0, i8 10, i64 1
49*fc59f2ccSRolandF77  ret <16 x i8> %vecinit1
50*fc59f2ccSRolandF77}
51*fc59f2ccSRolandF77
52*fc59f2ccSRolandF77define  <8 x i16> @i16(ptr nocapture noundef readonly %p) {
53*fc59f2ccSRolandF77; PWR7-BE-LABEL: i16:
54*fc59f2ccSRolandF77; PWR7-BE:       # %bb.0: # %entry
55*fc59f2ccSRolandF77; PWR7-BE-NEXT:    lxvw4x v3, 0, r3
56*fc59f2ccSRolandF77; PWR7-BE-NEXT:    addis r3, r2, .LCPI1_0@toc@ha
57*fc59f2ccSRolandF77; PWR7-BE-NEXT:    vspltish v2, 9
58*fc59f2ccSRolandF77; PWR7-BE-NEXT:    addi r3, r3, .LCPI1_0@toc@l
59*fc59f2ccSRolandF77; PWR7-BE-NEXT:    lxvw4x v4, 0, r3
60*fc59f2ccSRolandF77; PWR7-BE-NEXT:    vperm v2, v3, v2, v4
61*fc59f2ccSRolandF77; PWR7-BE-NEXT:    blr
62*fc59f2ccSRolandF77;
63*fc59f2ccSRolandF77; PWR8-BE-LABEL: i16:
64*fc59f2ccSRolandF77; PWR8-BE:       # %bb.0: # %entry
65*fc59f2ccSRolandF77; PWR8-BE-NEXT:    lxvw4x v2, 0, r3
66*fc59f2ccSRolandF77; PWR8-BE-NEXT:    addis r3, r2, .LCPI1_0@toc@ha
67*fc59f2ccSRolandF77; PWR8-BE-NEXT:    addi r3, r3, .LCPI1_0@toc@l
68*fc59f2ccSRolandF77; PWR8-BE-NEXT:    lxvw4x v3, 0, r3
69*fc59f2ccSRolandF77; PWR8-BE-NEXT:    li r3, 9
70*fc59f2ccSRolandF77; PWR8-BE-NEXT:    mtvsrwz v4, r3
71*fc59f2ccSRolandF77; PWR8-BE-NEXT:    vperm v2, v2, v4, v3
72*fc59f2ccSRolandF77; PWR8-BE-NEXT:    blr
73*fc59f2ccSRolandF77;
74*fc59f2ccSRolandF77; PWR8-LE-LABEL: i16:
75*fc59f2ccSRolandF77; PWR8-LE:       # %bb.0: # %entry
76*fc59f2ccSRolandF77; PWR8-LE-NEXT:    lxvd2x vs0, 0, r3
77*fc59f2ccSRolandF77; PWR8-LE-NEXT:    addis r3, r2, .LCPI1_0@toc@ha
78*fc59f2ccSRolandF77; PWR8-LE-NEXT:    addi r3, r3, .LCPI1_0@toc@l
79*fc59f2ccSRolandF77; PWR8-LE-NEXT:    xxswapd v2, vs0
80*fc59f2ccSRolandF77; PWR8-LE-NEXT:    lxvd2x vs0, 0, r3
81*fc59f2ccSRolandF77; PWR8-LE-NEXT:    li r3, 9
82*fc59f2ccSRolandF77; PWR8-LE-NEXT:    mtvsrd v4, r3
83*fc59f2ccSRolandF77; PWR8-LE-NEXT:    xxswapd v3, vs0
84*fc59f2ccSRolandF77; PWR8-LE-NEXT:    vperm v2, v4, v2, v3
85*fc59f2ccSRolandF77; PWR8-LE-NEXT:    blr
86*fc59f2ccSRolandF77entry:
87*fc59f2ccSRolandF77  %0 = load <8 x i16>, ptr %p, align 16
88*fc59f2ccSRolandF77  %vecinit1 = insertelement <8 x i16> %0, i16 9, i64 1
89*fc59f2ccSRolandF77  ret <8 x i16> %vecinit1
90*fc59f2ccSRolandF77}
91*fc59f2ccSRolandF77
92*fc59f2ccSRolandF77define  <4 x i32> @i32(ptr nocapture noundef readonly %p) {
93*fc59f2ccSRolandF77; PWR7-BE-LABEL: i32:
94*fc59f2ccSRolandF77; PWR7-BE:       # %bb.0: # %entry
95*fc59f2ccSRolandF77; PWR7-BE-NEXT:    lxvw4x v3, 0, r3
96*fc59f2ccSRolandF77; PWR7-BE-NEXT:    addis r3, r2, .LCPI2_0@toc@ha
97*fc59f2ccSRolandF77; PWR7-BE-NEXT:    vspltisw v2, 7
98*fc59f2ccSRolandF77; PWR7-BE-NEXT:    addi r3, r3, .LCPI2_0@toc@l
99*fc59f2ccSRolandF77; PWR7-BE-NEXT:    lxvw4x v4, 0, r3
100*fc59f2ccSRolandF77; PWR7-BE-NEXT:    vperm v2, v3, v2, v4
101*fc59f2ccSRolandF77; PWR7-BE-NEXT:    blr
102*fc59f2ccSRolandF77;
103*fc59f2ccSRolandF77; PWR8-BE-LABEL: i32:
104*fc59f2ccSRolandF77; PWR8-BE:       # %bb.0: # %entry
105*fc59f2ccSRolandF77; PWR8-BE-NEXT:    lxvw4x v2, 0, r3
106*fc59f2ccSRolandF77; PWR8-BE-NEXT:    addis r3, r2, .LCPI2_0@toc@ha
107*fc59f2ccSRolandF77; PWR8-BE-NEXT:    addi r3, r3, .LCPI2_0@toc@l
108*fc59f2ccSRolandF77; PWR8-BE-NEXT:    lxvw4x v3, 0, r3
109*fc59f2ccSRolandF77; PWR8-BE-NEXT:    li r3, 7
110*fc59f2ccSRolandF77; PWR8-BE-NEXT:    mtvsrwz v4, r3
111*fc59f2ccSRolandF77; PWR8-BE-NEXT:    vperm v2, v2, v4, v3
112*fc59f2ccSRolandF77; PWR8-BE-NEXT:    blr
113*fc59f2ccSRolandF77;
114*fc59f2ccSRolandF77; PWR8-LE-LABEL: i32:
115*fc59f2ccSRolandF77; PWR8-LE:       # %bb.0: # %entry
116*fc59f2ccSRolandF77; PWR8-LE-NEXT:    lxvd2x vs0, 0, r3
117*fc59f2ccSRolandF77; PWR8-LE-NEXT:    addis r3, r2, .LCPI2_0@toc@ha
118*fc59f2ccSRolandF77; PWR8-LE-NEXT:    addi r3, r3, .LCPI2_0@toc@l
119*fc59f2ccSRolandF77; PWR8-LE-NEXT:    xxswapd v2, vs0
120*fc59f2ccSRolandF77; PWR8-LE-NEXT:    lxvd2x vs0, 0, r3
121*fc59f2ccSRolandF77; PWR8-LE-NEXT:    li r3, 7
122*fc59f2ccSRolandF77; PWR8-LE-NEXT:    mtvsrwz v4, r3
123*fc59f2ccSRolandF77; PWR8-LE-NEXT:    xxswapd v3, vs0
124*fc59f2ccSRolandF77; PWR8-LE-NEXT:    vperm v2, v4, v2, v3
125*fc59f2ccSRolandF77; PWR8-LE-NEXT:    blr
126*fc59f2ccSRolandF77entry:
127*fc59f2ccSRolandF77  %0 = load <4 x i32>, ptr %p, align 16
128*fc59f2ccSRolandF77  %vecinit1 = insertelement <4 x i32> %0, i32 7, i64 1
129*fc59f2ccSRolandF77  ret <4 x i32> %vecinit1
130*fc59f2ccSRolandF77}
131*fc59f2ccSRolandF77
132*fc59f2ccSRolandF77define  <2 x i64> @i64(ptr nocapture noundef readonly %p) {
133*fc59f2ccSRolandF77; PWR7-BE-LABEL: i64:
134*fc59f2ccSRolandF77; PWR7-BE:       # %bb.0: # %entry
135*fc59f2ccSRolandF77; PWR7-BE-NEXT:    lxvd2x v2, 0, r3
136*fc59f2ccSRolandF77; PWR7-BE-NEXT:    li r3, 10
137*fc59f2ccSRolandF77; PWR7-BE-NEXT:    std r3, -16(r1)
138*fc59f2ccSRolandF77; PWR7-BE-NEXT:    std r3, -8(r1)
139*fc59f2ccSRolandF77; PWR7-BE-NEXT:    addi r3, r1, -16
140*fc59f2ccSRolandF77; PWR7-BE-NEXT:    lxvd2x v3, 0, r3
141*fc59f2ccSRolandF77; PWR7-BE-NEXT:    xxmrghd v2, v2, v3
142*fc59f2ccSRolandF77; PWR7-BE-NEXT:    blr
143*fc59f2ccSRolandF77;
144*fc59f2ccSRolandF77; PWR8-BE-LABEL: i64:
145*fc59f2ccSRolandF77; PWR8-BE:       # %bb.0: # %entry
146*fc59f2ccSRolandF77; PWR8-BE-NEXT:    lxvd2x v2, 0, r3
147*fc59f2ccSRolandF77; PWR8-BE-NEXT:    li r3, 10
148*fc59f2ccSRolandF77; PWR8-BE-NEXT:    mtfprd f0, r3
149*fc59f2ccSRolandF77; PWR8-BE-NEXT:    xxmrghd v2, v2, vs0
150*fc59f2ccSRolandF77; PWR8-BE-NEXT:    blr
151*fc59f2ccSRolandF77;
152*fc59f2ccSRolandF77; PWR8-LE-LABEL: i64:
153*fc59f2ccSRolandF77; PWR8-LE:       # %bb.0: # %entry
154*fc59f2ccSRolandF77; PWR8-LE-NEXT:    lxvd2x vs0, 0, r3
155*fc59f2ccSRolandF77; PWR8-LE-NEXT:    li r3, 10
156*fc59f2ccSRolandF77; PWR8-LE-NEXT:    xxswapd v2, vs0
157*fc59f2ccSRolandF77; PWR8-LE-NEXT:    mtfprd f0, r3
158*fc59f2ccSRolandF77; PWR8-LE-NEXT:    xxpermdi v2, vs0, v2, 1
159*fc59f2ccSRolandF77; PWR8-LE-NEXT:    blr
160*fc59f2ccSRolandF77entry:
161*fc59f2ccSRolandF77  %0 = load <2 x i64>, ptr %p, align 16
162*fc59f2ccSRolandF77  %vecinit1 = insertelement <2 x i64> %0, i64 10, i64 1
163*fc59f2ccSRolandF77  ret <2 x i64> %vecinit1
164*fc59f2ccSRolandF77}
165