[ORC] Add std::tuple support to SimplePackedSerialization.
[llvm-project.git] / llvm / test / CodeGen / AMDGPU / lo16-hi16-physreg-copy.mir
blobf5b7f110ea2059c0885da7e1d551523b816fbe00
1 # RUN: llc -march=amdgcn -mcpu=gfx802 -start-before postrapseudos -asm-verbose=0 -verify-machineinstrs %s -o - | FileCheck -check-prefix=GCN %s
2 # RUN: llc -march=amdgcn -mcpu=gfx900 -start-before postrapseudos -asm-verbose=0 -verify-machineinstrs %s -o - | FileCheck -check-prefix=GCN %s
3 # RUN: llc -march=amdgcn -mcpu=gfx1010 -start-before postrapseudos -asm-verbose=0 -verify-machineinstrs %s -o - | FileCheck -check-prefixes=GCN,GFX10 %s
5 # GCN-LABEL: {{^}}lo_to_lo:
6 # GCN: v_mov_b32_sdwa v1, v0 dst_sel:WORD_0 dst_unused:UNUSED_PRESERVE src0_sel:WORD_0
7 name: lo_to_lo
8 tracksRegLiveness: true
9 body:             |
10   bb.0:
11     $vgpr0 = IMPLICIT_DEF
12     $vgpr1_lo16 = COPY $vgpr0_lo16
13     S_ENDPGM 0
14 ...
16 # GCN-LABEL: {{^}}lo_to_hi:
17 # GCN: v_mov_b32_sdwa v1, v0 dst_sel:WORD_1 dst_unused:UNUSED_PRESERVE src0_sel:WORD_0
18 name: lo_to_hi
19 tracksRegLiveness: true
20 body:             |
21   bb.0:
22     $vgpr0 = IMPLICIT_DEF
23     $vgpr1_hi16 = COPY killed $vgpr0_lo16
24     S_ENDPGM 0
25 ...
27 # GCN-LABEL: {{^}}hi_to_lo:
28 # GCN: v_mov_b32_sdwa v1, v0 dst_sel:WORD_0 dst_unused:UNUSED_PRESERVE src0_sel:WORD_1
29 name: hi_to_lo
30 tracksRegLiveness: true
31 body:             |
32   bb.0:
33     $vgpr0 = IMPLICIT_DEF
34     $vgpr1_lo16 = COPY $vgpr0_hi16
35     S_ENDPGM 0
36 ...
38 # GCN-LABEL: {{^}}hi_to_hi:
39 # GCN: v_mov_b32_sdwa v1, v0 dst_sel:WORD_1 dst_unused:UNUSED_PRESERVE src0_sel:WORD_1
40 name: hi_to_hi
41 tracksRegLiveness: true
42 body:             |
43   bb.0:
44     $vgpr0 = IMPLICIT_DEF
45     $vgpr1_hi16 = COPY $vgpr0_hi16
46     S_ENDPGM 0
47 ...
49 # GCN-LABEL: {{^}}lo_to_lo_samereg:
50 # GCN:        s_waitcnt
51 # GFX10-NEXT: s_waitcnt_vscnt
52 # GCN-NEXT:   s_endpgm
53 name: lo_to_lo_samereg
54 tracksRegLiveness: true
55 body:             |
56   bb.0:
57     $vgpr0 = IMPLICIT_DEF
58     $vgpr0_lo16 = COPY $vgpr0_lo16
59     S_ENDPGM 0
60 ...
62 # GCN-LABEL: {{^}}lo_to_hi_samereg:
63 # GCN: v_mov_b32_sdwa v0, v0 dst_sel:WORD_1 dst_unused:UNUSED_PRESERVE src0_sel:WORD_0
64 name: lo_to_hi_samereg
65 tracksRegLiveness: true
66 body:             |
67   bb.0:
68     $vgpr0 = IMPLICIT_DEF
69     $vgpr0_hi16 = COPY $vgpr0_lo16
70     S_ENDPGM 0
71 ...
73 # GCN-LABEL: {{^}}hi_to_lo_samereg:
74 # GCN: v_mov_b32_sdwa v0, v0 dst_sel:WORD_0 dst_unused:UNUSED_PRESERVE src0_sel:WORD_1
75 name: hi_to_lo_samereg
76 tracksRegLiveness: true
77 body:             |
78   bb.0:
79     $vgpr0 = IMPLICIT_DEF
80     $vgpr0_lo16 = COPY killed $vgpr0_hi16
81     S_ENDPGM 0
82 ...
84 # GCN-LABEL: {{^}}hi_to_hi_samereg:
85 # GCN:      s_waitcnt
86 # GFX10-NEXT: s_waitcnt_vscnt
87 # GCN-NEXT: s_endpgm
88 name: hi_to_hi_samereg
89 tracksRegLiveness: true
90 body:             |
91   bb.0:
92     $vgpr0 = IMPLICIT_DEF
93     $vgpr0_hi16 = COPY killed $vgpr0_hi16
94     S_ENDPGM 0
95 ...
97 # GCN-LABEL: {{^}}lo_to_lo_def_livein:
98 # GCN: v_mov_b32_sdwa v1, v0 dst_sel:WORD_0 dst_unused:UNUSED_PRESERVE src0_sel:WORD_0
99 name: lo_to_lo_def_livein
100 tracksRegLiveness: true
101 body:             |
102   bb.0:
103     liveins: $vgpr0
105     $vgpr1 = IMPLICIT_DEF
106     $vgpr1_lo16 = COPY $vgpr0_lo16
107     S_ENDPGM 0
110 # GCN-LABEL: {{^}}lo_to_hi_def_livein:
111 # GCN: v_mov_b32_sdwa v1, v0 dst_sel:WORD_1 dst_unused:UNUSED_PRESERVE src0_sel:WORD_0
112 name: lo_to_hi_def_livein
113 tracksRegLiveness: true
114 body:             |
115   bb.0:
116     liveins: $vgpr0
118     $vgpr1 = IMPLICIT_DEF
119     $vgpr1_hi16 = COPY $vgpr0_lo16
120     S_ENDPGM 0
123 # GCN-LABEL: {{^}}hi_to_lo_def_livein:
124 # GCN: v_mov_b32_sdwa v1, v0 dst_sel:WORD_0 dst_unused:UNUSED_PRESERVE src0_sel:WORD_1
125 name: hi_to_lo_def_livein
126 tracksRegLiveness: true
127 body:             |
128   bb.0:
129     liveins: $vgpr0
131     $vgpr1 = IMPLICIT_DEF
132     $vgpr1_lo16 = COPY killed $vgpr0_hi16
133     S_ENDPGM 0
136 # GCN-LABEL: {{^}}hi_to_hi_def_livein:
137 # GCN: v_mov_b32_sdwa v1, v0 dst_sel:WORD_1 dst_unused:UNUSED_PRESERVE src0_sel:WORD_1
138 name: hi_to_hi_def_livein
139 tracksRegLiveness: true
140 body:             |
141   bb.0:
142     liveins: $vgpr0
144     $vgpr1 = IMPLICIT_DEF
145     $vgpr1_hi16 = COPY $vgpr0_hi16
146     S_ENDPGM 0
149 # TODO: This can be coalesced into a VGPR_32 copy
150 # GCN-LABEL: {{^}}lo_to_lo_hi_to_hi:
151 # GCN:      v_mov_b32_sdwa v1, v0 dst_sel:WORD_0 dst_unused:UNUSED_PRESERVE src0_sel:WORD_0
152 # GCN-NEXT: v_mov_b32_sdwa v1, v0 dst_sel:WORD_1 dst_unused:UNUSED_PRESERVE src0_sel:WORD_1
153 # GCN-NEXT: v_mov_b32_e32 v2, v1
154 # GCN-NEXT: s_endpgm
155 name: lo_to_lo_hi_to_hi
156 tracksRegLiveness: true
157 body:             |
158   bb.0:
159     $vgpr0 = IMPLICIT_DEF
160     $vgpr1_lo16 = COPY $vgpr0_lo16
161     $vgpr1_hi16 = COPY $vgpr0_hi16
162     $vgpr2 = COPY killed $vgpr1
163     S_ENDPGM 0
166 # GCN-LABEL: {{^}}lo_to_hi_hi_to_lo:
167 # GCN:      v_mov_b32_sdwa v1, v0 dst_sel:WORD_0 dst_unused:UNUSED_PRESERVE src0_sel:WORD_1
168 # GCN-NEXT: v_mov_b32_sdwa v1, v0 dst_sel:WORD_1 dst_unused:UNUSED_PRESERVE src0_sel:WORD_0
169 # GCN-NEXT: v_mov_b32_e32 v2, v1
170 # GCN-NEXT: s_endpgm
171 name: lo_to_hi_hi_to_lo
172 tracksRegLiveness: true
173 body:             |
174   bb.0:
175     $vgpr0 = IMPLICIT_DEF
176     $vgpr1_lo16 = COPY $vgpr0_hi16
177     $vgpr1_hi16 = COPY $vgpr0_lo16
178     $vgpr2 = COPY killed $vgpr1
179     S_ENDPGM 0
182 # NB: copy of undef just killed instead of expansion
183 # GCN-LABEL: {{^}}lo_to_lo_undef:
184 # GCN:        s_waitcnt
185 # GFX10-NEXT: s_waitcnt_vscnt
186 # GCN-NEXT:   v_mov_b32_e32 v2, v1
187 # GCN-NEXT:   s_endpgm
188 name: lo_to_lo_undef
189 tracksRegLiveness: true
190 body:             |
191   bb.0:
192     $vgpr1_lo16 = COPY undef $vgpr0_lo16
193     $vgpr2 = COPY killed $vgpr1
194     S_ENDPGM 0
197 # GCN-LABEL: {{^}}lo_to_lo_sgpr_to_sgpr:
198 # GCN: s_mov_b32 s1, s0
199 name: lo_to_lo_sgpr_to_sgpr
200 tracksRegLiveness: true
201 body:             |
202   bb.0:
203     $sgpr0 = IMPLICIT_DEF
204     $sgpr1_lo16 = COPY $sgpr0_lo16
205     S_ENDPGM 0