brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.6 KiB · c71d220 Raw
75 lines · plain
1// RUN: mlir-opt -split-input-file -convert-gpu-to-spirv -verify-diagnostics %s -o - | FileCheck %s2 3module attributes {4  gpu.container_module,5  spirv.target_env = #spirv.target_env<#spirv.vce<v1.4, [Shader, GroupNonUniformRotateKHR], []>,6    #spirv.resource_limits<subgroup_size = 16>>7} {8 9gpu.module @kernels {10  // CHECK-LABEL:  spirv.func @rotate()11  gpu.func @rotate() kernel12    attributes {spirv.entry_point_abi = #spirv.entry_point_abi<workgroup_size = [16, 1, 1]>} {13    %val = arith.constant 42.0 : f3214 15    // CHECK: %[[VAL:.+]] = spirv.Constant 4.200000e+01 : f3216    // CHECK: %[[OFFSET:.+]] = spirv.Constant 4 : i3217    // CHECK: %[[WIDTH:.+]] = spirv.Constant 16 : i3218    // CHECK: %{{.+}} = spirv.GroupNonUniformRotateKHR <Subgroup> %[[VAL]], %[[OFFSET]], cluster_size(%[[WIDTH]]) : f32, i32, i32 -> f3219    // CHECK: %{{.+}} = spirv.Constant true20    %result, %valid = gpu.rotate %val, 4, 16 : f3221    gpu.return22  }23}24 25}26 27// -----28 29module attributes {30  gpu.container_module,31  spirv.target_env = #spirv.target_env<#spirv.vce<v1.4, [Shader, GroupNonUniformRotateKHR], []>,32    #spirv.resource_limits<subgroup_size = 16>>33} {34 35gpu.module @kernels {36  // CHECK-LABEL:  spirv.func @rotate_width_less_than_subgroup_size()37  gpu.func @rotate_width_less_than_subgroup_size() kernel38    attributes {spirv.entry_point_abi = #spirv.entry_point_abi<workgroup_size = [16, 1, 1]>} {39    %val = arith.constant 42.0 : f3240 41    // CHECK: %[[VAL:.+]] = spirv.Constant 4.200000e+01 : f3242    // CHECK: %[[OFFSET:.+]] = spirv.Constant 4 : i3243    // CHECK: %[[WIDTH:.+]] = spirv.Constant 8 : i3244    // CHECK: %{{.+}} = spirv.GroupNonUniformRotateKHR <Subgroup> %[[VAL]], %[[OFFSET]], cluster_size(%[[WIDTH]]) : f32, i32, i32 -> f3245    // CHECK: %[[INVOCATION_ID_ADDR:.+]] = spirv.mlir.addressof @__builtin__SubgroupLocalInvocationId__46    // CHECK: %[[INVOCATION_ID:.+]] = spirv.Load "Input" %[[INVOCATION_ID_ADDR]]47    // CHECK: %{{.+}} = spirv.ULessThan %[[INVOCATION_ID]], %[[WIDTH]]48    %result, %valid = gpu.rotate %val, 4, 8 : f3249    gpu.return50  }51}52 53}54 55// -----56 57module attributes {58  gpu.container_module,59  spirv.target_env = #spirv.target_env<#spirv.vce<v1.4, [Shader, GroupNonUniformRotateKHR], []>,60    #spirv.resource_limits<subgroup_size = 16>>61} {62 63gpu.module @kernels {64  gpu.func @rotate_with_bigger_than_subgroup_size() kernel65    attributes {spirv.entry_point_abi = #spirv.entry_point_abi<workgroup_size = [16, 1, 1]>} {66    %val = arith.constant 42.0 : f3267 68    // expected-error @+1 {{failed to legalize operation 'gpu.rotate'}}69    %result, %valid = gpu.rotate %val, 4, 32 : f3270    gpu.return71  }72}73 74}75