1
1
# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2
- # RUN: llc -march=amdgcn -run-pass=instruction-select -verify-machineinstrs -global-isel %s -o - | FileCheck %s -check-prefixes=GCN
2
+ # RUN: llc -march=amdgcn -run-pass=instruction-select -verify-machineinstrs -global-isel -o - %s | FileCheck -check-prefix=WAVE64 %s
3
+ # RUN: llc -march=amdgcn -mcpu=gfx1010 -mattr=+wavefrontsize32,-wavefrontsize64 -run-pass=instruction-select -verify-machineinstrs -global-isel -o - %s | FileCheck -check-prefix=WAVE32 %s
3
4
4
5
---
5
6
@@ -11,33 +12,50 @@ regBankSelected: true
11
12
body : |
12
13
bb.0:
13
14
liveins: $sgpr2_sgpr3
14
- ; GCN-LABEL: name: copy
15
- ; GCN: [[COPY:%[0-9]+]]:sreg_64_xexec = COPY $sgpr2_sgpr3
16
- ; GCN: [[COPY1:%[0-9]+]]:vreg_64 = COPY [[COPY]]
17
- ; GCN: [[DEF:%[0-9]+]]:vgpr_32 = IMPLICIT_DEF
18
- ; GCN: FLAT_STORE_DWORD [[COPY1]], [[DEF]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr
15
+
16
+ ; WAVE64-LABEL: name: copy
17
+ ; WAVE64: [[COPY:%[0-9]+]]:sreg_64_xexec = COPY $sgpr2_sgpr3
18
+ ; WAVE64: [[COPY1:%[0-9]+]]:vreg_64 = COPY [[COPY]]
19
+ ; WAVE64: [[DEF:%[0-9]+]]:vgpr_32 = IMPLICIT_DEF
20
+ ; WAVE64: FLAT_STORE_DWORD [[COPY1]], [[DEF]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr
21
+ ; WAVE32-LABEL: name: copy
22
+ ; WAVE32: $vcc_hi = IMPLICIT_DEF
23
+ ; WAVE32: [[COPY:%[0-9]+]]:sreg_64_xexec = COPY $sgpr2_sgpr3
24
+ ; WAVE32: [[COPY1:%[0-9]+]]:vreg_64 = COPY [[COPY]]
25
+ ; WAVE32: [[DEF:%[0-9]+]]:vgpr_32 = IMPLICIT_DEF
26
+ ; WAVE32: FLAT_STORE_DWORD [[COPY1]], [[DEF]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr
19
27
%0:sgpr(p1) = COPY $sgpr2_sgpr3
20
28
%1:vgpr(p1) = COPY %0
21
29
%2:vgpr(s32) = G_IMPLICIT_DEF
22
30
G_STORE %2, %1 :: (store 4, addrspace 1)
23
31
...
24
32
---
25
33
26
- name : copy_vcc_scc
34
+ name : copy_vcc_bank_scc_bank
27
35
legalized : true
28
36
regBankSelected : true
29
37
30
38
body : |
31
39
bb.0:
32
40
liveins: $vgpr0_vgpr1, $vgpr2, $vgpr3, $scc
33
- ; GCN-LABEL: name: copy_vcc_scc
34
- ; GCN: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
35
- ; GCN: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2
36
- ; GCN: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr3
37
- ; GCN: [[COPY3:%[0-9]+]]:sreg_32_xm0 = COPY $scc
38
- ; GCN: [[V_CMP_NE_U32_e64_:%[0-9]+]]:sreg_64_xexec = V_CMP_NE_U32_e64 0, [[COPY3]], implicit $exec
39
- ; GCN: [[V_CNDMASK_B32_e64_:%[0-9]+]]:vgpr_32 = V_CNDMASK_B32_e64 0, [[COPY2]], 0, [[COPY1]], [[V_CMP_NE_U32_e64_]], implicit $exec
40
- ; GCN: FLAT_STORE_DWORD [[COPY]], [[V_CNDMASK_B32_e64_]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr
41
+
42
+ ; WAVE64-LABEL: name: copy_vcc_bank_scc_bank
43
+ ; WAVE64: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
44
+ ; WAVE64: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2
45
+ ; WAVE64: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr3
46
+ ; WAVE64: [[COPY3:%[0-9]+]]:sreg_32_xm0 = COPY $scc
47
+ ; WAVE64: [[V_CMP_NE_U32_e64_:%[0-9]+]]:sreg_64_xexec = V_CMP_NE_U32_e64 0, [[COPY3]], implicit $exec
48
+ ; WAVE64: [[V_CNDMASK_B32_e64_:%[0-9]+]]:vgpr_32 = V_CNDMASK_B32_e64 0, [[COPY2]], 0, [[COPY1]], [[V_CMP_NE_U32_e64_]], implicit $exec
49
+ ; WAVE64: FLAT_STORE_DWORD [[COPY]], [[V_CNDMASK_B32_e64_]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr
50
+ ; WAVE32-LABEL: name: copy_vcc_bank_scc_bank
51
+ ; WAVE32: $vcc_hi = IMPLICIT_DEF
52
+ ; WAVE32: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
53
+ ; WAVE32: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2
54
+ ; WAVE32: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr3
55
+ ; WAVE32: [[COPY3:%[0-9]+]]:sreg_32_xm0 = COPY $scc
56
+ ; WAVE32: [[V_CMP_NE_U32_e64_:%[0-9]+]]:sreg_32_xm0_xexec = V_CMP_NE_U32_e64 0, [[COPY3]], implicit $exec
57
+ ; WAVE32: [[V_CNDMASK_B32_e64_:%[0-9]+]]:vgpr_32 = V_CNDMASK_B32_e64 0, [[COPY2]], 0, [[COPY1]], [[V_CMP_NE_U32_e64_]], implicit $exec
58
+ ; WAVE32: FLAT_STORE_DWORD [[COPY]], [[V_CNDMASK_B32_e64_]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr
41
59
%0:vgpr(p1) = COPY $vgpr0_vgpr1
42
60
%1:vgpr(s32) = COPY $vgpr2
43
61
%2:vgpr(s32) = COPY $vgpr3
@@ -48,23 +66,35 @@ body: |
48
66
...
49
67
---
50
68
51
- name : copy_vcc_scc_2_uses
69
+ name : copy_vcc_bank_scc_bank_2_uses
52
70
legalized : true
53
71
regBankSelected : true
54
72
55
73
body : |
56
74
bb.0:
57
75
liveins: $vgpr0_vgpr1, $vgpr2, $vgpr3, $scc
58
- ; GCN-LABEL: name: copy_vcc_scc_2_uses
59
- ; GCN: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
60
- ; GCN: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2
61
- ; GCN: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr3
62
- ; GCN: [[COPY3:%[0-9]+]]:sreg_32_xm0 = COPY $scc
63
- ; GCN: [[V_CMP_NE_U32_e64_:%[0-9]+]]:sreg_64_xexec = V_CMP_NE_U32_e64 0, [[COPY3]], implicit $exec
64
- ; GCN: [[V_CNDMASK_B32_e64_:%[0-9]+]]:vgpr_32 = V_CNDMASK_B32_e64 0, [[COPY2]], 0, [[COPY1]], [[V_CMP_NE_U32_e64_]], implicit $exec
65
- ; GCN: [[V_CMP_NE_U32_e64_1:%[0-9]+]]:sreg_64_xexec = V_CMP_NE_U32_e64 0, [[COPY3]], implicit $exec
66
- ; GCN: [[V_CNDMASK_B32_e64_1:%[0-9]+]]:vgpr_32 = V_CNDMASK_B32_e64 0, [[V_CNDMASK_B32_e64_]], 0, [[COPY1]], [[V_CMP_NE_U32_e64_1]], implicit $exec
67
- ; GCN: FLAT_STORE_DWORD [[COPY]], [[V_CNDMASK_B32_e64_1]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr
76
+
77
+ ; WAVE64-LABEL: name: copy_vcc_bank_scc_bank_2_uses
78
+ ; WAVE64: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
79
+ ; WAVE64: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2
80
+ ; WAVE64: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr3
81
+ ; WAVE64: [[COPY3:%[0-9]+]]:sreg_32_xm0 = COPY $scc
82
+ ; WAVE64: [[V_CMP_NE_U32_e64_:%[0-9]+]]:sreg_64_xexec = V_CMP_NE_U32_e64 0, [[COPY3]], implicit $exec
83
+ ; WAVE64: [[V_CNDMASK_B32_e64_:%[0-9]+]]:vgpr_32 = V_CNDMASK_B32_e64 0, [[COPY2]], 0, [[COPY1]], [[V_CMP_NE_U32_e64_]], implicit $exec
84
+ ; WAVE64: [[V_CMP_NE_U32_e64_1:%[0-9]+]]:sreg_64_xexec = V_CMP_NE_U32_e64 0, [[COPY3]], implicit $exec
85
+ ; WAVE64: [[V_CNDMASK_B32_e64_1:%[0-9]+]]:vgpr_32 = V_CNDMASK_B32_e64 0, [[V_CNDMASK_B32_e64_]], 0, [[COPY1]], [[V_CMP_NE_U32_e64_1]], implicit $exec
86
+ ; WAVE64: FLAT_STORE_DWORD [[COPY]], [[V_CNDMASK_B32_e64_1]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr
87
+ ; WAVE32-LABEL: name: copy_vcc_bank_scc_bank_2_uses
88
+ ; WAVE32: $vcc_hi = IMPLICIT_DEF
89
+ ; WAVE32: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
90
+ ; WAVE32: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2
91
+ ; WAVE32: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr3
92
+ ; WAVE32: [[COPY3:%[0-9]+]]:sreg_32_xm0 = COPY $scc
93
+ ; WAVE32: [[V_CMP_NE_U32_e64_:%[0-9]+]]:sreg_32_xm0_xexec = V_CMP_NE_U32_e64 0, [[COPY3]], implicit $exec
94
+ ; WAVE32: [[V_CNDMASK_B32_e64_:%[0-9]+]]:vgpr_32 = V_CNDMASK_B32_e64 0, [[COPY2]], 0, [[COPY1]], [[V_CMP_NE_U32_e64_]], implicit $exec
95
+ ; WAVE32: [[V_CMP_NE_U32_e64_1:%[0-9]+]]:sreg_32_xm0_xexec = V_CMP_NE_U32_e64 0, [[COPY3]], implicit $exec
96
+ ; WAVE32: [[V_CNDMASK_B32_e64_1:%[0-9]+]]:vgpr_32 = V_CNDMASK_B32_e64 0, [[V_CNDMASK_B32_e64_]], 0, [[COPY1]], [[V_CMP_NE_U32_e64_1]], implicit $exec
97
+ ; WAVE32: FLAT_STORE_DWORD [[COPY]], [[V_CNDMASK_B32_e64_1]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr
68
98
%0:vgpr(p1) = COPY $vgpr0_vgpr1
69
99
%1:vgpr(s32) = COPY $vgpr2
70
100
%2:vgpr(s32) = COPY $vgpr3
@@ -75,4 +105,36 @@ body: |
75
105
%7:vgpr(s32) = G_SELECT %6, %1, %5
76
106
G_STORE %7, %0 :: (store 4, addrspace 1)
77
107
...
108
+
78
109
---
110
+
111
+ name : copy_vcc_bank_scc_physreg
112
+ legalized : true
113
+ regBankSelected : true
114
+
115
+ body : |
116
+ bb.0:
117
+ liveins: $vgpr0_vgpr1, $vgpr2, $vgpr3, $scc
118
+
119
+ ; WAVE64-LABEL: name: copy_vcc_bank_scc_physreg
120
+ ; WAVE64: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
121
+ ; WAVE64: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2
122
+ ; WAVE64: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr3
123
+ ; WAVE64: [[COPY3:%[0-9]+]]:sreg_64_xexec = COPY $scc
124
+ ; WAVE64: [[V_CNDMASK_B32_e64_:%[0-9]+]]:vgpr_32 = V_CNDMASK_B32_e64 0, [[COPY2]], 0, [[COPY1]], [[COPY3]], implicit $exec
125
+ ; WAVE64: FLAT_STORE_DWORD [[COPY]], [[V_CNDMASK_B32_e64_]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr
126
+ ; WAVE32-LABEL: name: copy_vcc_bank_scc_physreg
127
+ ; WAVE32: $vcc_hi = IMPLICIT_DEF
128
+ ; WAVE32: [[COPY:%[0-9]+]]:vreg_64 = COPY $vgpr0_vgpr1
129
+ ; WAVE32: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr2
130
+ ; WAVE32: [[COPY2:%[0-9]+]]:vgpr_32 = COPY $vgpr3
131
+ ; WAVE32: [[COPY3:%[0-9]+]]:sreg_32_xm0_xexec = COPY $scc
132
+ ; WAVE32: [[V_CNDMASK_B32_e64_:%[0-9]+]]:vgpr_32 = V_CNDMASK_B32_e64 0, [[COPY2]], 0, [[COPY1]], [[COPY3]], implicit $exec
133
+ ; WAVE32: FLAT_STORE_DWORD [[COPY]], [[V_CNDMASK_B32_e64_]], 0, 0, 0, 0, implicit $exec, implicit $flat_scr
134
+ %0:vgpr(p1) = COPY $vgpr0_vgpr1
135
+ %1:vgpr(s32) = COPY $vgpr2
136
+ %2:vgpr(s32) = COPY $vgpr3
137
+ %3:vcc(s1) = COPY $scc
138
+ %5:vgpr(s32) = G_SELECT %3, %1, %2
139
+ G_STORE %5, %0 :: (store 4, addrspace 1)
140
+ ...
0 commit comments