[X86] combineTargetShuffle - commute VPERMV3 shuffles so any load is on the RHS
[llvm-project.git] / llvm / test / CodeGen / SystemZ / prefetch-01.ll
blob166fc9e590c8821d56046bc0ba313d2ff1feb81f
1 ; Test data prefetching.
3 ; RUN: llc < %s -mtriple=s390x-linux-gnu | FileCheck %s
5 declare void @llvm.prefetch(ptr, i32, i32, i32)
7 @g = dso_local global [4096 x i8] zeroinitializer
9 ; Check that instruction read prefetches are ignored.
10 define dso_local void @f1(ptr %ptr) {
11 ; CHECK-LABEL: f1:
12 ; CHECK-NOT: %r2
13 ; CHECK: br %r14
14   call void @llvm.prefetch(ptr %ptr, i32 0, i32 0, i32 0)
15   ret void
18 ; Check that instruction write prefetches are ignored.
19 define dso_local void @f2(ptr %ptr) {
20 ; CHECK-LABEL: f2:
21 ; CHECK-NOT: %r2
22 ; CHECK: br %r14
23   call void @llvm.prefetch(ptr %ptr, i32 1, i32 0, i32 0)
24   ret void
27 ; Check data read prefetches.
28 define dso_local void @f3(ptr %ptr) {
29 ; CHECK-LABEL: f3:
30 ; CHECK: pfd 1, 0(%r2)
31 ; CHECK: br %r14
32   call void @llvm.prefetch(ptr %ptr, i32 0, i32 0, i32 1)
33   ret void
36 ; Check data write prefetches.
37 define dso_local void @f4(ptr %ptr) {
38 ; CHECK-LABEL: f4:
39 ; CHECK: pfd 2, 0(%r2)
40 ; CHECK: br %r14
41   call void @llvm.prefetch(ptr %ptr, i32 1, i32 0, i32 1)
42   ret void
45 ; Check an address at the negative end of the range.
46 define dso_local void @f5(ptr %base, i64 %index) {
47 ; CHECK-LABEL: f5:
48 ; CHECK: pfd 2, -524288({{%r2,%r3|%r3,%r2}})
49 ; CHECK: br %r14
50   %add = add i64 %index, -524288
51   %ptr = getelementptr i8, ptr %base, i64 %add
52   call void @llvm.prefetch(ptr %ptr, i32 1, i32 0, i32 1)
53   ret void
56 ; Check an address at the positive end of the range.
57 define dso_local void @f6(ptr %base, i64 %index) {
58 ; CHECK-LABEL: f6:
59 ; CHECK: pfd 2, 524287({{%r2,%r3|%r3,%r2}})
60 ; CHECK: br %r14
61   %add = add i64 %index, 524287
62   %ptr = getelementptr i8, ptr %base, i64 %add
63   call void @llvm.prefetch(ptr %ptr, i32 1, i32 0, i32 1)
64   ret void
67 ; Check that the next address up still compiles.
68 define dso_local void @f7(ptr %base, i64 %index) {
69 ; CHECK-LABEL: f7:
70 ; CHECK: 524288
71 ; CHECK: pfd 2,
72 ; CHECK: br %r14
73   %add = add i64 %index, 524288
74   %ptr = getelementptr i8, ptr %base, i64 %add
75   call void @llvm.prefetch(ptr %ptr, i32 1, i32 0, i32 1)
76   ret void
79 ; Check pc-relative prefetches.
80 define dso_local void @f8() {
81 ; CHECK-LABEL: f8:
82 ; CHECK: pfdrl 2, g
83 ; CHECK: br %r14
84   %ptr = getelementptr [4096 x i8], ptr@g, i64 0, i64 0
85   call void @llvm.prefetch(ptr %ptr, i32 1, i32 0, i32 1)
86   ret void