brintos

brintos / llvm-project-archived public Read only

0
0
Text · 5.5 KiB · f6b6115 Raw
98 lines · plain
1; RUN: llc -verify-machineinstrs -O0 -mtriple=spirv32-unknown-unknown --spirv-ext=+SPV_ALTERA_blocking_pipes %s -o - | FileCheck %s --check-prefixes=CHECK-SPIRV2; TODO: %if spirv-tools %{ llc -O0 -mtriple=spirv64-unknown-unknown --spirv-ext=+SPV_ALTERA_blocking_pipes %s -o - -filetype=obj | spirv-val %}3 4%opencl.pipe_ro_t = type opaque5%opencl.pipe_wo_t = type opaque6 7; CHECK-SPIRV: OpCapability BlockingPipesALTERA8; CHECK-SPIRV: OpExtension "SPV_ALTERA_blocking_pipes"9; CHECK-SPIRV: %[[PipeRTy:[0-9]+]] = OpTypePipe ReadOnly10; CHECK-SPIRV: %[[PipeWTy:[0-9]+]] = OpTypePipe WriteOnly11; CHECK-SPIRV: %[[PipeR1:[0-9]+]] = OpLoad %[[PipeRTy]] %[[#]] Aligned 812; CHECK-SPIRV: OpReadPipeBlockingALTERA %[[PipeR1]] %[[#]] %[[#]] %[[#]]13; CHECK-SPIRV: %[[PipeR2:[0-9]+]] = OpLoad %[[PipeRTy]] %[[#]] Aligned 814; CHECK-SPIRV: OpReadPipeBlockingALTERA %[[PipeR2]] %[[#]]  %[[#]] %[[#]]15; CHECK-SPIRV: %[[PipeW1:[0-9]+]] = OpLoad %[[PipeWTy]] %[[#]] Aligned 816; CHECK-SPIRV: OpWritePipeBlockingALTERA %[[PipeW1]] %[[#]]  %[[#]] %[[#]]17; CHECK-SPIRV: %[[PipeW2:[0-9]+]] = OpLoad %[[PipeWTy]] %[[#]] Aligned 818; CHECK-SPIRV: OpWritePipeBlockingALTERA %[[PipeW2]] %[[#]] %[[#]] %[[#]]19 20define spir_func void @foo(target("spirv.Pipe", 0) %p, ptr addrspace(1) %ptr) {21entry:22  %p.addr = alloca target("spirv.Pipe", 0), align 823  %ptr.addr = alloca ptr addrspace(1), align 824  store target("spirv.Pipe", 0) %p, target("spirv.Pipe", 0)* %p.addr, align 825  store ptr addrspace(1) %ptr, ptr %ptr.addr, align 826  %0 = load target("spirv.Pipe", 0), target("spirv.Pipe", 0)* %p.addr, align 827  %1 = load ptr addrspace(1), ptr %ptr.addr, align 828  %2 = addrspacecast ptr addrspace(1) %1 to ptr addrspace(4)29  call spir_func void @_Z29__spirv_ReadPipeBlockingINTELIiEv8ocl_pipePiii(target("spirv.Pipe", 0) %0, ptr addrspace(4) %2, i32 4, i32 4)30  ret void31}32 33declare dso_local spir_func void @_Z29__spirv_ReadPipeBlockingINTELIiEv8ocl_pipePiii(target("spirv.Pipe", 0), ptr addrspace(4), i32, i32)34 35define spir_func void @bar(target("spirv.Pipe", 0) %p, ptr addrspace(1) %ptr) {36entry:37  %p.addr = alloca target("spirv.Pipe", 0), align 838  %ptr.addr = alloca ptr addrspace(1), align 839  store target("spirv.Pipe", 0) %p, target("spirv.Pipe", 0)* %p.addr, align 840  store ptr addrspace(1) %ptr, ptr %ptr.addr, align 841  %0 = load target("spirv.Pipe", 0), target("spirv.Pipe", 0)* %p.addr, align 842  %1 = load ptr addrspace(1), ptr %ptr.addr, align 843  %2 = addrspacecast ptr addrspace(1) %1 to ptr addrspace(4)44  call spir_func void @_Z29__spirv_ReadPipeBlockingINTELIiEv8ocl_pipePvii(target("spirv.Pipe", 0) %0, ptr addrspace(4) %2, i32 4, i32 4)45  ret void46}47 48declare dso_local spir_func void @_Z29__spirv_ReadPipeBlockingINTELIiEv8ocl_pipePvii(target("spirv.Pipe", 0), ptr addrspace(4), i32, i32)49 50define spir_func void @boo(target("spirv.Pipe", 1) %p, ptr addrspace(1) %ptr) {51entry:52  %p.addr = alloca target("spirv.Pipe", 1), align 853  %ptr.addr = alloca ptr addrspace(1), align 854  store target("spirv.Pipe", 1) %p, target("spirv.Pipe", 1)* %p.addr, align 855  store ptr addrspace(1) %ptr, ptr %ptr.addr, align 856  %0 = load target("spirv.Pipe", 1), target("spirv.Pipe", 1)* %p.addr, align 857  %1 = load ptr addrspace(1), ptr %ptr.addr, align 858  %2 = addrspacecast ptr addrspace(1) %1 to ptr addrspace(4)59  call spir_func void @_Z30__spirv_WritePipeBlockingINTELIKiEv8ocl_pipePiii(target("spirv.Pipe", 1) %0, ptr addrspace(4) %2, i32 4, i32 4)60  ret void61}62 63declare dso_local spir_func void @_Z30__spirv_WritePipeBlockingINTELIKiEv8ocl_pipePiii(target("spirv.Pipe", 1), ptr addrspace(4), i32, i32)64 65define spir_func void @baz(target("spirv.Pipe", 1) %p, ptr addrspace(1) %ptr) {66entry:67  %p.addr = alloca target("spirv.Pipe", 1), align 868  %ptr.addr = alloca ptr addrspace(1), align 869  store target("spirv.Pipe", 1) %p, target("spirv.Pipe", 1)* %p.addr, align 870  store ptr addrspace(1) %ptr, ptr %ptr.addr, align 871  %0 = load target("spirv.Pipe", 1), target("spirv.Pipe", 1)* %p.addr, align 872  %1 = load ptr addrspace(1), ptr %ptr.addr, align 873  %2 = addrspacecast ptr addrspace(1) %1 to ptr addrspace(4)74  call spir_func void @_Z30__spirv_WritePipeBlockingINTELIKiEv8ocl_pipePvii(target("spirv.Pipe", 1) %0, ptr addrspace(4) %2, i32 4, i32 4)75  ret void76}77 78declare dso_local spir_func void @_Z30__spirv_WritePipeBlockingINTELIKiEv8ocl_pipePvii(target("spirv.Pipe", 1), ptr addrspace(4), i32, i32)79 80; CHECK-LLVM: declare spir_func void @__read_pipe_2_bl(ptr addrspace(1), ptr addrspace(4), i32, i32)81; CHECK-LLVM: declare spir_func void @__write_pipe_2_bl(ptr addrspace(1), ptr addrspace(4), i32, i32)82 83define linkonce_odr dso_local spir_func void @WritePipeBLockingi9Pointer(ptr addrspace(4) align 2 dereferenceable(2) %_Data) {84entry:85  %_Data.addr = alloca ptr addrspace(4), align 886  %_WPipe = alloca target("spirv.Pipe", 1), align 887  %_Data.addr.ascast = addrspacecast ptr %_Data.addr to ptr addrspace(4)88  %_WPipe.ascast = addrspacecast target("spirv.Pipe", 1)* %_WPipe to target("spirv.Pipe", 1) addrspace(4)*89  store ptr addrspace(4) %_Data, ptr addrspace(4) %_Data.addr.ascast, align 890  %0 = bitcast target("spirv.Pipe", 1)* %_WPipe to ptr91  %1 = load target("spirv.Pipe", 1), target("spirv.Pipe", 1) addrspace(4)* %_WPipe.ascast, align 892  %2 = load ptr addrspace(4), ptr addrspace(4) %_Data.addr.ascast, align 893  call spir_func void @_Z30__spirv_WritePipeBlockingINTELIDU9_Ev8ocl_pipePKT_ii(target("spirv.Pipe", 1) %1, ptr addrspace(4) %2, i32 2, i32 2)94  ret void95}96 97declare dso_local spir_func void @_Z30__spirv_WritePipeBlockingINTELIDU9_Ev8ocl_pipePKT_ii(target("spirv.Pipe", 1), ptr addrspace(4), i32, i32)98