// Test lowering of prefetch directive from FIR to LLVM IR // RUN: %flang_fc1 -emit-llvm %s -o - | FileCheck %s func.func @_QPtest(%arg0: !fir.ref, %arg1: !fir.box>, %arg2: !fir.ref>>>>) { // CHECK: call void @llvm.prefetch.p0(ptr %{{.*}}, i32 0, i32 3, i32 1) fir.prefetch %arg0#0 {read, data, localityHint = 3 : i32} : !fir.ref %c2 = arith.constant 2 : index %4 = hlfir.designate %arg1#0 (%c2) : (!fir.box>, index) -> !fir.ref // CHECK: call void @llvm.prefetch.p0(ptr %{{.*}}, i32 0, i32 3, i32 1) fir.prefetch %4 {read, data, localityHint = 3 : i32} : !fir.ref %5 = fir.load %arg2#0 : !fir.ref>>>> %6 = fir.box_addr %5 : (!fir.box>>>) -> !fir.heap>> // CHECK: call void @llvm.prefetch.p0(ptr %{{.*}}, i32 0, i32 3, i32 1) fir.prefetch %6 {read, data, localityHint = 3 : i32} : !fir.heap>> %7 = fir.load %arg2#0 : !fir.ref>>>> %c3 = arith.constant 3 : index %c4 = arith.constant 4 : index %8 = hlfir.designate %7 (%c3) typeparams %c4 : (!fir.box>>>, index, index) -> !fir.ref> // CHECK: call void @llvm.prefetch.p0(ptr %{{.*}}, i32 0, i32 3, i32 1) fir.prefetch %8 {read, data, localityHint = 3 : i32} : !fir.ref> return }