| ; 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 |
| } |