|  | // RUN: %clang_cc1 -triple dxil-pc-shadermodel6.0-compute -std=hlsl202x -emit-llvm -o - -disable-llvm-passes %s | FileCheck %s --check-prefixes=CHECK,DXIL | 
|  | // RUN: %clang_cc1 -triple spirv-pc-vulkan1.3-compute -std=hlsl202x -emit-llvm -o - -disable-llvm-passes %s | FileCheck %s --check-prefixes=CHECK,SPIRV | 
|  |  | 
|  | struct S { | 
|  | static int Value; | 
|  | }; | 
|  |  | 
|  | int S::Value = 1; | 
|  | // DXIL: @_ZN1S5ValueE = hidden global i32 1, align 4 | 
|  | // SPIRV: @_ZN1S5ValueE = hidden addrspace(10) global i32 1, align 4 | 
|  |  | 
|  | [shader("compute")] | 
|  | [numthreads(1,1,1)] | 
|  | void main() { | 
|  | S s; | 
|  | int value1, value2; | 
|  | // CHECK:      %s = alloca %struct.S, align 1 | 
|  | // CHECK: %value1 = alloca i32, align 4 | 
|  | // CHECK: %value2 = alloca i32, align 4 | 
|  |  | 
|  | // DXIL: [[tmp:%.*]] = load i32, ptr @_ZN1S5ValueE, align 4 | 
|  | // SPIRV: [[tmp:%.*]] = load i32, ptr addrspace(10) @_ZN1S5ValueE, align 4 | 
|  | // CHECK: store i32 [[tmp]], ptr %value1, align 4 | 
|  | value1 = S::Value; | 
|  |  | 
|  | // DXIL: [[tmp:%.*]] = load i32, ptr @_ZN1S5ValueE, align 4 | 
|  | // SPIRV: [[tmp:%.*]] = load i32, ptr addrspace(10) @_ZN1S5ValueE, align 4 | 
|  | // CHECK: store i32 [[tmp]], ptr %value2, align 4 | 
|  | value2 = s.Value; | 
|  | } |