42 lines · plain
1; RUN: opt -S -passes='dxil-legalize' -mtriple=dxil-pc-shadermodel6.3-library %s | FileCheck %s2 3define float @load() {4; CHECK-LABEL: define float @load5; CHECK-NEXT: [[ALLOCA:%.*]] = alloca [2 x float], align 46; CHECK-NEXT: [[GEP:%.*]] = getelementptr inbounds nuw [2 x float], ptr [[ALLOCA]], i32 0, i32 07; CHECK-NEXT: [[LOAD:%.*]] = load float, ptr [[GEP]], align 48; CHECK-NEXT: ret float [[LOAD]]9 %a = alloca [2 x float], align 410 %b = load float, ptr %a, align 411 ret float %b12}13 14define void @store() {15; CHECK-LABEL: define void @store16; CHECK-NEXT: [[ALLOCA:%.*]] = alloca [3 x i32], align 417; CHECK-NEXT: [[GEP:%.*]] = getelementptr inbounds nuw [3 x i32], ptr [[ALLOCA]], i32 0, i32 018; CHECK-NEXT: store i32 0, ptr [[GEP]], align 419; CHECK-NEXT: ret void20 %a = alloca [3 x i32], align 421 store i32 0, ptr %a, align 422 ret void23}24 25@g = local_unnamed_addr addrspace(3) global [4 x i32] zeroinitializer, align 426define void @load_whole_global () {27; CHECK-LABEL: define void @load_whole_global28; CHECK-NEXT: load [4 x i32], ptr addrspace(3) @g, align 429; CHECK-NEXT: ret void30 %l = load [4 x i32], ptr addrspace(3) @g, align 431 ret void32}33 34define void @load_global_index0 () {35; CHECK-LABEL: define void @load_global_index036; CHECK-NEXT: [[GEP:%.*]] = getelementptr inbounds nuw [4 x i32], ptr addrspace(3) @g, i32 0, i32 037; CHECK-NEXT: load i32, ptr addrspace(3) [[GEP]], align 438; CHECK-NEXT: ret void39 %l = load i32, ptr addrspace(3) @g, align 440 ret void41}42