brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.2 KiB · 166fc9e Raw
88 lines · plain
1; Test data prefetching.2;3; RUN: llc < %s -mtriple=s390x-linux-gnu | FileCheck %s4 5declare void @llvm.prefetch(ptr, i32, i32, i32)6 7@g = dso_local global [4096 x i8] zeroinitializer8 9; Check that instruction read prefetches are ignored.10define dso_local void @f1(ptr %ptr) {11; CHECK-LABEL: f1:12; CHECK-NOT: %r213; CHECK: br %r1414  call void @llvm.prefetch(ptr %ptr, i32 0, i32 0, i32 0)15  ret void16}17 18; Check that instruction write prefetches are ignored.19define dso_local void @f2(ptr %ptr) {20; CHECK-LABEL: f2:21; CHECK-NOT: %r222; CHECK: br %r1423  call void @llvm.prefetch(ptr %ptr, i32 1, i32 0, i32 0)24  ret void25}26 27; Check data read prefetches.28define dso_local void @f3(ptr %ptr) {29; CHECK-LABEL: f3:30; CHECK: pfd 1, 0(%r2)31; CHECK: br %r1432  call void @llvm.prefetch(ptr %ptr, i32 0, i32 0, i32 1)33  ret void34}35 36; Check data write prefetches.37define dso_local void @f4(ptr %ptr) {38; CHECK-LABEL: f4:39; CHECK: pfd 2, 0(%r2)40; CHECK: br %r1441  call void @llvm.prefetch(ptr %ptr, i32 1, i32 0, i32 1)42  ret void43}44 45; Check an address at the negative end of the range.46define dso_local void @f5(ptr %base, i64 %index) {47; CHECK-LABEL: f5:48; CHECK: pfd 2, -524288({{%r2,%r3|%r3,%r2}})49; CHECK: br %r1450  %add = add i64 %index, -52428851  %ptr = getelementptr i8, ptr %base, i64 %add52  call void @llvm.prefetch(ptr %ptr, i32 1, i32 0, i32 1)53  ret void54}55 56; Check an address at the positive end of the range.57define dso_local void @f6(ptr %base, i64 %index) {58; CHECK-LABEL: f6:59; CHECK: pfd 2, 524287({{%r2,%r3|%r3,%r2}})60; CHECK: br %r1461  %add = add i64 %index, 52428762  %ptr = getelementptr i8, ptr %base, i64 %add63  call void @llvm.prefetch(ptr %ptr, i32 1, i32 0, i32 1)64  ret void65}66 67; Check that the next address up still compiles.68define dso_local void @f7(ptr %base, i64 %index) {69; CHECK-LABEL: f7:70; CHECK: 52428871; CHECK: pfd 2,72; CHECK: br %r1473  %add = add i64 %index, 52428874  %ptr = getelementptr i8, ptr %base, i64 %add75  call void @llvm.prefetch(ptr %ptr, i32 1, i32 0, i32 1)76  ret void77}78 79; Check pc-relative prefetches.80define dso_local void @f8() {81; CHECK-LABEL: f8:82; CHECK: pfdrl 2, g83; CHECK: br %r1484  %ptr = getelementptr [4096 x i8], ptr@g, i64 0, i64 085  call void @llvm.prefetch(ptr %ptr, i32 1, i32 0, i32 1)86  ret void87}88