blob: a6370f4ab1088971a8de14f87671f53968908636 [file] [log] [blame]
Richard Sandiford47660c12013-07-09 09:32:42 +00001; Test memsets that clear all bits.
2;
3; RUN: llc < %s -mtriple=s390x-linux-gnu | FileCheck %s
4
Daniel Neilson1e687242018-01-19 17:13:12 +00005declare void @llvm.memset.p0i8.i32(i8 *nocapture, i8, i32, i1) nounwind
6declare void @llvm.memset.p0i8.i64(i8 *nocapture, i8, i64, i1) nounwind
Richard Sandiford47660c12013-07-09 09:32:42 +00007
8; No bytes, i32 version.
Daniel Neilson1e687242018-01-19 17:13:12 +00009define void @f1(i8* %dest) {
Stephen Lind24ab202013-07-14 06:24:09 +000010; CHECK-LABEL: f1:
Richard Sandiford47660c12013-07-09 09:32:42 +000011; CHECK-NOT: %r2
12; CHECK: br %r14
Daniel Neilson1e687242018-01-19 17:13:12 +000013 call void @llvm.memset.p0i8.i32(i8* %dest, i8 0, i32 0, i1 false)
Richard Sandiford47660c12013-07-09 09:32:42 +000014 ret void
15}
16
17; No bytes, i64 version.
Daniel Neilson1e687242018-01-19 17:13:12 +000018define void @f2(i8* %dest) {
Stephen Lind24ab202013-07-14 06:24:09 +000019; CHECK-LABEL: f2:
Richard Sandiford47660c12013-07-09 09:32:42 +000020; CHECK-NOT: %r2
21; CHECK: br %r14
Daniel Neilson1e687242018-01-19 17:13:12 +000022 call void @llvm.memset.p0i8.i64(i8* %dest, i8 0, i64 0, i1 false)
Richard Sandiford47660c12013-07-09 09:32:42 +000023 ret void
24}
25
26; 1 byte, i32 version.
Daniel Neilson1e687242018-01-19 17:13:12 +000027define void @f3(i8* %dest) {
Stephen Lind24ab202013-07-14 06:24:09 +000028; CHECK-LABEL: f3:
Richard Sandiford47660c12013-07-09 09:32:42 +000029; CHECK: mvi 0(%r2), 0
30; CHECK: br %r14
Daniel Neilson1e687242018-01-19 17:13:12 +000031 call void @llvm.memset.p0i8.i32(i8* %dest, i8 0, i32 1, i1 false)
Richard Sandiford47660c12013-07-09 09:32:42 +000032 ret void
33}
34
35; 1 byte, i64 version.
Daniel Neilson1e687242018-01-19 17:13:12 +000036define void @f4(i8* %dest) {
Stephen Lind24ab202013-07-14 06:24:09 +000037; CHECK-LABEL: f4:
Richard Sandiford47660c12013-07-09 09:32:42 +000038; CHECK: mvi 0(%r2), 0
39; CHECK: br %r14
Daniel Neilson1e687242018-01-19 17:13:12 +000040 call void @llvm.memset.p0i8.i64(i8* %dest, i8 0, i64 1, i1 false)
Richard Sandiford47660c12013-07-09 09:32:42 +000041 ret void
42}
43
44; 2 bytes, i32 version.
Daniel Neilson1e687242018-01-19 17:13:12 +000045define void @f5(i8* %dest) {
Stephen Lind24ab202013-07-14 06:24:09 +000046; CHECK-LABEL: f5:
Richard Sandiford47660c12013-07-09 09:32:42 +000047; CHECK: mvhhi 0(%r2), 0
48; CHECK: br %r14
Daniel Neilson1e687242018-01-19 17:13:12 +000049 call void @llvm.memset.p0i8.i32(i8* %dest, i8 0, i32 2, i1 false)
Richard Sandiford47660c12013-07-09 09:32:42 +000050 ret void
51}
52
53; 2 bytes, i64 version.
Daniel Neilson1e687242018-01-19 17:13:12 +000054define void @f6(i8* %dest) {
Stephen Lind24ab202013-07-14 06:24:09 +000055; CHECK-LABEL: f6:
Richard Sandiford47660c12013-07-09 09:32:42 +000056; CHECK: mvhhi 0(%r2), 0
57; CHECK: br %r14
Daniel Neilson1e687242018-01-19 17:13:12 +000058 call void @llvm.memset.p0i8.i64(i8* %dest, i8 0, i64 2, i1 false)
Richard Sandiford47660c12013-07-09 09:32:42 +000059 ret void
60}
61
62; 3 bytes, i32 version.
Daniel Neilson1e687242018-01-19 17:13:12 +000063define void @f7(i8* %dest) {
Stephen Lind24ab202013-07-14 06:24:09 +000064; CHECK-LABEL: f7:
Richard Sandiford47660c12013-07-09 09:32:42 +000065; CHECK-DAG: mvhhi 0(%r2), 0
66; CHECK-DAG: mvi 2(%r2), 0
67; CHECK: br %r14
Daniel Neilson1e687242018-01-19 17:13:12 +000068 call void @llvm.memset.p0i8.i32(i8* %dest, i8 0, i32 3, i1 false)
Richard Sandiford47660c12013-07-09 09:32:42 +000069 ret void
70}
71
72; 3 bytes, i64 version.
Daniel Neilson1e687242018-01-19 17:13:12 +000073define void @f8(i8* %dest) {
Stephen Lind24ab202013-07-14 06:24:09 +000074; CHECK-LABEL: f8:
Richard Sandiford47660c12013-07-09 09:32:42 +000075; CHECK-DAG: mvhhi 0(%r2), 0
76; CHECK-DAG: mvi 2(%r2), 0
77; CHECK: br %r14
Daniel Neilson1e687242018-01-19 17:13:12 +000078 call void @llvm.memset.p0i8.i64(i8* %dest, i8 0, i64 3, i1 false)
Richard Sandiford47660c12013-07-09 09:32:42 +000079 ret void
80}
81
82; 4 bytes, i32 version.
Daniel Neilson1e687242018-01-19 17:13:12 +000083define void @f9(i8* %dest) {
Stephen Lind24ab202013-07-14 06:24:09 +000084; CHECK-LABEL: f9:
Richard Sandiford47660c12013-07-09 09:32:42 +000085; CHECK: mvhi 0(%r2), 0
86; CHECK: br %r14
Daniel Neilson1e687242018-01-19 17:13:12 +000087 call void @llvm.memset.p0i8.i32(i8* %dest, i8 0, i32 4, i1 false)
Richard Sandiford47660c12013-07-09 09:32:42 +000088 ret void
89}
90
91; 4 bytes, i64 version.
Daniel Neilson1e687242018-01-19 17:13:12 +000092define void @f10(i8* %dest) {
Stephen Lind24ab202013-07-14 06:24:09 +000093; CHECK-LABEL: f10:
Richard Sandiford47660c12013-07-09 09:32:42 +000094; CHECK: mvhi 0(%r2), 0
95; CHECK: br %r14
Daniel Neilson1e687242018-01-19 17:13:12 +000096 call void @llvm.memset.p0i8.i64(i8* %dest, i8 0, i64 4, i1 false)
Richard Sandiford47660c12013-07-09 09:32:42 +000097 ret void
98}
99
100; 5 bytes, i32 version.
Daniel Neilson1e687242018-01-19 17:13:12 +0000101define void @f11(i8* %dest) {
Stephen Lind24ab202013-07-14 06:24:09 +0000102; CHECK-LABEL: f11:
Richard Sandiford47660c12013-07-09 09:32:42 +0000103; CHECK-DAG: mvhi 0(%r2), 0
104; CHECK-DAG: mvi 4(%r2), 0
105; CHECK: br %r14
Daniel Neilson1e687242018-01-19 17:13:12 +0000106 call void @llvm.memset.p0i8.i32(i8* %dest, i8 0, i32 5, i1 false)
Richard Sandiford47660c12013-07-09 09:32:42 +0000107 ret void
108}
109
110; 5 bytes, i64 version.
Daniel Neilson1e687242018-01-19 17:13:12 +0000111define void @f12(i8* %dest) {
Stephen Lind24ab202013-07-14 06:24:09 +0000112; CHECK-LABEL: f12:
Richard Sandiford47660c12013-07-09 09:32:42 +0000113; CHECK-DAG: mvhi 0(%r2), 0
114; CHECK-DAG: mvi 4(%r2), 0
115; CHECK: br %r14
Daniel Neilson1e687242018-01-19 17:13:12 +0000116 call void @llvm.memset.p0i8.i64(i8* %dest, i8 0, i64 5, i1 false)
Richard Sandiford47660c12013-07-09 09:32:42 +0000117 ret void
118}
119
120; 6 bytes, i32 version.
Daniel Neilson1e687242018-01-19 17:13:12 +0000121define void @f13(i8* %dest) {
Stephen Lind24ab202013-07-14 06:24:09 +0000122; CHECK-LABEL: f13:
Richard Sandiford47660c12013-07-09 09:32:42 +0000123; CHECK-DAG: mvhi 0(%r2), 0
124; CHECK-DAG: mvhhi 4(%r2), 0
125; CHECK: br %r14
Daniel Neilson1e687242018-01-19 17:13:12 +0000126 call void @llvm.memset.p0i8.i32(i8* %dest, i8 0, i32 6, i1 false)
Richard Sandiford47660c12013-07-09 09:32:42 +0000127 ret void
128}
129
130; 6 bytes, i64 version.
Daniel Neilson1e687242018-01-19 17:13:12 +0000131define void @f14(i8* %dest) {
Stephen Lind24ab202013-07-14 06:24:09 +0000132; CHECK-LABEL: f14:
Richard Sandiford47660c12013-07-09 09:32:42 +0000133; CHECK-DAG: mvhi 0(%r2), 0
134; CHECK-DAG: mvhhi 4(%r2), 0
135; CHECK: br %r14
Daniel Neilson1e687242018-01-19 17:13:12 +0000136 call void @llvm.memset.p0i8.i64(i8* %dest, i8 0, i64 6, i1 false)
Richard Sandiford47660c12013-07-09 09:32:42 +0000137 ret void
138}
139
140; 7 bytes, i32 version.
Daniel Neilson1e687242018-01-19 17:13:12 +0000141define void @f15(i8* %dest) {
Stephen Lind24ab202013-07-14 06:24:09 +0000142; CHECK-LABEL: f15:
Richard Sandiford4943bc32013-09-06 10:25:07 +0000143; CHECK: xc 0(7,%r2), 0(%r2)
Richard Sandiford47660c12013-07-09 09:32:42 +0000144; CHECK: br %r14
Daniel Neilson1e687242018-01-19 17:13:12 +0000145 call void @llvm.memset.p0i8.i32(i8* %dest, i8 0, i32 7, i1 false)
Richard Sandiford47660c12013-07-09 09:32:42 +0000146 ret void
147}
148
149; 7 bytes, i64 version.
Daniel Neilson1e687242018-01-19 17:13:12 +0000150define void @f16(i8* %dest) {
Stephen Lind24ab202013-07-14 06:24:09 +0000151; CHECK-LABEL: f16:
Richard Sandiford4943bc32013-09-06 10:25:07 +0000152; CHECK: xc 0(7,%r2), 0(%r2)
Richard Sandiford47660c12013-07-09 09:32:42 +0000153; CHECK: br %r14
Daniel Neilson1e687242018-01-19 17:13:12 +0000154 call void @llvm.memset.p0i8.i64(i8* %dest, i8 0, i64 7, i1 false)
Richard Sandiford47660c12013-07-09 09:32:42 +0000155 ret void
156}
157
158; 8 bytes, i32 version.
Daniel Neilson1e687242018-01-19 17:13:12 +0000159define void @f17(i8* %dest) {
Stephen Lind24ab202013-07-14 06:24:09 +0000160; CHECK-LABEL: f17:
Richard Sandiford47660c12013-07-09 09:32:42 +0000161; CHECK: mvghi 0(%r2), 0
162; CHECK: br %r14
Daniel Neilson1e687242018-01-19 17:13:12 +0000163 call void @llvm.memset.p0i8.i32(i8* %dest, i8 0, i32 8, i1 false)
Richard Sandiford47660c12013-07-09 09:32:42 +0000164 ret void
165}
166
167; 8 bytes, i64 version.
Daniel Neilson1e687242018-01-19 17:13:12 +0000168define void @f18(i8* %dest) {
Stephen Lind24ab202013-07-14 06:24:09 +0000169; CHECK-LABEL: f18:
Richard Sandiford47660c12013-07-09 09:32:42 +0000170; CHECK: mvghi 0(%r2), 0
171; CHECK: br %r14
Daniel Neilson1e687242018-01-19 17:13:12 +0000172 call void @llvm.memset.p0i8.i64(i8* %dest, i8 0, i64 8, i1 false)
Richard Sandiford47660c12013-07-09 09:32:42 +0000173 ret void
174}
175
176; 9 bytes, i32 version.
Daniel Neilson1e687242018-01-19 17:13:12 +0000177define void @f19(i8* %dest) {
Stephen Lind24ab202013-07-14 06:24:09 +0000178; CHECK-LABEL: f19:
Richard Sandiford47660c12013-07-09 09:32:42 +0000179; CHECK-DAG: mvghi 0(%r2), 0
180; CHECK-DAG: mvi 8(%r2), 0
181; CHECK: br %r14
Daniel Neilson1e687242018-01-19 17:13:12 +0000182 call void @llvm.memset.p0i8.i32(i8* %dest, i8 0, i32 9, i1 false)
Richard Sandiford47660c12013-07-09 09:32:42 +0000183 ret void
184}
185
186; 9 bytes, i64 version.
Daniel Neilson1e687242018-01-19 17:13:12 +0000187define void @f20(i8* %dest) {
Stephen Lind24ab202013-07-14 06:24:09 +0000188; CHECK-LABEL: f20:
Richard Sandiford47660c12013-07-09 09:32:42 +0000189; CHECK-DAG: mvghi 0(%r2), 0
190; CHECK-DAG: mvi 8(%r2), 0
191; CHECK: br %r14
Daniel Neilson1e687242018-01-19 17:13:12 +0000192 call void @llvm.memset.p0i8.i64(i8* %dest, i8 0, i64 9, i1 false)
Richard Sandiford47660c12013-07-09 09:32:42 +0000193 ret void
194}
195
196; 10 bytes, i32 version.
Daniel Neilson1e687242018-01-19 17:13:12 +0000197define void @f21(i8* %dest) {
Stephen Lind24ab202013-07-14 06:24:09 +0000198; CHECK-LABEL: f21:
Richard Sandiford47660c12013-07-09 09:32:42 +0000199; CHECK-DAG: mvghi 0(%r2), 0
200; CHECK-DAG: mvhhi 8(%r2), 0
201; CHECK: br %r14
Daniel Neilson1e687242018-01-19 17:13:12 +0000202 call void @llvm.memset.p0i8.i32(i8* %dest, i8 0, i32 10, i1 false)
Richard Sandiford47660c12013-07-09 09:32:42 +0000203 ret void
204}
205
206; 10 bytes, i64 version.
Daniel Neilson1e687242018-01-19 17:13:12 +0000207define void @f22(i8* %dest) {
Stephen Lind24ab202013-07-14 06:24:09 +0000208; CHECK-LABEL: f22:
Richard Sandiford47660c12013-07-09 09:32:42 +0000209; CHECK-DAG: mvghi 0(%r2), 0
210; CHECK-DAG: mvhhi 8(%r2), 0
211; CHECK: br %r14
Daniel Neilson1e687242018-01-19 17:13:12 +0000212 call void @llvm.memset.p0i8.i64(i8* %dest, i8 0, i64 10, i1 false)
Richard Sandiford47660c12013-07-09 09:32:42 +0000213 ret void
214}
215
216; 11 bytes, i32 version.
Daniel Neilson1e687242018-01-19 17:13:12 +0000217define void @f23(i8* %dest) {
Stephen Lind24ab202013-07-14 06:24:09 +0000218; CHECK-LABEL: f23:
Richard Sandiford4943bc32013-09-06 10:25:07 +0000219; CHECK: xc 0(11,%r2), 0(%r2)
Richard Sandiford47660c12013-07-09 09:32:42 +0000220; CHECK: br %r14
Daniel Neilson1e687242018-01-19 17:13:12 +0000221 call void @llvm.memset.p0i8.i32(i8* %dest, i8 0, i32 11, i1 false)
Richard Sandiford47660c12013-07-09 09:32:42 +0000222 ret void
223}
224
225; 11 bytes, i64 version.
Daniel Neilson1e687242018-01-19 17:13:12 +0000226define void @f24(i8* %dest) {
Stephen Lind24ab202013-07-14 06:24:09 +0000227; CHECK-LABEL: f24:
Richard Sandiford4943bc32013-09-06 10:25:07 +0000228; CHECK: xc 0(11,%r2), 0(%r2)
Richard Sandiford47660c12013-07-09 09:32:42 +0000229; CHECK: br %r14
Daniel Neilson1e687242018-01-19 17:13:12 +0000230 call void @llvm.memset.p0i8.i64(i8* %dest, i8 0, i64 11, i1 false)
Richard Sandiford47660c12013-07-09 09:32:42 +0000231 ret void
232}
233
234; 12 bytes, i32 version.
Daniel Neilson1e687242018-01-19 17:13:12 +0000235define void @f25(i8* %dest) {
Stephen Lind24ab202013-07-14 06:24:09 +0000236; CHECK-LABEL: f25:
Richard Sandiford47660c12013-07-09 09:32:42 +0000237; CHECK-DAG: mvghi 0(%r2), 0
238; CHECK-DAG: mvhi 8(%r2), 0
239; CHECK: br %r14
Daniel Neilson1e687242018-01-19 17:13:12 +0000240 call void @llvm.memset.p0i8.i32(i8* %dest, i8 0, i32 12, i1 false)
Richard Sandiford47660c12013-07-09 09:32:42 +0000241 ret void
242}
243
244; 12 bytes, i64 version.
Daniel Neilson1e687242018-01-19 17:13:12 +0000245define void @f26(i8* %dest) {
Stephen Lind24ab202013-07-14 06:24:09 +0000246; CHECK-LABEL: f26:
Richard Sandiford47660c12013-07-09 09:32:42 +0000247; CHECK-DAG: mvghi 0(%r2), 0
248; CHECK-DAG: mvhi 8(%r2), 0
249; CHECK: br %r14
Daniel Neilson1e687242018-01-19 17:13:12 +0000250 call void @llvm.memset.p0i8.i32(i8* %dest, i8 0, i32 12, i1 false)
Richard Sandiford47660c12013-07-09 09:32:42 +0000251 ret void
252}
253
254; 13 bytes, i32 version.
Daniel Neilson1e687242018-01-19 17:13:12 +0000255define void @f27(i8* %dest) {
Stephen Lind24ab202013-07-14 06:24:09 +0000256; CHECK-LABEL: f27:
Richard Sandiford4943bc32013-09-06 10:25:07 +0000257; CHECK: xc 0(13,%r2), 0(%r2)
Richard Sandiford47660c12013-07-09 09:32:42 +0000258; CHECK: br %r14
Daniel Neilson1e687242018-01-19 17:13:12 +0000259 call void @llvm.memset.p0i8.i32(i8* %dest, i8 0, i32 13, i1 false)
Richard Sandiford47660c12013-07-09 09:32:42 +0000260 ret void
261}
262
263; 13 bytes, i64 version.
Daniel Neilson1e687242018-01-19 17:13:12 +0000264define void @f28(i8* %dest) {
Stephen Lind24ab202013-07-14 06:24:09 +0000265; CHECK-LABEL: f28:
Richard Sandiford4943bc32013-09-06 10:25:07 +0000266; CHECK: xc 0(13,%r2), 0(%r2)
Richard Sandiford47660c12013-07-09 09:32:42 +0000267; CHECK: br %r14
Daniel Neilson1e687242018-01-19 17:13:12 +0000268 call void @llvm.memset.p0i8.i64(i8* %dest, i8 0, i64 13, i1 false)
Richard Sandiford47660c12013-07-09 09:32:42 +0000269 ret void
270}
271
272; 14 bytes, i32 version.
Daniel Neilson1e687242018-01-19 17:13:12 +0000273define void @f29(i8* %dest) {
Stephen Lind24ab202013-07-14 06:24:09 +0000274; CHECK-LABEL: f29:
Richard Sandiford4943bc32013-09-06 10:25:07 +0000275; CHECK: xc 0(14,%r2), 0(%r2)
Richard Sandiford47660c12013-07-09 09:32:42 +0000276; CHECK: br %r14
Daniel Neilson1e687242018-01-19 17:13:12 +0000277 call void @llvm.memset.p0i8.i32(i8* %dest, i8 0, i32 14, i1 false)
Richard Sandiford47660c12013-07-09 09:32:42 +0000278 ret void
279}
280
281; 14 bytes, i64 version.
Daniel Neilson1e687242018-01-19 17:13:12 +0000282define void @f30(i8* %dest) {
Stephen Lind24ab202013-07-14 06:24:09 +0000283; CHECK-LABEL: f30:
Richard Sandiford4943bc32013-09-06 10:25:07 +0000284; CHECK: xc 0(14,%r2), 0(%r2)
Richard Sandiford47660c12013-07-09 09:32:42 +0000285; CHECK: br %r14
Daniel Neilson1e687242018-01-19 17:13:12 +0000286 call void @llvm.memset.p0i8.i64(i8* %dest, i8 0, i64 14, i1 false)
Richard Sandiford47660c12013-07-09 09:32:42 +0000287 ret void
288}
289
290; 15 bytes, i32 version.
Daniel Neilson1e687242018-01-19 17:13:12 +0000291define void @f31(i8* %dest) {
Stephen Lind24ab202013-07-14 06:24:09 +0000292; CHECK-LABEL: f31:
Richard Sandiford4943bc32013-09-06 10:25:07 +0000293; CHECK: xc 0(15,%r2), 0(%r2)
Richard Sandiford47660c12013-07-09 09:32:42 +0000294; CHECK: br %r14
Daniel Neilson1e687242018-01-19 17:13:12 +0000295 call void @llvm.memset.p0i8.i32(i8* %dest, i8 0, i32 15, i1 false)
Richard Sandiford47660c12013-07-09 09:32:42 +0000296 ret void
297}
298
299; 15 bytes, i64 version.
Daniel Neilson1e687242018-01-19 17:13:12 +0000300define void @f32(i8* %dest) {
Stephen Lind24ab202013-07-14 06:24:09 +0000301; CHECK-LABEL: f32:
Richard Sandiford4943bc32013-09-06 10:25:07 +0000302; CHECK: xc 0(15,%r2), 0(%r2)
Richard Sandiford47660c12013-07-09 09:32:42 +0000303; CHECK: br %r14
Daniel Neilson1e687242018-01-19 17:13:12 +0000304 call void @llvm.memset.p0i8.i64(i8* %dest, i8 0, i64 15, i1 false)
Richard Sandiford47660c12013-07-09 09:32:42 +0000305 ret void
306}
307
308; 16 bytes, i32 version.
Daniel Neilson1e687242018-01-19 17:13:12 +0000309define void @f33(i8* %dest) {
Stephen Lind24ab202013-07-14 06:24:09 +0000310; CHECK-LABEL: f33:
Richard Sandiford47660c12013-07-09 09:32:42 +0000311; CHECK-DAG: mvghi 0(%r2), 0
312; CHECK-DAG: mvghi 8(%r2), 0
313; CHECK: br %r14
Daniel Neilson1e687242018-01-19 17:13:12 +0000314 call void @llvm.memset.p0i8.i32(i8* %dest, i8 0, i32 16, i1 false)
Richard Sandiford47660c12013-07-09 09:32:42 +0000315 ret void
316}
317
318; 16 bytes, i64 version.
Daniel Neilson1e687242018-01-19 17:13:12 +0000319define void @f34(i8* %dest) {
Stephen Lind24ab202013-07-14 06:24:09 +0000320; CHECK-LABEL: f34:
Richard Sandiford47660c12013-07-09 09:32:42 +0000321; CHECK-DAG: mvghi 0(%r2), 0
322; CHECK-DAG: mvghi 8(%r2), 0
323; CHECK: br %r14
Daniel Neilson1e687242018-01-19 17:13:12 +0000324 call void @llvm.memset.p0i8.i64(i8* %dest, i8 0, i64 16, i1 false)
Richard Sandiford47660c12013-07-09 09:32:42 +0000325 ret void
326}
327
328; 17 bytes, i32 version.
Daniel Neilson1e687242018-01-19 17:13:12 +0000329define void @f35(i8* %dest) {
Stephen Lind24ab202013-07-14 06:24:09 +0000330; CHECK-LABEL: f35:
Richard Sandiford4943bc32013-09-06 10:25:07 +0000331; CHECK: xc 0(17,%r2), 0(%r2)
Richard Sandiford47660c12013-07-09 09:32:42 +0000332; CHECK: br %r14
Daniel Neilson1e687242018-01-19 17:13:12 +0000333 call void @llvm.memset.p0i8.i32(i8* %dest, i8 0, i32 17, i1 false)
Richard Sandiford47660c12013-07-09 09:32:42 +0000334 ret void
335}
336
337; 17 bytes, i64 version.
Daniel Neilson1e687242018-01-19 17:13:12 +0000338define void @f36(i8* %dest) {
Stephen Lind24ab202013-07-14 06:24:09 +0000339; CHECK-LABEL: f36:
Richard Sandiford4943bc32013-09-06 10:25:07 +0000340; CHECK: xc 0(17,%r2), 0(%r2)
Richard Sandiford47660c12013-07-09 09:32:42 +0000341; CHECK: br %r14
Daniel Neilson1e687242018-01-19 17:13:12 +0000342 call void @llvm.memset.p0i8.i64(i8* %dest, i8 0, i64 17, i1 false)
Richard Sandiford47660c12013-07-09 09:32:42 +0000343 ret void
344}
345
Richard Sandiford4943bc32013-09-06 10:25:07 +0000346; 256 bytes, i32 version.
Daniel Neilson1e687242018-01-19 17:13:12 +0000347define void @f37(i8* %dest) {
Stephen Lind24ab202013-07-14 06:24:09 +0000348; CHECK-LABEL: f37:
Richard Sandiford4943bc32013-09-06 10:25:07 +0000349; CHECK: xc 0(256,%r2), 0(%r2)
350; CHECK: br %r14
Daniel Neilson1e687242018-01-19 17:13:12 +0000351 call void @llvm.memset.p0i8.i32(i8* %dest, i8 0, i32 256, i1 false)
Richard Sandiford4943bc32013-09-06 10:25:07 +0000352 ret void
353}
354
355; 256 bytes, i64 version.
Daniel Neilson1e687242018-01-19 17:13:12 +0000356define void @f38(i8* %dest) {
Richard Sandiford4943bc32013-09-06 10:25:07 +0000357; CHECK-LABEL: f38:
358; CHECK: xc 0(256,%r2), 0(%r2)
359; CHECK: br %r14
Daniel Neilson1e687242018-01-19 17:13:12 +0000360 call void @llvm.memset.p0i8.i64(i8* %dest, i8 0, i64 256, i1 false)
Richard Sandiford4943bc32013-09-06 10:25:07 +0000361 ret void
362}
363
364; 257 bytes, i32 version. We need two MVCs.
Daniel Neilson1e687242018-01-19 17:13:12 +0000365define void @f39(i8* %dest) {
Richard Sandiford4943bc32013-09-06 10:25:07 +0000366; CHECK-LABEL: f39:
367; CHECK: xc 0(256,%r2), 0(%r2)
368; CHECK: xc 256(1,%r2), 256(%r2)
Richard Sandiford47660c12013-07-09 09:32:42 +0000369; CHECK: br %r14
Daniel Neilson1e687242018-01-19 17:13:12 +0000370 call void @llvm.memset.p0i8.i32(i8* %dest, i8 0, i32 257, i1 false)
Richard Sandiford47660c12013-07-09 09:32:42 +0000371 ret void
372}
373
374; 257 bytes, i64 version.
Daniel Neilson1e687242018-01-19 17:13:12 +0000375define void @f40(i8* %dest) {
Stephen Lind24ab202013-07-14 06:24:09 +0000376; CHECK-LABEL: f40:
Richard Sandiford4943bc32013-09-06 10:25:07 +0000377; CHECK: xc 0(256,%r2), 0(%r2)
378; CHECK: xc 256(1,%r2), 256(%r2)
Richard Sandiford47660c12013-07-09 09:32:42 +0000379; CHECK: br %r14
Daniel Neilson1e687242018-01-19 17:13:12 +0000380 call void @llvm.memset.p0i8.i64(i8* %dest, i8 0, i64 257, i1 false)
Richard Sandiford47660c12013-07-09 09:32:42 +0000381 ret void
382}