brintos

brintos / llvm-project-archived public Read only

0
0
Text · 7.0 KiB · e7cf0a8 Raw
151 lines · plain
1// RUN: mlir-translate -no-implicit-module -test-spirv-roundtrip -split-input-file %s | FileCheck %s2 3// RUN: %if spirv-tools %{ rm -rf %t %}4// RUN: %if spirv-tools %{ mkdir %t %}5// RUN: %if spirv-tools %{ mlir-translate --no-implicit-module --serialize-spirv --split-input-file --spirv-save-validation-files-with-prefix=%t/module %s %}6// RUN: %if spirv-tools %{ spirv-val %t %}7 8spirv.module Logical GLSL450 requires #spirv.vce<v1.3, [Shader, Linkage, GroupNonUniformBallot, GroupNonUniformArithmetic, GroupNonUniformClustered, GroupNonUniformShuffle, GroupNonUniformShuffleRelative, GroupNonUniformVote], []> {9  // CHECK-LABEL: @group_non_uniform_ballot10  spirv.func @group_non_uniform_ballot(%predicate: i1) -> vector<4xi32> "None" {11    // CHECK: %{{.*}} = spirv.GroupNonUniformBallot <Workgroup> %{{.*}}: vector<4xi32>12  %0 = spirv.GroupNonUniformBallot <Workgroup> %predicate : vector<4xi32>13    spirv.ReturnValue %0: vector<4xi32>14  }15 16  // CHECK-LABEL: @group_non_uniform_broadcast17  spirv.func @group_non_uniform_broadcast(%value: f32) -> f32 "None" {18    %one = spirv.Constant 1 : i3219    // CHECK: spirv.GroupNonUniformBroadcast <Subgroup> %{{.*}}, %{{.*}} : f32, i3220    %0 = spirv.GroupNonUniformBroadcast <Subgroup> %value, %one : f32, i3221    spirv.ReturnValue %0: f3222  }23 24  // CHECK-LABEL: @group_non_uniform_elect25  spirv.func @group_non_uniform_elect() -> i1 "None" {26    // CHECK: %{{.+}} = spirv.GroupNonUniformElect <Workgroup> : i127    %0 = spirv.GroupNonUniformElect <Workgroup> : i128    spirv.ReturnValue %0: i129  }30 31  // CHECK-LABEL: @group_non_uniform_fadd_reduce32  spirv.func @group_non_uniform_fadd_reduce(%val: f32) -> f32 "None" {33    // CHECK: %{{.+}} = spirv.GroupNonUniformFAdd <Workgroup> <Reduce> %{{.+}} : f32 -> f3234    %0 = spirv.GroupNonUniformFAdd <Workgroup> <Reduce> %val : f32 -> f3235    spirv.ReturnValue %0: f3236  }37 38  // CHECK-LABEL: @group_non_uniform_fmax_reduce39  spirv.func @group_non_uniform_fmax_reduce(%val: f32) -> f32 "None" {40    // CHECK: %{{.+}} = spirv.GroupNonUniformFMax <Workgroup> <Reduce> %{{.+}} : f32 -> f3241    %0 = spirv.GroupNonUniformFMax <Workgroup> <Reduce> %val : f32 -> f3242    spirv.ReturnValue %0: f3243  }44 45  // CHECK-LABEL: @group_non_uniform_fmin_reduce46  spirv.func @group_non_uniform_fmin_reduce(%val: f32) -> f32 "None" {47    // CHECK: %{{.+}} = spirv.GroupNonUniformFMin <Workgroup> <Reduce> %{{.+}} : f32 -> f3248    %0 = spirv.GroupNonUniformFMin <Workgroup> <Reduce> %val : f32 -> f3249    spirv.ReturnValue %0: f3250  }51 52  // CHECK-LABEL: @group_non_uniform_fmul_reduce53  spirv.func @group_non_uniform_fmul_reduce(%val: f32) -> f32 "None" {54    // CHECK: %{{.+}} = spirv.GroupNonUniformFMul <Workgroup> <Reduce> %{{.+}} : f32 -> f3255    %0 = spirv.GroupNonUniformFMul <Workgroup> <Reduce> %val : f32 -> f3256    spirv.ReturnValue %0: f3257  }58 59  // CHECK-LABEL: @group_non_uniform_iadd_reduce60  spirv.func @group_non_uniform_iadd_reduce(%val: i32) -> i32 "None" {61    // CHECK: %{{.+}} = spirv.GroupNonUniformIAdd <Workgroup> <Reduce> %{{.+}} : i32 -> i3262    %0 = spirv.GroupNonUniformIAdd <Workgroup> <Reduce> %val : i32 -> i3263    spirv.ReturnValue %0: i3264  }65 66  // CHECK-LABEL: @group_non_uniform_iadd_clustered_reduce67  spirv.func @group_non_uniform_iadd_clustered_reduce(%val: vector<2xi32>) -> vector<2xi32> "None" {68    %four = spirv.Constant 4 : i3269    // CHECK: %{{.+}} = spirv.GroupNonUniformIAdd <Workgroup> <ClusteredReduce> %{{.+}} cluster_size(%{{.+}}) : vector<2xi32>, i32 -> vector<2xi32>70    %0 = spirv.GroupNonUniformIAdd <Workgroup> <ClusteredReduce> %val cluster_size(%four) : vector<2xi32>, i32 -> vector<2xi32>71    spirv.ReturnValue %0: vector<2xi32>72  }73 74  // CHECK-LABEL: @group_non_uniform_imul_reduce75  spirv.func @group_non_uniform_imul_reduce(%val: i32) -> i32 "None" {76    // CHECK: %{{.+}} = spirv.GroupNonUniformIMul <Workgroup> <Reduce> %{{.+}} : i32 -> i3277    %0 = spirv.GroupNonUniformIMul <Workgroup> <Reduce> %val : i32 -> i3278    spirv.ReturnValue %0: i3279  }80 81  // CHECK-LABEL: @group_non_uniform_smax_reduce82  spirv.func @group_non_uniform_smax_reduce(%val: i32) -> i32 "None" {83    // CHECK: %{{.+}} = spirv.GroupNonUniformSMax <Workgroup> <Reduce> %{{.+}} : i32 -> i3284    %0 = spirv.GroupNonUniformSMax <Workgroup> <Reduce> %val : i32 -> i3285    spirv.ReturnValue %0: i3286  }87 88  // CHECK-LABEL: @group_non_uniform_smin_reduce89  spirv.func @group_non_uniform_smin_reduce(%val: i32) -> i32 "None" {90    // CHECK: %{{.+}} = spirv.GroupNonUniformSMin <Workgroup> <Reduce> %{{.+}} : i32 -> i3291    %0 = spirv.GroupNonUniformSMin <Workgroup> <Reduce> %val : i32 -> i3292    spirv.ReturnValue %0: i3293  }94 95  // CHECK-LABEL: @group_non_uniform_umax_reduce96  spirv.func @group_non_uniform_umax_reduce(%val: i32) -> i32 "None" {97    // CHECK: %{{.+}} = spirv.GroupNonUniformUMax <Workgroup> <Reduce> %{{.+}} : i32 -> i3298    %0 = spirv.GroupNonUniformUMax <Workgroup> <Reduce> %val : i32 -> i3299    spirv.ReturnValue %0: i32100  }101 102  // CHECK-LABEL: @group_non_uniform_umin_reduce103  spirv.func @group_non_uniform_umin_reduce(%val: i32) -> i32 "None" {104    // CHECK: %{{.+}} = spirv.GroupNonUniformUMin <Workgroup> <Reduce> %{{.+}} : i32 -> i32105    %0 = spirv.GroupNonUniformUMin <Workgroup> <Reduce> %val : i32 -> i32106    spirv.ReturnValue %0: i32107  }108 109  spirv.func @group_non_uniform_shuffle(%val: f32, %id: i32) -> f32 "None" {110    // CHECK: %{{.+}} = spirv.GroupNonUniformShuffle <Subgroup> %{{.+}}, %{{.+}} : f32, i32111    %0 = spirv.GroupNonUniformShuffle <Subgroup> %val, %id : f32, i32112    spirv.ReturnValue %0: f32113  }114 115  spirv.func @group_non_uniform_shuffle_up(%val: f32, %id: i32) -> f32 "None" {116    // CHECK: %{{.+}} = spirv.GroupNonUniformShuffleUp <Subgroup> %{{.+}}, %{{.+}} : f32, i32117    %0 = spirv.GroupNonUniformShuffleUp <Subgroup> %val, %id : f32, i32118    spirv.ReturnValue %0: f32119  }120 121  spirv.func @group_non_uniform_shuffle_down(%val: f32, %id: i32) -> f32 "None" {122    // CHECK: %{{.+}} = spirv.GroupNonUniformShuffleDown <Subgroup> %{{.+}}, %{{.+}} : f32, i32123    %0 = spirv.GroupNonUniformShuffleDown <Subgroup> %val, %id : f32, i32124    spirv.ReturnValue %0: f32125  }126 127  spirv.func @group_non_uniform_shuffle_xor(%val: f32, %id: i32) -> f32 "None" {128    // CHECK: %{{.+}} = spirv.GroupNonUniformShuffleXor <Subgroup> %{{.+}}, %{{.+}} : f32, i32129    %0 = spirv.GroupNonUniformShuffleXor <Subgroup> %val, %id : f32, i32130    spirv.ReturnValue %0: f32131  }132 133  spirv.func @group_non_uniform_all(%pred: i1) -> i1 "None" {134    // CHECK: %{{.+}} = spirv.GroupNonUniformAll <Subgroup> %{{.+}} : i1135    %0 = spirv.GroupNonUniformAll <Subgroup> %pred : i1136    spirv.ReturnValue %0: i1137  }138 139  spirv.func @group_non_uniform_any(%pred: i1) -> i1 "None" {140    // CHECK: %{{.+}} = spirv.GroupNonUniformAny <Subgroup> %{{.+}} : i1141    %0 = spirv.GroupNonUniformAny <Subgroup> %pred : i1142    spirv.ReturnValue %0: i1143  }144 145  spirv.func @group_non_uniform_all_equal(%val: vector<4xi32>) -> i1 "None" {146    // CHECK: %{{.+}} = spirv.GroupNonUniformAllEqual <Subgroup> %{{.+}} : vector<4xi32>, i1147    %0 = spirv.GroupNonUniformAllEqual <Subgroup> %val : vector<4xi32>, i1148    spirv.ReturnValue %0: i1149  }150}151