1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
; 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
}
|