brintos

brintos / llvm-project-archived public Read only

0
0
Text · 17.9 KiB · 8c8fc50 Raw
313 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 @_Z17__spirv_GroupSMaxiij(i32, i32, i32) -> i32 attributes {convergent, no_unwind, will_return}6// CHECK:         llvm.func spir_funccc @_Z17__spirv_GroupUMaxiij(i32, i32, i32) -> i32 attributes {convergent, no_unwind, will_return}7// CHECK:         llvm.func spir_funccc @_Z17__spirv_GroupFMaxiif(i32, i32, f32) -> f32 attributes {convergent, no_unwind, will_return}8// CHECK:         llvm.func spir_funccc @_Z17__spirv_GroupSMiniij(i32, i32, i32) -> i32 attributes {convergent, no_unwind, will_return}9// CHECK:         llvm.func spir_funccc @_Z17__spirv_GroupUMiniij(i32, i32, i32) -> i32 attributes {convergent, no_unwind, will_return}10// CHECK:         llvm.func spir_funccc @_Z17__spirv_GroupFMiniif(i32, i32, f32) -> f32 attributes {convergent, no_unwind, will_return}11// CHECK:         llvm.func spir_funccc @_Z17__spirv_GroupFAddiif(i32, i32, f32) -> f32 attributes {convergent, no_unwind, will_return}12// CHECK:         llvm.func spir_funccc @_Z17__spirv_GroupIAddiij(i32, i32, i32) -> i32 attributes {convergent, no_unwind, will_return}13 14// CHECK-LABEL:   llvm.func @group_reduce_iadd(15// CHECK-SAME:                                 %[[VAL_0:.*]]: i32) -> i32 {16// CHECK:           %[[VAL_1:.*]] = llvm.mlir.constant(2 : i32) : i3217// CHECK:           %[[VAL_2:.*]] = llvm.mlir.constant(0 : i32) : i3218// CHECK:           %[[VAL_3:.*]] = llvm.call spir_funccc @_Z17__spirv_GroupIAddiij(%[[VAL_1]], %[[VAL_2]], %[[VAL_0]]) {convergent, no_unwind, will_return} : (i32, i32, i32) -> i3219// CHECK:           llvm.return %[[VAL_3]] : i3220// CHECK:         }21spirv.func @group_reduce_iadd(%arg0: i32) -> i32 "None" {22  %0 = spirv.GroupIAdd <Workgroup> <Reduce> %arg0 : i3223  spirv.ReturnValue %0 : i3224}25 26// CHECK-LABEL:   llvm.func @group_reduce_fadd(27// CHECK-SAME:                                 %[[VAL_0:.*]]: f32) -> f32 {28// CHECK:           %[[VAL_1:.*]] = llvm.mlir.constant(2 : i32) : i3229// CHECK:           %[[VAL_2:.*]] = llvm.mlir.constant(0 : i32) : i3230// CHECK:           %[[VAL_3:.*]] = llvm.call spir_funccc @_Z17__spirv_GroupFAddiif(%[[VAL_1]], %[[VAL_2]], %[[VAL_0]]) {convergent, no_unwind, will_return} : (i32, i32, f32) -> f3231// CHECK:           llvm.return %[[VAL_3]] : f3232// CHECK:         }33spirv.func @group_reduce_fadd(%arg0: f32) -> f32 "None" {34  %0 = spirv.GroupFAdd <Workgroup> <Reduce> %arg0 : f3235  spirv.ReturnValue %0 : f3236}37 38// CHECK-LABEL:   llvm.func @group_reduce_fmin(39// CHECK-SAME:                                 %[[VAL_0:.*]]: f32) -> f32 {40// CHECK:           %[[VAL_1:.*]] = llvm.mlir.constant(2 : i32) : i3241// CHECK:           %[[VAL_2:.*]] = llvm.mlir.constant(0 : i32) : i3242// CHECK:           %[[VAL_3:.*]] = llvm.call spir_funccc @_Z17__spirv_GroupFMiniif(%[[VAL_1]], %[[VAL_2]], %[[VAL_0]]) {convergent, no_unwind, will_return} : (i32, i32, f32) -> f3243// CHECK:           llvm.return %[[VAL_3]] : f3244// CHECK:         }45spirv.func @group_reduce_fmin(%arg0: f32) -> f32 "None" {46  %0 = spirv.GroupFMin <Workgroup> <Reduce> %arg0 : f3247  spirv.ReturnValue %0 : f3248}49 50// CHECK-LABEL:   llvm.func @group_reduce_umin(51// CHECK-SAME:                                 %[[VAL_0:.*]]: i32) -> i32 {52// CHECK:           %[[VAL_1:.*]] = llvm.mlir.constant(2 : i32) : i3253// CHECK:           %[[VAL_2:.*]] = llvm.mlir.constant(0 : i32) : i3254// CHECK:           %[[VAL_3:.*]] = llvm.call spir_funccc @_Z17__spirv_GroupUMiniij(%[[VAL_1]], %[[VAL_2]], %[[VAL_0]]) {convergent, no_unwind, will_return} : (i32, i32, i32) -> i3255// CHECK:           llvm.return %[[VAL_3]] : i3256// CHECK:         }57spirv.func @group_reduce_umin(%arg0: i32) -> i32 "None" {58  %0 = spirv.GroupUMin <Workgroup> <Reduce> %arg0 : i3259  spirv.ReturnValue %0 : i3260}61 62// CHECK-LABEL:   llvm.func @group_reduce_smin(63// CHECK-SAME:                                 %[[VAL_0:.*]]: i32) -> i32 {64// CHECK:           %[[VAL_1:.*]] = llvm.mlir.constant(2 : i32) : i3265// CHECK:           %[[VAL_2:.*]] = llvm.mlir.constant(0 : i32) : i3266// CHECK:           %[[VAL_3:.*]] = llvm.call spir_funccc @_Z17__spirv_GroupSMiniij(%[[VAL_1]], %[[VAL_2]], %[[VAL_0]]) {convergent, no_unwind, will_return} : (i32, i32, i32) -> i3267// CHECK:           llvm.return %[[VAL_3]] : i3268// CHECK:         }69spirv.func @group_reduce_smin(%arg0: i32) -> i32 "None" {70  %0 = spirv.GroupSMin <Workgroup> <Reduce> %arg0 : i3271  spirv.ReturnValue %0 : i3272}73 74// CHECK-LABEL:   llvm.func @group_reduce_fmax(75// CHECK-SAME:                                 %[[VAL_0:.*]]: f32) -> f32 {76// CHECK:           %[[VAL_1:.*]] = llvm.mlir.constant(2 : i32) : i3277// CHECK:           %[[VAL_2:.*]] = llvm.mlir.constant(0 : i32) : i3278// CHECK:           %[[VAL_3:.*]] = llvm.call spir_funccc @_Z17__spirv_GroupFMaxiif(%[[VAL_1]], %[[VAL_2]], %[[VAL_0]]) {convergent, no_unwind, will_return} : (i32, i32, f32) -> f3279// CHECK:           llvm.return %[[VAL_3]] : f3280// CHECK:         }81spirv.func @group_reduce_fmax(%arg0: f32) -> f32 "None" {82  %0 = spirv.GroupFMax <Workgroup> <Reduce> %arg0 : f3283  spirv.ReturnValue %0 : f3284}85 86// CHECK-LABEL:   llvm.func @group_reduce_umax(87// CHECK-SAME:                                 %[[VAL_0:.*]]: i32) -> i32 {88// CHECK:           %[[VAL_1:.*]] = llvm.mlir.constant(2 : i32) : i3289// CHECK:           %[[VAL_2:.*]] = llvm.mlir.constant(0 : i32) : i3290// CHECK:           %[[VAL_3:.*]] = llvm.call spir_funccc @_Z17__spirv_GroupUMaxiij(%[[VAL_1]], %[[VAL_2]], %[[VAL_0]]) {convergent, no_unwind, will_return} : (i32, i32, i32) -> i3291// CHECK:           llvm.return %[[VAL_3]] : i3292// CHECK:         }93spirv.func @group_reduce_umax(%arg0: i32) -> i32 "None" {94  %0 = spirv.GroupUMax <Workgroup> <Reduce> %arg0 : i3295  spirv.ReturnValue %0 : i3296}97 98// CHECK-LABEL:   llvm.func @group_reduce_smax(99// CHECK-SAME:                                 %[[VAL_0:.*]]: i32) -> i32 {100// CHECK:           %[[VAL_1:.*]] = llvm.mlir.constant(2 : i32) : i32101// CHECK:           %[[VAL_2:.*]] = llvm.mlir.constant(0 : i32) : i32102// CHECK:           %[[VAL_3:.*]] = llvm.call spir_funccc @_Z17__spirv_GroupSMaxiij(%[[VAL_1]], %[[VAL_2]], %[[VAL_0]]) {convergent, no_unwind, will_return} : (i32, i32, i32) -> i32103// CHECK:           llvm.return %[[VAL_3]] : i32104// CHECK:         }105spirv.func @group_reduce_smax(%arg0: i32) -> i32 "None" {106  %0 = spirv.GroupSMax <Workgroup> <Reduce> %arg0 : i32107  spirv.ReturnValue %0 : i32108}109 110// CHECK-LABEL:   llvm.func @group_inclusive_scan_iadd(111// CHECK-SAME:                                         %[[VAL_0:.*]]: i32) -> i32 {112// CHECK:           %[[VAL_1:.*]] = llvm.mlir.constant(2 : i32) : i32113// CHECK:           %[[VAL_2:.*]] = llvm.mlir.constant(1 : i32) : i32114// CHECK:           %[[VAL_3:.*]] = llvm.call spir_funccc @_Z17__spirv_GroupIAddiij(%[[VAL_1]], %[[VAL_2]], %[[VAL_0]]) {convergent, no_unwind, will_return} : (i32, i32, i32) -> i32115// CHECK:           llvm.return %[[VAL_3]] : i32116// CHECK:         }117spirv.func @group_inclusive_scan_iadd(%arg0: i32) -> i32 "None" {118  %0 = spirv.GroupIAdd <Workgroup> <InclusiveScan> %arg0 : i32119  spirv.ReturnValue %0 : i32120}121 122// CHECK-LABEL:   llvm.func @group_inclusive_scan_fadd(123// CHECK-SAME:                                         %[[VAL_0:.*]]: f32) -> f32 {124// CHECK:           %[[VAL_1:.*]] = llvm.mlir.constant(2 : i32) : i32125// CHECK:           %[[VAL_2:.*]] = llvm.mlir.constant(1 : i32) : i32126// CHECK:           %[[VAL_3:.*]] = llvm.call spir_funccc @_Z17__spirv_GroupFAddiif(%[[VAL_1]], %[[VAL_2]], %[[VAL_0]]) {convergent, no_unwind, will_return} : (i32, i32, f32) -> f32127// CHECK:           llvm.return %[[VAL_3]] : f32128// CHECK:         }129spirv.func @group_inclusive_scan_fadd(%arg0: f32) -> f32 "None" {130  %0 = spirv.GroupFAdd <Workgroup> <InclusiveScan> %arg0 : f32131  spirv.ReturnValue %0 : f32132}133 134// CHECK-LABEL:   llvm.func @group_inclusive_scan_fmin(135// CHECK-SAME:                                         %[[VAL_0:.*]]: f32) -> f32 {136// CHECK:           %[[VAL_1:.*]] = llvm.mlir.constant(2 : i32) : i32137// CHECK:           %[[VAL_2:.*]] = llvm.mlir.constant(1 : i32) : i32138// CHECK:           %[[VAL_3:.*]] = llvm.call spir_funccc @_Z17__spirv_GroupFMiniif(%[[VAL_1]], %[[VAL_2]], %[[VAL_0]]) {convergent, no_unwind, will_return} : (i32, i32, f32) -> f32139// CHECK:           llvm.return %[[VAL_3]] : f32140// CHECK:         }141spirv.func @group_inclusive_scan_fmin(%arg0: f32) -> f32 "None" {142  %0 = spirv.GroupFMin <Workgroup> <InclusiveScan> %arg0 : f32143  spirv.ReturnValue %0 : f32144}145 146// CHECK-LABEL:   llvm.func @group_inclusive_scan_umin(147// CHECK-SAME:                                         %[[VAL_0:.*]]: i32) -> i32 {148// CHECK:           %[[VAL_1:.*]] = llvm.mlir.constant(2 : i32) : i32149// CHECK:           %[[VAL_2:.*]] = llvm.mlir.constant(1 : i32) : i32150// CHECK:           %[[VAL_3:.*]] = llvm.call spir_funccc @_Z17__spirv_GroupUMiniij(%[[VAL_1]], %[[VAL_2]], %[[VAL_0]]) {convergent, no_unwind, will_return} : (i32, i32, i32) -> i32151// CHECK:           llvm.return %[[VAL_3]] : i32152// CHECK:         }153spirv.func @group_inclusive_scan_umin(%arg0: i32) -> i32 "None" {154  %0 = spirv.GroupUMin <Workgroup> <InclusiveScan> %arg0 : i32155  spirv.ReturnValue %0 : i32156}157 158// CHECK-LABEL:   llvm.func @group_inclusive_scan_smin(159// CHECK-SAME:                                         %[[VAL_0:.*]]: i32) -> i32 {160// CHECK:           %[[VAL_1:.*]] = llvm.mlir.constant(2 : i32) : i32161// CHECK:           %[[VAL_2:.*]] = llvm.mlir.constant(1 : i32) : i32162// CHECK:           %[[VAL_3:.*]] = llvm.call spir_funccc @_Z17__spirv_GroupSMiniij(%[[VAL_1]], %[[VAL_2]], %[[VAL_0]]) {convergent, no_unwind, will_return} : (i32, i32, i32) -> i32163// CHECK:           llvm.return %[[VAL_3]] : i32164// CHECK:         }165spirv.func @group_inclusive_scan_smin(%arg0: i32) -> i32 "None" {166  %0 = spirv.GroupSMin <Workgroup> <InclusiveScan> %arg0 : i32167  spirv.ReturnValue %0 : i32168}169 170// CHECK-LABEL:   llvm.func @group_inclusive_scan_fmax(171// CHECK-SAME:                                         %[[VAL_0:.*]]: f32) -> f32 {172// CHECK:           %[[VAL_1:.*]] = llvm.mlir.constant(2 : i32) : i32173// CHECK:           %[[VAL_2:.*]] = llvm.mlir.constant(1 : i32) : i32174// CHECK:           %[[VAL_3:.*]] = llvm.call spir_funccc @_Z17__spirv_GroupFMaxiif(%[[VAL_1]], %[[VAL_2]], %[[VAL_0]]) {convergent, no_unwind, will_return} : (i32, i32, f32) -> f32175// CHECK:           llvm.return %[[VAL_3]] : f32176// CHECK:         }177spirv.func @group_inclusive_scan_fmax(%arg0: f32) -> f32 "None" {178  %0 = spirv.GroupFMax <Workgroup> <InclusiveScan> %arg0 : f32179  spirv.ReturnValue %0 : f32180}181 182// CHECK-LABEL:   llvm.func @group_inclusive_scan_umax(183// CHECK-SAME:                                         %[[VAL_0:.*]]: i32) -> i32 {184// CHECK:           %[[VAL_1:.*]] = llvm.mlir.constant(2 : i32) : i32185// CHECK:           %[[VAL_2:.*]] = llvm.mlir.constant(1 : i32) : i32186// CHECK:           %[[VAL_3:.*]] = llvm.call spir_funccc @_Z17__spirv_GroupUMaxiij(%[[VAL_1]], %[[VAL_2]], %[[VAL_0]]) {convergent, no_unwind, will_return} : (i32, i32, i32) -> i32187// CHECK:           llvm.return %[[VAL_3]] : i32188// CHECK:         }189spirv.func @group_inclusive_scan_umax(%arg0: i32) -> i32 "None" {190  %0 = spirv.GroupUMax <Workgroup> <InclusiveScan> %arg0 : i32191  spirv.ReturnValue %0 : i32192}193 194// CHECK-LABEL:   llvm.func @group_inclusive_scan_smax(195// CHECK-SAME:                                         %[[VAL_0:.*]]: i32) -> i32 {196// CHECK:           %[[VAL_1:.*]] = llvm.mlir.constant(2 : i32) : i32197// CHECK:           %[[VAL_2:.*]] = llvm.mlir.constant(2 : i32) : i32198// CHECK:           %[[VAL_3:.*]] = llvm.call spir_funccc @_Z17__spirv_GroupSMaxiij(%[[VAL_1]], %[[VAL_2]], %[[VAL_0]]) {convergent, no_unwind, will_return} : (i32, i32, i32) -> i32199// CHECK:           llvm.return %[[VAL_3]] : i32200// CHECK:         }201spirv.func @group_inclusive_scan_smax(%arg0: i32) -> i32 "None" {202  %0 = spirv.GroupSMax <Workgroup> <ExclusiveScan> %arg0 : i32203  spirv.ReturnValue %0 : i32204}205 206// CHECK-LABEL:   llvm.func @group_exclusive_scan_iadd(207// CHECK-SAME:                                         %[[VAL_0:.*]]: i32) -> i32 {208// CHECK:           %[[VAL_1:.*]] = llvm.mlir.constant(2 : i32) : i32209// CHECK:           %[[VAL_2:.*]] = llvm.mlir.constant(2 : i32) : i32210// CHECK:           %[[VAL_3:.*]] = llvm.call spir_funccc @_Z17__spirv_GroupIAddiij(%[[VAL_1]], %[[VAL_2]], %[[VAL_0]]) {convergent, no_unwind, will_return} : (i32, i32, i32) -> i32211// CHECK:           llvm.return %[[VAL_3]] : i32212// CHECK:         }213spirv.func @group_exclusive_scan_iadd(%arg0: i32) -> i32 "None" {214  %0 = spirv.GroupIAdd <Workgroup> <ExclusiveScan> %arg0 : i32215  spirv.ReturnValue %0 : i32216}217 218// CHECK-LABEL:   llvm.func @group_exclusive_scan_fadd(219// CHECK-SAME:                                         %[[VAL_0:.*]]: f32) -> f32 {220// CHECK:           %[[VAL_1:.*]] = llvm.mlir.constant(2 : i32) : i32221// CHECK:           %[[VAL_2:.*]] = llvm.mlir.constant(2 : i32) : i32222// CHECK:           %[[VAL_3:.*]] = llvm.call spir_funccc @_Z17__spirv_GroupFAddiif(%[[VAL_1]], %[[VAL_2]], %[[VAL_0]]) {convergent, no_unwind, will_return} : (i32, i32, f32) -> f32223// CHECK:           llvm.return %[[VAL_3]] : f32224// CHECK:         }225spirv.func @group_exclusive_scan_fadd(%arg0: f32) -> f32 "None" {226  %0 = spirv.GroupFAdd <Workgroup> <ExclusiveScan> %arg0 : f32227  spirv.ReturnValue %0 : f32228}229 230// CHECK-LABEL:   llvm.func @group_exclusive_scan_fmin(231// CHECK-SAME:                                         %[[VAL_0:.*]]: f32) -> f32 {232// CHECK:           %[[VAL_1:.*]] = llvm.mlir.constant(2 : i32) : i32233// CHECK:           %[[VAL_2:.*]] = llvm.mlir.constant(2 : i32) : i32234// CHECK:           %[[VAL_3:.*]] = llvm.call spir_funccc @_Z17__spirv_GroupFMiniif(%[[VAL_1]], %[[VAL_2]], %[[VAL_0]]) {convergent, no_unwind, will_return} : (i32, i32, f32) -> f32235// CHECK:           llvm.return %[[VAL_3]] : f32236// CHECK:         }237spirv.func @group_exclusive_scan_fmin(%arg0: f32) -> f32 "None" {238  %0 = spirv.GroupFMin <Workgroup> <ExclusiveScan> %arg0 : f32239  spirv.ReturnValue %0 : f32240}241 242// CHECK-LABEL:   llvm.func @group_exclusive_scan_umin(243// CHECK-SAME:                                         %[[VAL_0:.*]]: i32) -> i32 {244// CHECK:           %[[VAL_1:.*]] = llvm.mlir.constant(2 : i32) : i32245// CHECK:           %[[VAL_2:.*]] = llvm.mlir.constant(2 : i32) : i32246// CHECK:           %[[VAL_3:.*]] = llvm.call spir_funccc @_Z17__spirv_GroupUMiniij(%[[VAL_1]], %[[VAL_2]], %[[VAL_0]]) {convergent, no_unwind, will_return} : (i32, i32, i32) -> i32247// CHECK:           llvm.return %[[VAL_3]] : i32248// CHECK:         }249spirv.func @group_exclusive_scan_umin(%arg0: i32) -> i32 "None" {250  %0 = spirv.GroupUMin <Workgroup> <ExclusiveScan> %arg0 : i32251  spirv.ReturnValue %0 : i32252}253 254// CHECK-LABEL:   llvm.func @group_exclusive_scan_smin(255// CHECK-SAME:                                         %[[VAL_0:.*]]: i32) -> i32 {256// CHECK:           %[[VAL_1:.*]] = llvm.mlir.constant(2 : i32) : i32257// CHECK:           %[[VAL_2:.*]] = llvm.mlir.constant(2 : i32) : i32258// CHECK:           %[[VAL_3:.*]] = llvm.call spir_funccc @_Z17__spirv_GroupSMiniij(%[[VAL_1]], %[[VAL_2]], %[[VAL_0]]) {convergent, no_unwind, will_return} : (i32, i32, i32) -> i32259// CHECK:           llvm.return %[[VAL_3]] : i32260// CHECK:         }261spirv.func @group_exclusive_scan_smin(%arg0: i32) -> i32 "None" {262  %0 = spirv.GroupSMin <Workgroup> <ExclusiveScan> %arg0 : i32263  spirv.ReturnValue %0 : i32264}265 266// CHECK-LABEL:   llvm.func @group_exclusive_scan_fmax(267// CHECK-SAME:                                         %[[VAL_0:.*]]: f32) -> f32 {268// CHECK:           %[[VAL_1:.*]] = llvm.mlir.constant(2 : i32) : i32269// CHECK:           %[[VAL_2:.*]] = llvm.mlir.constant(2 : i32) : i32270// CHECK:           %[[VAL_3:.*]] = llvm.call spir_funccc @_Z17__spirv_GroupFMaxiif(%[[VAL_1]], %[[VAL_2]], %[[VAL_0]]) {convergent, no_unwind, will_return} : (i32, i32, f32) -> f32271// CHECK:           llvm.return %[[VAL_3]] : f32272// CHECK:         }273spirv.func @group_exclusive_scan_fmax(%arg0: f32) -> f32 "None" {274  %0 = spirv.GroupFMax <Workgroup> <ExclusiveScan> %arg0 : f32275  spirv.ReturnValue %0 : f32276}277 278// CHECK-LABEL:   llvm.func @group_exclusive_scan_umax(279// CHECK-SAME:                                         %[[VAL_0:.*]]: i32) -> i32 {280// CHECK:           %[[VAL_1:.*]] = llvm.mlir.constant(2 : i32) : i32281// CHECK:           %[[VAL_2:.*]] = llvm.mlir.constant(2 : i32) : i32282// CHECK:           %[[VAL_3:.*]] = llvm.call spir_funccc @_Z17__spirv_GroupUMaxiij(%[[VAL_1]], %[[VAL_2]], %[[VAL_0]]) {convergent, no_unwind, will_return} : (i32, i32, i32) -> i32283// CHECK:           llvm.return %[[VAL_3]] : i32284// CHECK:         }285spirv.func @group_exclusive_scan_umax(%arg0: i32) -> i32 "None" {286  %0 = spirv.GroupUMax <Workgroup> <ExclusiveScan> %arg0 : i32287  spirv.ReturnValue %0 : i32288}289 290// CHECK-LABEL:   llvm.func @group_exclusive_scan_smax(291// CHECK-SAME:                                         %[[VAL_0:.*]]: i32) -> i32 {292// CHECK:           %[[VAL_1:.*]] = llvm.mlir.constant(2 : i32) : i32293// CHECK:           %[[VAL_2:.*]] = llvm.mlir.constant(2 : i32) : i32294// CHECK:           %[[VAL_3:.*]] = llvm.call spir_funccc @_Z17__spirv_GroupSMaxiij(%[[VAL_1]], %[[VAL_2]], %[[VAL_0]]) {convergent, no_unwind, will_return} : (i32, i32, i32) -> i32295// CHECK:           llvm.return %[[VAL_3]] : i32296// CHECK:         }297spirv.func @group_exclusive_scan_smax(%arg0: i32) -> i32 "None" {298  %0 = spirv.GroupSMax <Workgroup> <ExclusiveScan> %arg0 : i32299  spirv.ReturnValue %0 : i32300}301 302// CHECK-LABEL:   llvm.func @subgroup_exclusive_scan_smax(303// CHECK-SAME:                                            %[[VAL_0:.*]]: i32) -> i32 {304// CHECK:           %[[VAL_1:.*]] = llvm.mlir.constant(3 : i32) : i32305// CHECK:           %[[VAL_2:.*]] = llvm.mlir.constant(2 : i32) : i32306// CHECK:           %[[VAL_3:.*]] = llvm.call spir_funccc @_Z17__spirv_GroupSMaxiij(%[[VAL_1]], %[[VAL_2]], %[[VAL_0]]) {convergent, no_unwind, will_return} : (i32, i32, i32) -> i32307// CHECK:           llvm.return %[[VAL_3]] : i32308// CHECK:         }309spirv.func @subgroup_exclusive_scan_smax(%arg0: i32) -> i32 "None" {310  %0 = spirv.GroupSMax <Subgroup> <ExclusiveScan> %arg0 : i32311  spirv.ReturnValue %0 : i32312}313