; RUN: opt -S -passes='dxil-legalize' -mtriple=dxil-pc-shadermodel6.3-library %s | FileCheck %s | |
define float @load() { | |
; CHECK-LABEL: define float @load | |
; CHECK-NEXT: [[ALLOCA:%.*]] = alloca [2 x float], align 4 | |
; CHECK-NEXT: [[GEP:%.*]] = getelementptr inbounds nuw [2 x float], ptr [[ALLOCA]], i32 0, i32 0 | |
; CHECK-NEXT: [[LOAD:%.*]] = load float, ptr [[GEP]], align 4 | |
; CHECK-NEXT: ret float [[LOAD]] | |
%a = alloca [2 x float], align 4 | |
%b = load float, ptr %a, align 4 | |
ret float %b | |
} | |
define void @store() { | |
; CHECK-LABEL: define void @store | |
; CHECK-NEXT: [[ALLOCA:%.*]] = alloca [3 x i32], align 4 | |
; CHECK-NEXT: [[GEP:%.*]] = getelementptr inbounds nuw [3 x i32], ptr [[ALLOCA]], i32 0, i32 0 | |
; CHECK-NEXT: store i32 0, ptr [[GEP]], align 4 | |
; CHECK-NEXT: ret void | |
%a = alloca [3 x i32], align 4 | |
store i32 0, ptr %a, align 4 | |
ret void | |
} | |
@g = local_unnamed_addr addrspace(3) global [4 x i32] zeroinitializer, align 4 | |
define void @load_whole_global () { | |
; CHECK-LABEL: define void @load_whole_global | |
; CHECK-NEXT: load [4 x i32], ptr addrspace(3) @g, align 4 | |
; CHECK-NEXT: ret void | |
%l = load [4 x i32], ptr addrspace(3) @g, align 4 | |
ret void | |
} | |
define void @load_global_index0 () { | |
; CHECK-LABEL: define void @load_global_index0 | |
; CHECK-NEXT: [[GEP:%.*]] = getelementptr inbounds nuw [4 x i32], ptr addrspace(3) @g, i32 0, i32 0 | |
; CHECK-NEXT: load i32, ptr addrspace(3) [[GEP]], align 4 | |
; CHECK-NEXT: ret void | |
%l = load i32, ptr addrspace(3) @g, align 4 | |
ret void | |
} |