|
| 1 | +; RUN: llc -O0 -mtriple=spirv64-unknown-unknown -verify-machineinstrs --spirv-ext=+SPV_INTEL_fpga_latency_control %s -o - | FileCheck %s |
| 2 | + |
| 3 | +; CHECK: OpCapability FPGALatencyControlINTEL |
| 4 | +; CHECK: OpExtension "SPV_INTEL_fpga_latency_control" |
| 5 | +; CHECK: OpDecorate %[[#ARGA:]] LatencyControlLabelINTEL 0 |
| 6 | +; CHECK: OpDecorate %[[#ARGB:]] LatencyControlLabelINTEL 1 |
| 7 | +; CHECK: OpDecorate %[[#ARGB]] LatencyControlConstraintINTEL 0 1 5 |
| 8 | +; CHECK: %[[#OUT1:]] = OpBitcast %[[#]] %[[#]] |
| 9 | +; CHECK-DAG: %[[#]] = OpLoad %[[#]] %[[#OUT1]] |
| 10 | +; CHECK: %[[#OUT2:]] = OpBitcast %[[#]] %[[#]] |
| 11 | +; CHECK-DAG: %[[#]] = OpLoad %[[#]] %[[#OUT2]] |
| 12 | + |
| 13 | +target datalayout = "e-i64:64-v16:16-v24:32-v32:32-v48:64-v96:128-v192:256-v256:256-v512:512-v1024:1024-n8:16:32:64" |
| 14 | + |
| 15 | +%struct.__spirv_Something = type { i32, i32 } |
| 16 | + |
| 17 | +$_ZTSZ4fooEUlvE_ = comdat any |
| 18 | + |
| 19 | +@.str = private unnamed_addr addrspace(1) constant [16 x i8] c"sycl-properties\00", section "llvm.metadata" |
| 20 | +@.str.1 = private unnamed_addr addrspace(1) constant [19 x i8] c"inc/fpga_utils.hpp\00", section "llvm.metadata" |
| 21 | +@.str.9 = private unnamed_addr addrspace(1) constant [11 x i8] c"{6172:\220\22}\00", section "llvm.metadata" |
| 22 | +@.str.10 = private unnamed_addr addrspace(1) constant [25 x i8] c"{6172:\221\22}{6173:\220,5,1\22}\00", section "llvm.metadata" |
| 23 | + |
| 24 | +; Function Attrs: mustprogress norecurse |
| 25 | +define weak_odr dso_local spir_kernel void @_ZTSZ4fooEUlvE_(ptr %0) local_unnamed_addr #0 comdat !kernel_arg_buffer_location !5 !sycl_kernel_omit_args !5 { |
| 26 | +entry: |
| 27 | + %1 = alloca ptr, align 8 |
| 28 | + store ptr %0, ptr %1, align 8 |
| 29 | + %2 = load ptr, ptr %1, align 8 |
| 30 | + %3 = getelementptr inbounds %struct.__spirv_Something, ptr %2, i32 0, i32 0 |
| 31 | + %4 = bitcast ptr %3 to ptr |
| 32 | + %5 = call ptr @llvm.ptr.annotation.p0.p1(ptr %4, ptr addrspace(1) @.str.9, ptr addrspace(1) @.str.1, i32 5, ptr addrspace(1) null) |
| 33 | + %6 = load i32, ptr %5, align 8 |
| 34 | + %7 = load ptr, ptr %1, align 8 |
| 35 | + %8 = getelementptr inbounds %struct.__spirv_Something, ptr %7, i32 0, i32 1 |
| 36 | + %9 = bitcast ptr %8 to ptr |
| 37 | + %10 = call ptr @llvm.ptr.annotation.p0.p1(ptr %9, ptr addrspace(1) @.str.10, ptr addrspace(1) @.str.1, i32 5, ptr addrspace(1) null) |
| 38 | + %11 = load i32, ptr %10, align 8 |
| 39 | + ret void |
| 40 | +} |
| 41 | + |
| 42 | +; Function Attrs: nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) |
| 43 | +declare ptr @llvm.ptr.annotation.p0.p1(ptr, ptr addrspace(1), ptr addrspace(1), i32, ptr addrspace(1)) #1 |
| 44 | + |
| 45 | +attributes #0 = { mustprogress norecurse "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "sycl-module-id"="sycl-properties-ptr-annotations.cpp" "uniform-work-group-size"="true" } |
| 46 | +attributes #1 = { nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) } |
| 47 | + |
| 48 | +!opencl.spir.version = !{!0, !0, !0, !0, !0, !0} |
| 49 | +!spirv.Source = !{!1, !1, !1, !1, !1, !1} |
| 50 | +!llvm.ident = !{!2, !2, !2, !2, !2, !2} |
| 51 | +!llvm.module.flags = !{!3, !4} |
| 52 | + |
| 53 | +!0 = !{i32 1, i32 2} |
| 54 | +!1 = !{i32 4, i32 100000} |
| 55 | +!2 = !{!"clang version 15.0.0"} |
| 56 | +!3 = !{i32 1, !"wchar_size", i32 4} |
| 57 | +!4 = !{i32 7, !"frame-pointer", i32 2} |
| 58 | +!5 = !{} |
0 commit comments