brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.4 KiB · 280a7e4 Raw
65 lines · plain
1; RUN: llc -verify-machineinstrs -O0 -mtriple=spirv-unknown-vulkan-compute %s -o - | FileCheck %s2; RUN: %if spirv-tools %{ llc -O0 -mtriple=spirv-unknown-vulkan %s -o - -filetype=obj | spirv-val %}3 4; CHECK-DAG:     %[[#uint:]] = OpTypeInt 32 05; CHECK-DAG:    %[[#float:]] = OpTypeFloat 326; CHECK-DAG: %[[#float_fp:]] = OpTypePointer Function %[[#float]]7; CHECK-DAG: %[[#float_pp:]] = OpTypePointer Private %[[#float]]8; CHECK-DAG:  %[[#uint_fp:]] = OpTypePointer Function %[[#uint]]9; CHECK-DAG:   %[[#uint_0:]] = OpConstant %[[#uint]] 010; CHECK-DAG:       %[[#sf:]] = OpTypeStruct %[[#float]]11; CHECK-DAG:       %[[#su:]] = OpTypeStruct %[[#uint]]12; CHECK-DAG:       %[[#sfuf:]] = OpTypeStruct %[[#float]] %[[#uint]] %[[#float]]13; CHECK-DAG:    %[[#sf_fp:]] = OpTypePointer Function %[[#sf]]14; CHECK-DAG:    %[[#su_fp:]] = OpTypePointer Function %[[#su]]15; CHECK-DAG:    %[[#sfuf_fp:]] = OpTypePointer Function %[[#sfuf]]16; CHECK-DAG:    %[[#sfuf_pp:]] = OpTypePointer Private %[[#sfuf]]17 18%struct.SF = type { float }19%struct.SU = type { i32 }20%struct.SFUF = type { float, i32, float }21 22@gsfuf = external addrspace(10) global %struct.SFUF23; CHECK: %[[#gsfuf:]] = OpVariable %[[#sfuf_pp]] Private24 25define internal spir_func float @foo() {26  %1 = alloca %struct.SF, align 427; CHECK: %[[#var:]]  = OpVariable %[[#sf_fp]] Function28 29  %2 = load float, ptr %1, align 430; CHECK: %[[#tmp:]]  = OpAccessChain %[[#float_fp]] %[[#var]] %[[#uint_0]]31; CHECK: %[[#val:]]  = OpLoad %[[#float]] %[[#tmp]] Aligned 432 33  ret float %234}35 36define internal spir_func i32 @bar() {37  %1 = alloca %struct.SU, align 438; CHECK: %[[#var:]]  = OpVariable %[[#su_fp]] Function39 40  %2 = load i32, ptr %1, align 441; CHECK: %[[#tmp:]]  = OpAccessChain %[[#uint_fp]] %[[#var]] %[[#uint_0]]42; CHECK: %[[#val:]]  = OpLoad %[[#uint]] %[[#tmp]] Aligned 443 44  ret i32 %245}46 47define internal spir_func float @baz() {48  %1 = alloca %struct.SFUF, align 449; CHECK: %[[#var:]]  = OpVariable %[[#sfuf_fp]] Function50 51  %2 = load float, ptr %1, align 452; CHECK: %[[#tmp:]]  = OpAccessChain %[[#float_fp]] %[[#var]] %[[#uint_0]]53; CHECK: %[[#val:]]  = OpLoad %[[#float]] %[[#tmp]] Aligned 454 55  ret float %256}57 58define internal spir_func float @biz() {59  %2 = load float, ptr addrspace(10) @gsfuf, align 460; CHECK: %[[#tmp:]]  = OpAccessChain %[[#float_pp]] %[[#gsfuf]] %[[#uint_0]]61; CHECK: %[[#val:]]  = OpLoad %[[#float]] %[[#tmp]] Aligned 462 63  ret float %264}65