Bump version to 19.1.0-rc3
[llvm-project.git] / llvm / test / CodeGen / AMDGPU / GlobalISel / postlegalizer-combiner-sextload-from-sextinreg.mir
blobafa81980ebd62142297852a737cec0938160b983
1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2 # RUN: llc -mtriple=amdgcn-amd-amdhsa -mcpu=gfx900 -run-pass=amdgpu-postlegalizer-combiner -verify-machineinstrs -o - %s | FileCheck %s
4 # Post-legalizer should not generate illegal extending loads
5 ---
6 name: sextload_from_inreg
7 tracksRegLiveness: true
8 legalized: true
9 body: |
10   bb.0:
11     liveins: $vgpr0_vgpr1
12     ; CHECK-LABEL: name: sextload_from_inreg
13     ; CHECK: liveins: $vgpr0_vgpr1
14     ; CHECK-NEXT: {{  $}}
15     ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1
16     ; CHECK-NEXT: [[LOAD:%[0-9]+]]:_(s64) = G_LOAD [[COPY]](p1) :: (load (s64), addrspace 1)
17     ; CHECK-NEXT: [[SEXT_INREG:%[0-9]+]]:_(s64) = G_SEXT_INREG [[LOAD]], 8
18     ; CHECK-NEXT: $vgpr0_vgpr1 = COPY [[SEXT_INREG]](s64)
19     %0:_(p1) = COPY $vgpr0_vgpr1
20     %1:_(s64) = G_LOAD %0 :: (load (s64), align 8, addrspace 1)
21     %2:_(s64) = G_SEXT_INREG %1, 8
22     $vgpr0_vgpr1 = COPY %2
23 ...
25 # Legal to fold into sextload
26 ---
27 name: sext_inreg_8_sextload_s32
28 tracksRegLiveness: true
29 legalized: true
30 body: |
31   bb.0:
32     liveins: $vgpr0_vgpr1
33     ; CHECK-LABEL: name: sext_inreg_8_sextload_s32
34     ; CHECK: liveins: $vgpr0_vgpr1
35     ; CHECK-NEXT: {{  $}}
36     ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1
37     ; CHECK-NEXT: [[SEXTLOAD:%[0-9]+]]:_(s32) = G_SEXTLOAD [[COPY]](p1) :: (load (s8), align 4, addrspace 1)
38     ; CHECK-NEXT: $vgpr0 = COPY [[SEXTLOAD]](s32)
39     %0:_(p1) = COPY $vgpr0_vgpr1
40     %1:_(s32) = G_LOAD %0 :: (load (s32), align 4, addrspace 1)
41     %2:_(s32) = G_SEXT_INREG %1, 8
42     $vgpr0 = COPY %2
43 ...
45 ---
46 name: sext_inreg_7_sextload_s32
47 tracksRegLiveness: true
48 legalized: true
49 body: |
50   bb.0:
51     liveins: $vgpr0_vgpr1
52     ; CHECK-LABEL: name: sext_inreg_7_sextload_s32
53     ; CHECK: liveins: $vgpr0_vgpr1
54     ; CHECK-NEXT: {{  $}}
55     ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1
56     ; CHECK-NEXT: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[COPY]](p1) :: (load (s32), addrspace 1)
57     ; CHECK-NEXT: [[SEXT_INREG:%[0-9]+]]:_(s32) = G_SEXT_INREG [[LOAD]], 7
58     ; CHECK-NEXT: $vgpr0 = COPY [[SEXT_INREG]](s32)
59     %0:_(p1) = COPY $vgpr0_vgpr1
60     %1:_(s32) = G_LOAD %0 :: (load (s32), align 4, addrspace 1)
61     %2:_(s32) = G_SEXT_INREG %1, 7
62     $vgpr0 = COPY %2
63 ...
65 ---
66 name: sext_inreg_9_sextload_s32
67 tracksRegLiveness: true
68 legalized: true
69 body: |
70   bb.0:
71     liveins: $vgpr0_vgpr1
72     ; CHECK-LABEL: name: sext_inreg_9_sextload_s32
73     ; CHECK: liveins: $vgpr0_vgpr1
74     ; CHECK-NEXT: {{  $}}
75     ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1
76     ; CHECK-NEXT: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[COPY]](p1) :: (load (s32), addrspace 1)
77     ; CHECK-NEXT: [[SEXT_INREG:%[0-9]+]]:_(s32) = G_SEXT_INREG [[LOAD]], 9
78     ; CHECK-NEXT: $vgpr0 = COPY [[SEXT_INREG]](s32)
79     %0:_(p1) = COPY $vgpr0_vgpr1
80     %1:_(s32) = G_LOAD %0 :: (load (s32), align 4, addrspace 1)
81     %2:_(s32) = G_SEXT_INREG %1, 9
82     $vgpr0 = COPY %2
83 ...
85 # Legal to fold into sextload
86 ---
87 name: sext_inreg_16_sextload_s32
88 tracksRegLiveness: true
89 legalized: true
90 body: |
91   bb.0:
92     liveins: $vgpr0_vgpr1
93     ; CHECK-LABEL: name: sext_inreg_16_sextload_s32
94     ; CHECK: liveins: $vgpr0_vgpr1
95     ; CHECK-NEXT: {{  $}}
96     ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1
97     ; CHECK-NEXT: [[SEXTLOAD:%[0-9]+]]:_(s32) = G_SEXTLOAD [[COPY]](p1) :: (load (s16), align 4, addrspace 1)
98     ; CHECK-NEXT: $vgpr0 = COPY [[SEXTLOAD]](s32)
99     %0:_(p1) = COPY $vgpr0_vgpr1
100     %1:_(s32) = G_LOAD %0 :: (load (s32), align 4, addrspace 1)
101     %2:_(s32) = G_SEXT_INREG %1, 16
102     $vgpr0 = COPY %2
106 name: sext_inreg_8_sextload_s8
107 tracksRegLiveness: true
108 legalized: true
109 body: |
110   bb.0:
111     liveins: $vgpr0_vgpr1
112     ; CHECK-LABEL: name: sext_inreg_8_sextload_s8
113     ; CHECK: liveins: $vgpr0_vgpr1
114     ; CHECK-NEXT: {{  $}}
115     ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1
116     ; CHECK-NEXT: [[SEXTLOAD:%[0-9]+]]:_(s32) = G_SEXTLOAD [[COPY]](p1) :: (load (s8), addrspace 1)
117     ; CHECK-NEXT: $vgpr0 = COPY [[SEXTLOAD]](s32)
118     %0:_(p1) = COPY $vgpr0_vgpr1
119     %1:_(s32) = G_LOAD %0 :: (load (s8), align 1, addrspace 1)
120     %2:_(s32) = G_SEXT_INREG %1, 8
121     $vgpr0 = COPY %2
125 name: sext_inreg_8_sextload_s8_volatile
126 tracksRegLiveness: true
127 legalized: true
128 body: |
129   bb.0:
130     liveins: $vgpr0_vgpr1
131     ; CHECK-LABEL: name: sext_inreg_8_sextload_s8_volatile
132     ; CHECK: liveins: $vgpr0_vgpr1
133     ; CHECK-NEXT: {{  $}}
134     ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1
135     ; CHECK-NEXT: [[SEXTLOAD:%[0-9]+]]:_(s32) = G_SEXTLOAD [[COPY]](p1) :: (volatile load (s8), addrspace 1)
136     ; CHECK-NEXT: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[COPY]](p1) :: (volatile load (s8), addrspace 1)
137     ; CHECK-NEXT: $vgpr0 = COPY [[SEXTLOAD]](s32)
138     %0:_(p1) = COPY $vgpr0_vgpr1
139     %1:_(s32) = G_LOAD %0 :: (volatile load (s8), align 1, addrspace 1)
140     %2:_(s32) = G_SEXT_INREG %1, 8
141     $vgpr0 = COPY %2
145 name: sext_inreg_16_sextload_s16
146 tracksRegLiveness: true
147 legalized: true
148 body: |
149   bb.0:
150     liveins: $vgpr0_vgpr1
151     ; CHECK-LABEL: name: sext_inreg_16_sextload_s16
152     ; CHECK: liveins: $vgpr0_vgpr1
153     ; CHECK-NEXT: {{  $}}
154     ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1
155     ; CHECK-NEXT: [[SEXTLOAD:%[0-9]+]]:_(s32) = G_SEXTLOAD [[COPY]](p1) :: (load (s16), addrspace 1)
156     ; CHECK-NEXT: $vgpr0 = COPY [[SEXTLOAD]](s32)
157     %0:_(p1) = COPY $vgpr0_vgpr1
158     %1:_(s32) = G_LOAD %0 :: (load (s16), align 2, addrspace 1)
159     %2:_(s32) = G_SEXT_INREG %1, 16
160     $vgpr0 = COPY %2
164 name: sext_inreg_16_sextload_s16_volatile
165 tracksRegLiveness: true
166 legalized: true
167 body: |
168   bb.0:
169     liveins: $vgpr0_vgpr1
170     ; CHECK-LABEL: name: sext_inreg_16_sextload_s16_volatile
171     ; CHECK: liveins: $vgpr0_vgpr1
172     ; CHECK-NEXT: {{  $}}
173     ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p1) = COPY $vgpr0_vgpr1
174     ; CHECK-NEXT: [[SEXTLOAD:%[0-9]+]]:_(s32) = G_SEXTLOAD [[COPY]](p1) :: (volatile load (s16), addrspace 1)
175     ; CHECK-NEXT: [[LOAD:%[0-9]+]]:_(s32) = G_LOAD [[COPY]](p1) :: (volatile load (s16), addrspace 1)
176     ; CHECK-NEXT: $vgpr0 = COPY [[SEXTLOAD]](s32)
177     %0:_(p1) = COPY $vgpr0_vgpr1
178     %1:_(s32) = G_LOAD %0 :: (volatile load (s16), align 2, addrspace 1)
179     %2:_(s32) = G_SEXT_INREG %1, 16
180     $vgpr0 = COPY %2