1
- ; RUN: llc -march=r600 -mcpu=SI -verify-machineinstrs < %s | FileCheck -check-prefix=SI %s
1
+ ; RUN: llc -march=r600 -mcpu=SI -mattr=-promote-alloca -verify-machineinstrs < %s | FileCheck -check-prefix=SI-ALLOCA -check-prefix=SI %s
2
+ ; RUN: llc -march=r600 -mcpu=SI -mattr=+promote-alloca -verify-machineinstrs < %s | FileCheck -check-prefix=SI-PROMOTE -check-prefix=SI %s
3
+
2
4
3
5
declare void @llvm.AMDGPU.barrier.local () noduplicate nounwind
4
6
5
7
; SI-LABEL: @private_access_f64_alloca:
6
- ; SI: DS_WRITE_B64
7
- ; SI: DS_READ_B64
8
+
9
+ ; SI-ALLOCA: V_MOVRELD_B32_e32
10
+ ; SI-ALLOCA: V_MOVRELD_B32_e32
11
+ ; SI-ALLOCA: V_MOVRELS_B32_e32
12
+ ; SI-ALLOCA: V_MOVRELS_B32_e32
13
+
14
+ ; SI-PROMOTE: DS_WRITE_B64
15
+ ; SI-PROMOTE: DS_READ_B64
8
16
define void @private_access_f64_alloca (double addrspace (1 )* noalias %out , double addrspace (1 )* noalias %in , i32 %b ) nounwind {
9
17
%val = load double addrspace (1 )* %in , align 8
10
18
%array = alloca double , i32 16 , align 8
@@ -17,10 +25,16 @@ define void @private_access_f64_alloca(double addrspace(1)* noalias %out, double
17
25
}
18
26
19
27
; SI-LABEL: @private_access_v2f64_alloca:
20
- ; SI: DS_WRITE_B64
21
- ; SI: DS_WRITE_B64
22
- ; SI: DS_READ_B64
23
- ; SI: DS_READ_B64
28
+
29
+ ; SI-ALLOCA: V_MOVRELD_B32_e32
30
+ ; SI-ALLOCA: V_MOVRELD_B32_e32
31
+ ; SI-ALLOCA: V_MOVRELS_B32_e32
32
+ ; SI-ALLOCA: V_MOVRELS_B32_e32
33
+
34
+ ; SI-PROMOTE: DS_WRITE_B64
35
+ ; SI-PROMOTE: DS_WRITE_B64
36
+ ; SI-PROMOTE: DS_READ_B64
37
+ ; SI-PROMOTE: DS_READ_B64
24
38
define void @private_access_v2f64_alloca (<2 x double > addrspace (1 )* noalias %out , <2 x double > addrspace (1 )* noalias %in , i32 %b ) nounwind {
25
39
%val = load <2 x double > addrspace (1 )* %in , align 16
26
40
%array = alloca <2 x double >, i32 16 , align 16
@@ -33,8 +47,14 @@ define void @private_access_v2f64_alloca(<2 x double> addrspace(1)* noalias %out
33
47
}
34
48
35
49
; SI-LABEL: @private_access_i64_alloca:
36
- ; SI: DS_WRITE_B64
37
- ; SI: DS_READ_B64
50
+
51
+ ; SI-ALLOCA: V_MOVRELD_B32_e32
52
+ ; SI-ALLOCA: V_MOVRELD_B32_e32
53
+ ; SI-ALLOCA: V_MOVRELS_B32_e32
54
+ ; SI-ALLOCA: V_MOVRELS_B32_e32
55
+
56
+ ; SI-PROMOTE: DS_WRITE_B64
57
+ ; SI-PROMOTE: DS_READ_B64
38
58
define void @private_access_i64_alloca (i64 addrspace (1 )* noalias %out , i64 addrspace (1 )* noalias %in , i32 %b ) nounwind {
39
59
%val = load i64 addrspace (1 )* %in , align 8
40
60
%array = alloca i64 , i32 16 , align 8
@@ -47,10 +67,20 @@ define void @private_access_i64_alloca(i64 addrspace(1)* noalias %out, i64 addrs
47
67
}
48
68
49
69
; SI-LABEL: @private_access_v2i64_alloca:
50
- ; SI: DS_WRITE_B64
51
- ; SI: DS_WRITE_B64
52
- ; SI: DS_READ_B64
53
- ; SI: DS_READ_B64
70
+
71
+ ; SI-ALLOCA: V_MOVRELD_B32_e32
72
+ ; SI-ALLOCA: V_MOVRELD_B32_e32
73
+ ; SI-ALLOCA: V_MOVRELD_B32_e32
74
+ ; SI-ALLOCA: V_MOVRELD_B32_e32
75
+ ; SI-ALLOCA: V_MOVRELS_B32_e32
76
+ ; SI-ALLOCA: V_MOVRELS_B32_e32
77
+ ; SI-ALLOCA: V_MOVRELS_B32_e32
78
+ ; SI-ALLOCA: V_MOVRELS_B32_e32
79
+
80
+ ; SI-PROMOTE: DS_WRITE_B64
81
+ ; SI-PROMOTE: DS_WRITE_B64
82
+ ; SI-PROMOTE: DS_READ_B64
83
+ ; SI-PROMOTE: DS_READ_B64
54
84
define void @private_access_v2i64_alloca (<2 x i64 > addrspace (1 )* noalias %out , <2 x i64 > addrspace (1 )* noalias %in , i32 %b ) nounwind {
55
85
%val = load <2 x i64 > addrspace (1 )* %in , align 16
56
86
%array = alloca <2 x i64 >, i32 16 , align 16
0 commit comments