brintos

brintos / llvm-project-archived public Read only

0
0
Text · 19.3 KiB · 1391fdd Raw
358 lines · plain
1; RUN: not llc -O0 -mtriple=spirv32-unknown-unknown %s -o %t.spvt 2>&1 | FileCheck %s --check-prefix=CHECK-ERROR2; RUN: llc -verify-machineinstrs -O0 -mtriple=spirv32-unknown-unknown --spirv-ext=+SPV_KHR_subgroup_rotate %s -o - | FileCheck %s3; TODO: %if spirv-tools %{ llc -O0 -mtriple=spirv64-unknown-unknown --spirv-ext=+SPV_KHR_subgroup_rotate %s -o - -filetype=obj | spirv-val %}4 5; CHECK-ERROR: LLVM ERROR: OpGroupNonUniformRotateKHR instruction requires the following SPIR-V extension: SPV_KHR_subgroup_rotate6 7; CHECK: OpCapability GroupNonUniformRotateKHR8; CHECK: OpExtension "SPV_KHR_subgroup_rotate"9 10; CHECK-DAG: %[[TyInt8:.*]] = OpTypeInt 8 011; CHECK-DAG: %[[TyInt16:.*]] = OpTypeInt 16 012; CHECK-DAG: %[[TyInt32:.*]] = OpTypeInt 32 013; CHECK-DAG: %[[TyInt64:.*]] = OpTypeInt 64 014; CHECK-DAG: %[[TyFloat:.*]] = OpTypeFloat 3215; CHECK-DAG: %[[TyHalf:.*]] = OpTypeFloat 1616; CHECK-DAG: %[[TyDouble:.*]] = OpTypeFloat 6417; CHECK-DAG: %[[ScopeSubgroup:.*]] = OpConstant %[[TyInt32]] 318; CHECK-DAG: %[[ConstInt2:.*]] = OpConstant %[[TyInt32]] 219; CHECK-DAG: %[[ConstInt4:.*]] = OpConstant %[[TyInt32]] 420 21target datalayout = "e-p:32:32-i64:64-v16:16-v24:32-v32:32-v48:64-v96:128-v192:256-v256:256-v512:512-v1024:1024"22target triple = "spir"23 24; Function Attrs: convergent noinline norecurse nounwind optnone25define dso_local spir_kernel void @testRotateChar(ptr addrspace(1) noundef align 1 %dst) #0 !kernel_arg_addr_space !3 !kernel_arg_access_qual !4 !kernel_arg_type !5 !kernel_arg_base_type !5 !kernel_arg_type_qual !6 {26entry:27  %dst.addr = alloca ptr addrspace(1), align 428  %v = alloca i8, align 129  store ptr addrspace(1) %dst, ptr %dst.addr, align 430  store i8 0, ptr %v, align 131  %value = load i8, ptr %v, align 132; CHECK: OpGroupNonUniformRotateKHR %[[TyInt8]] %[[ScopeSubgroup]] %[[#]] %[[ConstInt2]]33  %call = call spir_func signext i8 @_Z16sub_group_rotateci(i8 noundef signext %value, i32 noundef 2) #234  %data = load ptr addrspace(1), ptr %dst.addr, align 435  %arrayidx = getelementptr inbounds i8, ptr addrspace(1) %data, i32 036  store i8 %call, ptr addrspace(1) %arrayidx, align 137  %value_clustered = load i8, ptr %v, align 138; CHECK: OpGroupNonUniformRotateKHR %[[TyInt8]] %[[ScopeSubgroup]] %[[#]] %[[ConstInt2]] %[[ConstInt4]]39  %call1 = call spir_func signext i8 @_Z26sub_group_clustered_rotatecij(i8 noundef signext %value_clustered, i32 noundef 2, i32 noundef 4) #240  %data2 = load ptr addrspace(1), ptr %dst.addr, align 441  %arrayidx2 = getelementptr inbounds i8, ptr addrspace(1) %data2, i32 142  store i8 %call1, ptr addrspace(1) %arrayidx2, align 143  ret void44}45 46; Function Attrs: convergent nounwind47declare spir_func signext i8 @_Z16sub_group_rotateci(i8 noundef signext, i32 noundef) #148 49; Function Attrs: convergent nounwind50declare spir_func signext i8 @_Z26sub_group_clustered_rotatecij(i8 noundef signext, i32 noundef, i32 noundef) #151 52; Function Attrs: convergent noinline norecurse nounwind optnone53define dso_local spir_kernel void @testRotateUChar(ptr addrspace(1) noundef align 1 %dst) #0 !kernel_arg_addr_space !3 !kernel_arg_access_qual !4 !kernel_arg_type !7 !kernel_arg_base_type !7 !kernel_arg_type_qual !6 {54entry:55  %dst.addr = alloca ptr addrspace(1), align 456  %v = alloca i8, align 157  store ptr addrspace(1) %dst, ptr %dst.addr, align 458  store i8 0, ptr %v, align 159  %value = load i8, ptr %v, align 160; CHECK: OpGroupNonUniformRotateKHR %[[TyInt8]] %[[ScopeSubgroup]] %[[#]] %[[ConstInt2]]61  %call = call spir_func zeroext i8 @_Z16sub_group_rotatehi(i8 noundef zeroext %value, i32 noundef 2) #262  %data = load ptr addrspace(1), ptr %dst.addr, align 463  %arrayidx = getelementptr inbounds i8, ptr addrspace(1) %data, i32 064  store i8 %call, ptr addrspace(1) %arrayidx, align 165  %value_clustered = load i8, ptr %v, align 166; CHECK: OpGroupNonUniformRotateKHR %[[TyInt8]] %[[ScopeSubgroup]] %[[#]] %[[ConstInt2]] %[[ConstInt4]]67  %call1 = call spir_func zeroext i8 @_Z26sub_group_clustered_rotatehij(i8 noundef zeroext %value_clustered, i32 noundef 2, i32 noundef 4) #268  %data2 = load ptr addrspace(1), ptr %dst.addr, align 469  %arrayidx2 = getelementptr inbounds i8, ptr addrspace(1) %data2, i32 170  store i8 %call1, ptr addrspace(1) %arrayidx2, align 171  ret void72}73 74; Function Attrs: convergent nounwind75declare spir_func zeroext i8 @_Z16sub_group_rotatehi(i8 noundef zeroext, i32 noundef) #176 77; Function Attrs: convergent nounwind78declare spir_func zeroext i8 @_Z26sub_group_clustered_rotatehij(i8 noundef zeroext, i32 noundef, i32 noundef) #179 80; Function Attrs: convergent noinline norecurse nounwind optnone81define dso_local spir_kernel void @testRotateShort(ptr addrspace(1) noundef align 2 %dst) #0 !kernel_arg_addr_space !3 !kernel_arg_access_qual !4 !kernel_arg_type !8 !kernel_arg_base_type !8 !kernel_arg_type_qual !6 {82entry:83  %dst.addr = alloca ptr addrspace(1), align 484  %v = alloca i16, align 285  store ptr addrspace(1) %dst, ptr %dst.addr, align 486  store i16 0, ptr %v, align 287  %value = load i16, ptr %v, align 288  ; CHECK: OpGroupNonUniformRotateKHR %[[TyInt16]] %[[ScopeSubgroup]] %[[#]] %[[ConstInt2]]89  %call = call spir_func signext i16 @_Z16sub_group_rotatesi(i16 noundef signext %value, i32 noundef 2) #290  %data = load ptr addrspace(1), ptr %dst.addr, align 491  %arrayidx = getelementptr inbounds i16, ptr addrspace(1) %data, i32 092  store i16 %call, ptr addrspace(1) %arrayidx, align 293  %value_clustered = load i16, ptr %v, align 294  ; CHECK: OpGroupNonUniformRotateKHR %[[TyInt16]] %[[ScopeSubgroup]] %[[#]] %[[ConstInt2]] %[[ConstInt4]]95  %call1 = call spir_func signext i16 @_Z26sub_group_clustered_rotatesij(i16 noundef signext %value_clustered, i32 noundef 2, i32 noundef 4) #296  %data2 = load ptr addrspace(1), ptr %dst.addr, align 497  %arrayidx2 = getelementptr inbounds i16, ptr addrspace(1) %data2, i32 198  store i16 %call1, ptr addrspace(1) %arrayidx2, align 299  ret void100}101 102; Function Attrs: convergent nounwind103declare spir_func signext i16 @_Z16sub_group_rotatesi(i16 noundef signext, i32 noundef) #1104 105; Function Attrs: convergent nounwind106declare spir_func signext i16 @_Z26sub_group_clustered_rotatesij(i16 noundef signext, i32 noundef, i32 noundef) #1107 108; Function Attrs: convergent noinline norecurse nounwind optnone109define dso_local spir_kernel void @testRotateUShort(ptr addrspace(1) noundef align 2 %dst) #0 !kernel_arg_addr_space !3 !kernel_arg_access_qual !4 !kernel_arg_type !9 !kernel_arg_base_type !9 !kernel_arg_type_qual !6 {110entry:111  %dst.addr = alloca ptr addrspace(1), align 4112  %v = alloca i16, align 2113  store ptr addrspace(1) %dst, ptr %dst.addr, align 4114  store i16 0, ptr %v, align 2115  %value = load i16, ptr %v, align 2116  ; CHECK: OpGroupNonUniformRotateKHR %[[TyInt16]] %[[ScopeSubgroup]] %[[#]] %[[ConstInt2]]117  %call = call spir_func zeroext i16 @_Z16sub_group_rotateti(i16 noundef zeroext %value, i32 noundef 2) #2118  %data = load ptr addrspace(1), ptr %dst.addr, align 4119  %arrayidx = getelementptr inbounds i16, ptr addrspace(1) %data, i32 0120  store i16 %call, ptr addrspace(1) %arrayidx, align 2121  %value_clustered = load i16, ptr %v, align 2122  ; CHECK: OpGroupNonUniformRotateKHR %[[TyInt16]] %[[ScopeSubgroup]] %[[#]] %[[ConstInt2]] %[[ConstInt4]]123  %call1 = call spir_func zeroext i16 @_Z26sub_group_clustered_rotatetij(i16 noundef zeroext %value_clustered, i32 noundef 2, i32 noundef 4) #2124  %data2 = load ptr addrspace(1), ptr %dst.addr, align 4125  %arrayidx2 = getelementptr inbounds i16, ptr addrspace(1) %data2, i32 1126  store i16 %call1, ptr addrspace(1) %arrayidx2, align 2127  ret void128}129 130; Function Attrs: convergent nounwind131declare spir_func zeroext i16 @_Z16sub_group_rotateti(i16 noundef zeroext, i32 noundef) #1132 133; Function Attrs: convergent nounwind134declare spir_func zeroext i16 @_Z26sub_group_clustered_rotatetij(i16 noundef zeroext, i32 noundef, i32 noundef) #1135 136; Function Attrs: convergent noinline norecurse nounwind optnone137define dso_local spir_kernel void @testRotateInt(ptr addrspace(1) noundef align 4 %dst) #0 !kernel_arg_addr_space !3 !kernel_arg_access_qual !4 !kernel_arg_type !10 !kernel_arg_base_type !10 !kernel_arg_type_qual !6 {138entry:139  %dst.addr = alloca ptr addrspace(1), align 4140  %v = alloca i32, align 4141  store ptr addrspace(1) %dst, ptr %dst.addr, align 4142  store i32 0, ptr %v, align 4143  %value = load i32, ptr %v, align 4144  ; CHECK: OpGroupNonUniformRotateKHR %[[TyInt32]] %[[ScopeSubgroup]] %[[#]] %[[ConstInt2]]145  %call = call spir_func i32 @_Z16sub_group_rotateii(i32 noundef %value, i32 noundef 2) #2146  %data = load ptr addrspace(1), ptr %dst.addr, align 4147  %arrayidx = getelementptr inbounds i32, ptr addrspace(1) %data, i32 0148  store i32 %call, ptr addrspace(1) %arrayidx, align 4149  %value_clustered = load i32, ptr %v, align 4150  ; CHECK: OpGroupNonUniformRotateKHR %[[TyInt32]] %[[ScopeSubgroup]] %[[#]] %[[ConstInt2]] %[[ConstInt4]]151  %call1 = call spir_func i32 @_Z26sub_group_clustered_rotateiij(i32 noundef %value_clustered, i32 noundef 2, i32 noundef 4) #2152  %data2 = load ptr addrspace(1), ptr %dst.addr, align 4153  %arrayidx2 = getelementptr inbounds i32, ptr addrspace(1) %data2, i32 1154  store i32 %call1, ptr addrspace(1) %arrayidx2, align 4155  ret void156}157 158; Function Attrs: convergent nounwind159declare spir_func i32 @_Z16sub_group_rotateii(i32 noundef, i32 noundef) #1160 161; Function Attrs: convergent nounwind162declare spir_func i32 @_Z26sub_group_clustered_rotateiij(i32 noundef, i32 noundef, i32 noundef) #1163 164; Function Attrs: convergent noinline norecurse nounwind optnone165define dso_local spir_kernel void @testRotateUInt(ptr addrspace(1) noundef align 4 %dst) #0 !kernel_arg_addr_space !3 !kernel_arg_access_qual !4 !kernel_arg_type !11 !kernel_arg_base_type !11 !kernel_arg_type_qual !6 {166entry:167  %dst.addr = alloca ptr addrspace(1), align 4168  %v = alloca i32, align 4169  store ptr addrspace(1) %dst, ptr %dst.addr, align 4170  store i32 0, ptr %v, align 4171  %value = load i32, ptr %v, align 4172  ; CHECK: OpGroupNonUniformRotateKHR %[[TyInt32]] %[[ScopeSubgroup]] %[[#]] %[[ConstInt2]]173  %call = call spir_func i32 @_Z16sub_group_rotateji(i32 noundef %value, i32 noundef 2) #2174  %data = load ptr addrspace(1), ptr %dst.addr, align 4175  %arrayidx = getelementptr inbounds i32, ptr addrspace(1) %data, i32 0176  store i32 %call, ptr addrspace(1) %arrayidx, align 4177  %value_clustered = load i32, ptr %v, align 4178  ; CHECK: OpGroupNonUniformRotateKHR %[[TyInt32]] %[[ScopeSubgroup]] %[[#]] %[[ConstInt2]] %[[ConstInt4]]179  %call1 = call spir_func i32 @_Z26sub_group_clustered_rotatejij(i32 noundef %value_clustered, i32 noundef 2, i32 noundef 4) #2180  %data2 = load ptr addrspace(1), ptr %dst.addr, align 4181  %arrayidx2 = getelementptr inbounds i32, ptr addrspace(1) %data2, i32 1182  store i32 %call1, ptr addrspace(1) %arrayidx2, align 4183  ret void184}185 186; Function Attrs: convergent nounwind187declare spir_func i32 @_Z16sub_group_rotateji(i32 noundef, i32 noundef) #1188 189; Function Attrs: convergent nounwind190declare spir_func i32 @_Z26sub_group_clustered_rotatejij(i32 noundef, i32 noundef, i32 noundef) #1191 192; Function Attrs: convergent noinline norecurse nounwind optnone193define dso_local spir_kernel void @testRotateLong(ptr addrspace(1) noundef align 8 %dst) #0 !kernel_arg_addr_space !3 !kernel_arg_access_qual !4 !kernel_arg_type !12 !kernel_arg_base_type !12 !kernel_arg_type_qual !6 {194entry:195  %dst.addr = alloca ptr addrspace(1), align 4196  %v = alloca i64, align 8197  store ptr addrspace(1) %dst, ptr %dst.addr, align 4198  store i64 0, ptr %v, align 8199  %value = load i64, ptr %v, align 8200  ; CHECK: OpGroupNonUniformRotateKHR %[[TyInt64]] %[[ScopeSubgroup]] %[[#]] %[[ConstInt2]]201  %call = call spir_func i64 @_Z16sub_group_rotateli(i64 noundef %value, i32 noundef 2) #2202  %data = load ptr addrspace(1), ptr %dst.addr, align 4203  %arrayidx = getelementptr inbounds i64, ptr addrspace(1) %data, i32 0204  store i64 %call, ptr addrspace(1) %arrayidx, align 8205  %value_clustered = load i64, ptr %v, align 8206  ; CHECK: OpGroupNonUniformRotateKHR %[[TyInt64]] %[[ScopeSubgroup]] %[[#]] %[[ConstInt2]] %[[ConstInt4]]207  %call1 = call spir_func i64 @_Z26sub_group_clustered_rotatelij(i64 noundef %value_clustered, i32 noundef 2, i32 noundef 4) #2208  %data2 = load ptr addrspace(1), ptr %dst.addr, align 4209  %arrayidx2 = getelementptr inbounds i64, ptr addrspace(1) %data2, i32 1210  store i64 %call1, ptr addrspace(1) %arrayidx2, align 8211  ret void212}213 214; Function Attrs: convergent nounwind215declare spir_func i64 @_Z16sub_group_rotateli(i64 noundef, i32 noundef) #1216 217; Function Attrs: convergent nounwind218declare spir_func i64 @_Z26sub_group_clustered_rotatelij(i64 noundef, i32 noundef, i32 noundef) #1219 220; Function Attrs: convergent noinline norecurse nounwind optnone221define dso_local spir_kernel void @testRotateULong(ptr addrspace(1) noundef align 8 %dst) #0 !kernel_arg_addr_space !3 !kernel_arg_access_qual !4 !kernel_arg_type !13 !kernel_arg_base_type !13 !kernel_arg_type_qual !6 {222entry:223  %dst.addr = alloca ptr addrspace(1), align 4224  %v = alloca i64, align 8225  store ptr addrspace(1) %dst, ptr %dst.addr, align 4226  store i64 0, ptr %v, align 8227  %value = load i64, ptr %v, align 8228  ; CHECK: OpGroupNonUniformRotateKHR %[[TyInt64]] %[[ScopeSubgroup]] %[[#]] %[[ConstInt2]]229  %call = call spir_func i64 @_Z16sub_group_rotatemi(i64 noundef %value, i32 noundef 2) #2230  %data = load ptr addrspace(1), ptr %dst.addr, align 4231  %arrayidx = getelementptr inbounds i64, ptr addrspace(1) %data, i32 0232  store i64 %call, ptr addrspace(1) %arrayidx, align 8233  %value_clustered = load i64, ptr %v, align 8234  ; CHECK: OpGroupNonUniformRotateKHR %[[TyInt64]] %[[ScopeSubgroup]] %[[#]] %[[ConstInt2]] %[[ConstInt4]]235  %call1 = call spir_func i64 @_Z26sub_group_clustered_rotatemij(i64 noundef %value_clustered, i32 noundef 2, i32 noundef 4) #2236  %data2 = load ptr addrspace(1), ptr %dst.addr, align 4237  %arrayidx2 = getelementptr inbounds i64, ptr addrspace(1) %data2, i32 1238  store i64 %call1, ptr addrspace(1) %arrayidx2, align 8239  ret void240}241 242; Function Attrs: convergent nounwind243declare spir_func i64 @_Z16sub_group_rotatemi(i64 noundef, i32 noundef) #1244 245; Function Attrs: convergent nounwind246declare spir_func i64 @_Z26sub_group_clustered_rotatemij(i64 noundef, i32 noundef, i32 noundef) #1247 248; Function Attrs: convergent noinline norecurse nounwind optnone249define dso_local spir_kernel void @testRotateFloat(ptr addrspace(1) noundef align 4 %dst) #0 !kernel_arg_addr_space !3 !kernel_arg_access_qual !4 !kernel_arg_type !14 !kernel_arg_base_type !14 !kernel_arg_type_qual !6 {250entry:251  %dst.addr = alloca ptr addrspace(1), align 4252  %v = alloca float, align 4253  store ptr addrspace(1) %dst, ptr %dst.addr, align 4254  store float 0.000000e+00, ptr %v, align 4255  %value = load float, ptr %v, align 4256  ; CHECK: OpGroupNonUniformRotateKHR %[[TyFloat]] %[[ScopeSubgroup]] %[[#]] %[[ConstInt2]]257  %call = call spir_func float @_Z16sub_group_rotatefi(float noundef %value, i32 noundef 2) #2258  %data = load ptr addrspace(1), ptr %dst.addr, align 4259  %arrayidx = getelementptr inbounds float, ptr addrspace(1) %data, i32 0260  store float %call, ptr addrspace(1) %arrayidx, align 4261  %value_clustered = load float, ptr %v, align 4262  ; CHECK: OpGroupNonUniformRotateKHR %[[TyFloat]] %[[ScopeSubgroup]] %[[#]] %[[ConstInt2]] %[[ConstInt4]]263  %call1 = call spir_func float @_Z26sub_group_clustered_rotatefij(float noundef %value_clustered, i32 noundef 2, i32 noundef 4) #2264  %data2 = load ptr addrspace(1), ptr %dst.addr, align 4265  %arrayidx2 = getelementptr inbounds float, ptr addrspace(1) %data2, i32 1266  store float %call1, ptr addrspace(1) %arrayidx2, align 4267  ret void268}269 270; Function Attrs: convergent nounwind271declare spir_func float @_Z16sub_group_rotatefi(float noundef, i32 noundef) #1272 273; Function Attrs: convergent nounwind274declare spir_func float @_Z26sub_group_clustered_rotatefij(float noundef, i32 noundef, i32 noundef) #1275 276; Function Attrs: convergent noinline norecurse nounwind optnone277define dso_local spir_kernel void @testRotateHalf(ptr addrspace(1) noundef align 2 %dst) #0 !kernel_arg_addr_space !3 !kernel_arg_access_qual !4 !kernel_arg_type !15 !kernel_arg_base_type !15 !kernel_arg_type_qual !6 {278entry:279  %dst.addr = alloca ptr addrspace(1), align 4280  %v = alloca half, align 2281  store ptr addrspace(1) %dst, ptr %dst.addr, align 4282  store half 0xH0000, ptr %v, align 2283  %value = load half, ptr %v, align 2284  ; CHECK: OpGroupNonUniformRotateKHR %[[TyHalf]] %[[ScopeSubgroup]] %[[#]] %[[ConstInt2]]285  %call = call spir_func half @_Z16sub_group_rotateDhi(half noundef %value, i32 noundef 2) #2286  %data = load ptr addrspace(1), ptr %dst.addr, align 4287  %arrayidx = getelementptr inbounds half, ptr addrspace(1) %data, i32 0288  store half %call, ptr addrspace(1) %arrayidx, align 2289  %value_clustered = load half, ptr %v, align 2290  ; CHECK: OpGroupNonUniformRotateKHR %[[TyHalf]] %[[ScopeSubgroup]] %[[#]] %[[ConstInt2]] %[[ConstInt4]]291  %call1 = call spir_func half @_Z26sub_group_clustered_rotateDhij(half noundef %value_clustered, i32 noundef 2, i32 noundef 4) #2292  %data2 = load ptr addrspace(1), ptr %dst.addr, align 4293  %arrayidx2 = getelementptr inbounds half, ptr addrspace(1) %data2, i32 1294  store half %call1, ptr addrspace(1) %arrayidx2, align 2295  ret void296}297 298; Function Attrs: convergent nounwind299declare spir_func half @_Z16sub_group_rotateDhi(half noundef, i32 noundef) #1300 301; Function Attrs: convergent nounwind302declare spir_func half @_Z26sub_group_clustered_rotateDhij(half noundef, i32 noundef, i32 noundef) #1303 304; Function Attrs: convergent noinline norecurse nounwind optnone305define dso_local spir_kernel void @testRotateDouble(ptr addrspace(1) noundef align 8 %dst) #0 !kernel_arg_addr_space !3 !kernel_arg_access_qual !4 !kernel_arg_type !16 !kernel_arg_base_type !16 !kernel_arg_type_qual !6 {306entry:307  %dst.addr = alloca ptr addrspace(1), align 4308  %v = alloca double, align 8309  store ptr addrspace(1) %dst, ptr %dst.addr, align 4310  store double 0.000000e+00, ptr %v, align 8311  %value = load double, ptr %v, align 8312  ; CHECK: OpGroupNonUniformRotateKHR %[[TyDouble]] %[[ScopeSubgroup]] %[[#]] %[[ConstInt2]]313  %call = call spir_func double @_Z16sub_group_rotatedi(double noundef %value, i32 noundef 2) #2314  %data = load ptr addrspace(1), ptr %dst.addr, align 4315  %arrayidx = getelementptr inbounds double, ptr addrspace(1) %data, i32 0316  store double %call, ptr addrspace(1) %arrayidx, align 8317  %value_clustered = load double, ptr %v, align 8318  ; CHECK: OpGroupNonUniformRotateKHR %[[TyDouble]] %[[ScopeSubgroup]] %[[#]] %[[ConstInt2]] %[[ConstInt4]]319  %call1 = call spir_func double @_Z26sub_group_clustered_rotatedij(double noundef %value_clustered, i32 noundef 2, i32 noundef 4) #2320  %data2 = load ptr addrspace(1), ptr %dst.addr, align 4321  %arrayidx2 = getelementptr inbounds double, ptr addrspace(1) %data2, i32 1322  store double %call1, ptr addrspace(1) %arrayidx2, align 8323  ret void324}325 326; Function Attrs: convergent nounwind327declare spir_func double @_Z16sub_group_rotatedi(double noundef, i32 noundef) #1328 329; Function Attrs: convergent nounwind330declare spir_func double @_Z26sub_group_clustered_rotatedij(double noundef, i32 noundef, i32 noundef) #1331 332attributes #0 = { convergent noinline norecurse nounwind optnone "no-trapping-math"="true" "stack-protector-buffer-size"="8" "uniform-work-group-size"="false" }333attributes #1 = { convergent nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" }334attributes #2 = { convergent nounwind }335 336!llvm.module.flags = !{!0}337!opencl.ocl.version = !{!1}338!opencl.spir.version = !{!1}339!llvm.ident = !{!2}340 341!0 = !{i32 1, !"wchar_size", i32 4}342!1 = !{i32 2, i32 0}343!2 = !{!"clang version 19.0.0"}344!3 = !{i32 1}345!4 = !{!"none"}346!5 = !{!"char*"}347!6 = !{!""}348!7 = !{!"uchar*"}349!8 = !{!"short*"}350!9 = !{!"ushort*"}351!10 = !{!"int*"}352!11 = !{!"uint*"}353!12 = !{!"long*"}354!13 = !{!"ulong*"}355!14 = !{!"float*"}356!15 = !{!"half*"}357!16 = !{!"double*"}358