brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.3 KiB · 375da5b Raw
84 lines · plain
1; RUN: llc -verify-machineinstrs -O0 -mtriple=spirv64-unknown-unknown %s -o - | FileCheck %s --check-prefixes=CL2; RUN: %if spirv-tools %{ llc -O0 -mtriple=spirv64-unknown-unknown %s -o - -filetype=obj | spirv-val %}3 4; RUN: llc -verify-machineinstrs -O0 -mtriple=spirv32-unknown-unknown %s -o - | FileCheck %s --check-prefixes=CL5; RUN: %if spirv-tools %{ llc -O0 -mtriple=spirv32-unknown-unknown %s -o - -filetype=obj | spirv-val %}6 7; RUN: llc -verify-machineinstrs -O0 -mtriple=spirv-unknown-vulkan1.3-compute %s -o - | FileCheck %s --check-prefixes=VK8; FIXME(135165) Alignment capability emitted for Vulkan.9; FIXME: %if spirv-tools %{ llc -O0 -mtriple=spirv-unknown-vulkan1.3-compute %s -o - -filetype=obj | spirv-val %}10 11; CL-DAG: %[[#Char:]] = OpTypeInt 8 012; CL-DAG: %[[#PtrChar:]] = OpTypePointer Function %[[#Char]]13 14%tprange = type { %tparray }15%tparray = type { [2 x i64] }16 17; CL:      OpFunction18; CL:      %[[#FooVar:]] = OpVariable19; CL-NEXT: %[[#Casted1:]] = OpBitcast %[[#PtrChar]] %[[#FooVar]]20; CL-NEXT: OpLifetimeStart %[[#Casted1]] 1621; CL: OpInBoundsPtrAccessChain22; CL: %[[#Casted2:]] = OpBitcast %[[#PtrChar]] %[[#FooVar]]23; CL-NEXT: OpLifetimeStop %[[#Casted2]] 1624 25; VK:      OpFunction26; VK:      %[[#FooVar:]] = OpVariable27; VK-NEXT: OpInBoundsAccessChain28; VK-NEXT: OpStore29; VK-NEXT: OpReturn30define spir_func void @foo(ptr noundef byval(%tprange) align 8 %_arg_UserRange) {31  %RoundedRangeKernel = alloca %tprange, align 832  call void @llvm.lifetime.start.p0(ptr nonnull %RoundedRangeKernel)33  %KernelFunc = getelementptr inbounds i8, ptr %RoundedRangeKernel, i64 834  store i64 zeroinitializer, ptr %KernelFunc, align 835  call void @llvm.lifetime.end.p0(ptr nonnull %RoundedRangeKernel)36  ret void37}38 39; CL: OpFunction40; CL: %[[#BarVar:]] = OpVariable41; CL-NEXT: %[[#Casted1:]] = OpBitcast %[[#PtrChar]] %[[#BarVar]]42; CL-NEXT: OpLifetimeStart %[[#Casted1]] 1643; CL: OpInBoundsPtrAccessChain44; CL: %[[#Casted2:]] = OpBitcast %[[#PtrChar]] %[[#BarVar]]45; CL-NEXT: OpLifetimeStop %[[#Casted2]] 1646 47; VK:      OpFunction48; VK:      %[[#BarVar:]] = OpVariable49; VK-NEXT: OpInBoundsAccessChain50; VK-NEXT: OpStore51; VK-NEXT: OpReturn52define spir_func void @bar(ptr noundef byval(%tprange) align 8 %_arg_UserRange) {53  %RoundedRangeKernel = alloca %tprange, align 854  call void @llvm.lifetime.start.p0(ptr nonnull %RoundedRangeKernel)55  %KernelFunc = getelementptr inbounds i8, ptr %RoundedRangeKernel, i64 856  store i64 zeroinitializer, ptr %KernelFunc, align 857  call void @llvm.lifetime.end.p0(ptr nonnull %RoundedRangeKernel)58  ret void59}60 61; CL: OpFunction62; CL: %[[#TestVar:]] = OpVariable63; CL: OpLifetimeStart %[[#TestVar]] 164; CL: OpInBoundsPtrAccessChain65; CL: OpLifetimeStop %[[#TestVar]] 166 67; VK:      OpFunction68; VK:      %[[#Test:]] = OpVariable69; VK-NEXT: OpInBoundsAccessChain70; VK-NEXT: OpStore71; VK-NEXT: OpReturn72define spir_func void @test(ptr noundef align 8 %_arg) {73  %var = alloca i8, align 874  call void @llvm.lifetime.start.p0(ptr nonnull %var)75  %KernelFunc = getelementptr inbounds i8, ptr %var, i64 176  store i8 0, ptr %KernelFunc, align 877  call void @llvm.lifetime.end.p0(ptr nonnull %var)78  ret void79}80 81declare void @llvm.lifetime.start.p0(ptr nocapture)82declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg)83declare void @llvm.lifetime.end.p0(ptr nocapture)84