246 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple=amdgcn-mesa-mesa3d -mcpu=fiji -run-pass=legalizer %s -o - | FileCheck %s3 4---5name: test_fpext_f16_to_f326body: |7 bb.0:8 liveins: $vgpr09 10 ; CHECK-LABEL: name: test_fpext_f16_to_f3211 ; CHECK: liveins: $vgpr012 ; CHECK-NEXT: {{ $}}13 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr014 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)15 ; CHECK-NEXT: [[FPEXT:%[0-9]+]]:_(s32) = G_FPEXT [[TRUNC]](s16)16 ; CHECK-NEXT: $vgpr0 = COPY [[FPEXT]](s32)17 %0:_(s32) = COPY $vgpr018 %1:_(s16) = G_TRUNC %019 %2:_(s32) = G_FPEXT %120 $vgpr0 = COPY %221...22 23---24name: test_fpext_v2f16_to_v2f3225body: |26 bb.0:27 liveins: $vgpr028 29 ; CHECK-LABEL: name: test_fpext_v2f16_to_v2f3230 ; CHECK: liveins: $vgpr031 ; CHECK-NEXT: {{ $}}32 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr033 ; CHECK-NEXT: [[BITCAST:%[0-9]+]]:_(s32) = G_BITCAST [[COPY]](<2 x s16>)34 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[BITCAST]](s32)35 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 1636 ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST]], [[C]](s32)37 ; CHECK-NEXT: [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[LSHR]](s32)38 ; CHECK-NEXT: [[FPEXT:%[0-9]+]]:_(s32) = nnan G_FPEXT [[TRUNC]](s16)39 ; CHECK-NEXT: [[FPEXT1:%[0-9]+]]:_(s32) = nnan G_FPEXT [[TRUNC1]](s16)40 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[FPEXT]](s32), [[FPEXT1]](s32)41 ; CHECK-NEXT: $vgpr0_vgpr1 = COPY [[BUILD_VECTOR]](<2 x s32>)42 %0:_(<2 x s16>) = COPY $vgpr043 %1:_(<2 x s32>) = nnan G_FPEXT %044 $vgpr0_vgpr1 = COPY %145...46 47---48name: test_fpext_v2f16_to_v2f32_w_flags49body: |50 bb.0:51 liveins: $vgpr052 53 ; CHECK-LABEL: name: test_fpext_v2f16_to_v2f32_w_flags54 ; CHECK: liveins: $vgpr055 ; CHECK-NEXT: {{ $}}56 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr057 ; CHECK-NEXT: [[BITCAST:%[0-9]+]]:_(s32) = G_BITCAST [[COPY]](<2 x s16>)58 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[BITCAST]](s32)59 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 1660 ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST]], [[C]](s32)61 ; CHECK-NEXT: [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[LSHR]](s32)62 ; CHECK-NEXT: [[FPEXT:%[0-9]+]]:_(s32) = nnan G_FPEXT [[TRUNC]](s16)63 ; CHECK-NEXT: [[FPEXT1:%[0-9]+]]:_(s32) = nnan G_FPEXT [[TRUNC1]](s16)64 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[FPEXT]](s32), [[FPEXT1]](s32)65 ; CHECK-NEXT: $vgpr0_vgpr1 = COPY [[BUILD_VECTOR]](<2 x s32>)66 %0:_(<2 x s16>) = COPY $vgpr067 %1:_(<2 x s32>) = nnan G_FPEXT %068 $vgpr0_vgpr1 = COPY %169...70 71---72name: test_fpext_v3f16_to_v3f3273body: |74 bb.0:75 liveins: $vgpr0_vgpr1_vgpr276 ; CHECK-LABEL: name: test_fpext_v3f16_to_v3f3277 ; CHECK: liveins: $vgpr0_vgpr1_vgpr278 ; CHECK-NEXT: {{ $}}79 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<6 x s16>) = COPY $vgpr0_vgpr1_vgpr280 ; CHECK-NEXT: [[UV:%[0-9]+]]:_(<2 x s16>), [[UV1:%[0-9]+]]:_(<2 x s16>), [[UV2:%[0-9]+]]:_(<2 x s16>) = G_UNMERGE_VALUES [[COPY]](<6 x s16>)81 ; CHECK-NEXT: [[BITCAST:%[0-9]+]]:_(s32) = G_BITCAST [[UV]](<2 x s16>)82 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[BITCAST]](s32)83 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 1684 ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST]], [[C]](s32)85 ; CHECK-NEXT: [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[LSHR]](s32)86 ; CHECK-NEXT: [[BITCAST1:%[0-9]+]]:_(s32) = G_BITCAST [[UV1]](<2 x s16>)87 ; CHECK-NEXT: [[TRUNC2:%[0-9]+]]:_(s16) = G_TRUNC [[BITCAST1]](s32)88 ; CHECK-NEXT: [[FPEXT:%[0-9]+]]:_(s32) = G_FPEXT [[TRUNC]](s16)89 ; CHECK-NEXT: [[FPEXT1:%[0-9]+]]:_(s32) = G_FPEXT [[TRUNC1]](s16)90 ; CHECK-NEXT: [[FPEXT2:%[0-9]+]]:_(s32) = G_FPEXT [[TRUNC2]](s16)91 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<3 x s32>) = G_BUILD_VECTOR [[FPEXT]](s32), [[FPEXT1]](s32), [[FPEXT2]](s32)92 ; CHECK-NEXT: $vgpr0_vgpr1_vgpr2 = COPY [[BUILD_VECTOR]](<3 x s32>)93 %0:_(<6 x s16>) = COPY $vgpr0_vgpr1_vgpr294 %1:_(<3 x s16>), %2:_(<3 x s16>) = G_UNMERGE_VALUES %095 %3:_(<3 x s32>) = G_FPEXT %196 $vgpr0_vgpr1_vgpr2 = COPY %397...98 99---100name: test_fpext_v4f16_to_v4f32101body: |102 bb.0:103 liveins: $vgpr0104 105 ; CHECK-LABEL: name: test_fpext_v4f16_to_v4f32106 ; CHECK: liveins: $vgpr0107 ; CHECK-NEXT: {{ $}}108 ; CHECK-NEXT: [[DEF:%[0-9]+]]:_(s16) = G_IMPLICIT_DEF109 ; CHECK-NEXT: [[FPEXT:%[0-9]+]]:_(s32) = G_FPEXT [[DEF]](s16)110 ; CHECK-NEXT: [[FPEXT1:%[0-9]+]]:_(s32) = G_FPEXT [[DEF]](s16)111 ; CHECK-NEXT: [[FPEXT2:%[0-9]+]]:_(s32) = G_FPEXT [[DEF]](s16)112 ; CHECK-NEXT: [[FPEXT3:%[0-9]+]]:_(s32) = G_FPEXT [[DEF]](s16)113 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<4 x s32>) = G_BUILD_VECTOR [[FPEXT]](s32), [[FPEXT1]](s32), [[FPEXT2]](s32), [[FPEXT3]](s32)114 ; CHECK-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[BUILD_VECTOR]](<4 x s32>)115 %0:_(<4 x s16>) = G_IMPLICIT_DEF116 %1:_(<4 x s32>) = G_FPEXT %0117 $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %1118...119 120---121name: test_fpext_f32_to_f64122body: |123 bb.0:124 liveins: $vgpr0125 126 ; CHECK-LABEL: name: test_fpext_f32_to_f64127 ; CHECK: liveins: $vgpr0128 ; CHECK-NEXT: {{ $}}129 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0130 ; CHECK-NEXT: [[FPEXT:%[0-9]+]]:_(s64) = G_FPEXT [[COPY]](s32)131 ; CHECK-NEXT: $vgpr0_vgpr1 = COPY [[FPEXT]](s64)132 %0:_(s32) = COPY $vgpr0133 %1:_(s64) = G_FPEXT %0134 $vgpr0_vgpr1 = COPY %1135...136 137---138name: test_fpext_v2f32_to_v2f64139body: |140 bb.0:141 liveins: $vgpr0_vgpr1142 143 ; CHECK-LABEL: name: test_fpext_v2f32_to_v2f64144 ; CHECK: liveins: $vgpr0_vgpr1145 ; CHECK-NEXT: {{ $}}146 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr0_vgpr1147 ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](<2 x s32>)148 ; CHECK-NEXT: [[FPEXT:%[0-9]+]]:_(s64) = G_FPEXT [[UV]](s32)149 ; CHECK-NEXT: [[FPEXT1:%[0-9]+]]:_(s64) = G_FPEXT [[UV1]](s32)150 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s64>) = G_BUILD_VECTOR [[FPEXT]](s64), [[FPEXT1]](s64)151 ; CHECK-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[BUILD_VECTOR]](<2 x s64>)152 %0:_(<2 x s32>) = COPY $vgpr0_vgpr1153 %1:_(<2 x s64>) = G_FPEXT %0154 $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %1155...156 157---158name: test_fpext_v3f32_to_v3f64159body: |160 bb.0:161 liveins: $vgpr0_vgpr1_vgpr2162 163 ; CHECK-LABEL: name: test_fpext_v3f32_to_v3f64164 ; CHECK: liveins: $vgpr0_vgpr1_vgpr2165 ; CHECK-NEXT: {{ $}}166 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<3 x s32>) = COPY $vgpr0_vgpr1_vgpr2167 ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](<3 x s32>)168 ; CHECK-NEXT: [[FPEXT:%[0-9]+]]:_(s64) = G_FPEXT [[UV]](s32)169 ; CHECK-NEXT: [[FPEXT1:%[0-9]+]]:_(s64) = G_FPEXT [[UV1]](s32)170 ; CHECK-NEXT: [[FPEXT2:%[0-9]+]]:_(s64) = G_FPEXT [[UV2]](s32)171 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<3 x s64>) = G_BUILD_VECTOR [[FPEXT]](s64), [[FPEXT1]](s64), [[FPEXT2]](s64)172 ; CHECK-NEXT: S_NOP 0, implicit [[BUILD_VECTOR]](<3 x s64>)173 %0:_(<3 x s32>) = COPY $vgpr0_vgpr1_vgpr2174 %1:_(<3 x s64>) = G_FPEXT %0175 S_NOP 0, implicit %1176 177...178 179---180name: test_fpext_v4f32_to_v4f64181body: |182 bb.0:183 liveins: $vgpr0_vgpr1_vgpr2_vgpr3184 185 ; CHECK-LABEL: name: test_fpext_v4f32_to_v4f64186 ; CHECK: liveins: $vgpr0_vgpr1_vgpr2_vgpr3187 ; CHECK-NEXT: {{ $}}188 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3189 ; CHECK-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](<4 x s32>)190 ; CHECK-NEXT: [[FPEXT:%[0-9]+]]:_(s64) = G_FPEXT [[UV]](s32)191 ; CHECK-NEXT: [[FPEXT1:%[0-9]+]]:_(s64) = G_FPEXT [[UV1]](s32)192 ; CHECK-NEXT: [[FPEXT2:%[0-9]+]]:_(s64) = G_FPEXT [[UV2]](s32)193 ; CHECK-NEXT: [[FPEXT3:%[0-9]+]]:_(s64) = G_FPEXT [[UV3]](s32)194 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<4 x s64>) = G_BUILD_VECTOR [[FPEXT]](s64), [[FPEXT1]](s64), [[FPEXT2]](s64), [[FPEXT3]](s64)195 ; CHECK-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7 = COPY [[BUILD_VECTOR]](<4 x s64>)196 %0:_(<4 x s32>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3197 %1:_(<4 x s64>) = G_FPEXT %0198 $vgpr0_vgpr1_vgpr2_vgpr3_vgpr4_vgpr5_vgpr6_vgpr7 = COPY %1199...200 201---202name: test_fpext_f16_to_f64203body: |204 bb.0:205 liveins: $vgpr0206 207 ; CHECK-LABEL: name: test_fpext_f16_to_f64208 ; CHECK: liveins: $vgpr0209 ; CHECK-NEXT: {{ $}}210 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0211 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)212 ; CHECK-NEXT: [[FPEXT:%[0-9]+]]:_(s32) = G_FPEXT [[TRUNC]](s16)213 ; CHECK-NEXT: [[FPEXT1:%[0-9]+]]:_(s64) = G_FPEXT [[FPEXT]](s32)214 ; CHECK-NEXT: $vgpr0_vgpr1 = COPY [[FPEXT1]](s64)215 %0:_(s32) = COPY $vgpr0216 %1:_(s16) = G_TRUNC %0217 %2:_(s64) = G_FPEXT %1218 $vgpr0_vgpr1 = COPY %2219...220 221---222name: test_fpext_v2f16_to_v2f64223body: |224 bb.0:225 liveins: $vgpr0226 227 ; CHECK-LABEL: name: test_fpext_v2f16_to_v2f64228 ; CHECK: liveins: $vgpr0229 ; CHECK-NEXT: {{ $}}230 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr0231 ; CHECK-NEXT: [[BITCAST:%[0-9]+]]:_(s32) = G_BITCAST [[COPY]](<2 x s16>)232 ; CHECK-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[BITCAST]](s32)233 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 16234 ; CHECK-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST]], [[C]](s32)235 ; CHECK-NEXT: [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[LSHR]](s32)236 ; CHECK-NEXT: [[FPEXT:%[0-9]+]]:_(s32) = nnan G_FPEXT [[TRUNC]](s16)237 ; CHECK-NEXT: [[FPEXT1:%[0-9]+]]:_(s64) = G_FPEXT [[FPEXT]](s32)238 ; CHECK-NEXT: [[FPEXT2:%[0-9]+]]:_(s32) = nnan G_FPEXT [[TRUNC1]](s16)239 ; CHECK-NEXT: [[FPEXT3:%[0-9]+]]:_(s64) = G_FPEXT [[FPEXT2]](s32)240 ; CHECK-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s64>) = G_BUILD_VECTOR [[FPEXT1]](s64), [[FPEXT3]](s64)241 ; CHECK-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[BUILD_VECTOR]](<2 x s64>)242 %0:_(<2 x s16>) = COPY $vgpr0243 %1:_(<2 x s64>) = nnan G_FPEXT %0244 $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %1245...246