brintos

brintos / llvm-project-archived public Read only

0
0
Text · 15.6 KiB · ab174ba Raw
247 lines · plain
1// RUN: mlir-opt -convert-spirv-to-llvm %s | FileCheck %s2 3// NOTE: Assertions have been autogenerated by utils/generate-test-checks.py4 5// CHECK-LABEL:   llvm.func spir_funccc @_Z33__spirv_GroupNonUniformLogicalXoriib(i32, i32, i1) -> i1 attributes {convergent, no_unwind, will_return}6// CHECK:         llvm.func spir_funccc @_Z32__spirv_GroupNonUniformLogicalOriib(i32, i32, i1) -> i1 attributes {convergent, no_unwind, will_return}7// CHECK:         llvm.func spir_funccc @_Z33__spirv_GroupNonUniformLogicalAndiib(i32, i32, i1) -> i1 attributes {convergent, no_unwind, will_return}8// CHECK:         llvm.func spir_funccc @_Z33__spirv_GroupNonUniformBitwiseXoriij(i32, i32, i32) -> i32 attributes {convergent, no_unwind, will_return}9// CHECK:         llvm.func spir_funccc @_Z32__spirv_GroupNonUniformBitwiseOriij(i32, i32, i32) -> i32 attributes {convergent, no_unwind, will_return}10// CHECK:         llvm.func spir_funccc @_Z33__spirv_GroupNonUniformBitwiseAndiij(i32, i32, i32) -> i32 attributes {convergent, no_unwind, will_return}11// CHECK:         llvm.func spir_funccc @_Z27__spirv_GroupNonUniformSMaxiijj(i32, i32, i32, i32) -> i32 attributes {convergent, no_unwind, will_return}12// CHECK:         llvm.func spir_funccc @_Z27__spirv_GroupNonUniformFMaxiif(i32, i32, f32) -> f32 attributes {convergent, no_unwind, will_return}13// CHECK:         llvm.func spir_funccc @_Z27__spirv_GroupNonUniformUMaxiij(i32, i32, i32) -> i32 attributes {convergent, no_unwind, will_return}14// CHECK:         llvm.func spir_funccc @_Z27__spirv_GroupNonUniformSMaxiij(i32, i32, i32) -> i32 attributes {convergent, no_unwind, will_return}15// CHECK:         llvm.func spir_funccc @_Z27__spirv_GroupNonUniformFMiniifj(i32, i32, f32, i32) -> f32 attributes {convergent, no_unwind, will_return}16// CHECK:         llvm.func spir_funccc @_Z27__spirv_GroupNonUniformFMiniif(i32, i32, f32) -> f32 attributes {convergent, no_unwind, will_return}17// CHECK:         llvm.func spir_funccc @_Z27__spirv_GroupNonUniformUMiniij(i32, i32, i32) -> i32 attributes {convergent, no_unwind, will_return}18// CHECK:         llvm.func spir_funccc @_Z27__spirv_GroupNonUniformSMiniij(i32, i32, i32) -> i32 attributes {convergent, no_unwind, will_return}19// CHECK:         llvm.func spir_funccc @_Z27__spirv_GroupNonUniformFMuliif(i32, i32, f32) -> f32 attributes {convergent, no_unwind, will_return}20// CHECK:         llvm.func spir_funccc @_Z27__spirv_GroupNonUniformIMuliijj(i32, i32, i32, i32) -> i32 attributes {convergent, no_unwind, will_return}21// CHECK:         llvm.func spir_funccc @_Z27__spirv_GroupNonUniformFAddiifj(i32, i32, f32, i32) -> f32 attributes {convergent, no_unwind, will_return}22// CHECK:         llvm.func spir_funccc @_Z27__spirv_GroupNonUniformIAddiij(i32, i32, i32) -> i32 attributes {convergent, no_unwind, will_return}23 24// CHECK-LABEL:   llvm.func @non_uniform_iadd(25// CHECK-SAME:                                %[[VAL_0:.*]]: i32) -> i32 {26// CHECK:           %[[VAL_1:.*]] = llvm.mlir.constant(3 : i32) : i3227// CHECK:           %[[VAL_2:.*]] = llvm.mlir.constant(0 : i32) : i3228// CHECK:           %[[VAL_3:.*]] = llvm.call spir_funccc @_Z27__spirv_GroupNonUniformIAddiij(%[[VAL_1]], %[[VAL_2]], %[[VAL_0]]) {convergent, no_unwind, will_return} : (i32, i32, i32) -> i3229// CHECK:           llvm.return %[[VAL_3]] : i3230// CHECK:         }31spirv.func @non_uniform_iadd(%arg0: i32) -> i32 "None" {32  %0 = spirv.GroupNonUniformIAdd <Subgroup> <Reduce> %arg0 : i32 -> i3233  spirv.ReturnValue %0 : i3234}35 36// CHECK-LABEL:   llvm.func @non_uniform_fadd(37// CHECK-SAME:                                %[[VAL_0:.*]]: f32) -> f32 {38// CHECK:           %[[VAL_1:.*]] = llvm.mlir.constant(16 : i32) : i3239// CHECK:           %[[VAL_2:.*]] = llvm.mlir.constant(3 : i32) : i3240// CHECK:           %[[VAL_3:.*]] = llvm.mlir.constant(3 : i32) : i3241// CHECK:           %[[VAL_4:.*]] = llvm.call spir_funccc @_Z27__spirv_GroupNonUniformFAddiifj(%[[VAL_2]], %[[VAL_3]], %[[VAL_0]], %[[VAL_1]]) {convergent, no_unwind, will_return} : (i32, i32, f32, i32) -> f3242// CHECK:           llvm.return %[[VAL_4]] : f3243// CHECK:         }44spirv.func @non_uniform_fadd(%arg0: f32) -> f32 "None" {45  %0 = spirv.Constant 16 : i3246  %1 = spirv.GroupNonUniformFAdd <Subgroup> <ClusteredReduce> %arg0 cluster_size(%0) : f32, i32 -> f3247  spirv.ReturnValue %1 : f3248}49 50// CHECK-LABEL:   llvm.func @non_uniform_imul(51// CHECK-SAME:                                %[[VAL_0:.*]]: i32) -> i32 {52// CHECK:           %[[VAL_1:.*]] = llvm.mlir.constant(16 : i32) : i3253// CHECK:           %[[VAL_2:.*]] = llvm.mlir.constant(3 : i32) : i3254// CHECK:           %[[VAL_3:.*]] = llvm.mlir.constant(3 : i32) : i3255// CHECK:           %[[VAL_4:.*]] = llvm.call spir_funccc @_Z27__spirv_GroupNonUniformIMuliijj(%[[VAL_2]], %[[VAL_3]], %[[VAL_0]], %[[VAL_1]]) {convergent, no_unwind, will_return} : (i32, i32, i32, i32) -> i3256// CHECK:           llvm.return %[[VAL_4]] : i3257// CHECK:         }58spirv.func @non_uniform_imul(%arg0: i32) -> i32 "None" {59  %0 = spirv.Constant 16 : i3260  %1 = spirv.GroupNonUniformIMul <Subgroup> <ClusteredReduce> %arg0 cluster_size(%0) : i32, i32 -> i3261  spirv.ReturnValue %1 : i3262}63 64// CHECK-LABEL:   llvm.func @non_uniform_fmul(65// CHECK-SAME:                                %[[VAL_0:.*]]: f32) -> f32 {66// CHECK:           %[[VAL_1:.*]] = llvm.mlir.constant(3 : i32) : i3267// CHECK:           %[[VAL_2:.*]] = llvm.mlir.constant(0 : i32) : i3268// CHECK:           %[[VAL_3:.*]] = llvm.call spir_funccc @_Z27__spirv_GroupNonUniformFMuliif(%[[VAL_1]], %[[VAL_2]], %[[VAL_0]]) {convergent, no_unwind, will_return} : (i32, i32, f32) -> f3269// CHECK:           llvm.return %[[VAL_3]] : f3270// CHECK:         }71spirv.func @non_uniform_fmul(%arg0: f32) -> f32 "None" {72  %0 = spirv.GroupNonUniformFMul <Subgroup> <Reduce> %arg0 : f32 -> f3273  spirv.ReturnValue %0 : f3274}75 76// CHECK-LABEL:   llvm.func @non_uniform_smin(77// CHECK-SAME:                                %[[VAL_0:.*]]: i32) -> i32 {78// CHECK:           %[[VAL_1:.*]] = llvm.mlir.constant(3 : i32) : i3279// CHECK:           %[[VAL_2:.*]] = llvm.mlir.constant(0 : i32) : i3280// CHECK:           %[[VAL_3:.*]] = llvm.call spir_funccc @_Z27__spirv_GroupNonUniformSMiniij(%[[VAL_1]], %[[VAL_2]], %[[VAL_0]]) {convergent, no_unwind, will_return} : (i32, i32, i32) -> i3281// CHECK:           llvm.return %[[VAL_3]] : i3282// CHECK:         }83spirv.func @non_uniform_smin(%arg0: i32) -> i32 "None" {84  %0 = spirv.GroupNonUniformSMin <Subgroup> <Reduce> %arg0 : i32 -> i3285  spirv.ReturnValue %0 : i3286}87 88// CHECK-LABEL:   llvm.func @non_uniform_umin(89// CHECK-SAME:                                %[[VAL_0:.*]]: i32) -> i32 {90// CHECK:           %[[VAL_1:.*]] = llvm.mlir.constant(3 : i32) : i3291// CHECK:           %[[VAL_2:.*]] = llvm.mlir.constant(0 : i32) : i3292// CHECK:           %[[VAL_3:.*]] = llvm.call spir_funccc @_Z27__spirv_GroupNonUniformUMiniij(%[[VAL_1]], %[[VAL_2]], %[[VAL_0]]) {convergent, no_unwind, will_return} : (i32, i32, i32) -> i3293// CHECK:           llvm.return %[[VAL_3]] : i3294// CHECK:         }95spirv.func @non_uniform_umin(%arg0: i32) -> i32 "None" {96  %0 = spirv.GroupNonUniformUMin <Subgroup> <Reduce> %arg0 : i32 -> i3297  spirv.ReturnValue %0 : i3298}99 100// CHECK-LABEL:   llvm.func @non_uniform_fmin(101// CHECK-SAME:                                %[[VAL_0:.*]]: f32) -> f32 {102// CHECK:           %[[VAL_1:.*]] = llvm.mlir.constant(3 : i32) : i32103// CHECK:           %[[VAL_2:.*]] = llvm.mlir.constant(0 : i32) : i32104// CHECK:           %[[VAL_3:.*]] = llvm.call spir_funccc @_Z27__spirv_GroupNonUniformFMiniif(%[[VAL_1]], %[[VAL_2]], %[[VAL_0]]) {convergent, no_unwind, will_return} : (i32, i32, f32) -> f32105// CHECK:           llvm.return %[[VAL_3]] : f32106// CHECK:         }107spirv.func @non_uniform_fmin(%arg0: f32) -> f32 "None" {108  %0 = spirv.GroupNonUniformFMin <Subgroup> <Reduce> %arg0 : f32 -> f32109  spirv.ReturnValue %0 : f32110}111 112// CHECK-LABEL:   llvm.func @non_uniform_fmin_cluster(113// CHECK-SAME:                                        %[[VAL_0:.*]]: f32) -> f32 {114// CHECK:           %[[VAL_1:.*]] = llvm.mlir.constant(16 : i32) : i32115// CHECK:           %[[VAL_2:.*]] = llvm.mlir.constant(3 : i32) : i32116// CHECK:           %[[VAL_3:.*]] = llvm.mlir.constant(3 : i32) : i32117// CHECK:           %[[VAL_4:.*]] = llvm.call spir_funccc @_Z27__spirv_GroupNonUniformFMiniifj(%[[VAL_2]], %[[VAL_3]], %[[VAL_0]], %[[VAL_1]]) {convergent, no_unwind, will_return} : (i32, i32, f32, i32) -> f32118// CHECK:           llvm.return %[[VAL_4]] : f32119// CHECK:         }120spirv.func @non_uniform_fmin_cluster(%arg0: f32) -> f32 "None" {121  %0 = spirv.Constant 16 : i32122  %1 = spirv.GroupNonUniformFMin <Subgroup> <ClusteredReduce> %arg0 cluster_size(%0) : f32, i32 -> f32123  spirv.ReturnValue %1 : f32124}125 126// CHECK-LABEL:   llvm.func @non_uniform_smax(127// CHECK-SAME:                                %[[VAL_0:.*]]: i32) -> i32 {128// CHECK:           %[[VAL_1:.*]] = llvm.mlir.constant(3 : i32) : i32129// CHECK:           %[[VAL_2:.*]] = llvm.mlir.constant(0 : i32) : i32130// CHECK:           %[[VAL_3:.*]] = llvm.call spir_funccc @_Z27__spirv_GroupNonUniformSMaxiij(%[[VAL_1]], %[[VAL_2]], %[[VAL_0]]) {convergent, no_unwind, will_return} : (i32, i32, i32) -> i32131// CHECK:           llvm.return %[[VAL_3]] : i32132// CHECK:         }133spirv.func @non_uniform_smax(%arg0: i32) -> i32 "None" {134  %0 = spirv.GroupNonUniformSMax <Subgroup> <Reduce> %arg0 : i32 -> i32135  spirv.ReturnValue %0 : i32136}137 138// CHECK-LABEL:   llvm.func @non_uniform_umax(139// CHECK-SAME:                                %[[VAL_0:.*]]: i32) -> i32 {140// CHECK:           %[[VAL_1:.*]] = llvm.mlir.constant(3 : i32) : i32141// CHECK:           %[[VAL_2:.*]] = llvm.mlir.constant(0 : i32) : i32142// CHECK:           %[[VAL_3:.*]] = llvm.call spir_funccc @_Z27__spirv_GroupNonUniformUMaxiij(%[[VAL_1]], %[[VAL_2]], %[[VAL_0]]) {convergent, no_unwind, will_return} : (i32, i32, i32) -> i32143// CHECK:           llvm.return %[[VAL_3]] : i32144// CHECK:         }145spirv.func @non_uniform_umax(%arg0: i32) -> i32 "None" {146  %0 = spirv.GroupNonUniformUMax <Subgroup> <Reduce> %arg0 : i32 -> i32147  spirv.ReturnValue %0 : i32148}149 150// CHECK-LABEL:   llvm.func @non_uniform_fmax(151// CHECK-SAME:                                %[[VAL_0:.*]]: f32) -> f32 {152// CHECK:           %[[VAL_1:.*]] = llvm.mlir.constant(3 : i32) : i32153// CHECK:           %[[VAL_2:.*]] = llvm.mlir.constant(0 : i32) : i32154// CHECK:           %[[VAL_3:.*]] = llvm.call spir_funccc @_Z27__spirv_GroupNonUniformFMaxiif(%[[VAL_1]], %[[VAL_2]], %[[VAL_0]]) {convergent, no_unwind, will_return} : (i32, i32, f32) -> f32155// CHECK:           llvm.return %[[VAL_3]] : f32156// CHECK:         }157spirv.func @non_uniform_fmax(%arg0: f32) -> f32 "None" {158  %0 = spirv.GroupNonUniformFMax <Subgroup> <Reduce> %arg0 : f32 -> f32159  spirv.ReturnValue %0 : f32160}161 162// CHECK-LABEL:   llvm.func @non_uniform_smax_cluster(163// CHECK-SAME:                                        %[[VAL_0:.*]]: i32) -> i32 {164// CHECK:           %[[VAL_1:.*]] = llvm.mlir.constant(16 : i32) : i32165// CHECK:           %[[VAL_2:.*]] = llvm.mlir.constant(3 : i32) : i32166// CHECK:           %[[VAL_3:.*]] = llvm.mlir.constant(3 : i32) : i32167// CHECK:           %[[VAL_4:.*]] = llvm.call spir_funccc @_Z27__spirv_GroupNonUniformSMaxiijj(%[[VAL_2]], %[[VAL_3]], %[[VAL_0]], %[[VAL_1]]) {convergent, no_unwind, will_return} : (i32, i32, i32, i32) -> i32168// CHECK:           llvm.return %[[VAL_4]] : i32169// CHECK:         }170spirv.func @non_uniform_smax_cluster(%arg0: i32) -> i32 "None" {171  %0 = spirv.Constant 16 : i32172  %1 = spirv.GroupNonUniformSMax <Subgroup> <ClusteredReduce> %arg0 cluster_size(%0) : i32, i32 -> i32173  spirv.ReturnValue %1 : i32174}175 176// CHECK-LABEL:   llvm.func @non_uniform_bitwise_and(177// CHECK-SAME:                                       %[[VAL_0:.*]]: i32) -> i32 {178// CHECK:           %[[VAL_1:.*]] = llvm.mlir.constant(3 : i32) : i32179// CHECK:           %[[VAL_2:.*]] = llvm.mlir.constant(0 : i32) : i32180// CHECK:           %[[VAL_3:.*]] = llvm.call spir_funccc @_Z33__spirv_GroupNonUniformBitwiseAndiij(%[[VAL_1]], %[[VAL_2]], %[[VAL_0]]) {convergent, no_unwind, will_return} : (i32, i32, i32) -> i32181// CHECK:           llvm.return %[[VAL_3]] : i32182// CHECK:         }183spirv.func @non_uniform_bitwise_and(%arg0: i32) -> i32 "None" {184  %0 = spirv.GroupNonUniformBitwiseAnd <Subgroup> <Reduce> %arg0 : i32 -> i32185  spirv.ReturnValue %0 : i32186}187 188// CHECK-LABEL:   llvm.func @non_uniform_bitwise_or(189// CHECK-SAME:                                      %[[VAL_0:.*]]: i32) -> i32 {190// CHECK:           %[[VAL_1:.*]] = llvm.mlir.constant(3 : i32) : i32191// CHECK:           %[[VAL_2:.*]] = llvm.mlir.constant(0 : i32) : i32192// CHECK:           %[[VAL_3:.*]] = llvm.call spir_funccc @_Z32__spirv_GroupNonUniformBitwiseOriij(%[[VAL_1]], %[[VAL_2]], %[[VAL_0]]) {convergent, no_unwind, will_return} : (i32, i32, i32) -> i32193// CHECK:           llvm.return %[[VAL_3]] : i32194// CHECK:         }195spirv.func @non_uniform_bitwise_or(%arg0: i32) -> i32 "None" {196  %0 = spirv.GroupNonUniformBitwiseOr <Subgroup> <Reduce> %arg0 : i32 -> i32197  spirv.ReturnValue %0 : i32198}199 200// CHECK-LABEL:   llvm.func @non_uniform_bitwise_xor(201// CHECK-SAME:                                       %[[VAL_0:.*]]: i32) -> i32 {202// CHECK:           %[[VAL_1:.*]] = llvm.mlir.constant(3 : i32) : i32203// CHECK:           %[[VAL_2:.*]] = llvm.mlir.constant(0 : i32) : i32204// CHECK:           %[[VAL_3:.*]] = llvm.call spir_funccc @_Z33__spirv_GroupNonUniformBitwiseXoriij(%[[VAL_1]], %[[VAL_2]], %[[VAL_0]]) {convergent, no_unwind, will_return} : (i32, i32, i32) -> i32205// CHECK:           llvm.return %[[VAL_3]] : i32206// CHECK:         }207spirv.func @non_uniform_bitwise_xor(%arg0: i32) -> i32 "None" {208  %0 = spirv.GroupNonUniformBitwiseXor <Subgroup> <Reduce> %arg0 : i32 -> i32209  spirv.ReturnValue %0 : i32210}211 212// CHECK-LABEL:   llvm.func @non_uniform_logical_and(213// CHECK-SAME:                                       %[[VAL_0:.*]]: i1) -> i1 {214// CHECK:           %[[VAL_1:.*]] = llvm.mlir.constant(3 : i32) : i32215// CHECK:           %[[VAL_2:.*]] = llvm.mlir.constant(0 : i32) : i32216// CHECK:           %[[VAL_3:.*]] = llvm.call spir_funccc @_Z33__spirv_GroupNonUniformLogicalAndiib(%[[VAL_1]], %[[VAL_2]], %[[VAL_0]]) {convergent, no_unwind, will_return} : (i32, i32, i1) -> i1217// CHECK:           llvm.return %[[VAL_3]] : i1218// CHECK:         }219spirv.func @non_uniform_logical_and(%arg0: i1) -> i1 "None" {220  %0 = spirv.GroupNonUniformLogicalAnd <Subgroup> <Reduce> %arg0 : i1 -> i1221  spirv.ReturnValue %0 : i1222}223 224// CHECK-LABEL:   llvm.func @non_uniform_logical_or(225// CHECK-SAME:                                      %[[VAL_0:.*]]: i1) -> i1 {226// CHECK:           %[[VAL_1:.*]] = llvm.mlir.constant(3 : i32) : i32227// CHECK:           %[[VAL_2:.*]] = llvm.mlir.constant(0 : i32) : i32228// CHECK:           %[[VAL_3:.*]] = llvm.call spir_funccc @_Z32__spirv_GroupNonUniformLogicalOriib(%[[VAL_1]], %[[VAL_2]], %[[VAL_0]]) {convergent, no_unwind, will_return} : (i32, i32, i1) -> i1229// CHECK:           llvm.return %[[VAL_3]] : i1230// CHECK:         }231spirv.func @non_uniform_logical_or(%arg0: i1) -> i1 "None" {232  %0 = spirv.GroupNonUniformLogicalOr <Subgroup> <Reduce> %arg0 : i1 -> i1233  spirv.ReturnValue %0 : i1234}235 236// CHECK-LABEL:   llvm.func @non_uniform_logical_xor(237// CHECK-SAME:                                       %[[VAL_0:.*]]: i1) -> i1 {238// CHECK:           %[[VAL_1:.*]] = llvm.mlir.constant(3 : i32) : i32239// CHECK:           %[[VAL_2:.*]] = llvm.mlir.constant(0 : i32) : i32240// CHECK:           %[[VAL_3:.*]] = llvm.call spir_funccc @_Z33__spirv_GroupNonUniformLogicalXoriib(%[[VAL_1]], %[[VAL_2]], %[[VAL_0]]) {convergent, no_unwind, will_return} : (i32, i32, i1) -> i1241// CHECK:           llvm.return %[[VAL_3]] : i1242// CHECK:         }243spirv.func @non_uniform_logical_xor(%arg0: i1) -> i1 "None" {244  %0 = spirv.GroupNonUniformLogicalXor <Subgroup> <Reduce> %arg0 : i1 -> i1245  spirv.ReturnValue %0 : i1246}247