aboutsummaryrefslogtreecommitdiff
path: root/llvm/test/CodeGen/DirectX/legalize-load-store-array-alloca.ll
blob: c6789ac7886d5bca131bc90a811606d107f0d780 (plain)
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
}