387 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple=amdgcn-mesa-mesa3d -mcpu=tahiti -run-pass=legalizer -o - %s | FileCheck -check-prefix=SI %s3# RUN: llc -mtriple=amdgcn-mesa-mesa3d -mcpu=fiji -run-pass=legalizer -o - %s | FileCheck -check-prefix=VI %s4# RUN: llc -mtriple=amdgcn-mesa-mesa3d -mcpu=gfx900 -run-pass=legalizer -o - %s | FileCheck -check-prefix=GFX9 %s5# RUN: llc -mtriple=amdgcn-mesa-mesa3d -mcpu=gfx1010 -run-pass=legalizer -o - %s | FileCheck -check-prefix=GFX9 %s6# RUN: llc -mtriple=amdgcn-mesa-mesa3d -mcpu=gfx1100 -mattr=-real-true16 -run-pass=legalizer -o - %s | FileCheck -check-prefixes=GFX9 %s7 8 9---10name: test_fabs_s3211body: |12 bb.0:13 liveins: $vgpr014 15 ; SI-LABEL: name: test_fabs_s3216 ; SI: liveins: $vgpr017 ; SI-NEXT: {{ $}}18 ; SI-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr019 ; SI-NEXT: [[FABS:%[0-9]+]]:_(s32) = G_FABS [[COPY]]20 ; SI-NEXT: $vgpr0 = COPY [[FABS]](s32)21 ;22 ; VI-LABEL: name: test_fabs_s3223 ; VI: liveins: $vgpr024 ; VI-NEXT: {{ $}}25 ; VI-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr026 ; VI-NEXT: [[FABS:%[0-9]+]]:_(s32) = G_FABS [[COPY]]27 ; VI-NEXT: $vgpr0 = COPY [[FABS]](s32)28 ;29 ; GFX9-LABEL: name: test_fabs_s3230 ; GFX9: liveins: $vgpr031 ; GFX9-NEXT: {{ $}}32 ; GFX9-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr033 ; GFX9-NEXT: [[FABS:%[0-9]+]]:_(s32) = G_FABS [[COPY]]34 ; GFX9-NEXT: $vgpr0 = COPY [[FABS]](s32)35 %0:_(s32) = COPY $vgpr036 %1:_(s32) = G_FABS %037 $vgpr0 = COPY %138 39...40---41name: test_fabs_s6442body: |43 bb.0:44 liveins: $vgpr045 46 ; SI-LABEL: name: test_fabs_s6447 ; SI: liveins: $vgpr048 ; SI-NEXT: {{ $}}49 ; SI-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr150 ; SI-NEXT: [[FABS:%[0-9]+]]:_(s64) = G_FABS [[COPY]]51 ; SI-NEXT: $vgpr0_vgpr1 = COPY [[FABS]](s64)52 ;53 ; VI-LABEL: name: test_fabs_s6454 ; VI: liveins: $vgpr055 ; VI-NEXT: {{ $}}56 ; VI-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr157 ; VI-NEXT: [[FABS:%[0-9]+]]:_(s64) = G_FABS [[COPY]]58 ; VI-NEXT: $vgpr0_vgpr1 = COPY [[FABS]](s64)59 ;60 ; GFX9-LABEL: name: test_fabs_s6461 ; GFX9: liveins: $vgpr062 ; GFX9-NEXT: {{ $}}63 ; GFX9-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr164 ; GFX9-NEXT: [[FABS:%[0-9]+]]:_(s64) = G_FABS [[COPY]]65 ; GFX9-NEXT: $vgpr0_vgpr1 = COPY [[FABS]](s64)66 %0:_(s64) = COPY $vgpr0_vgpr167 %1:_(s64) = G_FABS %068 $vgpr0_vgpr1 = COPY %169...70---71name: test_fabs_s1672body: |73 bb.0:74 liveins: $vgpr075 76 ; SI-LABEL: name: test_fabs_s1677 ; SI: liveins: $vgpr078 ; SI-NEXT: {{ $}}79 ; SI-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr080 ; SI-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)81 ; SI-NEXT: [[FABS:%[0-9]+]]:_(s16) = G_FABS [[TRUNC]]82 ; SI-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[FABS]](s16)83 ; SI-NEXT: $vgpr0 = COPY [[ANYEXT]](s32)84 ;85 ; VI-LABEL: name: test_fabs_s1686 ; VI: liveins: $vgpr087 ; VI-NEXT: {{ $}}88 ; VI-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr089 ; VI-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)90 ; VI-NEXT: [[FABS:%[0-9]+]]:_(s16) = G_FABS [[TRUNC]]91 ; VI-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[FABS]](s16)92 ; VI-NEXT: $vgpr0 = COPY [[ANYEXT]](s32)93 ;94 ; GFX9-LABEL: name: test_fabs_s1695 ; GFX9: liveins: $vgpr096 ; GFX9-NEXT: {{ $}}97 ; GFX9-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr098 ; GFX9-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)99 ; GFX9-NEXT: [[FABS:%[0-9]+]]:_(s16) = G_FABS [[TRUNC]]100 ; GFX9-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[FABS]](s16)101 ; GFX9-NEXT: $vgpr0 = COPY [[ANYEXT]](s32)102 %0:_(s32) = COPY $vgpr0103 %1:_(s16) = G_TRUNC %0104 %2:_(s16) = G_FABS %1105 %3:_(s32) = G_ANYEXT %2106 $vgpr0 = COPY %3107...108 109---110name: test_fabs_v2s32111body: |112 bb.0:113 liveins: $vgpr0_vgpr1114 115 ; SI-LABEL: name: test_fabs_v2s32116 ; SI: liveins: $vgpr0_vgpr1117 ; SI-NEXT: {{ $}}118 ; SI-NEXT: [[COPY:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr0_vgpr1119 ; SI-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](<2 x s32>)120 ; SI-NEXT: [[FABS:%[0-9]+]]:_(s32) = G_FABS [[UV]]121 ; SI-NEXT: [[FABS1:%[0-9]+]]:_(s32) = G_FABS [[UV1]]122 ; SI-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[FABS]](s32), [[FABS1]](s32)123 ; SI-NEXT: $vgpr0_vgpr1 = COPY [[BUILD_VECTOR]](<2 x s32>)124 ;125 ; VI-LABEL: name: test_fabs_v2s32126 ; VI: liveins: $vgpr0_vgpr1127 ; VI-NEXT: {{ $}}128 ; VI-NEXT: [[COPY:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr0_vgpr1129 ; VI-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](<2 x s32>)130 ; VI-NEXT: [[FABS:%[0-9]+]]:_(s32) = G_FABS [[UV]]131 ; VI-NEXT: [[FABS1:%[0-9]+]]:_(s32) = G_FABS [[UV1]]132 ; VI-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[FABS]](s32), [[FABS1]](s32)133 ; VI-NEXT: $vgpr0_vgpr1 = COPY [[BUILD_VECTOR]](<2 x s32>)134 ;135 ; GFX9-LABEL: name: test_fabs_v2s32136 ; GFX9: liveins: $vgpr0_vgpr1137 ; GFX9-NEXT: {{ $}}138 ; GFX9-NEXT: [[COPY:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr0_vgpr1139 ; GFX9-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](<2 x s32>)140 ; GFX9-NEXT: [[FABS:%[0-9]+]]:_(s32) = G_FABS [[UV]]141 ; GFX9-NEXT: [[FABS1:%[0-9]+]]:_(s32) = G_FABS [[UV1]]142 ; GFX9-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[FABS]](s32), [[FABS1]](s32)143 ; GFX9-NEXT: $vgpr0_vgpr1 = COPY [[BUILD_VECTOR]](<2 x s32>)144 %0:_(<2 x s32>) = COPY $vgpr0_vgpr1145 %1:_(<2 x s32>) = G_FABS %0146 $vgpr0_vgpr1 = COPY %1147...148 149---150name: test_fabs_v3s32151body: |152 bb.0:153 liveins: $vgpr0_vgpr1_vgpr2154 155 ; SI-LABEL: name: test_fabs_v3s32156 ; SI: liveins: $vgpr0_vgpr1_vgpr2157 ; SI-NEXT: {{ $}}158 ; SI-NEXT: [[COPY:%[0-9]+]]:_(<3 x s32>) = COPY $vgpr0_vgpr1_vgpr2159 ; SI-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](<3 x s32>)160 ; SI-NEXT: [[FABS:%[0-9]+]]:_(s32) = G_FABS [[UV]]161 ; SI-NEXT: [[FABS1:%[0-9]+]]:_(s32) = G_FABS [[UV1]]162 ; SI-NEXT: [[FABS2:%[0-9]+]]:_(s32) = G_FABS [[UV2]]163 ; SI-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<3 x s32>) = G_BUILD_VECTOR [[FABS]](s32), [[FABS1]](s32), [[FABS2]](s32)164 ; SI-NEXT: $vgpr0_vgpr1_vgpr2 = COPY [[BUILD_VECTOR]](<3 x s32>)165 ;166 ; VI-LABEL: name: test_fabs_v3s32167 ; VI: liveins: $vgpr0_vgpr1_vgpr2168 ; VI-NEXT: {{ $}}169 ; VI-NEXT: [[COPY:%[0-9]+]]:_(<3 x s32>) = COPY $vgpr0_vgpr1_vgpr2170 ; VI-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](<3 x s32>)171 ; VI-NEXT: [[FABS:%[0-9]+]]:_(s32) = G_FABS [[UV]]172 ; VI-NEXT: [[FABS1:%[0-9]+]]:_(s32) = G_FABS [[UV1]]173 ; VI-NEXT: [[FABS2:%[0-9]+]]:_(s32) = G_FABS [[UV2]]174 ; VI-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<3 x s32>) = G_BUILD_VECTOR [[FABS]](s32), [[FABS1]](s32), [[FABS2]](s32)175 ; VI-NEXT: $vgpr0_vgpr1_vgpr2 = COPY [[BUILD_VECTOR]](<3 x s32>)176 ;177 ; GFX9-LABEL: name: test_fabs_v3s32178 ; GFX9: liveins: $vgpr0_vgpr1_vgpr2179 ; GFX9-NEXT: {{ $}}180 ; GFX9-NEXT: [[COPY:%[0-9]+]]:_(<3 x s32>) = COPY $vgpr0_vgpr1_vgpr2181 ; GFX9-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](<3 x s32>)182 ; GFX9-NEXT: [[FABS:%[0-9]+]]:_(s32) = G_FABS [[UV]]183 ; GFX9-NEXT: [[FABS1:%[0-9]+]]:_(s32) = G_FABS [[UV1]]184 ; GFX9-NEXT: [[FABS2:%[0-9]+]]:_(s32) = G_FABS [[UV2]]185 ; GFX9-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<3 x s32>) = G_BUILD_VECTOR [[FABS]](s32), [[FABS1]](s32), [[FABS2]](s32)186 ; GFX9-NEXT: $vgpr0_vgpr1_vgpr2 = COPY [[BUILD_VECTOR]](<3 x s32>)187 %0:_(<3 x s32>) = COPY $vgpr0_vgpr1_vgpr2188 %1:_(<3 x s32>) = G_FABS %0189 $vgpr0_vgpr1_vgpr2 = COPY %1190...191 192---193name: test_fabs_v2s64194body: |195 bb.0:196 liveins: $vgpr0_vgpr1_vgpr2_vgpr3197 198 ; SI-LABEL: name: test_fabs_v2s64199 ; SI: liveins: $vgpr0_vgpr1_vgpr2_vgpr3200 ; SI-NEXT: {{ $}}201 ; SI-NEXT: [[COPY:%[0-9]+]]:_(<2 x s64>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3202 ; SI-NEXT: [[UV:%[0-9]+]]:_(s64), [[UV1:%[0-9]+]]:_(s64) = G_UNMERGE_VALUES [[COPY]](<2 x s64>)203 ; SI-NEXT: [[FABS:%[0-9]+]]:_(s64) = G_FABS [[UV]]204 ; SI-NEXT: [[FABS1:%[0-9]+]]:_(s64) = G_FABS [[UV1]]205 ; SI-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s64>) = G_BUILD_VECTOR [[FABS]](s64), [[FABS1]](s64)206 ; SI-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[BUILD_VECTOR]](<2 x s64>)207 ;208 ; VI-LABEL: name: test_fabs_v2s64209 ; VI: liveins: $vgpr0_vgpr1_vgpr2_vgpr3210 ; VI-NEXT: {{ $}}211 ; VI-NEXT: [[COPY:%[0-9]+]]:_(<2 x s64>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3212 ; VI-NEXT: [[UV:%[0-9]+]]:_(s64), [[UV1:%[0-9]+]]:_(s64) = G_UNMERGE_VALUES [[COPY]](<2 x s64>)213 ; VI-NEXT: [[FABS:%[0-9]+]]:_(s64) = G_FABS [[UV]]214 ; VI-NEXT: [[FABS1:%[0-9]+]]:_(s64) = G_FABS [[UV1]]215 ; VI-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s64>) = G_BUILD_VECTOR [[FABS]](s64), [[FABS1]](s64)216 ; VI-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[BUILD_VECTOR]](<2 x s64>)217 ;218 ; GFX9-LABEL: name: test_fabs_v2s64219 ; GFX9: liveins: $vgpr0_vgpr1_vgpr2_vgpr3220 ; GFX9-NEXT: {{ $}}221 ; GFX9-NEXT: [[COPY:%[0-9]+]]:_(<2 x s64>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3222 ; GFX9-NEXT: [[UV:%[0-9]+]]:_(s64), [[UV1:%[0-9]+]]:_(s64) = G_UNMERGE_VALUES [[COPY]](<2 x s64>)223 ; GFX9-NEXT: [[FABS:%[0-9]+]]:_(s64) = G_FABS [[UV]]224 ; GFX9-NEXT: [[FABS1:%[0-9]+]]:_(s64) = G_FABS [[UV1]]225 ; GFX9-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s64>) = G_BUILD_VECTOR [[FABS]](s64), [[FABS1]](s64)226 ; GFX9-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[BUILD_VECTOR]](<2 x s64>)227 %0:_(<2 x s64>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3228 %1:_(<2 x s64>) = G_FABS %0229 $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %1230...231 232---233name: test_fabs_v2s16234body: |235 bb.0:236 liveins: $vgpr0237 238 ; SI-LABEL: name: test_fabs_v2s16239 ; SI: liveins: $vgpr0240 ; SI-NEXT: {{ $}}241 ; SI-NEXT: [[COPY:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr0242 ; SI-NEXT: [[FABS:%[0-9]+]]:_(<2 x s16>) = G_FABS [[COPY]]243 ; SI-NEXT: $vgpr0 = COPY [[FABS]](<2 x s16>)244 ;245 ; VI-LABEL: name: test_fabs_v2s16246 ; VI: liveins: $vgpr0247 ; VI-NEXT: {{ $}}248 ; VI-NEXT: [[COPY:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr0249 ; VI-NEXT: [[FABS:%[0-9]+]]:_(<2 x s16>) = G_FABS [[COPY]]250 ; VI-NEXT: $vgpr0 = COPY [[FABS]](<2 x s16>)251 ;252 ; GFX9-LABEL: name: test_fabs_v2s16253 ; GFX9: liveins: $vgpr0254 ; GFX9-NEXT: {{ $}}255 ; GFX9-NEXT: [[COPY:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr0256 ; GFX9-NEXT: [[FABS:%[0-9]+]]:_(<2 x s16>) = G_FABS [[COPY]]257 ; GFX9-NEXT: $vgpr0 = COPY [[FABS]](<2 x s16>)258 %0:_(<2 x s16>) = COPY $vgpr0259 %1:_(<2 x s16>) = G_FABS %0260 $vgpr0 = COPY %1261...262 263---264name: test_fabs_v3s16265body: |266 bb.0:267 268 ; SI-LABEL: name: test_fabs_v3s16269 ; SI: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0270 ; SI-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 16271 ; SI-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[C]], [[C1]](s32)272 ; SI-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[C]], [[SHL]]273 ; SI-NEXT: [[BITCAST:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR]](s32)274 ; SI-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY [[OR]](s32)275 ; SI-NEXT: [[BITCAST1:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[COPY]](s32)276 ; SI-NEXT: [[FABS:%[0-9]+]]:_(<2 x s16>) = G_FABS [[BITCAST]]277 ; SI-NEXT: [[FABS1:%[0-9]+]]:_(<2 x s16>) = G_FABS [[BITCAST1]]278 ; SI-NEXT: [[BITCAST2:%[0-9]+]]:_(s32) = G_BITCAST [[FABS]](<2 x s16>)279 ; SI-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST2]], [[C1]](s32)280 ; SI-NEXT: [[BITCAST3:%[0-9]+]]:_(s32) = G_BITCAST [[FABS1]](<2 x s16>)281 ; SI-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 65535282 ; SI-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[BITCAST2]], [[C2]]283 ; SI-NEXT: [[SHL1:%[0-9]+]]:_(s32) = G_SHL [[LSHR]], [[C1]](s32)284 ; SI-NEXT: [[OR1:%[0-9]+]]:_(s32) = G_OR [[AND]], [[SHL1]]285 ; SI-NEXT: [[BITCAST4:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR1]](s32)286 ; SI-NEXT: [[AND1:%[0-9]+]]:_(s32) = G_AND [[BITCAST3]], [[C2]]287 ; SI-NEXT: [[SHL2:%[0-9]+]]:_(s32) = G_SHL [[AND]], [[C1]](s32)288 ; SI-NEXT: [[OR2:%[0-9]+]]:_(s32) = G_OR [[AND1]], [[SHL2]]289 ; SI-NEXT: [[BITCAST5:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR2]](s32)290 ; SI-NEXT: [[SHL3:%[0-9]+]]:_(s32) = G_SHL [[AND1]], [[C1]](s32)291 ; SI-NEXT: [[OR3:%[0-9]+]]:_(s32) = G_OR [[LSHR]], [[SHL3]]292 ; SI-NEXT: [[BITCAST6:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR3]](s32)293 ; SI-NEXT: [[CONCAT_VECTORS:%[0-9]+]]:_(<6 x s16>) = G_CONCAT_VECTORS [[BITCAST4]](<2 x s16>), [[BITCAST5]](<2 x s16>), [[BITCAST6]](<2 x s16>)294 ; SI-NEXT: S_NOP 0, implicit [[CONCAT_VECTORS]](<6 x s16>)295 ;296 ; VI-LABEL: name: test_fabs_v3s16297 ; VI: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0298 ; VI-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 16299 ; VI-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[C]], [[C1]](s32)300 ; VI-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[C]], [[SHL]]301 ; VI-NEXT: [[BITCAST:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR]](s32)302 ; VI-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY [[OR]](s32)303 ; VI-NEXT: [[BITCAST1:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[COPY]](s32)304 ; VI-NEXT: [[FABS:%[0-9]+]]:_(<2 x s16>) = G_FABS [[BITCAST]]305 ; VI-NEXT: [[FABS1:%[0-9]+]]:_(<2 x s16>) = G_FABS [[BITCAST1]]306 ; VI-NEXT: [[BITCAST2:%[0-9]+]]:_(s32) = G_BITCAST [[FABS]](<2 x s16>)307 ; VI-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST2]], [[C1]](s32)308 ; VI-NEXT: [[BITCAST3:%[0-9]+]]:_(s32) = G_BITCAST [[FABS1]](<2 x s16>)309 ; VI-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 65535310 ; VI-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[BITCAST2]], [[C2]]311 ; VI-NEXT: [[SHL1:%[0-9]+]]:_(s32) = G_SHL [[LSHR]], [[C1]](s32)312 ; VI-NEXT: [[OR1:%[0-9]+]]:_(s32) = G_OR [[AND]], [[SHL1]]313 ; VI-NEXT: [[BITCAST4:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR1]](s32)314 ; VI-NEXT: [[AND1:%[0-9]+]]:_(s32) = G_AND [[BITCAST3]], [[C2]]315 ; VI-NEXT: [[SHL2:%[0-9]+]]:_(s32) = G_SHL [[AND]], [[C1]](s32)316 ; VI-NEXT: [[OR2:%[0-9]+]]:_(s32) = G_OR [[AND1]], [[SHL2]]317 ; VI-NEXT: [[BITCAST5:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR2]](s32)318 ; VI-NEXT: [[SHL3:%[0-9]+]]:_(s32) = G_SHL [[AND1]], [[C1]](s32)319 ; VI-NEXT: [[OR3:%[0-9]+]]:_(s32) = G_OR [[LSHR]], [[SHL3]]320 ; VI-NEXT: [[BITCAST6:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR3]](s32)321 ; VI-NEXT: [[CONCAT_VECTORS:%[0-9]+]]:_(<6 x s16>) = G_CONCAT_VECTORS [[BITCAST4]](<2 x s16>), [[BITCAST5]](<2 x s16>), [[BITCAST6]](<2 x s16>)322 ; VI-NEXT: S_NOP 0, implicit [[CONCAT_VECTORS]](<6 x s16>)323 ;324 ; GFX9-LABEL: name: test_fabs_v3s16325 ; GFX9: [[DEF:%[0-9]+]]:_(s16) = G_IMPLICIT_DEF326 ; GFX9-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR [[DEF]](s16), [[DEF]](s16)327 ; GFX9-NEXT: [[BUILD_VECTOR1:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR [[DEF]](s16), [[DEF]](s16)328 ; GFX9-NEXT: [[FABS:%[0-9]+]]:_(<2 x s16>) = G_FABS [[BUILD_VECTOR]]329 ; GFX9-NEXT: [[FABS1:%[0-9]+]]:_(<2 x s16>) = G_FABS [[BUILD_VECTOR1]]330 ; GFX9-NEXT: [[BITCAST:%[0-9]+]]:_(s32) = G_BITCAST [[FABS]](<2 x s16>)331 ; GFX9-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[BITCAST]](s32)332 ; GFX9-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 16333 ; GFX9-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST]], [[C]](s32)334 ; GFX9-NEXT: [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[LSHR]](s32)335 ; GFX9-NEXT: [[BITCAST1:%[0-9]+]]:_(s32) = G_BITCAST [[FABS1]](<2 x s16>)336 ; GFX9-NEXT: [[TRUNC2:%[0-9]+]]:_(s16) = G_TRUNC [[BITCAST1]](s32)337 ; GFX9-NEXT: [[BUILD_VECTOR2:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR [[TRUNC]](s16), [[TRUNC1]](s16)338 ; GFX9-NEXT: [[BUILD_VECTOR3:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR [[TRUNC2]](s16), [[TRUNC]](s16)339 ; GFX9-NEXT: [[BUILD_VECTOR4:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR [[TRUNC1]](s16), [[TRUNC2]](s16)340 ; GFX9-NEXT: [[CONCAT_VECTORS:%[0-9]+]]:_(<6 x s16>) = G_CONCAT_VECTORS [[BUILD_VECTOR2]](<2 x s16>), [[BUILD_VECTOR3]](<2 x s16>), [[BUILD_VECTOR4]](<2 x s16>)341 ; GFX9-NEXT: S_NOP 0, implicit [[CONCAT_VECTORS]](<6 x s16>)342 %0:_(<3 x s16>) = G_IMPLICIT_DEF343 %1:_(<3 x s16>) = G_FABS %0344 %2:_(<6 x s16>) = G_CONCAT_VECTORS %1, %1345 S_NOP 0, implicit %2346...347 348---349name: test_fabs_v4s16350body: |351 bb.0:352 liveins: $vgpr0_vgpr1353 354 ; SI-LABEL: name: test_fabs_v4s16355 ; SI: liveins: $vgpr0_vgpr1356 ; SI-NEXT: {{ $}}357 ; SI-NEXT: [[COPY:%[0-9]+]]:_(<4 x s16>) = COPY $vgpr0_vgpr1358 ; SI-NEXT: [[UV:%[0-9]+]]:_(<2 x s16>), [[UV1:%[0-9]+]]:_(<2 x s16>) = G_UNMERGE_VALUES [[COPY]](<4 x s16>)359 ; SI-NEXT: [[FABS:%[0-9]+]]:_(<2 x s16>) = G_FABS [[UV]]360 ; SI-NEXT: [[FABS1:%[0-9]+]]:_(<2 x s16>) = G_FABS [[UV1]]361 ; SI-NEXT: [[CONCAT_VECTORS:%[0-9]+]]:_(<4 x s16>) = G_CONCAT_VECTORS [[FABS]](<2 x s16>), [[FABS1]](<2 x s16>)362 ; SI-NEXT: $vgpr0_vgpr1 = COPY [[CONCAT_VECTORS]](<4 x s16>)363 ;364 ; VI-LABEL: name: test_fabs_v4s16365 ; VI: liveins: $vgpr0_vgpr1366 ; VI-NEXT: {{ $}}367 ; VI-NEXT: [[COPY:%[0-9]+]]:_(<4 x s16>) = COPY $vgpr0_vgpr1368 ; VI-NEXT: [[UV:%[0-9]+]]:_(<2 x s16>), [[UV1:%[0-9]+]]:_(<2 x s16>) = G_UNMERGE_VALUES [[COPY]](<4 x s16>)369 ; VI-NEXT: [[FABS:%[0-9]+]]:_(<2 x s16>) = G_FABS [[UV]]370 ; VI-NEXT: [[FABS1:%[0-9]+]]:_(<2 x s16>) = G_FABS [[UV1]]371 ; VI-NEXT: [[CONCAT_VECTORS:%[0-9]+]]:_(<4 x s16>) = G_CONCAT_VECTORS [[FABS]](<2 x s16>), [[FABS1]](<2 x s16>)372 ; VI-NEXT: $vgpr0_vgpr1 = COPY [[CONCAT_VECTORS]](<4 x s16>)373 ;374 ; GFX9-LABEL: name: test_fabs_v4s16375 ; GFX9: liveins: $vgpr0_vgpr1376 ; GFX9-NEXT: {{ $}}377 ; GFX9-NEXT: [[COPY:%[0-9]+]]:_(<4 x s16>) = COPY $vgpr0_vgpr1378 ; GFX9-NEXT: [[UV:%[0-9]+]]:_(<2 x s16>), [[UV1:%[0-9]+]]:_(<2 x s16>) = G_UNMERGE_VALUES [[COPY]](<4 x s16>)379 ; GFX9-NEXT: [[FABS:%[0-9]+]]:_(<2 x s16>) = G_FABS [[UV]]380 ; GFX9-NEXT: [[FABS1:%[0-9]+]]:_(<2 x s16>) = G_FABS [[UV1]]381 ; GFX9-NEXT: [[CONCAT_VECTORS:%[0-9]+]]:_(<4 x s16>) = G_CONCAT_VECTORS [[FABS]](<2 x s16>), [[FABS1]](<2 x s16>)382 ; GFX9-NEXT: $vgpr0_vgpr1 = COPY [[CONCAT_VECTORS]](<4 x s16>)383 %0:_(<4 x s16>) = COPY $vgpr0_vgpr1384 %1:_(<4 x s16>) = G_FABS %0385 $vgpr0_vgpr1 = COPY %1386...387