brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.9 KiB · 3dea24b Raw
167 lines · plain
1; Test memset in cases where the set value is a constant other than 0 and -1.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 128, 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 128, 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), 12830; CHECK: br %r1431  call void @llvm.memset.p0.i32(ptr %dest, i8 128, 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), 12839; CHECK: br %r1440  call void @llvm.memset.p0.i64(ptr %dest, i8 128, 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), -3264048; CHECK: br %r1449  call void @llvm.memset.p0.i32(ptr %dest, i8 128, 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), -3264057; CHECK: br %r1458  call void @llvm.memset.p0.i64(ptr %dest, i8 128, 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), -3264066; CHECK-DAG: mvi 2(%r2), 12867; CHECK: br %r1468  call void @llvm.memset.p0.i32(ptr %dest, i8 128, 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), -3264076; CHECK-DAG: mvi 2(%r2), 12877; CHECK: br %r1478  call void @llvm.memset.p0.i64(ptr %dest, i8 128, i64 3, i1 false)79  ret void80}81 82; 4 bytes, i32 version.83define void @f9(ptr %dest) {84; CHECK-LABEL: f9:85; CHECK: iilf [[REG:%r[0-5]]], 215590515286; CHECK: st [[REG]], 0(%r2)87; CHECK: br %r1488  call void @llvm.memset.p0.i32(ptr %dest, i8 128, i32 4, i1 false)89  ret void90}91 92; 4 bytes, i64 version.93define void @f10(ptr %dest) {94; CHECK-LABEL: f10:95; CHECK: iilf [[REG:%r[0-5]]], 215590515296; CHECK: st [[REG]], 0(%r2)97; CHECK: br %r1498  call void @llvm.memset.p0.i64(ptr %dest, i8 128, i64 4, i1 false)99  ret void100}101 102; 5 bytes, i32 version.103define void @f11(ptr %dest) {104; CHECK-LABEL: f11:105; CHECK: mvi 0(%r2), 128106; CHECK: mvc 1(4,%r2), 0(%r2)107; CHECK: br %r14108  call void @llvm.memset.p0.i32(ptr %dest, i8 128, i32 5, i1 false)109  ret void110}111 112; 5 bytes, i64 version.113define void @f12(ptr %dest) {114; CHECK-LABEL: f12:115; CHECK: mvi 0(%r2), 128116; CHECK: mvc 1(4,%r2), 0(%r2)117; CHECK: br %r14118  call void @llvm.memset.p0.i64(ptr %dest, i8 128, i64 5, i1 false)119  ret void120}121 122; 257 bytes, i32 version.123define void @f13(ptr %dest) {124; CHECK-LABEL: f13:125; CHECK: mvi 0(%r2), 128126; CHECK: mvc 1(255,%r2), 0(%r2)127; CHECK: mvi 256(%r2), 128128; CHECK: br %r14129  call void @llvm.memset.p0.i32(ptr %dest, i8 128, i32 257, i1 false)130  ret void131}132 133; 257 bytes, i64 version.134define void @f14(ptr %dest) {135; CHECK-LABEL: f14:136; CHECK: mvi 0(%r2), 128137; CHECK: mvc 1(255,%r2), 0(%r2)138; CHECK: mvi 256(%r2), 128139; CHECK: br %r14140  call void @llvm.memset.p0.i64(ptr %dest, i8 128, i64 257, i1 false)141  ret void142}143 144; 258 bytes, i32 version.  We need two MVCs.145define void @f15(ptr %dest) {146; CHECK-LABEL: f15:147; CHECK: mvi 0(%r2), 128148; CHECK: mvc 1(255,%r2), 0(%r2)149; CHECK: mvi 256(%r2), 128150; CHECK: mvc 257(1,%r2), 256(%r2)151; CHECK: br %r14152  call void @llvm.memset.p0.i32(ptr %dest, i8 128, i32 258, i1 false)153  ret void154}155 156; 258 bytes, i64 version.157define void @f16(ptr %dest) {158; CHECK-LABEL: f16:159; CHECK: mvi 0(%r2), 128160; CHECK: mvc 1(255,%r2), 0(%r2)161; CHECK: mvi 256(%r2), 128162; CHECK: mvc 257(1,%r2), 256(%r2)163; CHECK: br %r14164  call void @llvm.memset.p0.i64(ptr %dest, i8 128, i64 258, i1 false)165  ret void166}167