Bump version to 19.1.0-rc3
[llvm-project.git] / llvm / test / CodeGen / AMDGPU / lo16-hi16-physreg-copy.mir
blobe20400d435e6c6333aa9f47799246f6d93490e13
1 # RUN: llc -mtriple=amdgcn -mcpu=gfx802 -start-before postrapseudos -asm-verbose=0 -verify-machineinstrs %s -o - | FileCheck -check-prefix=GCN %s
2 # RUN: llc -mtriple=amdgcn -mcpu=gfx900 -start-before postrapseudos -asm-verbose=0 -verify-machineinstrs %s -o - | FileCheck -check-prefix=GCN %s
3 # RUN: llc -mtriple=amdgcn -mcpu=gfx1010 -start-before postrapseudos -asm-verbose=0 -verify-machineinstrs %s -o - | FileCheck -check-prefix=GCN %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 # GCN-NEXT:   s_endpgm
52 name: lo_to_lo_samereg
53 tracksRegLiveness: true
54 body:             |
55   bb.0:
56     $vgpr0 = IMPLICIT_DEF
57     $vgpr0_lo16 = COPY $vgpr0_lo16
58     S_ENDPGM 0
59 ...
61 # GCN-LABEL: {{^}}lo_to_hi_samereg:
62 # GCN: v_mov_b32_sdwa v0, v0 dst_sel:WORD_1 dst_unused:UNUSED_PRESERVE src0_sel:WORD_0
63 name: lo_to_hi_samereg
64 tracksRegLiveness: true
65 body:             |
66   bb.0:
67     $vgpr0 = IMPLICIT_DEF
68     $vgpr0_hi16 = COPY $vgpr0_lo16
69     S_ENDPGM 0
70 ...
72 # GCN-LABEL: {{^}}hi_to_lo_samereg:
73 # GCN: v_mov_b32_sdwa v0, v0 dst_sel:WORD_0 dst_unused:UNUSED_PRESERVE src0_sel:WORD_1
74 name: hi_to_lo_samereg
75 tracksRegLiveness: true
76 body:             |
77   bb.0:
78     $vgpr0 = IMPLICIT_DEF
79     $vgpr0_lo16 = COPY killed $vgpr0_hi16
80     S_ENDPGM 0
81 ...
83 # GCN-LABEL: {{^}}hi_to_hi_samereg:
84 # GCN:      s_waitcnt
85 # GCN-NEXT: s_endpgm
86 name: hi_to_hi_samereg
87 tracksRegLiveness: true
88 body:             |
89   bb.0:
90     $vgpr0 = IMPLICIT_DEF
91     $vgpr0_hi16 = COPY killed $vgpr0_hi16
92     S_ENDPGM 0
93 ...
95 # GCN-LABEL: {{^}}lo_to_lo_def_livein:
96 # GCN: v_mov_b32_sdwa v1, v0 dst_sel:WORD_0 dst_unused:UNUSED_PRESERVE src0_sel:WORD_0
97 name: lo_to_lo_def_livein
98 tracksRegLiveness: true
99 body:             |
100   bb.0:
101     liveins: $vgpr0
103     $vgpr1 = IMPLICIT_DEF
104     $vgpr1_lo16 = COPY $vgpr0_lo16
105     S_ENDPGM 0
108 # GCN-LABEL: {{^}}lo_to_hi_def_livein:
109 # GCN: v_mov_b32_sdwa v1, v0 dst_sel:WORD_1 dst_unused:UNUSED_PRESERVE src0_sel:WORD_0
110 name: lo_to_hi_def_livein
111 tracksRegLiveness: true
112 body:             |
113   bb.0:
114     liveins: $vgpr0
116     $vgpr1 = IMPLICIT_DEF
117     $vgpr1_hi16 = COPY $vgpr0_lo16
118     S_ENDPGM 0
121 # GCN-LABEL: {{^}}hi_to_lo_def_livein:
122 # GCN: v_mov_b32_sdwa v1, v0 dst_sel:WORD_0 dst_unused:UNUSED_PRESERVE src0_sel:WORD_1
123 name: hi_to_lo_def_livein
124 tracksRegLiveness: true
125 body:             |
126   bb.0:
127     liveins: $vgpr0
129     $vgpr1 = IMPLICIT_DEF
130     $vgpr1_lo16 = COPY killed $vgpr0_hi16
131     S_ENDPGM 0
134 # GCN-LABEL: {{^}}hi_to_hi_def_livein:
135 # GCN: v_mov_b32_sdwa v1, v0 dst_sel:WORD_1 dst_unused:UNUSED_PRESERVE src0_sel:WORD_1
136 name: hi_to_hi_def_livein
137 tracksRegLiveness: true
138 body:             |
139   bb.0:
140     liveins: $vgpr0
142     $vgpr1 = IMPLICIT_DEF
143     $vgpr1_hi16 = COPY $vgpr0_hi16
144     S_ENDPGM 0
147 # TODO: This can be coalesced into a VGPR_32 copy
148 # GCN-LABEL: {{^}}lo_to_lo_hi_to_hi:
149 # GCN:      v_mov_b32_sdwa v1, v0 dst_sel:WORD_0 dst_unused:UNUSED_PRESERVE src0_sel:WORD_0
150 # GCN-NEXT: v_mov_b32_sdwa v1, v0 dst_sel:WORD_1 dst_unused:UNUSED_PRESERVE src0_sel:WORD_1
151 # GCN-NEXT: v_mov_b32_e32 v2, v1
152 # GCN-NEXT: s_endpgm
153 name: lo_to_lo_hi_to_hi
154 tracksRegLiveness: true
155 body:             |
156   bb.0:
157     $vgpr0 = IMPLICIT_DEF
158     $vgpr1_lo16 = COPY $vgpr0_lo16
159     $vgpr1_hi16 = COPY $vgpr0_hi16
160     $vgpr2 = COPY killed $vgpr1
161     S_ENDPGM 0
164 # GCN-LABEL: {{^}}lo_to_hi_hi_to_lo:
165 # GCN:      v_mov_b32_sdwa v1, v0 dst_sel:WORD_0 dst_unused:UNUSED_PRESERVE src0_sel:WORD_1
166 # GCN-NEXT: v_mov_b32_sdwa v1, v0 dst_sel:WORD_1 dst_unused:UNUSED_PRESERVE src0_sel:WORD_0
167 # GCN-NEXT: v_mov_b32_e32 v2, v1
168 # GCN-NEXT: s_endpgm
169 name: lo_to_hi_hi_to_lo
170 tracksRegLiveness: true
171 body:             |
172   bb.0:
173     $vgpr0 = IMPLICIT_DEF
174     $vgpr1_lo16 = COPY $vgpr0_hi16
175     $vgpr1_hi16 = COPY $vgpr0_lo16
176     $vgpr2 = COPY killed $vgpr1
177     S_ENDPGM 0
180 # NB: copy of undef just killed instead of expansion
181 # GCN-LABEL: {{^}}lo_to_lo_undef:
182 # GCN:        s_waitcnt
183 # GCN-NEXT:   v_mov_b32_e32 v2, v1
184 # GCN-NEXT:   s_endpgm
185 name: lo_to_lo_undef
186 tracksRegLiveness: true
187 body:             |
188   bb.0:
189     $vgpr1_lo16 = COPY undef $vgpr0_lo16
190     $vgpr2 = COPY killed $vgpr1
191     S_ENDPGM 0
194 # GCN-LABEL: {{^}}lo_to_lo_sgpr_to_sgpr:
195 # GCN: s_mov_b32 s1, s0
196 name: lo_to_lo_sgpr_to_sgpr
197 tracksRegLiveness: true
198 body:             |
199   bb.0:
200     $sgpr0 = IMPLICIT_DEF
201     $sgpr1_lo16 = COPY $sgpr0_lo16
202     S_ENDPGM 0