|
| 1 | +// RUN: %clang_cc1 -std=hlsl2021 -finclude-default-header -x hlsl -triple \ |
| 2 | +// RUN: dxil-pc-shadermodel6.3-compute %s -emit-llvm -disable-llvm-passes -o - | \ |
| 3 | +// RUN: FileCheck %s --check-prefixes=CHECK,CHECK-DXIL |
| 4 | +// RUN: %clang_cc1 -std=hlsl2021 -finclude-default-header -x hlsl -triple \ |
| 5 | +// RUN: spirv-pc-vulkan-compute %s -emit-llvm -disable-llvm-passes -o - | \ |
| 6 | +// RUN: FileCheck %s --check-prefixes=CHECK,CHECK-SPIRV |
| 7 | + |
| 8 | +// Test basic lowering to runtime function call. |
| 9 | + |
| 10 | +// CHECK-LABEL: test_int |
| 11 | +int test_int(int expr, uint idx) { |
| 12 | + // CHECK-SPIRV: %[[#entry_tok:]] = call token @llvm.experimental.convergence.entry() |
| 13 | + |
| 14 | + // CHECK-SPIRV: %[[RET:.*]] = call [[TY:.*]] @llvm.spv.wave.read.lane.at.i32([[TY]] %[[#]], i32 %[[#]]) |
| 15 | + // CHECK-DXIL: %[[RET:.*]] = call [[TY:.*]] @llvm.dx.wave.read.lane.at.i32([[TY]] %[[#]], i32 %[[#]]) |
| 16 | + |
| 17 | + // CHECK: ret [[TY]] %[[RET]] |
| 18 | + return WaveReadLaneAt(expr, idx); |
| 19 | +} |
| 20 | + |
| 21 | +// CHECK-DXIL: declare [[TY]] @llvm.dx.wave.read.lane.at.i32([[TY]], i32) #[[#attr:]] |
| 22 | +// CHECK-SPIRV: declare [[TY]] @llvm.spv.wave.read.lane.at.i32([[TY]], i32) #[[#attr:]] |
| 23 | + |
| 24 | +// Test basic lowering to runtime function call with array and float value. |
| 25 | + |
| 26 | +// CHECK-LABEL: test_floatv4 |
| 27 | +float4 test_floatv4(float4 expr, uint idx) { |
| 28 | + // CHECK-SPIRV: %[[#entry_tok1:]] = call token @llvm.experimental.convergence.entry() |
| 29 | + |
| 30 | + // CHECK-SPIRV: %[[RET1:.*]] = call [[TY1:.*]] @llvm.spv.wave.read.lane.at.v4f32([[TY1]] %[[#]], i32 %[[#]]) |
| 31 | + // CHECK-DXIL: %[[RET1:.*]] = call [[TY1:.*]] @llvm.dx.wave.read.lane.at.v4f32([[TY1]] %[[#]], i32 %[[#]]) |
| 32 | + |
| 33 | + // CHECK: ret [[TY1]] %[[RET1]] |
| 34 | + return WaveReadLaneAt(expr, idx); |
| 35 | +} |
| 36 | + |
| 37 | +// CHECK-DXIL: declare [[TY1]] @llvm.dx.wave.read.lane.at.v4f32([[TY1]], i32) #[[#attr]] |
| 38 | +// CHECK-SPIRV: declare [[TY1]] @llvm.spv.wave.read.lane.at.v4f32([[TY1]], i32) #[[#attr]] |
| 39 | + |
| 40 | +// CHECK: attributes #[[#attr]] = {{{.*}} convergent {{.*}}} |
0 commit comments