// RUN: %clang_cc1 -finclude-default-header -triple dxil-pc-shadermodel6.0-compute -std=hlsl202x -emit-llvm -disable-llvm-passes -hlsl-entry main -o - %s | FileCheck %s groupshared float4 SharedArr[64]; // CHECK-LABEL: define hidden void @_Z2fnRA64_U3AS3Dv4_ff(ptr addrspace(3) noundef align 4 dereferenceable(1024) %Arr, float noundef nofpclass(nan inf) %F) // CHECK: [[ArrAddr:%.*]] = alloca ptr addrspace(3), align 4 // CHECK: [[FAddr:%.*]] = alloca float, align 4 // CHECK: store ptr addrspace(3) %Arr, ptr [[ArrAddr]], align 4 // CHECK: store float %F, ptr [[FAddr]], align 4 // CHECK: [[A:%.*]] = load float, ptr [[FAddr]], align 4 // CHECK: [[Splat:%.*]] = insertelement <1 x float> poison, float [[A]], i64 0 // CHECK: [[B:%.*]] = shufflevector <1 x float> [[Splat]], <1 x float> poison, <4 x i32> zeroinitializer // CHECK: [[C:%.*]] = load ptr addrspace(3), ptr [[ArrAddr]], align 4, !align !3 // CHECK: [[ArrIdx:%.*]] = getelementptr inbounds [64 x <4 x float>], ptr addrspace(3) [[C]], i32 0, i32 5 // CHECK: store <4 x float> [[B]], ptr addrspace(3) [[ArrIdx]], align 4 // CHECK: ret void void fn(groupshared float4 Arr[64], float F) { Arr[5] = F.xxxx; } [numthreads(4,1,1)] void main() { fn(SharedArr, 6.0); }