brintos

brintos / llvm-project-archived public Read only

0
0
Text · 8.5 KiB · 606b44a Raw
383 lines · plain
1; Test memsets that clear 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 0, 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 0, 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), 030; CHECK: br %r1431  call void @llvm.memset.p0.i32(ptr %dest, i8 0, 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), 039; CHECK: br %r1440  call void @llvm.memset.p0.i64(ptr %dest, i8 0, 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), 048; CHECK: br %r1449  call void @llvm.memset.p0.i32(ptr %dest, i8 0, 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), 057; CHECK: br %r1458  call void @llvm.memset.p0.i64(ptr %dest, i8 0, 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), 066; CHECK-DAG: mvi 2(%r2), 067; CHECK: br %r1468  call void @llvm.memset.p0.i32(ptr %dest, i8 0, 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), 076; CHECK-DAG: mvi 2(%r2), 077; CHECK: br %r1478  call void @llvm.memset.p0.i64(ptr %dest, i8 0, 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), 086; CHECK: br %r1487  call void @llvm.memset.p0.i32(ptr %dest, i8 0, 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), 095; CHECK: br %r1496  call void @llvm.memset.p0.i64(ptr %dest, i8 0, 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), 0104; CHECK-DAG: mvi 4(%r2), 0105; CHECK: br %r14106  call void @llvm.memset.p0.i32(ptr %dest, i8 0, 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), 0114; CHECK-DAG: mvi 4(%r2), 0115; CHECK: br %r14116  call void @llvm.memset.p0.i64(ptr %dest, i8 0, 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), 0124; CHECK-DAG: mvhhi 4(%r2), 0125; CHECK: br %r14126  call void @llvm.memset.p0.i32(ptr %dest, i8 0, 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), 0134; CHECK-DAG: mvhhi 4(%r2), 0135; CHECK: br %r14136  call void @llvm.memset.p0.i64(ptr %dest, i8 0, i64 6, i1 false)137  ret void138}139 140; 7 bytes, i32 version.141define void @f15(ptr %dest) {142; CHECK-LABEL: f15:143; CHECK: xc 0(7,%r2), 0(%r2)144; CHECK: br %r14145  call void @llvm.memset.p0.i32(ptr %dest, i8 0, i32 7, i1 false)146  ret void147}148 149; 7 bytes, i64 version.150define void @f16(ptr %dest) {151; CHECK-LABEL: f16:152; CHECK: xc 0(7,%r2), 0(%r2)153; CHECK: br %r14154  call void @llvm.memset.p0.i64(ptr %dest, i8 0, i64 7, i1 false)155  ret void156}157 158; 8 bytes, i32 version.159define void @f17(ptr %dest) {160; CHECK-LABEL: f17:161; CHECK: mvghi 0(%r2), 0162; CHECK: br %r14163  call void @llvm.memset.p0.i32(ptr %dest, i8 0, i32 8, i1 false)164  ret void165}166 167; 8 bytes, i64 version.168define void @f18(ptr %dest) {169; CHECK-LABEL: f18:170; CHECK: mvghi 0(%r2), 0171; CHECK: br %r14172  call void @llvm.memset.p0.i64(ptr %dest, i8 0, i64 8, i1 false)173  ret void174}175 176; 9 bytes, i32 version.177define void @f19(ptr %dest) {178; CHECK-LABEL: f19:179; CHECK-DAG: mvghi 0(%r2), 0180; CHECK-DAG: mvi 8(%r2), 0181; CHECK: br %r14182  call void @llvm.memset.p0.i32(ptr %dest, i8 0, i32 9, i1 false)183  ret void184}185 186; 9 bytes, i64 version.187define void @f20(ptr %dest) {188; CHECK-LABEL: f20:189; CHECK-DAG: mvghi 0(%r2), 0190; CHECK-DAG: mvi 8(%r2), 0191; CHECK: br %r14192  call void @llvm.memset.p0.i64(ptr %dest, i8 0, i64 9, i1 false)193  ret void194}195 196; 10 bytes, i32 version.197define void @f21(ptr %dest) {198; CHECK-LABEL: f21:199; CHECK-DAG: mvghi 0(%r2), 0200; CHECK-DAG: mvhhi 8(%r2), 0201; CHECK: br %r14202  call void @llvm.memset.p0.i32(ptr %dest, i8 0, i32 10, i1 false)203  ret void204}205 206; 10 bytes, i64 version.207define void @f22(ptr %dest) {208; CHECK-LABEL: f22:209; CHECK-DAG: mvghi 0(%r2), 0210; CHECK-DAG: mvhhi 8(%r2), 0211; CHECK: br %r14212  call void @llvm.memset.p0.i64(ptr %dest, i8 0, i64 10, i1 false)213  ret void214}215 216; 11 bytes, i32 version.217define void @f23(ptr %dest) {218; CHECK-LABEL: f23:219; CHECK: xc 0(11,%r2), 0(%r2)220; CHECK: br %r14221  call void @llvm.memset.p0.i32(ptr %dest, i8 0, i32 11, i1 false)222  ret void223}224 225; 11 bytes, i64 version.226define void @f24(ptr %dest) {227; CHECK-LABEL: f24:228; CHECK: xc 0(11,%r2), 0(%r2)229; CHECK: br %r14230  call void @llvm.memset.p0.i64(ptr %dest, i8 0, i64 11, i1 false)231  ret void232}233 234; 12 bytes, i32 version.235define void @f25(ptr %dest) {236; CHECK-LABEL: f25:237; CHECK-DAG: mvghi 0(%r2), 0238; CHECK-DAG: mvhi 8(%r2), 0239; CHECK: br %r14240  call void @llvm.memset.p0.i32(ptr %dest, i8 0, i32 12, i1 false)241  ret void242}243 244; 12 bytes, i64 version.245define void @f26(ptr %dest) {246; CHECK-LABEL: f26:247; CHECK-DAG: mvghi 0(%r2), 0248; CHECK-DAG: mvhi 8(%r2), 0249; CHECK: br %r14250  call void @llvm.memset.p0.i32(ptr %dest, i8 0, i32 12, i1 false)251  ret void252}253 254; 13 bytes, i32 version.255define void @f27(ptr %dest) {256; CHECK-LABEL: f27:257; CHECK: xc 0(13,%r2), 0(%r2)258; CHECK: br %r14259  call void @llvm.memset.p0.i32(ptr %dest, i8 0, i32 13, i1 false)260  ret void261}262 263; 13 bytes, i64 version.264define void @f28(ptr %dest) {265; CHECK-LABEL: f28:266; CHECK: xc 0(13,%r2), 0(%r2)267; CHECK: br %r14268  call void @llvm.memset.p0.i64(ptr %dest, i8 0, i64 13, i1 false)269  ret void270}271 272; 14 bytes, i32 version.273define void @f29(ptr %dest) {274; CHECK-LABEL: f29:275; CHECK: xc 0(14,%r2), 0(%r2)276; CHECK: br %r14277  call void @llvm.memset.p0.i32(ptr %dest, i8 0, i32 14, i1 false)278  ret void279}280 281; 14 bytes, i64 version.282define void @f30(ptr %dest) {283; CHECK-LABEL: f30:284; CHECK: xc 0(14,%r2), 0(%r2)285; CHECK: br %r14286  call void @llvm.memset.p0.i64(ptr %dest, i8 0, i64 14, i1 false)287  ret void288}289 290; 15 bytes, i32 version.291define void @f31(ptr %dest) {292; CHECK-LABEL: f31:293; CHECK: xc 0(15,%r2), 0(%r2)294; CHECK: br %r14295  call void @llvm.memset.p0.i32(ptr %dest, i8 0, i32 15, i1 false)296  ret void297}298 299; 15 bytes, i64 version.300define void @f32(ptr %dest) {301; CHECK-LABEL: f32:302; CHECK: xc 0(15,%r2), 0(%r2)303; CHECK: br %r14304  call void @llvm.memset.p0.i64(ptr %dest, i8 0, i64 15, i1 false)305  ret void306}307 308; 16 bytes, i32 version.309define void @f33(ptr %dest) {310; CHECK-LABEL: f33:311; CHECK-DAG: mvghi 0(%r2), 0312; CHECK-DAG: mvghi 8(%r2), 0313; CHECK: br %r14314  call void @llvm.memset.p0.i32(ptr %dest, i8 0, i32 16, i1 false)315  ret void316}317 318; 16 bytes, i64 version.319define void @f34(ptr %dest) {320; CHECK-LABEL: f34:321; CHECK-DAG: mvghi 0(%r2), 0322; CHECK-DAG: mvghi 8(%r2), 0323; CHECK: br %r14324  call void @llvm.memset.p0.i64(ptr %dest, i8 0, i64 16, i1 false)325  ret void326}327 328; 17 bytes, i32 version.329define void @f35(ptr %dest) {330; CHECK-LABEL: f35:331; CHECK: xc 0(17,%r2), 0(%r2)332; CHECK: br %r14333  call void @llvm.memset.p0.i32(ptr %dest, i8 0, i32 17, i1 false)334  ret void335}336 337; 17 bytes, i64 version.338define void @f36(ptr %dest) {339; CHECK-LABEL: f36:340; CHECK: xc 0(17,%r2), 0(%r2)341; CHECK: br %r14342  call void @llvm.memset.p0.i64(ptr %dest, i8 0, i64 17, i1 false)343  ret void344}345 346; 256 bytes, i32 version.347define void @f37(ptr %dest) {348; CHECK-LABEL: f37:349; CHECK: xc 0(256,%r2), 0(%r2)350; CHECK: br %r14351  call void @llvm.memset.p0.i32(ptr %dest, i8 0, i32 256, i1 false)352  ret void353}354 355; 256 bytes, i64 version.356define void @f38(ptr %dest) {357; CHECK-LABEL: f38:358; CHECK: xc 0(256,%r2), 0(%r2)359; CHECK: br %r14360  call void @llvm.memset.p0.i64(ptr %dest, i8 0, i64 256, i1 false)361  ret void362}363 364; 257 bytes, i32 version.  We need two MVCs.365define void @f39(ptr %dest) {366; CHECK-LABEL: f39:367; CHECK: xc 0(256,%r2), 0(%r2)368; CHECK: xc 256(1,%r2), 256(%r2)369; CHECK: br %r14370  call void @llvm.memset.p0.i32(ptr %dest, i8 0, i32 257, i1 false)371  ret void372}373 374; 257 bytes, i64 version.375define void @f40(ptr %dest) {376; CHECK-LABEL: f40:377; CHECK: xc 0(256,%r2), 0(%r2)378; CHECK: xc 256(1,%r2), 256(%r2)379; CHECK: br %r14380  call void @llvm.memset.p0.i64(ptr %dest, i8 0, i64 257, i1 false)381  ret void382}383