|
10 | 10 | // CHECK-LABEL: test_int
|
11 | 11 | int test_int(int expr, uint idx) {
|
12 | 12 | // CHECK-SPIRV: %[[#entry_tok0:]] = call token @llvm.experimental.convergence.entry()
|
13 |
| - // CHECK-SPIRV: %[[RET:.*]] = call [[TY:.*]] @llvm.spv.wave.readlane.i32([[TY]] %[[#]], i32 %[[#]]) [ "convergencectrl"(token %[[#entry_tok0]]) ] |
| 13 | + // CHECK-SPIRV: %[[RET:.*]] = call spir_func [[TY:.*]] @llvm.spv.wave.readlane.i32([[TY]] %[[#]], i32 %[[#]]) [ "convergencectrl"(token %[[#entry_tok0]]) ] |
14 | 14 | // CHECK-DXIL: %[[RET:.*]] = call [[TY:.*]] @llvm.dx.wave.readlane.i32([[TY]] %[[#]], i32 %[[#]])
|
15 | 15 | // CHECK: ret [[TY]] %[[RET]]
|
16 | 16 | return WaveReadLaneAt(expr, idx);
|
17 | 17 | }
|
18 | 18 |
|
19 | 19 | // CHECK-DXIL: declare [[TY]] @llvm.dx.wave.readlane.i32([[TY]], i32) #[[#attr:]]
|
20 |
| -// CHECK-SPIRV: declare [[TY]] @llvm.spv.wave.readlane.i32([[TY]], i32) #[[#attr:]] |
| 20 | +// CHECK-SPIRV: declare spir_func [[TY]] @llvm.spv.wave.readlane.i32([[TY]], i32) #[[#attr:]] |
21 | 21 |
|
22 | 22 | #ifdef __HLSL_ENABLE_16_BIT
|
23 | 23 | // CHECK-LABEL: test_int16
|
24 | 24 | int16_t test_int16(int16_t expr, uint idx) {
|
25 | 25 | // CHECK-SPIRV: %[[#entry_tok1:]] = call token @llvm.experimental.convergence.entry()
|
26 |
| - // CHECK-SPIRV: %[[RET:.*]] = call [[TY:.*]] @llvm.spv.wave.readlane.i16([[TY]] %[[#]], i32 %[[#]]) [ "convergencectrl"(token %[[#entry_tok1]]) ] |
| 26 | + // CHECK-SPIRV: %[[RET:.*]] = call spir_func [[TY:.*]] @llvm.spv.wave.readlane.i16([[TY]] %[[#]], i32 %[[#]]) [ "convergencectrl"(token %[[#entry_tok1]]) ] |
27 | 27 | // CHECK-DXIL: %[[RET:.*]] = call [[TY:.*]] @llvm.dx.wave.readlane.i16([[TY]] %[[#]], i32 %[[#]])
|
28 | 28 | // CHECK: ret [[TY]] %[[RET]]
|
29 | 29 | return WaveReadLaneAt(expr, idx);
|
30 | 30 | }
|
31 | 31 |
|
32 | 32 | // CHECK-DXIL: declare [[TY]] @llvm.dx.wave.readlane.i16([[TY]], i32) #[[#attr:]]
|
33 |
| -// CHECK-SPIRV: declare [[TY]] @llvm.spv.wave.readlane.i16([[TY]], i32) #[[#attr:]] |
| 33 | +// CHECK-SPIRV: declare spir_func [[TY]] @llvm.spv.wave.readlane.i16([[TY]], i32) #[[#attr:]] |
34 | 34 | #endif
|
35 | 35 |
|
36 | 36 | // Test basic lowering to runtime function call with array and float values.
|
37 | 37 |
|
38 | 38 | // CHECK-LABEL: test_half
|
39 | 39 | half test_half(half expr, uint idx) {
|
40 | 40 | // CHECK-SPIRV: %[[#entry_tok2:]] = call token @llvm.experimental.convergence.entry()
|
41 |
| - // CHECK-SPIRV: %[[RET:.*]] = call [[TY:.*]] @llvm.spv.wave.readlane.f16([[TY]] %[[#]], i32 %[[#]]) [ "convergencectrl"(token %[[#entry_tok2]]) ] |
| 41 | + // CHECK-SPIRV: %[[RET:.*]] = call spir_func [[TY:.*]] @llvm.spv.wave.readlane.f16([[TY]] %[[#]], i32 %[[#]]) [ "convergencectrl"(token %[[#entry_tok2]]) ] |
42 | 42 | // CHECK-DXIL: %[[RET:.*]] = call [[TY:.*]] @llvm.dx.wave.readlane.f16([[TY]] %[[#]], i32 %[[#]])
|
43 | 43 | // CHECK: ret [[TY]] %[[RET]]
|
44 | 44 | return WaveReadLaneAt(expr, idx);
|
45 | 45 | }
|
46 | 46 |
|
47 | 47 | // CHECK-DXIL: declare [[TY]] @llvm.dx.wave.readlane.f16([[TY]], i32) #[[#attr:]]
|
48 |
| -// CHECK-SPIRV: declare [[TY]] @llvm.spv.wave.readlane.f16([[TY]], i32) #[[#attr:]] |
| 48 | +// CHECK-SPIRV: declare spir_func [[TY]] @llvm.spv.wave.readlane.f16([[TY]], i32) #[[#attr:]] |
49 | 49 |
|
50 | 50 | // CHECK-LABEL: test_double
|
51 | 51 | double test_double(double expr, uint idx) {
|
52 | 52 | // CHECK-SPIRV: %[[#entry_tok3:]] = call token @llvm.experimental.convergence.entry()
|
53 |
| - // CHECK-SPIRV: %[[RET:.*]] = call [[TY:.*]] @llvm.spv.wave.readlane.f64([[TY]] %[[#]], i32 %[[#]]) [ "convergencectrl"(token %[[#entry_tok3]]) ] |
| 53 | + // CHECK-SPIRV: %[[RET:.*]] = call spir_func [[TY:.*]] @llvm.spv.wave.readlane.f64([[TY]] %[[#]], i32 %[[#]]) [ "convergencectrl"(token %[[#entry_tok3]]) ] |
54 | 54 | // CHECK-DXIL: %[[RET:.*]] = call [[TY:.*]] @llvm.dx.wave.readlane.f64([[TY]] %[[#]], i32 %[[#]])
|
55 | 55 | // CHECK: ret [[TY]] %[[RET]]
|
56 | 56 | return WaveReadLaneAt(expr, idx);
|
57 | 57 | }
|
58 | 58 |
|
59 | 59 | // CHECK-DXIL: declare [[TY]] @llvm.dx.wave.readlane.f64([[TY]], i32) #[[#attr:]]
|
60 |
| -// CHECK-SPIRV: declare [[TY]] @llvm.spv.wave.readlane.f64([[TY]], i32) #[[#attr:]] |
| 60 | +// CHECK-SPIRV: declare spir_func [[TY]] @llvm.spv.wave.readlane.f64([[TY]], i32) #[[#attr:]] |
61 | 61 |
|
62 | 62 | // CHECK-LABEL: test_floatv4
|
63 | 63 | float4 test_floatv4(float4 expr, uint idx) {
|
64 | 64 | // CHECK-SPIRV: %[[#entry_tok4:]] = call token @llvm.experimental.convergence.entry()
|
65 |
| - // CHECK-SPIRV: %[[RET1:.*]] = call [[TY1:.*]] @llvm.spv.wave.readlane.v4f32([[TY1]] %[[#]], i32 %[[#]]) [ "convergencectrl"(token %[[#entry_tok4]]) ] |
| 65 | + // CHECK-SPIRV: %[[RET1:.*]] = call spir_func [[TY1:.*]] @llvm.spv.wave.readlane.v4f32([[TY1]] %[[#]], i32 %[[#]]) [ "convergencectrl"(token %[[#entry_tok4]]) ] |
66 | 66 | // CHECK-DXIL: %[[RET1:.*]] = call [[TY1:.*]] @llvm.dx.wave.readlane.v4f32([[TY1]] %[[#]], i32 %[[#]])
|
67 | 67 | // CHECK: ret [[TY1]] %[[RET1]]
|
68 | 68 | return WaveReadLaneAt(expr, idx);
|
69 | 69 | }
|
70 | 70 |
|
71 | 71 | // CHECK-DXIL: declare [[TY1]] @llvm.dx.wave.readlane.v4f32([[TY1]], i32) #[[#attr]]
|
72 |
| -// CHECK-SPIRV: declare [[TY1]] @llvm.spv.wave.readlane.v4f32([[TY1]], i32) #[[#attr]] |
| 72 | +// CHECK-SPIRV: declare spir_func [[TY1]] @llvm.spv.wave.readlane.v4f32([[TY1]], i32) #[[#attr]] |
73 | 73 |
|
74 | 74 | // CHECK: attributes #[[#attr]] = {{{.*}} convergent {{.*}}}
|
0 commit comments