brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.3 KiB · cfe85b9 Raw
44 lines · c
1// RUN: %clang_cc1 -triple x86_64-unknown-linux-gnu -emit-cir %s -o - | FileCheck %s -check-prefix=CIR2// RUN: %clang_cc1 -triple x86_64-unknown-linux-gnu -fclangir -emit-llvm %s -o - | FileCheck %s -check-prefix=LLVM3// RUN: %clang_cc1 -triple x86_64-unknown-linux-gnu -emit-llvm %s -o - | FileCheck %s -check-prefix=OGCG4 5void foo(void *a) {6  __builtin_prefetch(a);        // rw=0, locality=37  __builtin_prefetch(a, 0);     // rw=0, locality=38  __builtin_prefetch(a, 1);     // rw=1, locality=39  __builtin_prefetch(a, 1, 1);  // rw=1, locality=110}11 12// CIR-LABEL: cir.func dso_local @foo(13// CIR: %[[ALLOCA:.*]] = cir.alloca !cir.ptr<!void>14// CIR: cir.store %arg0, %[[ALLOCA]] : !cir.ptr<!void>, !cir.ptr<!cir.ptr<!void>>15// CIR: %[[P1:.*]] = cir.load{{.*}} %[[ALLOCA]] : !cir.ptr<!cir.ptr<!void>>, !cir.ptr<!void>16// CIR: cir.prefetch read locality(3) %[[P1]] : !cir.ptr<!void>17// CIR: %[[P2:.*]] = cir.load{{.*}} %[[ALLOCA]] : !cir.ptr<!cir.ptr<!void>>, !cir.ptr<!void>18// CIR: cir.prefetch read locality(3) %[[P2]] : !cir.ptr<!void>19// CIR: %[[P3:.*]] = cir.load{{.*}} %[[ALLOCA]] : !cir.ptr<!cir.ptr<!void>>, !cir.ptr<!void>20// CIR: cir.prefetch write locality(3) %[[P3]] : !cir.ptr<!void>21// CIR: %[[P4:.*]] = cir.load{{.*}} %[[ALLOCA]] : !cir.ptr<!cir.ptr<!void>>, !cir.ptr<!void>22// CIR: cir.prefetch write locality(1) %[[P4]] : !cir.ptr<!void>23// CIR: cir.return24 25// LLVM-LABEL: define dso_local void @foo(26// LLVM: [[ALLOCA:%.*]] = alloca ptr, i64 127// LLVM: store ptr {{.*}}, ptr [[ALLOCA]]28// LLVM: [[LP1:%.*]] = load ptr, ptr [[ALLOCA]]29// LLVM: call void @llvm.prefetch.p0(ptr [[LP1]], i32 0, i32 3, i32 1)30// LLVM: [[LP2:%.*]] = load ptr, ptr [[ALLOCA]]31// LLVM: call void @llvm.prefetch.p0(ptr [[LP2]], i32 0, i32 3, i32 1)32// LLVM: [[LP3:%.*]] = load ptr, ptr [[ALLOCA]]33// LLVM: call void @llvm.prefetch.p0(ptr [[LP3]], i32 1, i32 3, i32 1)34// LLVM: [[LP4:%.*]] = load ptr, ptr [[ALLOCA]]35// LLVM: call void @llvm.prefetch.p0(ptr [[LP4]], i32 1, i32 1, i32 1)36// LLVM: ret void37 38// OGCG-LABEL: define dso_local void @foo(ptr39// OGCG: call void @llvm.prefetch.p0(ptr {{.*}}, i32 0, i32 3, i32 1)40// OGCG: call void @llvm.prefetch.p0(ptr {{.*}}, i32 0, i32 3, i32 1)41// OGCG: call void @llvm.prefetch.p0(ptr {{.*}}, i32 1, i32 3, i32 1)42// OGCG: call void @llvm.prefetch.p0(ptr {{.*}}, i32 1, i32 1, i32 1)43// OGCG: ret void44