|
9 | 9 |
|
10 | 10 | // CHECK-LABEL: test_int |
11 | 11 | int test_int(int expr) { |
12 | | - // CHECK-SPIRV: %[[RET:.*]] = call spir_func [[TY:.*]] @llvm.spv.wave.product.i32([[TY]] %[[#]]) |
| 12 | + // CHECK-SPIRV: %[[RET:.*]] = call spir_func [[TY:.*]] @llvm.spv.wave.reduce.product.i32([[TY]] %[[#]]) |
13 | 13 | // CHECK-DXIL: %[[RET:.*]] = call [[TY:.*]] @llvm.dx.wave.product.i32([[TY]] %[[#]]) |
14 | 14 | // CHECK: ret [[TY]] %[[RET]] |
15 | 15 | return WaveActiveProduct(expr); |
16 | 16 | } |
17 | 17 |
|
18 | 18 | // CHECK-DXIL: declare [[TY]] @llvm.dx.wave.product.i32([[TY]]) #[[#attr:]] |
19 | | -// CHECK-SPIRV: declare [[TY]] @llvm.spv.wave.product.i32([[TY]]) #[[#attr:]] |
| 19 | +// CHECK-SPIRV: declare [[TY]] @llvm.spv.wave.reduce.product.i32([[TY]]) #[[#attr:]] |
20 | 20 |
|
21 | 21 | // CHECK-LABEL: test_uint64_t |
22 | 22 | uint64_t test_uint64_t(uint64_t expr) { |
23 | | - // CHECK-SPIRV: %[[RET:.*]] = call spir_func [[TY:.*]] @llvm.spv.wave.product.i64([[TY]] %[[#]]) |
| 23 | + // CHECK-SPIRV: %[[RET:.*]] = call spir_func [[TY:.*]] @llvm.spv.wave.reduce.product.i64([[TY]] %[[#]]) |
24 | 24 | // CHECK-DXIL: %[[RET:.*]] = call [[TY:.*]] @llvm.dx.wave.uproduct.i64([[TY]] %[[#]]) |
25 | 25 | // CHECK: ret [[TY]] %[[RET]] |
26 | 26 | return WaveActiveProduct(expr); |
27 | 27 | } |
28 | 28 |
|
29 | 29 | // CHECK-DXIL: declare [[TY]] @llvm.dx.wave.uproduct.i64([[TY]]) #[[#attr:]] |
30 | | -// CHECK-SPIRV: declare [[TY]] @llvm.spv.wave.product.i64([[TY]]) #[[#attr:]] |
| 30 | +// CHECK-SPIRV: declare [[TY]] @llvm.spv.wave.reduce.product.i64([[TY]]) #[[#attr:]] |
31 | 31 |
|
32 | 32 | // Test basic lowering to runtime function call with array and float value. |
33 | 33 |
|
34 | 34 | // CHECK-LABEL: test_floatv4 |
35 | 35 | float4 test_floatv4(float4 expr) { |
36 | | - // CHECK-SPIRV: %[[RET1:.*]] = call reassoc nnan ninf nsz arcp afn spir_func [[TY1:.*]] @llvm.spv.wave.product.v4f32([[TY1]] %[[#]] |
| 36 | + // CHECK-SPIRV: %[[RET1:.*]] = call reassoc nnan ninf nsz arcp afn spir_func [[TY1:.*]] @llvm.spv.wave.reduce.product.v4f32([[TY1]] %[[#]] |
37 | 37 | // CHECK-DXIL: %[[RET1:.*]] = call reassoc nnan ninf nsz arcp afn [[TY1:.*]] @llvm.dx.wave.product.v4f32([[TY1]] %[[#]]) |
38 | 38 | // CHECK: ret [[TY1]] %[[RET1]] |
39 | 39 | return WaveActiveProduct(expr); |
40 | 40 | } |
41 | 41 |
|
42 | 42 | // CHECK-DXIL: declare [[TY1]] @llvm.dx.wave.product.v4f32([[TY1]]) #[[#attr]] |
43 | | -// CHECK-SPIRV: declare [[TY1]] @llvm.spv.wave.product.v4f32([[TY1]]) #[[#attr]] |
| 43 | +// CHECK-SPIRV: declare [[TY1]] @llvm.spv.wave.reduce.product.v4f32([[TY1]]) #[[#attr]] |
44 | 44 |
|
45 | 45 | // CHECK: attributes #[[#attr]] = {{{.*}} convergent {{.*}}} |
0 commit comments