|
| 1 | +; RUN: llc -verify-machineinstrs -O0 -mtriple=spirv-unknown-vulkan-compute %s -o - | FileCheck %s --match-full-lines |
| 2 | +; RUN: %if spirv-tools %{ llc -O0 -mtriple=spirv-unknown-vulkan %s -o - -filetype=obj | spirv-val %} |
| 3 | + |
| 4 | +; CHECK-DAG: %[[#uint:]] = OpTypeInt 32 0 |
| 5 | +; CHECK-DAG: %[[#v2_uint:]] = OpTypeVector %[[#uint]] 2 |
| 6 | +; CHECK-DAG: %[[#double:]] = OpTypeFloat 64 |
| 7 | +; CHECK-DAG: %[[#v2_double:]] = OpTypeVector %[[#double]] 2 |
| 8 | +; CHECK-DAG: %[[#v4_uint:]] = OpTypeVector %[[#uint]] 4 |
| 9 | +@.str = private unnamed_addr constant [3 x i8] c"In\00", align 1 |
| 10 | +@.str.2 = private unnamed_addr constant [4 x i8] c"Out\00", align 1 |
| 11 | + |
| 12 | +define void @main() local_unnamed_addr #0 { |
| 13 | +entry: |
| 14 | + %0 = tail call target("spirv.VulkanBuffer", [0 x <2 x i32>], 12, 0) @llvm.spv.resource.handlefrombinding.tspirv.VulkanBuffer_a0v2i32_12_0t(i32 0, i32 0, i32 1, i32 0, ptr nonnull @.str) |
| 15 | + %1 = tail call target("spirv.VulkanBuffer", [0 x <2 x double>], 12, 1) @llvm.spv.resource.handlefrombinding.tspirv.VulkanBuffer_a0v2f64_12_1t(i32 0, i32 2, i32 1, i32 0, ptr nonnull @.str.2) |
| 16 | + %2 = tail call noundef align 8 dereferenceable(8) ptr addrspace(11) @llvm.spv.resource.getpointer.p11.tspirv.VulkanBuffer_a0v2i32_12_0t(target("spirv.VulkanBuffer", [0 x <2 x i32>], 12, 0) %0, i32 0) |
| 17 | + %3 = load <2 x i32>, ptr addrspace(11) %2, align 8 |
| 18 | + %4 = tail call noundef align 8 dereferenceable(8) ptr addrspace(11) @llvm.spv.resource.getpointer.p11.tspirv.VulkanBuffer_a0v2i32_12_0t(target("spirv.VulkanBuffer", [0 x <2 x i32>], 12, 0) %0, i32 1) |
| 19 | + %5 = load <2 x i32>, ptr addrspace(11) %4, align 8 |
| 20 | +; CHECK: %[[#tmp:]] = OpVectorShuffle %[[#v4_uint]] {{%[0-9]+}} {{%[0-9]+}} 0 2 1 3 |
| 21 | + %6 = shufflevector <2 x i32> %3, <2 x i32> %5, <4 x i32> <i32 0, i32 2, i32 1, i32 3> |
| 22 | +; CHECK: %[[#access:]] = OpAccessChain {{.*}} |
| 23 | + %7 = tail call noundef align 16 dereferenceable(16) ptr addrspace(11) @llvm.spv.resource.getpointer.p11.tspirv.VulkanBuffer_a0v2f64_12_1t(target("spirv.VulkanBuffer", [0 x <2 x double>], 12, 1) %1, i32 0) |
| 24 | +; CHECK: %[[#bitcast:]] = OpBitcast %[[#v2_double]] %[[#tmp]] |
| 25 | +; CHECK: OpStore %[[#access]] %[[#bitcast]] Aligned 16 |
| 26 | + store <4 x i32> %6, ptr addrspace(11) %7, align 16 |
| 27 | + ret void |
| 28 | +} |
0 commit comments