1 // compile-flags: -C no-prepopulate-passes
4 #![feature(core_intrinsics)]
6 use std::intrinsics::{prefetch_read_data, prefetch_write_data,
7 prefetch_read_instruction, prefetch_write_instruction};
10 pub fn check_prefetch_read_data(data: &[i8]) {
12 // CHECK: call void @llvm.prefetch(i8* %{{.*}}, i32 0, i32 0, i32 1)
13 prefetch_read_data(data.as_ptr(), 0);
14 // CHECK: call void @llvm.prefetch(i8* %{{.*}}, i32 0, i32 1, i32 1)
15 prefetch_read_data(data.as_ptr(), 1);
16 // CHECK: call void @llvm.prefetch(i8* %{{.*}}, i32 0, i32 2, i32 1)
17 prefetch_read_data(data.as_ptr(), 2);
18 // CHECK: call void @llvm.prefetch(i8* %{{.*}}, i32 0, i32 3, i32 1)
19 prefetch_read_data(data.as_ptr(), 3);
24 pub fn check_prefetch_write_data(data: &[i8]) {
26 // CHECK: call void @llvm.prefetch(i8* %{{.*}}, i32 1, i32 0, i32 1)
27 prefetch_write_data(data.as_ptr(), 0);
28 // CHECK: call void @llvm.prefetch(i8* %{{.*}}, i32 1, i32 1, i32 1)
29 prefetch_write_data(data.as_ptr(), 1);
30 // CHECK: call void @llvm.prefetch(i8* %{{.*}}, i32 1, i32 2, i32 1)
31 prefetch_write_data(data.as_ptr(), 2);
32 // CHECK: call void @llvm.prefetch(i8* %{{.*}}, i32 1, i32 3, i32 1)
33 prefetch_write_data(data.as_ptr(), 3);
38 pub fn check_prefetch_read_instruction(data: &[i8]) {
40 // CHECK: call void @llvm.prefetch(i8* %{{.*}}, i32 0, i32 0, i32 0)
41 prefetch_read_instruction(data.as_ptr(), 0);
42 // CHECK: call void @llvm.prefetch(i8* %{{.*}}, i32 0, i32 1, i32 0)
43 prefetch_read_instruction(data.as_ptr(), 1);
44 // CHECK: call void @llvm.prefetch(i8* %{{.*}}, i32 0, i32 2, i32 0)
45 prefetch_read_instruction(data.as_ptr(), 2);
46 // CHECK: call void @llvm.prefetch(i8* %{{.*}}, i32 0, i32 3, i32 0)
47 prefetch_read_instruction(data.as_ptr(), 3);
52 pub fn check_prefetch_write_instruction(data: &[i8]) {
54 // CHECK: call void @llvm.prefetch(i8* %{{.*}}, i32 1, i32 0, i32 0)
55 prefetch_write_instruction(data.as_ptr(), 0);
56 // CHECK: call void @llvm.prefetch(i8* %{{.*}}, i32 1, i32 1, i32 0)
57 prefetch_write_instruction(data.as_ptr(), 1);
58 // CHECK: call void @llvm.prefetch(i8* %{{.*}}, i32 1, i32 2, i32 0)
59 prefetch_write_instruction(data.as_ptr(), 2);
60 // CHECK: call void @llvm.prefetch(i8* %{{.*}}, i32 1, i32 3, i32 0)
61 prefetch_write_instruction(data.as_ptr(), 3);