xref: /llvm-project/llvm/test/CodeGen/PowerPC/memset-tail.ll (revision b922a3621116b404d868af8b74cab25ab78555be)
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2; RUN: llc -verify-machineinstrs -mcpu=pwr8 \
3; RUN:   -mtriple=powerpc64-unknown-aix < %s | FileCheck %s --check-prefix=P8-BE
4; RUN: llc -verify-machineinstrs -mcpu=pwr9 \
5; RUN:   -mtriple=powerpc64-unknown-aix < %s | FileCheck %s --check-prefix=P9-BE
6; RUN: llc -verify-machineinstrs -mcpu=pwr10 \
7; RUN:   -mtriple=powerpc64-unknown-aix < %s | FileCheck %s --check-prefix=P10-BE
8; RUN: llc -verify-machineinstrs -mcpu=pwr8 \
9; RUN:   -mtriple=powerpc64le-unknown-unknown < %s | FileCheck %s --check-prefix=P8-LE
10; RUN: llc -verify-machineinstrs -mcpu=pwr9 \
11; RUN:   -mtriple=powerpc64le-unknown-unknown < %s | FileCheck %s --check-prefix=P9-LE
12; RUN: llc -verify-machineinstrs -mcpu=pwr10 \
13; RUN:   -mtriple=powerpc64le-unknown-unknown < %s | FileCheck %s --check-prefix=P10-LE
14
15define dso_local void @memsetTailV1B15(ptr nocapture noundef writeonly %p) local_unnamed_addr {
16; P8-BE-LABEL: memsetTailV1B15:
17; P8-BE:       # %bb.0: # %entry
18; P8-BE-NEXT:    vspltisb 2, 15
19; P8-BE-NEXT:    li 4, 15
20; P8-BE-NEXT:    stxvw4x 34, 3, 4
21; P8-BE-NEXT:    stxvw4x 34, 0, 3
22; P8-BE-NEXT:    blr
23;
24; P9-BE-LABEL: memsetTailV1B15:
25; P9-BE:       # %bb.0: # %entry
26; P9-BE-NEXT:    xxspltib 0, 15
27; P9-BE-NEXT:    li 4, 15
28; P9-BE-NEXT:    stxvx 0, 3, 4
29; P9-BE-NEXT:    stxv 0, 0(3)
30; P9-BE-NEXT:    blr
31;
32; P10-BE-LABEL: memsetTailV1B15:
33; P10-BE:       # %bb.0: # %entry
34; P10-BE-NEXT:    xxspltib 0, 15
35; P10-BE-NEXT:    pstxv 0, 15(3), 0
36; P10-BE-NEXT:    stxv 0, 0(3)
37; P10-BE-NEXT:    blr
38;
39; P8-LE-LABEL: memsetTailV1B15:
40; P8-LE:       # %bb.0: # %entry
41; P8-LE-NEXT:    vspltisb 2, 15
42; P8-LE-NEXT:    li 4, 15
43; P8-LE-NEXT:    stxvd2x 34, 3, 4
44; P8-LE-NEXT:    stxvd2x 34, 0, 3
45; P8-LE-NEXT:    blr
46;
47; P9-LE-LABEL: memsetTailV1B15:
48; P9-LE:       # %bb.0: # %entry
49; P9-LE-NEXT:    xxspltib 0, 15
50; P9-LE-NEXT:    li 4, 15
51; P9-LE-NEXT:    stxvx 0, 3, 4
52; P9-LE-NEXT:    stxv 0, 0(3)
53; P9-LE-NEXT:    blr
54;
55; P10-LE-LABEL: memsetTailV1B15:
56; P10-LE:       # %bb.0: # %entry
57; P10-LE-NEXT:    xxspltib 0, 15
58; P10-LE-NEXT:    pstxv 0, 15(3), 0
59; P10-LE-NEXT:    stxv 0, 0(3)
60; P10-LE-NEXT:    blr
61entry:
62  tail call void @llvm.memset.p0.i64(ptr %p, i8 15, i64 31, i1 false)
63  ret void
64}
65
66define dso_local void @memsetTailV1B12(ptr nocapture noundef writeonly %p) local_unnamed_addr {
67; P8-BE-LABEL: memsetTailV1B12:
68; P8-BE:       # %bb.0: # %entry
69; P8-BE-NEXT:    vspltisb 2, 15
70; P8-BE-NEXT:    li 4, 12
71; P8-BE-NEXT:    stxvw4x 34, 3, 4
72; P8-BE-NEXT:    stxvw4x 34, 0, 3
73; P8-BE-NEXT:    blr
74;
75; P9-BE-LABEL: memsetTailV1B12:
76; P9-BE:       # %bb.0: # %entry
77; P9-BE-NEXT:    xxspltib 0, 15
78; P9-BE-NEXT:    li 4, 12
79; P9-BE-NEXT:    stxvx 0, 3, 4
80; P9-BE-NEXT:    stxv 0, 0(3)
81; P9-BE-NEXT:    blr
82;
83; P10-BE-LABEL: memsetTailV1B12:
84; P10-BE:       # %bb.0: # %entry
85; P10-BE-NEXT:    xxspltib 0, 15
86; P10-BE-NEXT:    pstxv 0, 12(3), 0
87; P10-BE-NEXT:    stxv 0, 0(3)
88; P10-BE-NEXT:    blr
89;
90; P8-LE-LABEL: memsetTailV1B12:
91; P8-LE:       # %bb.0: # %entry
92; P8-LE-NEXT:    vspltisb 2, 15
93; P8-LE-NEXT:    li 4, 12
94; P8-LE-NEXT:    stxvd2x 34, 3, 4
95; P8-LE-NEXT:    stxvd2x 34, 0, 3
96; P8-LE-NEXT:    blr
97;
98; P9-LE-LABEL: memsetTailV1B12:
99; P9-LE:       # %bb.0: # %entry
100; P9-LE-NEXT:    xxspltib 0, 15
101; P9-LE-NEXT:    li 4, 12
102; P9-LE-NEXT:    stxvx 0, 3, 4
103; P9-LE-NEXT:    stxv 0, 0(3)
104; P9-LE-NEXT:    blr
105;
106; P10-LE-LABEL: memsetTailV1B12:
107; P10-LE:       # %bb.0: # %entry
108; P10-LE-NEXT:    xxspltib 0, 15
109; P10-LE-NEXT:    pstxv 0, 12(3), 0
110; P10-LE-NEXT:    stxv 0, 0(3)
111; P10-LE-NEXT:    blr
112entry:
113  tail call void @llvm.memset.p0.i64(ptr %p, i8 15, i64 28, i1 false)
114  ret void
115}
116
117define dso_local void @memsetTailV1B9(ptr nocapture noundef writeonly %p) local_unnamed_addr {
118; P8-BE-LABEL: memsetTailV1B9:
119; P8-BE:       # %bb.0: # %entry
120; P8-BE-NEXT:    vspltisb 2, 15
121; P8-BE-NEXT:    li 4, 9
122; P8-BE-NEXT:    stxvw4x 34, 3, 4
123; P8-BE-NEXT:    stxvw4x 34, 0, 3
124; P8-BE-NEXT:    blr
125;
126; P9-BE-LABEL: memsetTailV1B9:
127; P9-BE:       # %bb.0: # %entry
128; P9-BE-NEXT:    xxspltib 0, 15
129; P9-BE-NEXT:    li 4, 9
130; P9-BE-NEXT:    stxvx 0, 3, 4
131; P9-BE-NEXT:    stxv 0, 0(3)
132; P9-BE-NEXT:    blr
133;
134; P10-BE-LABEL: memsetTailV1B9:
135; P10-BE:       # %bb.0: # %entry
136; P10-BE-NEXT:    xxspltib 0, 15
137; P10-BE-NEXT:    pstxv 0, 9(3), 0
138; P10-BE-NEXT:    stxv 0, 0(3)
139; P10-BE-NEXT:    blr
140;
141; P8-LE-LABEL: memsetTailV1B9:
142; P8-LE:       # %bb.0: # %entry
143; P8-LE-NEXT:    vspltisb 2, 15
144; P8-LE-NEXT:    li 4, 9
145; P8-LE-NEXT:    stxvd2x 34, 3, 4
146; P8-LE-NEXT:    stxvd2x 34, 0, 3
147; P8-LE-NEXT:    blr
148;
149; P9-LE-LABEL: memsetTailV1B9:
150; P9-LE:       # %bb.0: # %entry
151; P9-LE-NEXT:    xxspltib 0, 15
152; P9-LE-NEXT:    li 4, 9
153; P9-LE-NEXT:    stxvx 0, 3, 4
154; P9-LE-NEXT:    stxv 0, 0(3)
155; P9-LE-NEXT:    blr
156;
157; P10-LE-LABEL: memsetTailV1B9:
158; P10-LE:       # %bb.0: # %entry
159; P10-LE-NEXT:    xxspltib 0, 15
160; P10-LE-NEXT:    pstxv 0, 9(3), 0
161; P10-LE-NEXT:    stxv 0, 0(3)
162; P10-LE-NEXT:    blr
163entry:
164  tail call void @llvm.memset.p0.i64(ptr %p, i8 15, i64 25, i1 false)
165  ret void
166}
167
168define dso_local void @memsetTailV1B8(ptr nocapture noundef writeonly %p) local_unnamed_addr {
169; P8-BE-LABEL: memsetTailV1B8:
170; P8-BE:       # %bb.0: # %entry
171; P8-BE-NEXT:    vspltisb 2, 15
172; P8-BE-NEXT:    li 4, 16
173; P8-BE-NEXT:    stxsdx 34, 3, 4
174; P8-BE-NEXT:    stxvw4x 34, 0, 3
175; P8-BE-NEXT:    blr
176;
177; P9-BE-LABEL: memsetTailV1B8:
178; P9-BE:       # %bb.0: # %entry
179; P9-BE-NEXT:    xxspltib 0, 15
180; P9-BE-NEXT:    stxv 0, 0(3)
181; P9-BE-NEXT:    stfd 0, 16(3)
182; P9-BE-NEXT:    blr
183;
184; P10-BE-LABEL: memsetTailV1B8:
185; P10-BE:       # %bb.0: # %entry
186; P10-BE-NEXT:    xxspltib 0, 15
187; P10-BE-NEXT:    stxv 0, 0(3)
188; P10-BE-NEXT:    stfd 0, 16(3)
189; P10-BE-NEXT:    blr
190;
191; P8-LE-LABEL: memsetTailV1B8:
192; P8-LE:       # %bb.0: # %entry
193; P8-LE-NEXT:    vspltisb 2, 15
194; P8-LE-NEXT:    li 4, 16
195; P8-LE-NEXT:    stxsdx 34, 3, 4
196; P8-LE-NEXT:    stxvd2x 34, 0, 3
197; P8-LE-NEXT:    blr
198;
199; P9-LE-LABEL: memsetTailV1B8:
200; P9-LE:       # %bb.0: # %entry
201; P9-LE-NEXT:    xxspltib 0, 15
202; P9-LE-NEXT:    stxv 0, 0(3)
203; P9-LE-NEXT:    stfd 0, 16(3)
204; P9-LE-NEXT:    blr
205;
206; P10-LE-LABEL: memsetTailV1B8:
207; P10-LE:       # %bb.0: # %entry
208; P10-LE-NEXT:    xxspltib 0, 15
209; P10-LE-NEXT:    stxv 0, 0(3)
210; P10-LE-NEXT:    stfd 0, 16(3)
211; P10-LE-NEXT:    blr
212entry:
213  tail call void @llvm.memset.p0.i64(ptr %p, i8 15, i64 24, i1 false)
214  ret void
215}
216
217define dso_local void @memsetTailV1B7(ptr nocapture noundef writeonly %p) local_unnamed_addr {
218; P8-BE-LABEL: memsetTailV1B7:
219; P8-BE:       # %bb.0: # %entry
220; P8-BE-NEXT:    vspltisb 2, 15
221; P8-BE-NEXT:    li 4, 15
222; P8-BE-NEXT:    stxsdx 34, 3, 4
223; P8-BE-NEXT:    stxvw4x 34, 0, 3
224; P8-BE-NEXT:    blr
225;
226; P9-BE-LABEL: memsetTailV1B7:
227; P9-BE:       # %bb.0: # %entry
228; P9-BE-NEXT:    xxspltib 0, 15
229; P9-BE-NEXT:    stfd 0, 15(3)
230; P9-BE-NEXT:    stxv 0, 0(3)
231; P9-BE-NEXT:    blr
232;
233; P10-BE-LABEL: memsetTailV1B7:
234; P10-BE:       # %bb.0: # %entry
235; P10-BE-NEXT:    xxspltib 0, 15
236; P10-BE-NEXT:    stfd 0, 15(3)
237; P10-BE-NEXT:    stxv 0, 0(3)
238; P10-BE-NEXT:    blr
239;
240; P8-LE-LABEL: memsetTailV1B7:
241; P8-LE:       # %bb.0: # %entry
242; P8-LE-NEXT:    vspltisb 2, 15
243; P8-LE-NEXT:    li 4, 15
244; P8-LE-NEXT:    stxsdx 34, 3, 4
245; P8-LE-NEXT:    stxvd2x 34, 0, 3
246; P8-LE-NEXT:    blr
247;
248; P9-LE-LABEL: memsetTailV1B7:
249; P9-LE:       # %bb.0: # %entry
250; P9-LE-NEXT:    xxspltib 0, 15
251; P9-LE-NEXT:    stfd 0, 15(3)
252; P9-LE-NEXT:    stxv 0, 0(3)
253; P9-LE-NEXT:    blr
254;
255; P10-LE-LABEL: memsetTailV1B7:
256; P10-LE:       # %bb.0: # %entry
257; P10-LE-NEXT:    xxspltib 0, 15
258; P10-LE-NEXT:    stfd 0, 15(3)
259; P10-LE-NEXT:    stxv 0, 0(3)
260; P10-LE-NEXT:    blr
261entry:
262  tail call void @llvm.memset.p0.i64(ptr %p, i8 15, i64 23, i1 false)
263  ret void
264}
265
266define dso_local void @memsetTailV1B4(ptr nocapture noundef writeonly %p) local_unnamed_addr {
267; P8-BE-LABEL: memsetTailV1B4:
268; P8-BE:       # %bb.0: # %entry
269; P8-BE-NEXT:    vspltisb 2, 15
270; P8-BE-NEXT:    li 4, 16
271; P8-BE-NEXT:    stxsiwx 34, 3, 4
272; P8-BE-NEXT:    stxvw4x 34, 0, 3
273; P8-BE-NEXT:    blr
274;
275; P9-BE-LABEL: memsetTailV1B4:
276; P9-BE:       # %bb.0: # %entry
277; P9-BE-NEXT:    xxspltib 0, 15
278; P9-BE-NEXT:    li 4, 16
279; P9-BE-NEXT:    stfiwx 0, 3, 4
280; P9-BE-NEXT:    stxv 0, 0(3)
281; P9-BE-NEXT:    blr
282;
283; P10-BE-LABEL: memsetTailV1B4:
284; P10-BE:       # %bb.0: # %entry
285; P10-BE-NEXT:    xxspltib 0, 15
286; P10-BE-NEXT:    li 4, 16
287; P10-BE-NEXT:    stfiwx 0, 3, 4
288; P10-BE-NEXT:    stxv 0, 0(3)
289; P10-BE-NEXT:    blr
290;
291; P8-LE-LABEL: memsetTailV1B4:
292; P8-LE:       # %bb.0: # %entry
293; P8-LE-NEXT:    vspltisb 2, 15
294; P8-LE-NEXT:    li 4, 16
295; P8-LE-NEXT:    stxsiwx 34, 3, 4
296; P8-LE-NEXT:    stxvd2x 34, 0, 3
297; P8-LE-NEXT:    blr
298;
299; P9-LE-LABEL: memsetTailV1B4:
300; P9-LE:       # %bb.0: # %entry
301; P9-LE-NEXT:    xxspltib 0, 15
302; P9-LE-NEXT:    li 4, 16
303; P9-LE-NEXT:    stfiwx 0, 3, 4
304; P9-LE-NEXT:    stxv 0, 0(3)
305; P9-LE-NEXT:    blr
306;
307; P10-LE-LABEL: memsetTailV1B4:
308; P10-LE:       # %bb.0: # %entry
309; P10-LE-NEXT:    xxspltib 0, 15
310; P10-LE-NEXT:    li 4, 16
311; P10-LE-NEXT:    stfiwx 0, 3, 4
312; P10-LE-NEXT:    stxv 0, 0(3)
313; P10-LE-NEXT:    blr
314entry:
315  tail call void @llvm.memset.p0.i32(ptr %p, i8 15, i32 20, i1 false)
316  ret void
317}
318
319define dso_local void @memsetTailV1B3(ptr nocapture noundef writeonly %p) local_unnamed_addr {
320; P8-BE-LABEL: memsetTailV1B3:
321; P8-BE:       # %bb.0: # %entry
322; P8-BE-NEXT:    vspltisb 2, 15
323; P8-BE-NEXT:    li 4, 15
324; P8-BE-NEXT:    stxsiwx 34, 3, 4
325; P8-BE-NEXT:    stxvw4x 34, 0, 3
326; P8-BE-NEXT:    blr
327;
328; P9-BE-LABEL: memsetTailV1B3:
329; P9-BE:       # %bb.0: # %entry
330; P9-BE-NEXT:    xxspltib 0, 15
331; P9-BE-NEXT:    li 4, 15
332; P9-BE-NEXT:    stfiwx 0, 3, 4
333; P9-BE-NEXT:    stxv 0, 0(3)
334; P9-BE-NEXT:    blr
335;
336; P10-BE-LABEL: memsetTailV1B3:
337; P10-BE:       # %bb.0: # %entry
338; P10-BE-NEXT:    xxspltib 0, 15
339; P10-BE-NEXT:    li 4, 15
340; P10-BE-NEXT:    stfiwx 0, 3, 4
341; P10-BE-NEXT:    stxv 0, 0(3)
342; P10-BE-NEXT:    blr
343;
344; P8-LE-LABEL: memsetTailV1B3:
345; P8-LE:       # %bb.0: # %entry
346; P8-LE-NEXT:    vspltisb 2, 15
347; P8-LE-NEXT:    li 4, 15
348; P8-LE-NEXT:    stxsiwx 34, 3, 4
349; P8-LE-NEXT:    stxvd2x 34, 0, 3
350; P8-LE-NEXT:    blr
351;
352; P9-LE-LABEL: memsetTailV1B3:
353; P9-LE:       # %bb.0: # %entry
354; P9-LE-NEXT:    xxspltib 0, 15
355; P9-LE-NEXT:    li 4, 15
356; P9-LE-NEXT:    stfiwx 0, 3, 4
357; P9-LE-NEXT:    stxv 0, 0(3)
358; P9-LE-NEXT:    blr
359;
360; P10-LE-LABEL: memsetTailV1B3:
361; P10-LE:       # %bb.0: # %entry
362; P10-LE-NEXT:    xxspltib 0, 15
363; P10-LE-NEXT:    li 4, 15
364; P10-LE-NEXT:    stfiwx 0, 3, 4
365; P10-LE-NEXT:    stxv 0, 0(3)
366; P10-LE-NEXT:    blr
367entry:
368  tail call void @llvm.memset.p0.i64(ptr %p, i8 15, i64 19, i1 false)
369  ret void
370}
371
372define dso_local void @memsetTailV1B2(ptr nocapture noundef writeonly %p) local_unnamed_addr {
373; P8-BE-LABEL: memsetTailV1B2:
374; P8-BE:       # %bb.0: # %entry
375; P8-BE-NEXT:    vspltisb 2, 15
376; P8-BE-NEXT:    li 4, 3855
377; P8-BE-NEXT:    sth 4, 16(3)
378; P8-BE-NEXT:    stxvw4x 34, 0, 3
379; P8-BE-NEXT:    blr
380;
381; P9-BE-LABEL: memsetTailV1B2:
382; P9-BE:       # %bb.0: # %entry
383; P9-BE-NEXT:    li 4, 3855
384; P9-BE-NEXT:    sth 4, 16(3)
385; P9-BE-NEXT:    xxspltib 0, 15
386; P9-BE-NEXT:    stxv 0, 0(3)
387; P9-BE-NEXT:    blr
388;
389; P10-BE-LABEL: memsetTailV1B2:
390; P10-BE:       # %bb.0: # %entry
391; P10-BE-NEXT:    li 4, 3855
392; P10-BE-NEXT:    sth 4, 16(3)
393; P10-BE-NEXT:    xxspltib 0, 15
394; P10-BE-NEXT:    stxv 0, 0(3)
395; P10-BE-NEXT:    blr
396;
397; P8-LE-LABEL: memsetTailV1B2:
398; P8-LE:       # %bb.0: # %entry
399; P8-LE-NEXT:    vspltisb 2, 15
400; P8-LE-NEXT:    li 4, 3855
401; P8-LE-NEXT:    sth 4, 16(3)
402; P8-LE-NEXT:    stxvd2x 34, 0, 3
403; P8-LE-NEXT:    blr
404;
405; P9-LE-LABEL: memsetTailV1B2:
406; P9-LE:       # %bb.0: # %entry
407; P9-LE-NEXT:    li 4, 3855
408; P9-LE-NEXT:    sth 4, 16(3)
409; P9-LE-NEXT:    xxspltib 0, 15
410; P9-LE-NEXT:    stxv 0, 0(3)
411; P9-LE-NEXT:    blr
412;
413; P10-LE-LABEL: memsetTailV1B2:
414; P10-LE:       # %bb.0: # %entry
415; P10-LE-NEXT:    li 4, 3855
416; P10-LE-NEXT:    sth 4, 16(3)
417; P10-LE-NEXT:    xxspltib 0, 15
418; P10-LE-NEXT:    stxv 0, 0(3)
419; P10-LE-NEXT:    blr
420entry:
421  tail call void @llvm.memset.p0.i64(ptr %p, i8 15, i64 18, i1 false)
422  ret void
423}
424
425define dso_local void @memsetTailV1B1(ptr nocapture noundef writeonly %p) local_unnamed_addr {
426; P8-BE-LABEL: memsetTailV1B1:
427; P8-BE:       # %bb.0: # %entry
428; P8-BE-NEXT:    vspltisb 2, 15
429; P8-BE-NEXT:    li 4, 15
430; P8-BE-NEXT:    stb 4, 16(3)
431; P8-BE-NEXT:    stxvw4x 34, 0, 3
432; P8-BE-NEXT:    blr
433;
434; P9-BE-LABEL: memsetTailV1B1:
435; P9-BE:       # %bb.0: # %entry
436; P9-BE-NEXT:    li 4, 15
437; P9-BE-NEXT:    stb 4, 16(3)
438; P9-BE-NEXT:    xxspltib 0, 15
439; P9-BE-NEXT:    stxv 0, 0(3)
440; P9-BE-NEXT:    blr
441;
442; P10-BE-LABEL: memsetTailV1B1:
443; P10-BE:       # %bb.0: # %entry
444; P10-BE-NEXT:    li 4, 15
445; P10-BE-NEXT:    stb 4, 16(3)
446; P10-BE-NEXT:    xxspltib 0, 15
447; P10-BE-NEXT:    stxv 0, 0(3)
448; P10-BE-NEXT:    blr
449;
450; P8-LE-LABEL: memsetTailV1B1:
451; P8-LE:       # %bb.0: # %entry
452; P8-LE-NEXT:    vspltisb 2, 15
453; P8-LE-NEXT:    li 4, 15
454; P8-LE-NEXT:    stb 4, 16(3)
455; P8-LE-NEXT:    stxvd2x 34, 0, 3
456; P8-LE-NEXT:    blr
457;
458; P9-LE-LABEL: memsetTailV1B1:
459; P9-LE:       # %bb.0: # %entry
460; P9-LE-NEXT:    li 4, 15
461; P9-LE-NEXT:    stb 4, 16(3)
462; P9-LE-NEXT:    xxspltib 0, 15
463; P9-LE-NEXT:    stxv 0, 0(3)
464; P9-LE-NEXT:    blr
465;
466; P10-LE-LABEL: memsetTailV1B1:
467; P10-LE:       # %bb.0: # %entry
468; P10-LE-NEXT:    li 4, 15
469; P10-LE-NEXT:    stb 4, 16(3)
470; P10-LE-NEXT:    xxspltib 0, 15
471; P10-LE-NEXT:    stxv 0, 0(3)
472; P10-LE-NEXT:    blr
473entry:
474  tail call void @llvm.memset.p0.i64(ptr %p, i8 15, i64 17, i1 false)
475  ret void
476}
477
478define dso_local void @memset2TailV1B15(ptr nocapture noundef writeonly %p) local_unnamed_addr {
479; P8-BE-LABEL: memset2TailV1B15:
480; P8-BE:       # %bb.0: # %entry
481; P8-BE-NEXT:    ld 4, L..C0(2) # %const.0
482; P8-BE-NEXT:    lxvw4x 0, 0, 4
483; P8-BE-NEXT:    li 4, 15
484; P8-BE-NEXT:    stxvw4x 0, 3, 4
485; P8-BE-NEXT:    stxvw4x 0, 0, 3
486; P8-BE-NEXT:    blr
487;
488; P9-BE-LABEL: memset2TailV1B15:
489; P9-BE:       # %bb.0: # %entry
490; P9-BE-NEXT:    xxspltib 0, 165
491; P9-BE-NEXT:    li 4, 15
492; P9-BE-NEXT:    stxvx 0, 3, 4
493; P9-BE-NEXT:    stxv 0, 0(3)
494; P9-BE-NEXT:    blr
495;
496; P10-BE-LABEL: memset2TailV1B15:
497; P10-BE:       # %bb.0: # %entry
498; P10-BE-NEXT:    xxspltib 0, 165
499; P10-BE-NEXT:    pstxv 0, 15(3), 0
500; P10-BE-NEXT:    stxv 0, 0(3)
501; P10-BE-NEXT:    blr
502;
503; P8-LE-LABEL: memset2TailV1B15:
504; P8-LE:       # %bb.0: # %entry
505; P8-LE-NEXT:    addis 4, 2, .LCPI9_0@toc@ha
506; P8-LE-NEXT:    addi 4, 4, .LCPI9_0@toc@l
507; P8-LE-NEXT:    lxvd2x 0, 0, 4
508; P8-LE-NEXT:    li 4, 15
509; P8-LE-NEXT:    stxvd2x 0, 3, 4
510; P8-LE-NEXT:    stxvd2x 0, 0, 3
511; P8-LE-NEXT:    blr
512;
513; P9-LE-LABEL: memset2TailV1B15:
514; P9-LE:       # %bb.0: # %entry
515; P9-LE-NEXT:    xxspltib 0, 165
516; P9-LE-NEXT:    li 4, 15
517; P9-LE-NEXT:    stxvx 0, 3, 4
518; P9-LE-NEXT:    stxv 0, 0(3)
519; P9-LE-NEXT:    blr
520;
521; P10-LE-LABEL: memset2TailV1B15:
522; P10-LE:       # %bb.0: # %entry
523; P10-LE-NEXT:    xxspltib 0, 165
524; P10-LE-NEXT:    pstxv 0, 15(3), 0
525; P10-LE-NEXT:    stxv 0, 0(3)
526; P10-LE-NEXT:    blr
527entry:
528  tail call void @llvm.memset.p0.i64(ptr %p, i8 165, i64 31, i1 false)
529  ret void
530}
531
532define dso_local void @memset2TailV1B12(ptr nocapture noundef writeonly %p) local_unnamed_addr {
533; P8-BE-LABEL: memset2TailV1B12:
534; P8-BE:       # %bb.0: # %entry
535; P8-BE-NEXT:    ld 4, L..C1(2) # %const.0
536; P8-BE-NEXT:    lxvw4x 0, 0, 4
537; P8-BE-NEXT:    li 4, 12
538; P8-BE-NEXT:    stxvw4x 0, 3, 4
539; P8-BE-NEXT:    stxvw4x 0, 0, 3
540; P8-BE-NEXT:    blr
541;
542; P9-BE-LABEL: memset2TailV1B12:
543; P9-BE:       # %bb.0: # %entry
544; P9-BE-NEXT:    xxspltib 0, 165
545; P9-BE-NEXT:    li 4, 12
546; P9-BE-NEXT:    stxvx 0, 3, 4
547; P9-BE-NEXT:    stxv 0, 0(3)
548; P9-BE-NEXT:    blr
549;
550; P10-BE-LABEL: memset2TailV1B12:
551; P10-BE:       # %bb.0: # %entry
552; P10-BE-NEXT:    xxspltib 0, 165
553; P10-BE-NEXT:    pstxv 0, 12(3), 0
554; P10-BE-NEXT:    stxv 0, 0(3)
555; P10-BE-NEXT:    blr
556;
557; P8-LE-LABEL: memset2TailV1B12:
558; P8-LE:       # %bb.0: # %entry
559; P8-LE-NEXT:    addis 4, 2, .LCPI10_0@toc@ha
560; P8-LE-NEXT:    addi 4, 4, .LCPI10_0@toc@l
561; P8-LE-NEXT:    lxvd2x 0, 0, 4
562; P8-LE-NEXT:    li 4, 12
563; P8-LE-NEXT:    stxvd2x 0, 3, 4
564; P8-LE-NEXT:    stxvd2x 0, 0, 3
565; P8-LE-NEXT:    blr
566;
567; P9-LE-LABEL: memset2TailV1B12:
568; P9-LE:       # %bb.0: # %entry
569; P9-LE-NEXT:    xxspltib 0, 165
570; P9-LE-NEXT:    li 4, 12
571; P9-LE-NEXT:    stxvx 0, 3, 4
572; P9-LE-NEXT:    stxv 0, 0(3)
573; P9-LE-NEXT:    blr
574;
575; P10-LE-LABEL: memset2TailV1B12:
576; P10-LE:       # %bb.0: # %entry
577; P10-LE-NEXT:    xxspltib 0, 165
578; P10-LE-NEXT:    pstxv 0, 12(3), 0
579; P10-LE-NEXT:    stxv 0, 0(3)
580; P10-LE-NEXT:    blr
581entry:
582  tail call void @llvm.memset.p0.i64(ptr %p, i8 165, i64 28, i1 false)
583  ret void
584}
585
586define dso_local void @memset2TailV1B9(ptr nocapture noundef writeonly %p) local_unnamed_addr {
587; P8-BE-LABEL: memset2TailV1B9:
588; P8-BE:       # %bb.0: # %entry
589; P8-BE-NEXT:    ld 4, L..C2(2) # %const.0
590; P8-BE-NEXT:    lxvw4x 0, 0, 4
591; P8-BE-NEXT:    li 4, 9
592; P8-BE-NEXT:    stxvw4x 0, 3, 4
593; P8-BE-NEXT:    stxvw4x 0, 0, 3
594; P8-BE-NEXT:    blr
595;
596; P9-BE-LABEL: memset2TailV1B9:
597; P9-BE:       # %bb.0: # %entry
598; P9-BE-NEXT:    xxspltib 0, 165
599; P9-BE-NEXT:    li 4, 9
600; P9-BE-NEXT:    stxvx 0, 3, 4
601; P9-BE-NEXT:    stxv 0, 0(3)
602; P9-BE-NEXT:    blr
603;
604; P10-BE-LABEL: memset2TailV1B9:
605; P10-BE:       # %bb.0: # %entry
606; P10-BE-NEXT:    xxspltib 0, 165
607; P10-BE-NEXT:    pstxv 0, 9(3), 0
608; P10-BE-NEXT:    stxv 0, 0(3)
609; P10-BE-NEXT:    blr
610;
611; P8-LE-LABEL: memset2TailV1B9:
612; P8-LE:       # %bb.0: # %entry
613; P8-LE-NEXT:    addis 4, 2, .LCPI11_0@toc@ha
614; P8-LE-NEXT:    addi 4, 4, .LCPI11_0@toc@l
615; P8-LE-NEXT:    lxvd2x 0, 0, 4
616; P8-LE-NEXT:    li 4, 9
617; P8-LE-NEXT:    stxvd2x 0, 3, 4
618; P8-LE-NEXT:    stxvd2x 0, 0, 3
619; P8-LE-NEXT:    blr
620;
621; P9-LE-LABEL: memset2TailV1B9:
622; P9-LE:       # %bb.0: # %entry
623; P9-LE-NEXT:    xxspltib 0, 165
624; P9-LE-NEXT:    li 4, 9
625; P9-LE-NEXT:    stxvx 0, 3, 4
626; P9-LE-NEXT:    stxv 0, 0(3)
627; P9-LE-NEXT:    blr
628;
629; P10-LE-LABEL: memset2TailV1B9:
630; P10-LE:       # %bb.0: # %entry
631; P10-LE-NEXT:    xxspltib 0, 165
632; P10-LE-NEXT:    pstxv 0, 9(3), 0
633; P10-LE-NEXT:    stxv 0, 0(3)
634; P10-LE-NEXT:    blr
635entry:
636  tail call void @llvm.memset.p0.i64(ptr %p, i8 165, i64 25, i1 false)
637  ret void
638}
639
640define dso_local void @memset2TailV1B8(ptr nocapture noundef writeonly %p) local_unnamed_addr {
641; P8-BE-LABEL: memset2TailV1B8:
642; P8-BE:       # %bb.0: # %entry
643; P8-BE-NEXT:    ld 4, L..C3(2) # %const.0
644; P8-BE-NEXT:    lxvw4x 0, 0, 4
645; P8-BE-NEXT:    stfd 0, 16(3)
646; P8-BE-NEXT:    stxvw4x 0, 0, 3
647; P8-BE-NEXT:    blr
648;
649; P9-BE-LABEL: memset2TailV1B8:
650; P9-BE:       # %bb.0: # %entry
651; P9-BE-NEXT:    xxspltib 0, 165
652; P9-BE-NEXT:    stxv 0, 0(3)
653; P9-BE-NEXT:    stfd 0, 16(3)
654; P9-BE-NEXT:    blr
655;
656; P10-BE-LABEL: memset2TailV1B8:
657; P10-BE:       # %bb.0: # %entry
658; P10-BE-NEXT:    xxspltib 0, 165
659; P10-BE-NEXT:    stxv 0, 0(3)
660; P10-BE-NEXT:    stfd 0, 16(3)
661; P10-BE-NEXT:    blr
662;
663; P8-LE-LABEL: memset2TailV1B8:
664; P8-LE:       # %bb.0: # %entry
665; P8-LE-NEXT:    addis 4, 2, .LCPI12_0@toc@ha
666; P8-LE-NEXT:    addi 4, 4, .LCPI12_0@toc@l
667; P8-LE-NEXT:    lxvd2x 0, 0, 4
668; P8-LE-NEXT:    stfd 0, 16(3)
669; P8-LE-NEXT:    stxvd2x 0, 0, 3
670; P8-LE-NEXT:    blr
671;
672; P9-LE-LABEL: memset2TailV1B8:
673; P9-LE:       # %bb.0: # %entry
674; P9-LE-NEXT:    xxspltib 0, 165
675; P9-LE-NEXT:    stxv 0, 0(3)
676; P9-LE-NEXT:    stfd 0, 16(3)
677; P9-LE-NEXT:    blr
678;
679; P10-LE-LABEL: memset2TailV1B8:
680; P10-LE:       # %bb.0: # %entry
681; P10-LE-NEXT:    xxspltib 0, 165
682; P10-LE-NEXT:    stxv 0, 0(3)
683; P10-LE-NEXT:    stfd 0, 16(3)
684; P10-LE-NEXT:    blr
685entry:
686  tail call void @llvm.memset.p0.i64(ptr %p, i8 165, i64 24, i1 false)
687  ret void
688}
689
690define dso_local void @memset2TailV1B7(ptr nocapture noundef writeonly %p) local_unnamed_addr {
691; P8-BE-LABEL: memset2TailV1B7:
692; P8-BE:       # %bb.0: # %entry
693; P8-BE-NEXT:    ld 4, L..C4(2) # %const.0
694; P8-BE-NEXT:    lxvw4x 0, 0, 4
695; P8-BE-NEXT:    stfd 0, 15(3)
696; P8-BE-NEXT:    stxvw4x 0, 0, 3
697; P8-BE-NEXT:    blr
698;
699; P9-BE-LABEL: memset2TailV1B7:
700; P9-BE:       # %bb.0: # %entry
701; P9-BE-NEXT:    xxspltib 0, 165
702; P9-BE-NEXT:    stfd 0, 15(3)
703; P9-BE-NEXT:    stxv 0, 0(3)
704; P9-BE-NEXT:    blr
705;
706; P10-BE-LABEL: memset2TailV1B7:
707; P10-BE:       # %bb.0: # %entry
708; P10-BE-NEXT:    xxspltib 0, 165
709; P10-BE-NEXT:    stfd 0, 15(3)
710; P10-BE-NEXT:    stxv 0, 0(3)
711; P10-BE-NEXT:    blr
712;
713; P8-LE-LABEL: memset2TailV1B7:
714; P8-LE:       # %bb.0: # %entry
715; P8-LE-NEXT:    addis 4, 2, .LCPI13_0@toc@ha
716; P8-LE-NEXT:    addi 4, 4, .LCPI13_0@toc@l
717; P8-LE-NEXT:    lxvd2x 0, 0, 4
718; P8-LE-NEXT:    stfd 0, 15(3)
719; P8-LE-NEXT:    stxvd2x 0, 0, 3
720; P8-LE-NEXT:    blr
721;
722; P9-LE-LABEL: memset2TailV1B7:
723; P9-LE:       # %bb.0: # %entry
724; P9-LE-NEXT:    xxspltib 0, 165
725; P9-LE-NEXT:    stfd 0, 15(3)
726; P9-LE-NEXT:    stxv 0, 0(3)
727; P9-LE-NEXT:    blr
728;
729; P10-LE-LABEL: memset2TailV1B7:
730; P10-LE:       # %bb.0: # %entry
731; P10-LE-NEXT:    xxspltib 0, 165
732; P10-LE-NEXT:    stfd 0, 15(3)
733; P10-LE-NEXT:    stxv 0, 0(3)
734; P10-LE-NEXT:    blr
735entry:
736  tail call void @llvm.memset.p0.i64(ptr %p, i8 165, i64 23, i1 false)
737  ret void
738}
739
740define dso_local void @memset2TailV1B4(ptr nocapture noundef writeonly %p) local_unnamed_addr {
741; P8-BE-LABEL: memset2TailV1B4:
742; P8-BE:       # %bb.0: # %entry
743; P8-BE-NEXT:    ld 4, L..C5(2) # %const.0
744; P8-BE-NEXT:    lxvw4x 0, 0, 4
745; P8-BE-NEXT:    li 4, 16
746; P8-BE-NEXT:    stfiwx 0, 3, 4
747; P8-BE-NEXT:    stxvw4x 0, 0, 3
748; P8-BE-NEXT:    blr
749;
750; P9-BE-LABEL: memset2TailV1B4:
751; P9-BE:       # %bb.0: # %entry
752; P9-BE-NEXT:    xxspltib 0, 165
753; P9-BE-NEXT:    li 4, 16
754; P9-BE-NEXT:    stfiwx 0, 3, 4
755; P9-BE-NEXT:    stxv 0, 0(3)
756; P9-BE-NEXT:    blr
757;
758; P10-BE-LABEL: memset2TailV1B4:
759; P10-BE:       # %bb.0: # %entry
760; P10-BE-NEXT:    xxspltib 0, 165
761; P10-BE-NEXT:    li 4, 16
762; P10-BE-NEXT:    stfiwx 0, 3, 4
763; P10-BE-NEXT:    stxv 0, 0(3)
764; P10-BE-NEXT:    blr
765;
766; P8-LE-LABEL: memset2TailV1B4:
767; P8-LE:       # %bb.0: # %entry
768; P8-LE-NEXT:    addis 4, 2, .LCPI14_0@toc@ha
769; P8-LE-NEXT:    addi 4, 4, .LCPI14_0@toc@l
770; P8-LE-NEXT:    lxvd2x 0, 0, 4
771; P8-LE-NEXT:    li 4, 16
772; P8-LE-NEXT:    stfiwx 0, 3, 4
773; P8-LE-NEXT:    stxvd2x 0, 0, 3
774; P8-LE-NEXT:    blr
775;
776; P9-LE-LABEL: memset2TailV1B4:
777; P9-LE:       # %bb.0: # %entry
778; P9-LE-NEXT:    xxspltib 0, 165
779; P9-LE-NEXT:    li 4, 16
780; P9-LE-NEXT:    stfiwx 0, 3, 4
781; P9-LE-NEXT:    stxv 0, 0(3)
782; P9-LE-NEXT:    blr
783;
784; P10-LE-LABEL: memset2TailV1B4:
785; P10-LE:       # %bb.0: # %entry
786; P10-LE-NEXT:    xxspltib 0, 165
787; P10-LE-NEXT:    li 4, 16
788; P10-LE-NEXT:    stfiwx 0, 3, 4
789; P10-LE-NEXT:    stxv 0, 0(3)
790; P10-LE-NEXT:    blr
791entry:
792  tail call void @llvm.memset.p0.i32(ptr %p, i8 165, i32 20, i1 false)
793  ret void
794}
795
796define dso_local void @memset2TailV1B3(ptr nocapture noundef writeonly %p) local_unnamed_addr {
797; P8-BE-LABEL: memset2TailV1B3:
798; P8-BE:       # %bb.0: # %entry
799; P8-BE-NEXT:    ld 4, L..C6(2) # %const.0
800; P8-BE-NEXT:    lxvw4x 0, 0, 4
801; P8-BE-NEXT:    li 4, 15
802; P8-BE-NEXT:    stfiwx 0, 3, 4
803; P8-BE-NEXT:    stxvw4x 0, 0, 3
804; P8-BE-NEXT:    blr
805;
806; P9-BE-LABEL: memset2TailV1B3:
807; P9-BE:       # %bb.0: # %entry
808; P9-BE-NEXT:    xxspltib 0, 165
809; P9-BE-NEXT:    li 4, 15
810; P9-BE-NEXT:    stfiwx 0, 3, 4
811; P9-BE-NEXT:    stxv 0, 0(3)
812; P9-BE-NEXT:    blr
813;
814; P10-BE-LABEL: memset2TailV1B3:
815; P10-BE:       # %bb.0: # %entry
816; P10-BE-NEXT:    xxspltib 0, 165
817; P10-BE-NEXT:    li 4, 15
818; P10-BE-NEXT:    stfiwx 0, 3, 4
819; P10-BE-NEXT:    stxv 0, 0(3)
820; P10-BE-NEXT:    blr
821;
822; P8-LE-LABEL: memset2TailV1B3:
823; P8-LE:       # %bb.0: # %entry
824; P8-LE-NEXT:    addis 4, 2, .LCPI15_0@toc@ha
825; P8-LE-NEXT:    addi 4, 4, .LCPI15_0@toc@l
826; P8-LE-NEXT:    lxvd2x 0, 0, 4
827; P8-LE-NEXT:    li 4, 15
828; P8-LE-NEXT:    stfiwx 0, 3, 4
829; P8-LE-NEXT:    stxvd2x 0, 0, 3
830; P8-LE-NEXT:    blr
831;
832; P9-LE-LABEL: memset2TailV1B3:
833; P9-LE:       # %bb.0: # %entry
834; P9-LE-NEXT:    xxspltib 0, 165
835; P9-LE-NEXT:    li 4, 15
836; P9-LE-NEXT:    stfiwx 0, 3, 4
837; P9-LE-NEXT:    stxv 0, 0(3)
838; P9-LE-NEXT:    blr
839;
840; P10-LE-LABEL: memset2TailV1B3:
841; P10-LE:       # %bb.0: # %entry
842; P10-LE-NEXT:    xxspltib 0, 165
843; P10-LE-NEXT:    li 4, 15
844; P10-LE-NEXT:    stfiwx 0, 3, 4
845; P10-LE-NEXT:    stxv 0, 0(3)
846; P10-LE-NEXT:    blr
847entry:
848  tail call void @llvm.memset.p0.i64(ptr %p, i8 165, i64 19, i1 false)
849  ret void
850}
851
852define dso_local void @memset2TailV1B2(ptr nocapture noundef writeonly %p) local_unnamed_addr {
853; P8-BE-LABEL: memset2TailV1B2:
854; P8-BE:       # %bb.0: # %entry
855; P8-BE-NEXT:    li 4, -23131
856; P8-BE-NEXT:    sth 4, 16(3)
857; P8-BE-NEXT:    ld 4, L..C7(2) # %const.0
858; P8-BE-NEXT:    lxvw4x 0, 0, 4
859; P8-BE-NEXT:    stxvw4x 0, 0, 3
860; P8-BE-NEXT:    blr
861;
862; P9-BE-LABEL: memset2TailV1B2:
863; P9-BE:       # %bb.0: # %entry
864; P9-BE-NEXT:    li 4, -23131
865; P9-BE-NEXT:    sth 4, 16(3)
866; P9-BE-NEXT:    xxspltib 0, 165
867; P9-BE-NEXT:    stxv 0, 0(3)
868; P9-BE-NEXT:    blr
869;
870; P10-BE-LABEL: memset2TailV1B2:
871; P10-BE:       # %bb.0: # %entry
872; P10-BE-NEXT:    li 4, -23131
873; P10-BE-NEXT:    sth 4, 16(3)
874; P10-BE-NEXT:    xxspltib 0, 165
875; P10-BE-NEXT:    stxv 0, 0(3)
876; P10-BE-NEXT:    blr
877;
878; P8-LE-LABEL: memset2TailV1B2:
879; P8-LE:       # %bb.0: # %entry
880; P8-LE-NEXT:    li 4, -23131
881; P8-LE-NEXT:    sth 4, 16(3)
882; P8-LE-NEXT:    addis 4, 2, .LCPI16_0@toc@ha
883; P8-LE-NEXT:    addi 4, 4, .LCPI16_0@toc@l
884; P8-LE-NEXT:    lxvd2x 0, 0, 4
885; P8-LE-NEXT:    stxvd2x 0, 0, 3
886; P8-LE-NEXT:    blr
887;
888; P9-LE-LABEL: memset2TailV1B2:
889; P9-LE:       # %bb.0: # %entry
890; P9-LE-NEXT:    li 4, -23131
891; P9-LE-NEXT:    sth 4, 16(3)
892; P9-LE-NEXT:    xxspltib 0, 165
893; P9-LE-NEXT:    stxv 0, 0(3)
894; P9-LE-NEXT:    blr
895;
896; P10-LE-LABEL: memset2TailV1B2:
897; P10-LE:       # %bb.0: # %entry
898; P10-LE-NEXT:    li 4, -23131
899; P10-LE-NEXT:    sth 4, 16(3)
900; P10-LE-NEXT:    xxspltib 0, 165
901; P10-LE-NEXT:    stxv 0, 0(3)
902; P10-LE-NEXT:    blr
903entry:
904  tail call void @llvm.memset.p0.i64(ptr %p, i8 165, i64 18, i1 false)
905  ret void
906}
907
908define dso_local void @memset2TailV1B1(ptr nocapture noundef writeonly %p) local_unnamed_addr {
909; P8-BE-LABEL: memset2TailV1B1:
910; P8-BE:       # %bb.0: # %entry
911; P8-BE-NEXT:    li 4, -91
912; P8-BE-NEXT:    stb 4, 16(3)
913; P8-BE-NEXT:    ld 4, L..C8(2) # %const.0
914; P8-BE-NEXT:    lxvw4x 0, 0, 4
915; P8-BE-NEXT:    stxvw4x 0, 0, 3
916; P8-BE-NEXT:    blr
917;
918; P9-BE-LABEL: memset2TailV1B1:
919; P9-BE:       # %bb.0: # %entry
920; P9-BE-NEXT:    li 4, -91
921; P9-BE-NEXT:    stb 4, 16(3)
922; P9-BE-NEXT:    xxspltib 0, 165
923; P9-BE-NEXT:    stxv 0, 0(3)
924; P9-BE-NEXT:    blr
925;
926; P10-BE-LABEL: memset2TailV1B1:
927; P10-BE:       # %bb.0: # %entry
928; P10-BE-NEXT:    li 4, -91
929; P10-BE-NEXT:    stb 4, 16(3)
930; P10-BE-NEXT:    xxspltib 0, 165
931; P10-BE-NEXT:    stxv 0, 0(3)
932; P10-BE-NEXT:    blr
933;
934; P8-LE-LABEL: memset2TailV1B1:
935; P8-LE:       # %bb.0: # %entry
936; P8-LE-NEXT:    li 4, -91
937; P8-LE-NEXT:    stb 4, 16(3)
938; P8-LE-NEXT:    addis 4, 2, .LCPI17_0@toc@ha
939; P8-LE-NEXT:    addi 4, 4, .LCPI17_0@toc@l
940; P8-LE-NEXT:    lxvd2x 0, 0, 4
941; P8-LE-NEXT:    stxvd2x 0, 0, 3
942; P8-LE-NEXT:    blr
943;
944; P9-LE-LABEL: memset2TailV1B1:
945; P9-LE:       # %bb.0: # %entry
946; P9-LE-NEXT:    li 4, -91
947; P9-LE-NEXT:    stb 4, 16(3)
948; P9-LE-NEXT:    xxspltib 0, 165
949; P9-LE-NEXT:    stxv 0, 0(3)
950; P9-LE-NEXT:    blr
951;
952; P10-LE-LABEL: memset2TailV1B1:
953; P10-LE:       # %bb.0: # %entry
954; P10-LE-NEXT:    li 4, -91
955; P10-LE-NEXT:    stb 4, 16(3)
956; P10-LE-NEXT:    xxspltib 0, 165
957; P10-LE-NEXT:    stxv 0, 0(3)
958; P10-LE-NEXT:    blr
959entry:
960  tail call void @llvm.memset.p0.i64(ptr %p, i8 165, i64 17, i1 false)
961  ret void
962}
963
964define dso_local void @memsetTailV0B15(ptr nocapture noundef writeonly %p) local_unnamed_addr {
965; P8-BE-LABEL: memsetTailV0B15:
966; P8-BE:       # %bb.0: # %entry
967; P8-BE-NEXT:    lis 4, 3855
968; P8-BE-NEXT:    li 5, 7
969; P8-BE-NEXT:    ori 4, 4, 3855
970; P8-BE-NEXT:    rldimi 4, 4, 32, 0
971; P8-BE-NEXT:    stdx 4, 3, 5
972; P8-BE-NEXT:    std 4, 0(3)
973; P8-BE-NEXT:    blr
974;
975; P9-BE-LABEL: memsetTailV0B15:
976; P9-BE:       # %bb.0: # %entry
977; P9-BE-NEXT:    lis 4, 3855
978; P9-BE-NEXT:    li 5, 7
979; P9-BE-NEXT:    ori 4, 4, 3855
980; P9-BE-NEXT:    rldimi 4, 4, 32, 0
981; P9-BE-NEXT:    stdx 4, 3, 5
982; P9-BE-NEXT:    std 4, 0(3)
983; P9-BE-NEXT:    blr
984;
985; P10-BE-LABEL: memsetTailV0B15:
986; P10-BE:       # %bb.0: # %entry
987; P10-BE-NEXT:    pli 4, 252645135
988; P10-BE-NEXT:    rldimi 4, 4, 32, 0
989; P10-BE-NEXT:    pstd 4, 7(3), 0
990; P10-BE-NEXT:    std 4, 0(3)
991; P10-BE-NEXT:    blr
992;
993; P8-LE-LABEL: memsetTailV0B15:
994; P8-LE:       # %bb.0: # %entry
995; P8-LE-NEXT:    lis 4, 3855
996; P8-LE-NEXT:    li 5, 7
997; P8-LE-NEXT:    ori 4, 4, 3855
998; P8-LE-NEXT:    rldimi 4, 4, 32, 0
999; P8-LE-NEXT:    stdx 4, 3, 5
1000; P8-LE-NEXT:    std 4, 0(3)
1001; P8-LE-NEXT:    blr
1002;
1003; P9-LE-LABEL: memsetTailV0B15:
1004; P9-LE:       # %bb.0: # %entry
1005; P9-LE-NEXT:    lis 4, 3855
1006; P9-LE-NEXT:    li 5, 7
1007; P9-LE-NEXT:    ori 4, 4, 3855
1008; P9-LE-NEXT:    rldimi 4, 4, 32, 0
1009; P9-LE-NEXT:    stdx 4, 3, 5
1010; P9-LE-NEXT:    std 4, 0(3)
1011; P9-LE-NEXT:    blr
1012;
1013; P10-LE-LABEL: memsetTailV0B15:
1014; P10-LE:       # %bb.0: # %entry
1015; P10-LE-NEXT:    pli 4, 252645135
1016; P10-LE-NEXT:    rldimi 4, 4, 32, 0
1017; P10-LE-NEXT:    pstd 4, 7(3), 0
1018; P10-LE-NEXT:    std 4, 0(3)
1019; P10-LE-NEXT:    blr
1020entry:
1021  tail call void @llvm.memset.p0.i64(ptr %p, i8 15, i64 15, i1 false)
1022  ret void
1023}
1024
1025define dso_local void @memsetTailV0B12(ptr nocapture noundef writeonly %p) local_unnamed_addr {
1026; P8-BE-LABEL: memsetTailV0B12:
1027; P8-BE:       # %bb.0: # %entry
1028; P8-BE-NEXT:    lis 4, 3855
1029; P8-BE-NEXT:    ori 4, 4, 3855
1030; P8-BE-NEXT:    rldimi 4, 4, 32, 0
1031; P8-BE-NEXT:    stw 4, 8(3)
1032; P8-BE-NEXT:    std 4, 0(3)
1033; P8-BE-NEXT:    blr
1034;
1035; P9-BE-LABEL: memsetTailV0B12:
1036; P9-BE:       # %bb.0: # %entry
1037; P9-BE-NEXT:    lis 4, 3855
1038; P9-BE-NEXT:    ori 4, 4, 3855
1039; P9-BE-NEXT:    rldimi 4, 4, 32, 0
1040; P9-BE-NEXT:    stw 4, 8(3)
1041; P9-BE-NEXT:    std 4, 0(3)
1042; P9-BE-NEXT:    blr
1043;
1044; P10-BE-LABEL: memsetTailV0B12:
1045; P10-BE:       # %bb.0: # %entry
1046; P10-BE-NEXT:    pli 4, 252645135
1047; P10-BE-NEXT:    rldimi 4, 4, 32, 0
1048; P10-BE-NEXT:    stw 4, 8(3)
1049; P10-BE-NEXT:    std 4, 0(3)
1050; P10-BE-NEXT:    blr
1051;
1052; P8-LE-LABEL: memsetTailV0B12:
1053; P8-LE:       # %bb.0: # %entry
1054; P8-LE-NEXT:    lis 4, 3855
1055; P8-LE-NEXT:    ori 4, 4, 3855
1056; P8-LE-NEXT:    rldimi 4, 4, 32, 0
1057; P8-LE-NEXT:    stw 4, 8(3)
1058; P8-LE-NEXT:    std 4, 0(3)
1059; P8-LE-NEXT:    blr
1060;
1061; P9-LE-LABEL: memsetTailV0B12:
1062; P9-LE:       # %bb.0: # %entry
1063; P9-LE-NEXT:    lis 4, 3855
1064; P9-LE-NEXT:    ori 4, 4, 3855
1065; P9-LE-NEXT:    rldimi 4, 4, 32, 0
1066; P9-LE-NEXT:    stw 4, 8(3)
1067; P9-LE-NEXT:    std 4, 0(3)
1068; P9-LE-NEXT:    blr
1069;
1070; P10-LE-LABEL: memsetTailV0B12:
1071; P10-LE:       # %bb.0: # %entry
1072; P10-LE-NEXT:    pli 4, 252645135
1073; P10-LE-NEXT:    rldimi 4, 4, 32, 0
1074; P10-LE-NEXT:    stw 4, 8(3)
1075; P10-LE-NEXT:    std 4, 0(3)
1076; P10-LE-NEXT:    blr
1077entry:
1078  tail call void @llvm.memset.p0.i64(ptr %p, i8 15, i64 12, i1 false)
1079  ret void
1080}
1081
1082define dso_local void @memsetTailV0B9(ptr nocapture noundef writeonly %p) local_unnamed_addr {
1083; P8-BE-LABEL: memsetTailV0B9:
1084; P8-BE:       # %bb.0: # %entry
1085; P8-BE-NEXT:    li 4, 15
1086; P8-BE-NEXT:    stb 4, 8(3)
1087; P8-BE-NEXT:    lis 4, 3855
1088; P8-BE-NEXT:    ori 4, 4, 3855
1089; P8-BE-NEXT:    rldimi 4, 4, 32, 0
1090; P8-BE-NEXT:    std 4, 0(3)
1091; P8-BE-NEXT:    blr
1092;
1093; P9-BE-LABEL: memsetTailV0B9:
1094; P9-BE:       # %bb.0: # %entry
1095; P9-BE-NEXT:    li 4, 15
1096; P9-BE-NEXT:    stb 4, 8(3)
1097; P9-BE-NEXT:    lis 4, 3855
1098; P9-BE-NEXT:    ori 4, 4, 3855
1099; P9-BE-NEXT:    rldimi 4, 4, 32, 0
1100; P9-BE-NEXT:    std 4, 0(3)
1101; P9-BE-NEXT:    blr
1102;
1103; P10-BE-LABEL: memsetTailV0B9:
1104; P10-BE:       # %bb.0: # %entry
1105; P10-BE-NEXT:    li 4, 15
1106; P10-BE-NEXT:    stb 4, 8(3)
1107; P10-BE-NEXT:    pli 4, 252645135
1108; P10-BE-NEXT:    rldimi 4, 4, 32, 0
1109; P10-BE-NEXT:    std 4, 0(3)
1110; P10-BE-NEXT:    blr
1111;
1112; P8-LE-LABEL: memsetTailV0B9:
1113; P8-LE:       # %bb.0: # %entry
1114; P8-LE-NEXT:    li 4, 15
1115; P8-LE-NEXT:    stb 4, 8(3)
1116; P8-LE-NEXT:    lis 4, 3855
1117; P8-LE-NEXT:    ori 4, 4, 3855
1118; P8-LE-NEXT:    rldimi 4, 4, 32, 0
1119; P8-LE-NEXT:    std 4, 0(3)
1120; P8-LE-NEXT:    blr
1121;
1122; P9-LE-LABEL: memsetTailV0B9:
1123; P9-LE:       # %bb.0: # %entry
1124; P9-LE-NEXT:    li 4, 15
1125; P9-LE-NEXT:    stb 4, 8(3)
1126; P9-LE-NEXT:    lis 4, 3855
1127; P9-LE-NEXT:    ori 4, 4, 3855
1128; P9-LE-NEXT:    rldimi 4, 4, 32, 0
1129; P9-LE-NEXT:    std 4, 0(3)
1130; P9-LE-NEXT:    blr
1131;
1132; P10-LE-LABEL: memsetTailV0B9:
1133; P10-LE:       # %bb.0: # %entry
1134; P10-LE-NEXT:    li 4, 15
1135; P10-LE-NEXT:    stb 4, 8(3)
1136; P10-LE-NEXT:    pli 4, 252645135
1137; P10-LE-NEXT:    rldimi 4, 4, 32, 0
1138; P10-LE-NEXT:    std 4, 0(3)
1139; P10-LE-NEXT:    blr
1140entry:
1141  tail call void @llvm.memset.p0.i64(ptr %p, i8 15, i64 9, i1 false)
1142  ret void
1143}
1144
1145define dso_local void @memsetTailV0B8(ptr nocapture noundef writeonly %p) local_unnamed_addr {
1146; P8-BE-LABEL: memsetTailV0B8:
1147; P8-BE:       # %bb.0: # %entry
1148; P8-BE-NEXT:    lis 4, 3855
1149; P8-BE-NEXT:    ori 4, 4, 3855
1150; P8-BE-NEXT:    rldimi 4, 4, 32, 0
1151; P8-BE-NEXT:    std 4, 0(3)
1152; P8-BE-NEXT:    blr
1153;
1154; P9-BE-LABEL: memsetTailV0B8:
1155; P9-BE:       # %bb.0: # %entry
1156; P9-BE-NEXT:    lis 4, 3855
1157; P9-BE-NEXT:    ori 4, 4, 3855
1158; P9-BE-NEXT:    rldimi 4, 4, 32, 0
1159; P9-BE-NEXT:    std 4, 0(3)
1160; P9-BE-NEXT:    blr
1161;
1162; P10-BE-LABEL: memsetTailV0B8:
1163; P10-BE:       # %bb.0: # %entry
1164; P10-BE-NEXT:    pli 4, 252645135
1165; P10-BE-NEXT:    rldimi 4, 4, 32, 0
1166; P10-BE-NEXT:    std 4, 0(3)
1167; P10-BE-NEXT:    blr
1168;
1169; P8-LE-LABEL: memsetTailV0B8:
1170; P8-LE:       # %bb.0: # %entry
1171; P8-LE-NEXT:    lis 4, 3855
1172; P8-LE-NEXT:    ori 4, 4, 3855
1173; P8-LE-NEXT:    rldimi 4, 4, 32, 0
1174; P8-LE-NEXT:    std 4, 0(3)
1175; P8-LE-NEXT:    blr
1176;
1177; P9-LE-LABEL: memsetTailV0B8:
1178; P9-LE:       # %bb.0: # %entry
1179; P9-LE-NEXT:    lis 4, 3855
1180; P9-LE-NEXT:    ori 4, 4, 3855
1181; P9-LE-NEXT:    rldimi 4, 4, 32, 0
1182; P9-LE-NEXT:    std 4, 0(3)
1183; P9-LE-NEXT:    blr
1184;
1185; P10-LE-LABEL: memsetTailV0B8:
1186; P10-LE:       # %bb.0: # %entry
1187; P10-LE-NEXT:    pli 4, 252645135
1188; P10-LE-NEXT:    rldimi 4, 4, 32, 0
1189; P10-LE-NEXT:    std 4, 0(3)
1190; P10-LE-NEXT:    blr
1191entry:
1192  tail call void @llvm.memset.p0.i64(ptr %p, i8 15, i64 8, i1 false)
1193  ret void
1194}
1195
1196define dso_local void @memsetTailV0B7(ptr nocapture noundef writeonly %p) local_unnamed_addr {
1197; P8-BE-LABEL: memsetTailV0B7:
1198; P8-BE:       # %bb.0: # %entry
1199; P8-BE-NEXT:    lis 4, 3855
1200; P8-BE-NEXT:    ori 4, 4, 3855
1201; P8-BE-NEXT:    stw 4, 3(3)
1202; P8-BE-NEXT:    stw 4, 0(3)
1203; P8-BE-NEXT:    blr
1204;
1205; P9-BE-LABEL: memsetTailV0B7:
1206; P9-BE:       # %bb.0: # %entry
1207; P9-BE-NEXT:    lis 4, 3855
1208; P9-BE-NEXT:    ori 4, 4, 3855
1209; P9-BE-NEXT:    stw 4, 3(3)
1210; P9-BE-NEXT:    stw 4, 0(3)
1211; P9-BE-NEXT:    blr
1212;
1213; P10-BE-LABEL: memsetTailV0B7:
1214; P10-BE:       # %bb.0: # %entry
1215; P10-BE-NEXT:    pli 4, 252645135
1216; P10-BE-NEXT:    stw 4, 3(3)
1217; P10-BE-NEXT:    stw 4, 0(3)
1218; P10-BE-NEXT:    blr
1219;
1220; P8-LE-LABEL: memsetTailV0B7:
1221; P8-LE:       # %bb.0: # %entry
1222; P8-LE-NEXT:    lis 4, 3855
1223; P8-LE-NEXT:    ori 4, 4, 3855
1224; P8-LE-NEXT:    stw 4, 3(3)
1225; P8-LE-NEXT:    stw 4, 0(3)
1226; P8-LE-NEXT:    blr
1227;
1228; P9-LE-LABEL: memsetTailV0B7:
1229; P9-LE:       # %bb.0: # %entry
1230; P9-LE-NEXT:    lis 4, 3855
1231; P9-LE-NEXT:    ori 4, 4, 3855
1232; P9-LE-NEXT:    stw 4, 3(3)
1233; P9-LE-NEXT:    stw 4, 0(3)
1234; P9-LE-NEXT:    blr
1235;
1236; P10-LE-LABEL: memsetTailV0B7:
1237; P10-LE:       # %bb.0: # %entry
1238; P10-LE-NEXT:    pli 4, 252645135
1239; P10-LE-NEXT:    stw 4, 3(3)
1240; P10-LE-NEXT:    stw 4, 0(3)
1241; P10-LE-NEXT:    blr
1242entry:
1243  tail call void @llvm.memset.p0.i64(ptr %p, i8 15, i64 7, i1 false)
1244  ret void
1245}
1246
1247define dso_local void @memsetTailV0B5(ptr nocapture noundef writeonly %p) local_unnamed_addr {
1248; P8-BE-LABEL: memsetTailV0B5:
1249; P8-BE:       # %bb.0: # %entry
1250; P8-BE-NEXT:    li 4, 15
1251; P8-BE-NEXT:    stb 4, 4(3)
1252; P8-BE-NEXT:    lis 4, 3855
1253; P8-BE-NEXT:    ori 4, 4, 3855
1254; P8-BE-NEXT:    stw 4, 0(3)
1255; P8-BE-NEXT:    blr
1256;
1257; P9-BE-LABEL: memsetTailV0B5:
1258; P9-BE:       # %bb.0: # %entry
1259; P9-BE-NEXT:    li 4, 15
1260; P9-BE-NEXT:    stb 4, 4(3)
1261; P9-BE-NEXT:    lis 4, 3855
1262; P9-BE-NEXT:    ori 4, 4, 3855
1263; P9-BE-NEXT:    stw 4, 0(3)
1264; P9-BE-NEXT:    blr
1265;
1266; P10-BE-LABEL: memsetTailV0B5:
1267; P10-BE:       # %bb.0: # %entry
1268; P10-BE-NEXT:    li 4, 15
1269; P10-BE-NEXT:    stb 4, 4(3)
1270; P10-BE-NEXT:    pli 4, 252645135
1271; P10-BE-NEXT:    stw 4, 0(3)
1272; P10-BE-NEXT:    blr
1273;
1274; P8-LE-LABEL: memsetTailV0B5:
1275; P8-LE:       # %bb.0: # %entry
1276; P8-LE-NEXT:    li 4, 15
1277; P8-LE-NEXT:    stb 4, 4(3)
1278; P8-LE-NEXT:    lis 4, 3855
1279; P8-LE-NEXT:    ori 4, 4, 3855
1280; P8-LE-NEXT:    stw 4, 0(3)
1281; P8-LE-NEXT:    blr
1282;
1283; P9-LE-LABEL: memsetTailV0B5:
1284; P9-LE:       # %bb.0: # %entry
1285; P9-LE-NEXT:    li 4, 15
1286; P9-LE-NEXT:    stb 4, 4(3)
1287; P9-LE-NEXT:    lis 4, 3855
1288; P9-LE-NEXT:    ori 4, 4, 3855
1289; P9-LE-NEXT:    stw 4, 0(3)
1290; P9-LE-NEXT:    blr
1291;
1292; P10-LE-LABEL: memsetTailV0B5:
1293; P10-LE:       # %bb.0: # %entry
1294; P10-LE-NEXT:    li 4, 15
1295; P10-LE-NEXT:    stb 4, 4(3)
1296; P10-LE-NEXT:    pli 4, 252645135
1297; P10-LE-NEXT:    stw 4, 0(3)
1298; P10-LE-NEXT:    blr
1299entry:
1300  tail call void @llvm.memset.p0.i32(ptr %p, i8 15, i32 5, i1 false)
1301  ret void
1302}
1303
1304define dso_local void @memsetTailV0B4(ptr nocapture noundef writeonly %p) local_unnamed_addr {
1305; P8-BE-LABEL: memsetTailV0B4:
1306; P8-BE:       # %bb.0: # %entry
1307; P8-BE-NEXT:    lis 4, 3855
1308; P8-BE-NEXT:    ori 4, 4, 3855
1309; P8-BE-NEXT:    stw 4, 0(3)
1310; P8-BE-NEXT:    blr
1311;
1312; P9-BE-LABEL: memsetTailV0B4:
1313; P9-BE:       # %bb.0: # %entry
1314; P9-BE-NEXT:    lis 4, 3855
1315; P9-BE-NEXT:    ori 4, 4, 3855
1316; P9-BE-NEXT:    stw 4, 0(3)
1317; P9-BE-NEXT:    blr
1318;
1319; P10-BE-LABEL: memsetTailV0B4:
1320; P10-BE:       # %bb.0: # %entry
1321; P10-BE-NEXT:    pli 4, 252645135
1322; P10-BE-NEXT:    stw 4, 0(3)
1323; P10-BE-NEXT:    blr
1324;
1325; P8-LE-LABEL: memsetTailV0B4:
1326; P8-LE:       # %bb.0: # %entry
1327; P8-LE-NEXT:    lis 4, 3855
1328; P8-LE-NEXT:    ori 4, 4, 3855
1329; P8-LE-NEXT:    stw 4, 0(3)
1330; P8-LE-NEXT:    blr
1331;
1332; P9-LE-LABEL: memsetTailV0B4:
1333; P9-LE:       # %bb.0: # %entry
1334; P9-LE-NEXT:    lis 4, 3855
1335; P9-LE-NEXT:    ori 4, 4, 3855
1336; P9-LE-NEXT:    stw 4, 0(3)
1337; P9-LE-NEXT:    blr
1338;
1339; P10-LE-LABEL: memsetTailV0B4:
1340; P10-LE:       # %bb.0: # %entry
1341; P10-LE-NEXT:    pli 4, 252645135
1342; P10-LE-NEXT:    stw 4, 0(3)
1343; P10-LE-NEXT:    blr
1344entry:
1345  tail call void @llvm.memset.p0.i32(ptr %p, i8 15, i32 4, i1 false)
1346  ret void
1347}
1348
1349define dso_local void @memsetTailV0B1(ptr nocapture noundef writeonly %p) local_unnamed_addr {
1350; P8-BE-LABEL: memsetTailV0B1:
1351; P8-BE:       # %bb.0: # %entry
1352; P8-BE-NEXT:    li 4, -91
1353; P8-BE-NEXT:    stb 4, 0(3)
1354; P8-BE-NEXT:    blr
1355;
1356; P9-BE-LABEL: memsetTailV0B1:
1357; P9-BE:       # %bb.0: # %entry
1358; P9-BE-NEXT:    li 4, -91
1359; P9-BE-NEXT:    stb 4, 0(3)
1360; P9-BE-NEXT:    blr
1361;
1362; P10-BE-LABEL: memsetTailV0B1:
1363; P10-BE:       # %bb.0: # %entry
1364; P10-BE-NEXT:    li 4, -91
1365; P10-BE-NEXT:    stb 4, 0(3)
1366; P10-BE-NEXT:    blr
1367;
1368; P8-LE-LABEL: memsetTailV0B1:
1369; P8-LE:       # %bb.0: # %entry
1370; P8-LE-NEXT:    li 4, -91
1371; P8-LE-NEXT:    stb 4, 0(3)
1372; P8-LE-NEXT:    blr
1373;
1374; P9-LE-LABEL: memsetTailV0B1:
1375; P9-LE:       # %bb.0: # %entry
1376; P9-LE-NEXT:    li 4, -91
1377; P9-LE-NEXT:    stb 4, 0(3)
1378; P9-LE-NEXT:    blr
1379;
1380; P10-LE-LABEL: memsetTailV0B1:
1381; P10-LE:       # %bb.0: # %entry
1382; P10-LE-NEXT:    li 4, -91
1383; P10-LE-NEXT:    stb 4, 0(3)
1384; P10-LE-NEXT:    blr
1385entry:
1386  tail call void @llvm.memset.p0.i64(ptr %p, i8 165, i64 1, i1 false)
1387  ret void
1388}
1389
1390declare void @llvm.memset.p0.i32(ptr nocapture writeonly, i8, i32, i1 immarg)
1391declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg)
1392