Files
clang-p2996/llvm/test/CodeGen/SystemZ/memset-02.ll
Kai Nacke a1710eb3cd [SystemZ][NFC] Opaque pointer migration.
The LIT test cases were migrated with the script provided by
Nikita Popov.

No manual changes were made. Committed without review since
no functional changes, after consultation with uweigand.
2022-10-11 21:09:43 +00:00

167 lines
3.9 KiB
LLVM

; Test memset in cases where the set value is a constant other than 0 and -1.
;
; RUN: llc < %s -mtriple=s390x-linux-gnu | FileCheck %s
declare void @llvm.memset.p0.i32(ptr nocapture, i8, i32, i1) nounwind
declare void @llvm.memset.p0.i64(ptr nocapture, i8, i64, i1) nounwind
; No bytes, i32 version.
define void @f1(ptr %dest) {
; CHECK-LABEL: f1:
; CHECK-NOT: %r2
; CHECK: br %r14
call void @llvm.memset.p0.i32(ptr %dest, i8 128, i32 0, i1 false)
ret void
}
; No bytes, i64 version.
define void @f2(ptr %dest) {
; CHECK-LABEL: f2:
; CHECK-NOT: %r2
; CHECK: br %r14
call void @llvm.memset.p0.i64(ptr %dest, i8 128, i64 0, i1 false)
ret void
}
; 1 byte, i32 version.
define void @f3(ptr %dest) {
; CHECK-LABEL: f3:
; CHECK: mvi 0(%r2), 128
; CHECK: br %r14
call void @llvm.memset.p0.i32(ptr %dest, i8 128, i32 1, i1 false)
ret void
}
; 1 byte, i64 version.
define void @f4(ptr %dest) {
; CHECK-LABEL: f4:
; CHECK: mvi 0(%r2), 128
; CHECK: br %r14
call void @llvm.memset.p0.i64(ptr %dest, i8 128, i64 1, i1 false)
ret void
}
; 2 bytes, i32 version.
define void @f5(ptr %dest) {
; CHECK-LABEL: f5:
; CHECK: mvhhi 0(%r2), -32640
; CHECK: br %r14
call void @llvm.memset.p0.i32(ptr %dest, i8 128, i32 2, i1 false)
ret void
}
; 2 bytes, i64 version.
define void @f6(ptr %dest) {
; CHECK-LABEL: f6:
; CHECK: mvhhi 0(%r2), -32640
; CHECK: br %r14
call void @llvm.memset.p0.i64(ptr %dest, i8 128, i64 2, i1 false)
ret void
}
; 3 bytes, i32 version.
define void @f7(ptr %dest) {
; CHECK-LABEL: f7:
; CHECK-DAG: mvhhi 0(%r2), -32640
; CHECK-DAG: mvi 2(%r2), 128
; CHECK: br %r14
call void @llvm.memset.p0.i32(ptr %dest, i8 128, i32 3, i1 false)
ret void
}
; 3 bytes, i64 version.
define void @f8(ptr %dest) {
; CHECK-LABEL: f8:
; CHECK-DAG: mvhhi 0(%r2), -32640
; CHECK-DAG: mvi 2(%r2), 128
; CHECK: br %r14
call void @llvm.memset.p0.i64(ptr %dest, i8 128, i64 3, i1 false)
ret void
}
; 4 bytes, i32 version.
define void @f9(ptr %dest) {
; CHECK-LABEL: f9:
; CHECK: iilf [[REG:%r[0-5]]], 2155905152
; CHECK: st [[REG]], 0(%r2)
; CHECK: br %r14
call void @llvm.memset.p0.i32(ptr %dest, i8 128, i32 4, i1 false)
ret void
}
; 4 bytes, i64 version.
define void @f10(ptr %dest) {
; CHECK-LABEL: f10:
; CHECK: iilf [[REG:%r[0-5]]], 2155905152
; CHECK: st [[REG]], 0(%r2)
; CHECK: br %r14
call void @llvm.memset.p0.i64(ptr %dest, i8 128, i64 4, i1 false)
ret void
}
; 5 bytes, i32 version.
define void @f11(ptr %dest) {
; CHECK-LABEL: f11:
; CHECK: mvi 0(%r2), 128
; CHECK: mvc 1(4,%r2), 0(%r2)
; CHECK: br %r14
call void @llvm.memset.p0.i32(ptr %dest, i8 128, i32 5, i1 false)
ret void
}
; 5 bytes, i64 version.
define void @f12(ptr %dest) {
; CHECK-LABEL: f12:
; CHECK: mvi 0(%r2), 128
; CHECK: mvc 1(4,%r2), 0(%r2)
; CHECK: br %r14
call void @llvm.memset.p0.i64(ptr %dest, i8 128, i64 5, i1 false)
ret void
}
; 257 bytes, i32 version.
define void @f13(ptr %dest) {
; CHECK-LABEL: f13:
; CHECK: mvi 0(%r2), 128
; CHECK: mvc 1(255,%r2), 0(%r2)
; CHECK: mvi 256(%r2), 128
; CHECK: br %r14
call void @llvm.memset.p0.i32(ptr %dest, i8 128, i32 257, i1 false)
ret void
}
; 257 bytes, i64 version.
define void @f14(ptr %dest) {
; CHECK-LABEL: f14:
; CHECK: mvi 0(%r2), 128
; CHECK: mvc 1(255,%r2), 0(%r2)
; CHECK: mvi 256(%r2), 128
; CHECK: br %r14
call void @llvm.memset.p0.i64(ptr %dest, i8 128, i64 257, i1 false)
ret void
}
; 258 bytes, i32 version. We need two MVCs.
define void @f15(ptr %dest) {
; CHECK-LABEL: f15:
; CHECK: mvi 0(%r2), 128
; CHECK: mvc 1(255,%r2), 0(%r2)
; CHECK: mvi 256(%r2), 128
; CHECK: mvc 257(1,%r2), 256(%r2)
; CHECK: br %r14
call void @llvm.memset.p0.i32(ptr %dest, i8 128, i32 258, i1 false)
ret void
}
; 258 bytes, i64 version.
define void @f16(ptr %dest) {
; CHECK-LABEL: f16:
; CHECK: mvi 0(%r2), 128
; CHECK: mvc 1(255,%r2), 0(%r2)
; CHECK: mvi 256(%r2), 128
; CHECK: mvc 257(1,%r2), 256(%r2)
; CHECK: br %r14
call void @llvm.memset.p0.i64(ptr %dest, i8 128, i64 258, i1 false)
ret void
}