brintos

brintos / llvm-project-archived public Read only

0
0
Text · 9.1 KiB · 62a4de0 Raw
403 lines · plain
1; Test memsets that set all bits.2;3; RUN: llc < %s -mtriple=s390x-linux-gnu | FileCheck %s4 5declare void @llvm.memset.p0.i32(ptr nocapture, i8, i32, i1) nounwind6declare void @llvm.memset.p0.i64(ptr nocapture, i8, i64, i1) nounwind7 8; No bytes, i32 version.9define void @f1(ptr %dest) {10; CHECK-LABEL: f1:11; CHECK-NOT: %r212; CHECK: br %r1413  call void @llvm.memset.p0.i32(ptr %dest, i8 -1, i32 0, i1 false)14  ret void15}16 17; No bytes, i64 version.18define void @f2(ptr %dest) {19; CHECK-LABEL: f2:20; CHECK-NOT: %r221; CHECK: br %r1422  call void @llvm.memset.p0.i64(ptr %dest, i8 -1, i64 0, i1 false)23  ret void24}25 26; 1 byte, i32 version.27define void @f3(ptr %dest) {28; CHECK-LABEL: f3:29; CHECK: mvi 0(%r2), 25530; CHECK: br %r1431  call void @llvm.memset.p0.i32(ptr %dest, i8 -1, i32 1, i1 false)32  ret void33}34 35; 1 byte, i64 version.36define void @f4(ptr %dest) {37; CHECK-LABEL: f4:38; CHECK: mvi 0(%r2), 25539; CHECK: br %r1440  call void @llvm.memset.p0.i64(ptr %dest, i8 -1, i64 1, i1 false)41  ret void42}43 44; 2 bytes, i32 version.45define void @f5(ptr %dest) {46; CHECK-LABEL: f5:47; CHECK: mvhhi 0(%r2), -148; CHECK: br %r1449  call void @llvm.memset.p0.i32(ptr %dest, i8 -1, i32 2, i1 false)50  ret void51}52 53; 2 bytes, i64 version.54define void @f6(ptr %dest) {55; CHECK-LABEL: f6:56; CHECK: mvhhi 0(%r2), -157; CHECK: br %r1458  call void @llvm.memset.p0.i64(ptr %dest, i8 -1, i64 2, i1 false)59  ret void60}61 62; 3 bytes, i32 version.63define void @f7(ptr %dest) {64; CHECK-LABEL: f7:65; CHECK-DAG: mvhhi 0(%r2), -166; CHECK-DAG: mvi 2(%r2), 25567; CHECK: br %r1468  call void @llvm.memset.p0.i32(ptr %dest, i8 -1, i32 3, i1 false)69  ret void70}71 72; 3 bytes, i64 version.73define void @f8(ptr %dest) {74; CHECK-LABEL: f8:75; CHECK-DAG: mvhhi 0(%r2), -176; CHECK-DAG: mvi 2(%r2), 25577; CHECK: br %r1478  call void @llvm.memset.p0.i64(ptr %dest, i8 -1, i64 3, i1 false)79  ret void80}81 82; 4 bytes, i32 version.83define void @f9(ptr %dest) {84; CHECK-LABEL: f9:85; CHECK: mvhi 0(%r2), -186; CHECK: br %r1487  call void @llvm.memset.p0.i32(ptr %dest, i8 -1, i32 4, i1 false)88  ret void89}90 91; 4 bytes, i64 version.92define void @f10(ptr %dest) {93; CHECK-LABEL: f10:94; CHECK: mvhi 0(%r2), -195; CHECK: br %r1496  call void @llvm.memset.p0.i64(ptr %dest, i8 -1, i64 4, i1 false)97  ret void98}99 100; 5 bytes, i32 version.101define void @f11(ptr %dest) {102; CHECK-LABEL: f11:103; CHECK-DAG: mvhi 0(%r2), -1104; CHECK-DAG: mvi 4(%r2), 255105; CHECK: br %r14106  call void @llvm.memset.p0.i32(ptr %dest, i8 -1, i32 5, i1 false)107  ret void108}109 110; 5 bytes, i64 version.111define void @f12(ptr %dest) {112; CHECK-LABEL: f12:113; CHECK-DAG: mvhi 0(%r2), -1114; CHECK-DAG: mvi 4(%r2), 255115; CHECK: br %r14116  call void @llvm.memset.p0.i64(ptr %dest, i8 -1, i64 5, i1 false)117  ret void118}119 120; 6 bytes, i32 version.121define void @f13(ptr %dest) {122; CHECK-LABEL: f13:123; CHECK-DAG: mvhi 0(%r2), -1124; CHECK-DAG: mvhhi 4(%r2), -1125; CHECK: br %r14126  call void @llvm.memset.p0.i32(ptr %dest, i8 -1, i32 6, i1 false)127  ret void128}129 130; 6 bytes, i64 version.131define void @f14(ptr %dest) {132; CHECK-LABEL: f14:133; CHECK-DAG: mvhi 0(%r2), -1134; CHECK-DAG: mvhhi 4(%r2), -1135; CHECK: br %r14136  call void @llvm.memset.p0.i64(ptr %dest, i8 -1, i64 6, i1 false)137  ret void138}139 140; 7 bytes, i32 version.141define void @f15(ptr %dest) {142; CHECK-LABEL: f15:143; CHECK: mvi 0(%r2), 255144; CHECK: mvc 1(6,%r2), 0(%r2)145; CHECK: br %r14146  call void @llvm.memset.p0.i32(ptr %dest, i8 -1, i32 7, i1 false)147  ret void148}149 150; 7 bytes, i64 version.151define void @f16(ptr %dest) {152; CHECK-LABEL: f16:153; CHECK: mvi 0(%r2), 255154; CHECK: mvc 1(6,%r2), 0(%r2)155; CHECK: br %r14156  call void @llvm.memset.p0.i64(ptr %dest, i8 -1, i64 7, i1 false)157  ret void158}159 160; 8 bytes, i32 version.161define void @f17(ptr %dest) {162; CHECK-LABEL: f17:163; CHECK: mvghi 0(%r2), -1164; CHECK: br %r14165  call void @llvm.memset.p0.i32(ptr %dest, i8 -1, i32 8, i1 false)166  ret void167}168 169; 8 bytes, i64 version.170define void @f18(ptr %dest) {171; CHECK-LABEL: f18:172; CHECK: mvghi 0(%r2), -1173; CHECK: br %r14174  call void @llvm.memset.p0.i64(ptr %dest, i8 -1, i64 8, i1 false)175  ret void176}177 178; 9 bytes, i32 version.179define void @f19(ptr %dest) {180; CHECK-LABEL: f19:181; CHECK-DAG: mvghi 0(%r2), -1182; CHECK-DAG: mvi 8(%r2), 255183; CHECK: br %r14184  call void @llvm.memset.p0.i32(ptr %dest, i8 -1, i32 9, i1 false)185  ret void186}187 188; 9 bytes, i64 version.189define void @f20(ptr %dest) {190; CHECK-LABEL: f20:191; CHECK-DAG: mvghi 0(%r2), -1192; CHECK-DAG: mvi 8(%r2), 255193; CHECK: br %r14194  call void @llvm.memset.p0.i64(ptr %dest, i8 -1, i64 9, i1 false)195  ret void196}197 198; 10 bytes, i32 version.199define void @f21(ptr %dest) {200; CHECK-LABEL: f21:201; CHECK-DAG: mvghi 0(%r2), -1202; CHECK-DAG: mvhhi 8(%r2), -1203; CHECK: br %r14204  call void @llvm.memset.p0.i32(ptr %dest, i8 -1, i32 10, i1 false)205  ret void206}207 208; 10 bytes, i64 version.209define void @f22(ptr %dest) {210; CHECK-LABEL: f22:211; CHECK-DAG: mvghi 0(%r2), -1212; CHECK-DAG: mvhhi 8(%r2), -1213; CHECK: br %r14214  call void @llvm.memset.p0.i64(ptr %dest, i8 -1, i64 10, i1 false)215  ret void216}217 218; 11 bytes, i32 version.219define void @f23(ptr %dest) {220; CHECK-LABEL: f23:221; CHECK: mvi 0(%r2), 255222; CHECK: mvc 1(10,%r2), 0(%r2)223; CHECK: br %r14224  call void @llvm.memset.p0.i32(ptr %dest, i8 -1, i32 11, i1 false)225  ret void226}227 228; 11 bytes, i64 version.229define void @f24(ptr %dest) {230; CHECK-LABEL: f24:231; CHECK: mvi 0(%r2), 255232; CHECK: mvc 1(10,%r2), 0(%r2)233; CHECK: br %r14234  call void @llvm.memset.p0.i64(ptr %dest, i8 -1, i64 11, i1 false)235  ret void236}237 238; 12 bytes, i32 version.239define void @f25(ptr %dest) {240; CHECK-LABEL: f25:241; CHECK-DAG: mvghi 0(%r2), -1242; CHECK-DAG: mvhi 8(%r2), -1243; CHECK: br %r14244  call void @llvm.memset.p0.i32(ptr %dest, i8 -1, i32 12, i1 false)245  ret void246}247 248; 12 bytes, i64 version.249define void @f26(ptr %dest) {250; CHECK-LABEL: f26:251; CHECK-DAG: mvghi 0(%r2), -1252; CHECK-DAG: mvhi 8(%r2), -1253; CHECK: br %r14254  call void @llvm.memset.p0.i64(ptr %dest, i8 -1, i64 12, i1 false)255  ret void256}257 258; 13 bytes, i32 version.259define void @f27(ptr %dest) {260; CHECK-LABEL: f27:261; CHECK: mvi 0(%r2), 255262; CHECK: mvc 1(12,%r2), 0(%r2)263; CHECK: br %r14264  call void @llvm.memset.p0.i32(ptr %dest, i8 -1, i32 13, i1 false)265  ret void266}267 268; 13 bytes, i64 version.269define void @f28(ptr %dest) {270; CHECK-LABEL: f28:271; CHECK: mvi 0(%r2), 255272; CHECK: mvc 1(12,%r2), 0(%r2)273; CHECK: br %r14274  call void @llvm.memset.p0.i64(ptr %dest, i8 -1, i64 13, i1 false)275  ret void276}277 278; 14 bytes, i32 version.279define void @f29(ptr %dest) {280; CHECK-LABEL: f29:281; CHECK: mvi 0(%r2), 255282; CHECK: mvc 1(13,%r2), 0(%r2)283; CHECK: br %r14284  call void @llvm.memset.p0.i32(ptr %dest, i8 -1, i32 14, i1 false)285  ret void286}287 288; 14 bytes, i64 version.289define void @f30(ptr %dest) {290; CHECK-LABEL: f30:291; CHECK: mvi 0(%r2), 255292; CHECK: mvc 1(13,%r2), 0(%r2)293; CHECK: br %r14294  call void @llvm.memset.p0.i64(ptr %dest, i8 -1, i64 14, i1 false)295  ret void296}297 298; 15 bytes, i32 version.299define void @f31(ptr %dest) {300; CHECK-LABEL: f31:301; CHECK: mvi 0(%r2), 255302; CHECK: mvc 1(14,%r2), 0(%r2)303; CHECK: br %r14304  call void @llvm.memset.p0.i32(ptr %dest, i8 -1, i32 15, i1 false)305  ret void306}307 308; 15 bytes, i64 version.309define void @f32(ptr %dest) {310; CHECK-LABEL: f32:311; CHECK: mvi 0(%r2), 255312; CHECK: mvc 1(14,%r2), 0(%r2)313; CHECK: br %r14314  call void @llvm.memset.p0.i64(ptr %dest, i8 -1, i64 15, i1 false)315  ret void316}317 318; 16 bytes, i32 version.319define void @f33(ptr %dest) {320; CHECK-LABEL: f33:321; CHECK-DAG: mvghi 0(%r2), -1322; CHECK-DAG: mvghi 8(%r2), -1323; CHECK: br %r14324  call void @llvm.memset.p0.i32(ptr %dest, i8 -1, i32 16, i1 false)325  ret void326}327 328; 16 bytes, i64 version.329define void @f34(ptr %dest) {330; CHECK-LABEL: f34:331; CHECK-DAG: mvghi 0(%r2), -1332; CHECK-DAG: mvghi 8(%r2), -1333; CHECK: br %r14334  call void @llvm.memset.p0.i64(ptr %dest, i8 -1, i64 16, i1 false)335  ret void336}337 338; 17 bytes, i32 version.339define void @f35(ptr %dest) {340; CHECK-LABEL: f35:341; CHECK: mvi 0(%r2), 255342; CHECK: mvc 1(16,%r2), 0(%r2)343; CHECK: br %r14344  call void @llvm.memset.p0.i32(ptr %dest, i8 -1, i32 17, i1 false)345  ret void346}347 348; 17 bytes, i64 version.349define void @f36(ptr %dest) {350; CHECK-LABEL: f36:351; CHECK: mvi 0(%r2), 255352; CHECK: mvc 1(16,%r2), 0(%r2)353; CHECK: br %r14354  call void @llvm.memset.p0.i64(ptr %dest, i8 -1, i64 17, i1 false)355  ret void356}357 358; 257 bytes, i32 version.359define void @f37(ptr %dest) {360; CHECK-LABEL: f37:361; CHECK: mvi 0(%r2), 255362; CHECK: mvc 1(255,%r2), 0(%r2)363; CHECK: mvi 256(%r2), 255364; CHECK: br %r14365  call void @llvm.memset.p0.i32(ptr %dest, i8 -1, i32 257, i1 false)366  ret void367}368 369; 257 bytes, i64 version.370define void @f38(ptr %dest) {371; CHECK-LABEL: f38:372; CHECK: mvi 0(%r2), 255373; CHECK: mvc 1(255,%r2), 0(%r2)374; CHECK: mvi 256(%r2), 255375; CHECK: br %r14376  call void @llvm.memset.p0.i64(ptr %dest, i8 -1, i64 257, i1 false)377  ret void378}379 380; 258 bytes, i32 version.  We need two MVCs.381define void @f39(ptr %dest) {382; CHECK-LABEL: f39:383; CHECK: mvi 0(%r2), 255384; CHECK: mvc 1(255,%r2), 0(%r2)385; CHECK: mvi 256(%r2), 255386; CHECK: mvc 257(1,%r2), 256(%r2)387; CHECK: br %r14388  call void @llvm.memset.p0.i32(ptr %dest, i8 -1, i32 258, i1 false)389  ret void390}391 392; 258 bytes, i64 version.393define void @f40(ptr %dest) {394; CHECK-LABEL: f40:395; CHECK: mvi 0(%r2), 255396; CHECK: mvc 1(255,%r2), 0(%r2)397; CHECK: mvi 256(%r2), 255398; CHECK: mvc 257(1,%r2), 256(%r2)399; CHECK: br %r14400  call void @llvm.memset.p0.i64(ptr %dest, i8 -1, i64 258, i1 false)401  ret void402}403