brintos

brintos / llvm-project-archived public Read only

0
0
Text · 15.9 KiB · 82bd14d Raw
364 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 %s -o - | FileCheck -check-prefix=SI %s3# RUN: llc -mtriple=amdgcn-mesa-mesa3d -mcpu=fiji -run-pass=legalizer %s -o - | FileCheck -check-prefix=VI %s4# RUN: llc -mtriple=amdgcn-mesa-mesa3d -mcpu=gfx900 -run-pass=legalizer %s -o - | FileCheck -check-prefix=GFX9 %s5# RUN: llc -mtriple=amdgcn-mesa-mesa3d -mcpu=gfx1010 -run-pass=legalizer %s -o - | FileCheck -check-prefix=GFX9 %s6# RUN: llc -mtriple=amdgcn-mesa-mesa3d -mcpu=gfx1100 -mattr=-real-true16 -run-pass=legalizer %s -o - | FileCheck -check-prefixes=GFX9  %s7 8---9name: test_fneg_s3210body: |11  bb.0:12    liveins: $vgpr013 14    ; SI-LABEL: name: test_fneg_s3215    ; SI: liveins: $vgpr016    ; SI-NEXT: {{  $}}17    ; SI-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr018    ; SI-NEXT: [[FNEG:%[0-9]+]]:_(s32) = G_FNEG [[COPY]]19    ; SI-NEXT: $vgpr0 = COPY [[FNEG]](s32)20    ;21    ; VI-LABEL: name: test_fneg_s3222    ; VI: liveins: $vgpr023    ; VI-NEXT: {{  $}}24    ; VI-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr025    ; VI-NEXT: [[FNEG:%[0-9]+]]:_(s32) = G_FNEG [[COPY]]26    ; VI-NEXT: $vgpr0 = COPY [[FNEG]](s32)27    ;28    ; GFX9-LABEL: name: test_fneg_s3229    ; GFX9: liveins: $vgpr030    ; GFX9-NEXT: {{  $}}31    ; GFX9-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr032    ; GFX9-NEXT: [[FNEG:%[0-9]+]]:_(s32) = G_FNEG [[COPY]]33    ; GFX9-NEXT: $vgpr0 = COPY [[FNEG]](s32)34    %0:_(s32) = COPY $vgpr035    %1:_(s32) = G_FNEG %036    $vgpr0 = COPY %137...38---39name: test_fneg_s6440body: |41  bb.0:42    liveins: $vgpr043 44    ; SI-LABEL: name: test_fneg_s6445    ; SI: liveins: $vgpr046    ; SI-NEXT: {{  $}}47    ; SI-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr148    ; SI-NEXT: [[FNEG:%[0-9]+]]:_(s64) = G_FNEG [[COPY]]49    ; SI-NEXT: $vgpr0_vgpr1 = COPY [[FNEG]](s64)50    ;51    ; VI-LABEL: name: test_fneg_s6452    ; VI: liveins: $vgpr053    ; VI-NEXT: {{  $}}54    ; VI-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr155    ; VI-NEXT: [[FNEG:%[0-9]+]]:_(s64) = G_FNEG [[COPY]]56    ; VI-NEXT: $vgpr0_vgpr1 = COPY [[FNEG]](s64)57    ;58    ; GFX9-LABEL: name: test_fneg_s6459    ; GFX9: liveins: $vgpr060    ; GFX9-NEXT: {{  $}}61    ; GFX9-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr162    ; GFX9-NEXT: [[FNEG:%[0-9]+]]:_(s64) = G_FNEG [[COPY]]63    ; GFX9-NEXT: $vgpr0_vgpr1 = COPY [[FNEG]](s64)64    %0:_(s64) = COPY $vgpr0_vgpr165    %1:_(s64) = G_FNEG %066    $vgpr0_vgpr1 = COPY %167...68---69name: test_fneg_s1670body: |71  bb.0:72    liveins: $vgpr073 74    ; SI-LABEL: name: test_fneg_s1675    ; SI: liveins: $vgpr076    ; SI-NEXT: {{  $}}77    ; SI-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr078    ; SI-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)79    ; SI-NEXT: [[FNEG:%[0-9]+]]:_(s16) = G_FNEG [[TRUNC]]80    ; SI-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[FNEG]](s16)81    ; SI-NEXT: $vgpr0 = COPY [[ANYEXT]](s32)82    ;83    ; VI-LABEL: name: test_fneg_s1684    ; VI: liveins: $vgpr085    ; VI-NEXT: {{  $}}86    ; VI-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr087    ; VI-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)88    ; VI-NEXT: [[FNEG:%[0-9]+]]:_(s16) = G_FNEG [[TRUNC]]89    ; VI-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[FNEG]](s16)90    ; VI-NEXT: $vgpr0 = COPY [[ANYEXT]](s32)91    ;92    ; GFX9-LABEL: name: test_fneg_s1693    ; GFX9: liveins: $vgpr094    ; GFX9-NEXT: {{  $}}95    ; GFX9-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr096    ; GFX9-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)97    ; GFX9-NEXT: [[FNEG:%[0-9]+]]:_(s16) = G_FNEG [[TRUNC]]98    ; GFX9-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[FNEG]](s16)99    ; GFX9-NEXT: $vgpr0 = COPY [[ANYEXT]](s32)100    %0:_(s32) = COPY $vgpr0101    %1:_(s16) = G_TRUNC %0102    %2:_(s16) = G_FNEG %1103    %3:_(s32) = G_ANYEXT %2104    $vgpr0 = COPY %3105...106 107---108name: test_fneg_v2s32109body: |110  bb.0:111    liveins: $vgpr0_vgpr1112 113    ; SI-LABEL: name: test_fneg_v2s32114    ; SI: liveins: $vgpr0_vgpr1115    ; SI-NEXT: {{  $}}116    ; SI-NEXT: [[COPY:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr0_vgpr1117    ; SI-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](<2 x s32>)118    ; SI-NEXT: [[FNEG:%[0-9]+]]:_(s32) = G_FNEG [[UV]]119    ; SI-NEXT: [[FNEG1:%[0-9]+]]:_(s32) = G_FNEG [[UV1]]120    ; SI-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[FNEG]](s32), [[FNEG1]](s32)121    ; SI-NEXT: $vgpr0_vgpr1 = COPY [[BUILD_VECTOR]](<2 x s32>)122    ;123    ; VI-LABEL: name: test_fneg_v2s32124    ; VI: liveins: $vgpr0_vgpr1125    ; VI-NEXT: {{  $}}126    ; VI-NEXT: [[COPY:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr0_vgpr1127    ; VI-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](<2 x s32>)128    ; VI-NEXT: [[FNEG:%[0-9]+]]:_(s32) = G_FNEG [[UV]]129    ; VI-NEXT: [[FNEG1:%[0-9]+]]:_(s32) = G_FNEG [[UV1]]130    ; VI-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[FNEG]](s32), [[FNEG1]](s32)131    ; VI-NEXT: $vgpr0_vgpr1 = COPY [[BUILD_VECTOR]](<2 x s32>)132    ;133    ; GFX9-LABEL: name: test_fneg_v2s32134    ; GFX9: liveins: $vgpr0_vgpr1135    ; GFX9-NEXT: {{  $}}136    ; GFX9-NEXT: [[COPY:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr0_vgpr1137    ; GFX9-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](<2 x s32>)138    ; GFX9-NEXT: [[FNEG:%[0-9]+]]:_(s32) = G_FNEG [[UV]]139    ; GFX9-NEXT: [[FNEG1:%[0-9]+]]:_(s32) = G_FNEG [[UV1]]140    ; GFX9-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[FNEG]](s32), [[FNEG1]](s32)141    ; GFX9-NEXT: $vgpr0_vgpr1 = COPY [[BUILD_VECTOR]](<2 x s32>)142    %0:_(<2 x s32>) = COPY $vgpr0_vgpr1143    %1:_(<2 x s32>) = G_FNEG %0144    $vgpr0_vgpr1 = COPY %1145...146 147---148name: test_fneg_v3s32149body: |150  bb.0:151    liveins: $vgpr0_vgpr1_vgpr2152 153    ; SI-LABEL: name: test_fneg_v3s32154    ; SI: liveins: $vgpr0_vgpr1_vgpr2155    ; SI-NEXT: {{  $}}156    ; SI-NEXT: [[COPY:%[0-9]+]]:_(<3 x s32>) = COPY $vgpr0_vgpr1_vgpr2157    ; SI-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](<3 x s32>)158    ; SI-NEXT: [[FNEG:%[0-9]+]]:_(s32) = G_FNEG [[UV]]159    ; SI-NEXT: [[FNEG1:%[0-9]+]]:_(s32) = G_FNEG [[UV1]]160    ; SI-NEXT: [[FNEG2:%[0-9]+]]:_(s32) = G_FNEG [[UV2]]161    ; SI-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<3 x s32>) = G_BUILD_VECTOR [[FNEG]](s32), [[FNEG1]](s32), [[FNEG2]](s32)162    ; SI-NEXT: $vgpr0_vgpr1_vgpr2 = COPY [[BUILD_VECTOR]](<3 x s32>)163    ;164    ; VI-LABEL: name: test_fneg_v3s32165    ; VI: liveins: $vgpr0_vgpr1_vgpr2166    ; VI-NEXT: {{  $}}167    ; VI-NEXT: [[COPY:%[0-9]+]]:_(<3 x s32>) = COPY $vgpr0_vgpr1_vgpr2168    ; VI-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](<3 x s32>)169    ; VI-NEXT: [[FNEG:%[0-9]+]]:_(s32) = G_FNEG [[UV]]170    ; VI-NEXT: [[FNEG1:%[0-9]+]]:_(s32) = G_FNEG [[UV1]]171    ; VI-NEXT: [[FNEG2:%[0-9]+]]:_(s32) = G_FNEG [[UV2]]172    ; VI-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<3 x s32>) = G_BUILD_VECTOR [[FNEG]](s32), [[FNEG1]](s32), [[FNEG2]](s32)173    ; VI-NEXT: $vgpr0_vgpr1_vgpr2 = COPY [[BUILD_VECTOR]](<3 x s32>)174    ;175    ; GFX9-LABEL: name: test_fneg_v3s32176    ; GFX9: liveins: $vgpr0_vgpr1_vgpr2177    ; GFX9-NEXT: {{  $}}178    ; GFX9-NEXT: [[COPY:%[0-9]+]]:_(<3 x s32>) = COPY $vgpr0_vgpr1_vgpr2179    ; GFX9-NEXT: [[UV:%[0-9]+]]:_(s32), [[UV1:%[0-9]+]]:_(s32), [[UV2:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY]](<3 x s32>)180    ; GFX9-NEXT: [[FNEG:%[0-9]+]]:_(s32) = G_FNEG [[UV]]181    ; GFX9-NEXT: [[FNEG1:%[0-9]+]]:_(s32) = G_FNEG [[UV1]]182    ; GFX9-NEXT: [[FNEG2:%[0-9]+]]:_(s32) = G_FNEG [[UV2]]183    ; GFX9-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<3 x s32>) = G_BUILD_VECTOR [[FNEG]](s32), [[FNEG1]](s32), [[FNEG2]](s32)184    ; GFX9-NEXT: $vgpr0_vgpr1_vgpr2 = COPY [[BUILD_VECTOR]](<3 x s32>)185    %0:_(<3 x s32>) = COPY $vgpr0_vgpr1_vgpr2186    %1:_(<3 x  s32>) = G_FNEG %0187    $vgpr0_vgpr1_vgpr2 = COPY %1188...189 190---191name: test_fneg_v2s64192body: |193  bb.0:194    liveins: $vgpr0_vgpr1_vgpr2_vgpr3195 196    ; SI-LABEL: name: test_fneg_v2s64197    ; SI: liveins: $vgpr0_vgpr1_vgpr2_vgpr3198    ; SI-NEXT: {{  $}}199    ; SI-NEXT: [[COPY:%[0-9]+]]:_(<2 x s64>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3200    ; SI-NEXT: [[UV:%[0-9]+]]:_(s64), [[UV1:%[0-9]+]]:_(s64) = G_UNMERGE_VALUES [[COPY]](<2 x s64>)201    ; SI-NEXT: [[FNEG:%[0-9]+]]:_(s64) = G_FNEG [[UV]]202    ; SI-NEXT: [[FNEG1:%[0-9]+]]:_(s64) = G_FNEG [[UV1]]203    ; SI-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s64>) = G_BUILD_VECTOR [[FNEG]](s64), [[FNEG1]](s64)204    ; SI-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[BUILD_VECTOR]](<2 x s64>)205    ;206    ; VI-LABEL: name: test_fneg_v2s64207    ; VI: liveins: $vgpr0_vgpr1_vgpr2_vgpr3208    ; VI-NEXT: {{  $}}209    ; VI-NEXT: [[COPY:%[0-9]+]]:_(<2 x s64>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3210    ; VI-NEXT: [[UV:%[0-9]+]]:_(s64), [[UV1:%[0-9]+]]:_(s64) = G_UNMERGE_VALUES [[COPY]](<2 x s64>)211    ; VI-NEXT: [[FNEG:%[0-9]+]]:_(s64) = G_FNEG [[UV]]212    ; VI-NEXT: [[FNEG1:%[0-9]+]]:_(s64) = G_FNEG [[UV1]]213    ; VI-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s64>) = G_BUILD_VECTOR [[FNEG]](s64), [[FNEG1]](s64)214    ; VI-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[BUILD_VECTOR]](<2 x s64>)215    ;216    ; GFX9-LABEL: name: test_fneg_v2s64217    ; GFX9: liveins: $vgpr0_vgpr1_vgpr2_vgpr3218    ; GFX9-NEXT: {{  $}}219    ; GFX9-NEXT: [[COPY:%[0-9]+]]:_(<2 x s64>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3220    ; GFX9-NEXT: [[UV:%[0-9]+]]:_(s64), [[UV1:%[0-9]+]]:_(s64) = G_UNMERGE_VALUES [[COPY]](<2 x s64>)221    ; GFX9-NEXT: [[FNEG:%[0-9]+]]:_(s64) = G_FNEG [[UV]]222    ; GFX9-NEXT: [[FNEG1:%[0-9]+]]:_(s64) = G_FNEG [[UV1]]223    ; GFX9-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s64>) = G_BUILD_VECTOR [[FNEG]](s64), [[FNEG1]](s64)224    ; GFX9-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[BUILD_VECTOR]](<2 x s64>)225    %0:_(<2 x s64>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3226    %1:_(<2 x s64>) = G_FNEG %0227    $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %1228...229 230---231name: test_fneg_v2s16232body: |233  bb.0:234    liveins: $vgpr0235 236    ; SI-LABEL: name: test_fneg_v2s16237    ; SI: liveins: $vgpr0238    ; SI-NEXT: {{  $}}239    ; SI-NEXT: [[COPY:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr0240    ; SI-NEXT: [[FNEG:%[0-9]+]]:_(<2 x s16>) = G_FNEG [[COPY]]241    ; SI-NEXT: $vgpr0 = COPY [[FNEG]](<2 x s16>)242    ;243    ; VI-LABEL: name: test_fneg_v2s16244    ; VI: liveins: $vgpr0245    ; VI-NEXT: {{  $}}246    ; VI-NEXT: [[COPY:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr0247    ; VI-NEXT: [[FNEG:%[0-9]+]]:_(<2 x s16>) = G_FNEG [[COPY]]248    ; VI-NEXT: $vgpr0 = COPY [[FNEG]](<2 x s16>)249    ;250    ; GFX9-LABEL: name: test_fneg_v2s16251    ; GFX9: liveins: $vgpr0252    ; GFX9-NEXT: {{  $}}253    ; GFX9-NEXT: [[COPY:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr0254    ; GFX9-NEXT: [[FNEG:%[0-9]+]]:_(<2 x s16>) = G_FNEG [[COPY]]255    ; GFX9-NEXT: $vgpr0 = COPY [[FNEG]](<2 x s16>)256    %0:_(<2 x s16>) = COPY $vgpr0257    %1:_(<2 x s16>) = G_FNEG %0258    $vgpr0 = COPY %1259...260 261---262name: test_fneg_v3s16263body: |264  bb.0:265 266    ; SI-LABEL: name: test_fneg_v3s16267    ; SI: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0268    ; SI-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 16269    ; SI-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[C]], [[C1]](s32)270    ; SI-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[C]], [[SHL]]271    ; SI-NEXT: [[BITCAST:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR]](s32)272    ; SI-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY [[OR]](s32)273    ; SI-NEXT: [[BITCAST1:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[COPY]](s32)274    ; SI-NEXT: [[FNEG:%[0-9]+]]:_(<2 x s16>) = G_FNEG [[BITCAST]]275    ; SI-NEXT: [[FNEG1:%[0-9]+]]:_(<2 x s16>) = G_FNEG [[BITCAST1]]276    ; SI-NEXT: [[BITCAST2:%[0-9]+]]:_(s32) = G_BITCAST [[FNEG]](<2 x s16>)277    ; SI-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST2]], [[C1]](s32)278    ; SI-NEXT: [[BITCAST3:%[0-9]+]]:_(s32) = G_BITCAST [[FNEG1]](<2 x s16>)279    ; SI-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 65535280    ; SI-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[BITCAST2]], [[C2]]281    ; SI-NEXT: [[AND1:%[0-9]+]]:_(s32) = G_AND [[BITCAST3]], [[C2]]282    ; SI-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<3 x s32>) = G_BUILD_VECTOR [[AND]](s32), [[LSHR]](s32), [[AND1]](s32)283    ; SI-NEXT: S_NOP 0, implicit [[BUILD_VECTOR]](<3 x s32>)284    ;285    ; VI-LABEL: name: test_fneg_v3s16286    ; VI: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 0287    ; VI-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 16288    ; VI-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[C]], [[C1]](s32)289    ; VI-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[C]], [[SHL]]290    ; VI-NEXT: [[BITCAST:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR]](s32)291    ; VI-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY [[OR]](s32)292    ; VI-NEXT: [[BITCAST1:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[COPY]](s32)293    ; VI-NEXT: [[FNEG:%[0-9]+]]:_(<2 x s16>) = G_FNEG [[BITCAST]]294    ; VI-NEXT: [[FNEG1:%[0-9]+]]:_(<2 x s16>) = G_FNEG [[BITCAST1]]295    ; VI-NEXT: [[BITCAST2:%[0-9]+]]:_(s32) = G_BITCAST [[FNEG]](<2 x s16>)296    ; VI-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST2]], [[C1]](s32)297    ; VI-NEXT: [[BITCAST3:%[0-9]+]]:_(s32) = G_BITCAST [[FNEG1]](<2 x s16>)298    ; VI-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 65535299    ; VI-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[BITCAST2]], [[C2]]300    ; VI-NEXT: [[AND1:%[0-9]+]]:_(s32) = G_AND [[BITCAST3]], [[C2]]301    ; VI-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<3 x s32>) = G_BUILD_VECTOR [[AND]](s32), [[LSHR]](s32), [[AND1]](s32)302    ; VI-NEXT: S_NOP 0, implicit [[BUILD_VECTOR]](<3 x s32>)303    ;304    ; GFX9-LABEL: name: test_fneg_v3s16305    ; GFX9: [[DEF:%[0-9]+]]:_(s16) = G_IMPLICIT_DEF306    ; GFX9-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR [[DEF]](s16), [[DEF]](s16)307    ; GFX9-NEXT: [[BUILD_VECTOR1:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR [[DEF]](s16), [[DEF]](s16)308    ; GFX9-NEXT: [[FNEG:%[0-9]+]]:_(<2 x s16>) = G_FNEG [[BUILD_VECTOR]]309    ; GFX9-NEXT: [[FNEG1:%[0-9]+]]:_(<2 x s16>) = G_FNEG [[BUILD_VECTOR1]]310    ; GFX9-NEXT: [[BITCAST:%[0-9]+]]:_(s32) = G_BITCAST [[FNEG]](<2 x s16>)311    ; GFX9-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 16312    ; GFX9-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[BITCAST]], [[C]](s32)313    ; GFX9-NEXT: [[BITCAST1:%[0-9]+]]:_(s32) = G_BITCAST [[FNEG1]](<2 x s16>)314    ; GFX9-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 65535315    ; GFX9-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[BITCAST]], [[C1]]316    ; GFX9-NEXT: [[AND1:%[0-9]+]]:_(s32) = G_AND [[BITCAST1]], [[C1]]317    ; GFX9-NEXT: [[BUILD_VECTOR2:%[0-9]+]]:_(<3 x s32>) = G_BUILD_VECTOR [[AND]](s32), [[LSHR]](s32), [[AND1]](s32)318    ; GFX9-NEXT: S_NOP 0, implicit [[BUILD_VECTOR2]](<3 x s32>)319    %0:_(<3 x s16>) = G_IMPLICIT_DEF320    %1:_(<3 x s16>) = G_FNEG %0321    %2:_(<3 x s32>) = G_ZEXT %1322    S_NOP 0, implicit %2323...324 325---326name: test_fneg_v4s16327body: |328  bb.0:329    liveins: $vgpr0_vgpr1330 331    ; SI-LABEL: name: test_fneg_v4s16332    ; SI: liveins: $vgpr0_vgpr1333    ; SI-NEXT: {{  $}}334    ; SI-NEXT: [[COPY:%[0-9]+]]:_(<4 x s16>) = COPY $vgpr0_vgpr1335    ; SI-NEXT: [[UV:%[0-9]+]]:_(<2 x s16>), [[UV1:%[0-9]+]]:_(<2 x s16>) = G_UNMERGE_VALUES [[COPY]](<4 x s16>)336    ; SI-NEXT: [[FNEG:%[0-9]+]]:_(<2 x s16>) = G_FNEG [[UV]]337    ; SI-NEXT: [[FNEG1:%[0-9]+]]:_(<2 x s16>) = G_FNEG [[UV1]]338    ; SI-NEXT: [[CONCAT_VECTORS:%[0-9]+]]:_(<4 x s16>) = G_CONCAT_VECTORS [[FNEG]](<2 x s16>), [[FNEG1]](<2 x s16>)339    ; SI-NEXT: $vgpr0_vgpr1 = COPY [[CONCAT_VECTORS]](<4 x s16>)340    ;341    ; VI-LABEL: name: test_fneg_v4s16342    ; VI: liveins: $vgpr0_vgpr1343    ; VI-NEXT: {{  $}}344    ; VI-NEXT: [[COPY:%[0-9]+]]:_(<4 x s16>) = COPY $vgpr0_vgpr1345    ; VI-NEXT: [[UV:%[0-9]+]]:_(<2 x s16>), [[UV1:%[0-9]+]]:_(<2 x s16>) = G_UNMERGE_VALUES [[COPY]](<4 x s16>)346    ; VI-NEXT: [[FNEG:%[0-9]+]]:_(<2 x s16>) = G_FNEG [[UV]]347    ; VI-NEXT: [[FNEG1:%[0-9]+]]:_(<2 x s16>) = G_FNEG [[UV1]]348    ; VI-NEXT: [[CONCAT_VECTORS:%[0-9]+]]:_(<4 x s16>) = G_CONCAT_VECTORS [[FNEG]](<2 x s16>), [[FNEG1]](<2 x s16>)349    ; VI-NEXT: $vgpr0_vgpr1 = COPY [[CONCAT_VECTORS]](<4 x s16>)350    ;351    ; GFX9-LABEL: name: test_fneg_v4s16352    ; GFX9: liveins: $vgpr0_vgpr1353    ; GFX9-NEXT: {{  $}}354    ; GFX9-NEXT: [[COPY:%[0-9]+]]:_(<4 x s16>) = COPY $vgpr0_vgpr1355    ; GFX9-NEXT: [[UV:%[0-9]+]]:_(<2 x s16>), [[UV1:%[0-9]+]]:_(<2 x s16>) = G_UNMERGE_VALUES [[COPY]](<4 x s16>)356    ; GFX9-NEXT: [[FNEG:%[0-9]+]]:_(<2 x s16>) = G_FNEG [[UV]]357    ; GFX9-NEXT: [[FNEG1:%[0-9]+]]:_(<2 x s16>) = G_FNEG [[UV1]]358    ; GFX9-NEXT: [[CONCAT_VECTORS:%[0-9]+]]:_(<4 x s16>) = G_CONCAT_VECTORS [[FNEG]](<2 x s16>), [[FNEG1]](<2 x s16>)359    ; GFX9-NEXT: $vgpr0_vgpr1 = COPY [[CONCAT_VECTORS]](<4 x s16>)360    %0:_(<4 x s16>) = COPY $vgpr0_vgpr1361    %1:_(<4 x s16>) = G_FNEG %0362    $vgpr0_vgpr1 = COPY %1363...364