brintos

brintos / llvm-project-archived public Read only

0
0
Text · 50.0 KiB · 60ccd20 Raw
1037 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 -run-pass=legalizer %s -o - | FileCheck -check-prefix=GFX9 %s7 8---9name: test_copysign_s16_s1610body: |11  bb.0:12    liveins: $vgpr0, $vgpr113 14    ; SI-LABEL: name: test_copysign_s16_s1615    ; SI: liveins: $vgpr0, $vgpr116    ; SI-NEXT: {{  $}}17    ; SI-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr018    ; SI-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr119    ; SI-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)20    ; SI-NEXT: [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[COPY1]](s32)21    ; SI-NEXT: [[C:%[0-9]+]]:_(s16) = G_CONSTANT i16 -3276822    ; SI-NEXT: [[C1:%[0-9]+]]:_(s16) = G_CONSTANT i16 3276723    ; SI-NEXT: [[AND:%[0-9]+]]:_(s16) = G_AND [[TRUNC]], [[C1]]24    ; SI-NEXT: [[AND1:%[0-9]+]]:_(s16) = G_AND [[TRUNC1]], [[C]]25    ; SI-NEXT: %4:_(s16) = disjoint G_OR [[AND]], [[AND1]]26    ; SI-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT %4(s16)27    ; SI-NEXT: $vgpr0 = COPY [[ANYEXT]](s32)28    ;29    ; VI-LABEL: name: test_copysign_s16_s1630    ; VI: liveins: $vgpr0, $vgpr131    ; VI-NEXT: {{  $}}32    ; VI-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr033    ; VI-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr134    ; VI-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)35    ; VI-NEXT: [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[COPY1]](s32)36    ; VI-NEXT: [[C:%[0-9]+]]:_(s16) = G_CONSTANT i16 -3276837    ; VI-NEXT: [[C1:%[0-9]+]]:_(s16) = G_CONSTANT i16 3276738    ; VI-NEXT: [[AND:%[0-9]+]]:_(s16) = G_AND [[TRUNC]], [[C1]]39    ; VI-NEXT: [[AND1:%[0-9]+]]:_(s16) = G_AND [[TRUNC1]], [[C]]40    ; VI-NEXT: %4:_(s16) = disjoint G_OR [[AND]], [[AND1]]41    ; VI-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT %4(s16)42    ; VI-NEXT: $vgpr0 = COPY [[ANYEXT]](s32)43    ;44    ; GFX9-LABEL: name: test_copysign_s16_s1645    ; GFX9: liveins: $vgpr0, $vgpr146    ; GFX9-NEXT: {{  $}}47    ; GFX9-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr048    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr149    ; GFX9-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)50    ; GFX9-NEXT: [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[COPY1]](s32)51    ; GFX9-NEXT: [[C:%[0-9]+]]:_(s16) = G_CONSTANT i16 -3276852    ; GFX9-NEXT: [[C1:%[0-9]+]]:_(s16) = G_CONSTANT i16 3276753    ; GFX9-NEXT: [[AND:%[0-9]+]]:_(s16) = G_AND [[TRUNC]], [[C1]]54    ; GFX9-NEXT: [[AND1:%[0-9]+]]:_(s16) = G_AND [[TRUNC1]], [[C]]55    ; GFX9-NEXT: %4:_(s16) = disjoint G_OR [[AND]], [[AND1]]56    ; GFX9-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT %4(s16)57    ; GFX9-NEXT: $vgpr0 = COPY [[ANYEXT]](s32)58    %0:_(s32) = COPY $vgpr059    %1:_(s32) = COPY $vgpr160    %2:_(s16) = G_TRUNC %061    %3:_(s16) = G_TRUNC %162    %4:_(s16) = G_FCOPYSIGN %2, %363    %5:_(s32) = G_ANYEXT %464    $vgpr0 = COPY %565...66 67---68name: test_copysign_s32_s3269body: |70  bb.0:71    liveins: $vgpr0, $vgpr172 73    ; SI-LABEL: name: test_copysign_s32_s3274    ; SI: liveins: $vgpr0, $vgpr175    ; SI-NEXT: {{  $}}76    ; SI-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr077    ; SI-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr178    ; SI-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 -214748364879    ; SI-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 214748364780    ; SI-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY]], [[C1]]81    ; SI-NEXT: [[AND1:%[0-9]+]]:_(s32) = G_AND [[COPY1]], [[C]]82    ; SI-NEXT: %2:_(s32) = disjoint G_OR [[AND]], [[AND1]]83    ; SI-NEXT: $vgpr0 = COPY %2(s32)84    ;85    ; VI-LABEL: name: test_copysign_s32_s3286    ; VI: liveins: $vgpr0, $vgpr187    ; VI-NEXT: {{  $}}88    ; VI-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr089    ; VI-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr190    ; VI-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 -214748364891    ; VI-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 214748364792    ; VI-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY]], [[C1]]93    ; VI-NEXT: [[AND1:%[0-9]+]]:_(s32) = G_AND [[COPY1]], [[C]]94    ; VI-NEXT: %2:_(s32) = disjoint G_OR [[AND]], [[AND1]]95    ; VI-NEXT: $vgpr0 = COPY %2(s32)96    ;97    ; GFX9-LABEL: name: test_copysign_s32_s3298    ; GFX9: liveins: $vgpr0, $vgpr199    ; GFX9-NEXT: {{  $}}100    ; GFX9-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0101    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1102    ; GFX9-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 -2147483648103    ; GFX9-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 2147483647104    ; GFX9-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY]], [[C1]]105    ; GFX9-NEXT: [[AND1:%[0-9]+]]:_(s32) = G_AND [[COPY1]], [[C]]106    ; GFX9-NEXT: %2:_(s32) = disjoint G_OR [[AND]], [[AND1]]107    ; GFX9-NEXT: $vgpr0 = COPY %2(s32)108    %0:_(s32) = COPY $vgpr0109    %1:_(s32) = COPY $vgpr1110    %2:_(s32) = G_FCOPYSIGN %0, %1111    $vgpr0 = COPY %2112...113 114---115name: test_copysign_s64_s64116body: |117  bb.0:118    liveins: $vgpr0_vgpr1, $vgpr2_vgpr3119 120    ; SI-LABEL: name: test_copysign_s64_s64121    ; SI: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3122    ; SI-NEXT: {{  $}}123    ; SI-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr1124    ; SI-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $vgpr2_vgpr3125    ; SI-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 -9223372036854775808126    ; SI-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 9223372036854775807127    ; SI-NEXT: [[AND:%[0-9]+]]:_(s64) = G_AND [[COPY]], [[C1]]128    ; SI-NEXT: [[AND1:%[0-9]+]]:_(s64) = G_AND [[COPY1]], [[C]]129    ; SI-NEXT: %2:_(s64) = disjoint G_OR [[AND]], [[AND1]]130    ; SI-NEXT: $vgpr0_vgpr1 = COPY %2(s64)131    ;132    ; VI-LABEL: name: test_copysign_s64_s64133    ; VI: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3134    ; VI-NEXT: {{  $}}135    ; VI-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr1136    ; VI-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $vgpr2_vgpr3137    ; VI-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 -9223372036854775808138    ; VI-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 9223372036854775807139    ; VI-NEXT: [[AND:%[0-9]+]]:_(s64) = G_AND [[COPY]], [[C1]]140    ; VI-NEXT: [[AND1:%[0-9]+]]:_(s64) = G_AND [[COPY1]], [[C]]141    ; VI-NEXT: %2:_(s64) = disjoint G_OR [[AND]], [[AND1]]142    ; VI-NEXT: $vgpr0_vgpr1 = COPY %2(s64)143    ;144    ; GFX9-LABEL: name: test_copysign_s64_s64145    ; GFX9: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3146    ; GFX9-NEXT: {{  $}}147    ; GFX9-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr1148    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $vgpr2_vgpr3149    ; GFX9-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 -9223372036854775808150    ; GFX9-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 9223372036854775807151    ; GFX9-NEXT: [[AND:%[0-9]+]]:_(s64) = G_AND [[COPY]], [[C1]]152    ; GFX9-NEXT: [[AND1:%[0-9]+]]:_(s64) = G_AND [[COPY1]], [[C]]153    ; GFX9-NEXT: %2:_(s64) = disjoint G_OR [[AND]], [[AND1]]154    ; GFX9-NEXT: $vgpr0_vgpr1 = COPY %2(s64)155    %0:_(s64) = COPY $vgpr0_vgpr1156    %1:_(s64) = COPY $vgpr2_vgpr3157    %2:_(s64) = G_FCOPYSIGN %0, %1158    $vgpr0_vgpr1 = COPY %2159...160 161---162name: test_copysign_s64_s32163body: |164  bb.0:165    liveins: $vgpr0_vgpr1, $vgpr2166 167    ; SI-LABEL: name: test_copysign_s64_s32168    ; SI: liveins: $vgpr0_vgpr1, $vgpr2169    ; SI-NEXT: {{  $}}170    ; SI-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr1171    ; SI-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr2172    ; SI-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 -9223372036854775808173    ; SI-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 9223372036854775807174    ; SI-NEXT: [[AND:%[0-9]+]]:_(s64) = G_AND [[COPY]], [[C1]]175    ; SI-NEXT: [[ZEXT:%[0-9]+]]:_(s64) = G_ZEXT [[COPY1]](s32)176    ; SI-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 32177    ; SI-NEXT: [[SHL:%[0-9]+]]:_(s64) = G_SHL [[ZEXT]], [[C2]](s32)178    ; SI-NEXT: [[AND1:%[0-9]+]]:_(s64) = G_AND [[SHL]], [[C]]179    ; SI-NEXT: %2:_(s64) = disjoint G_OR [[AND]], [[AND1]]180    ; SI-NEXT: $vgpr0_vgpr1 = COPY %2(s64)181    ;182    ; VI-LABEL: name: test_copysign_s64_s32183    ; VI: liveins: $vgpr0_vgpr1, $vgpr2184    ; VI-NEXT: {{  $}}185    ; VI-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr1186    ; VI-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr2187    ; VI-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 -9223372036854775808188    ; VI-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 9223372036854775807189    ; VI-NEXT: [[AND:%[0-9]+]]:_(s64) = G_AND [[COPY]], [[C1]]190    ; VI-NEXT: [[ZEXT:%[0-9]+]]:_(s64) = G_ZEXT [[COPY1]](s32)191    ; VI-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 32192    ; VI-NEXT: [[SHL:%[0-9]+]]:_(s64) = G_SHL [[ZEXT]], [[C2]](s32)193    ; VI-NEXT: [[AND1:%[0-9]+]]:_(s64) = G_AND [[SHL]], [[C]]194    ; VI-NEXT: %2:_(s64) = disjoint G_OR [[AND]], [[AND1]]195    ; VI-NEXT: $vgpr0_vgpr1 = COPY %2(s64)196    ;197    ; GFX9-LABEL: name: test_copysign_s64_s32198    ; GFX9: liveins: $vgpr0_vgpr1, $vgpr2199    ; GFX9-NEXT: {{  $}}200    ; GFX9-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr1201    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr2202    ; GFX9-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 -9223372036854775808203    ; GFX9-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 9223372036854775807204    ; GFX9-NEXT: [[AND:%[0-9]+]]:_(s64) = G_AND [[COPY]], [[C1]]205    ; GFX9-NEXT: [[ZEXT:%[0-9]+]]:_(s64) = G_ZEXT [[COPY1]](s32)206    ; GFX9-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 32207    ; GFX9-NEXT: [[SHL:%[0-9]+]]:_(s64) = G_SHL [[ZEXT]], [[C2]](s32)208    ; GFX9-NEXT: [[AND1:%[0-9]+]]:_(s64) = G_AND [[SHL]], [[C]]209    ; GFX9-NEXT: %2:_(s64) = disjoint G_OR [[AND]], [[AND1]]210    ; GFX9-NEXT: $vgpr0_vgpr1 = COPY %2(s64)211    %0:_(s64) = COPY $vgpr0_vgpr1212    %1:_(s32) = COPY $vgpr2213    %2:_(s64) = G_FCOPYSIGN %0, %1214    $vgpr0_vgpr1 = COPY %2215...216 217---218name: test_copysign_s32_s64219body: |220  bb.0:221    liveins: $vgpr0, $vgpr1_vgpr2222 223    ; SI-LABEL: name: test_copysign_s32_s64224    ; SI: liveins: $vgpr0, $vgpr1_vgpr2225    ; SI-NEXT: {{  $}}226    ; SI-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0227    ; SI-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $vgpr1_vgpr2228    ; SI-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 -2147483648229    ; SI-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 2147483647230    ; SI-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY]], [[C1]]231    ; SI-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 32232    ; SI-NEXT: [[LSHR:%[0-9]+]]:_(s64) = G_LSHR [[COPY1]], [[C2]](s32)233    ; SI-NEXT: [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[LSHR]](s64)234    ; SI-NEXT: [[AND1:%[0-9]+]]:_(s32) = G_AND [[TRUNC]], [[C]]235    ; SI-NEXT: %2:_(s32) = disjoint G_OR [[AND]], [[AND1]]236    ; SI-NEXT: $vgpr0 = COPY %2(s32)237    ;238    ; VI-LABEL: name: test_copysign_s32_s64239    ; VI: liveins: $vgpr0, $vgpr1_vgpr2240    ; VI-NEXT: {{  $}}241    ; VI-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0242    ; VI-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $vgpr1_vgpr2243    ; VI-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 -2147483648244    ; VI-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 2147483647245    ; VI-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY]], [[C1]]246    ; VI-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 32247    ; VI-NEXT: [[LSHR:%[0-9]+]]:_(s64) = G_LSHR [[COPY1]], [[C2]](s32)248    ; VI-NEXT: [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[LSHR]](s64)249    ; VI-NEXT: [[AND1:%[0-9]+]]:_(s32) = G_AND [[TRUNC]], [[C]]250    ; VI-NEXT: %2:_(s32) = disjoint G_OR [[AND]], [[AND1]]251    ; VI-NEXT: $vgpr0 = COPY %2(s32)252    ;253    ; GFX9-LABEL: name: test_copysign_s32_s64254    ; GFX9: liveins: $vgpr0, $vgpr1_vgpr2255    ; GFX9-NEXT: {{  $}}256    ; GFX9-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0257    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $vgpr1_vgpr2258    ; GFX9-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 -2147483648259    ; GFX9-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 2147483647260    ; GFX9-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY]], [[C1]]261    ; GFX9-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 32262    ; GFX9-NEXT: [[LSHR:%[0-9]+]]:_(s64) = G_LSHR [[COPY1]], [[C2]](s32)263    ; GFX9-NEXT: [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[LSHR]](s64)264    ; GFX9-NEXT: [[AND1:%[0-9]+]]:_(s32) = G_AND [[TRUNC]], [[C]]265    ; GFX9-NEXT: %2:_(s32) = disjoint G_OR [[AND]], [[AND1]]266    ; GFX9-NEXT: $vgpr0 = COPY %2(s32)267    %0:_(s32) = COPY $vgpr0268    %1:_(s64) = COPY $vgpr1_vgpr2269    %2:_(s32) = G_FCOPYSIGN %0, %1270    $vgpr0 = COPY %2271...272 273---274name: test_copysign_s16_s32275body: |276  bb.0:277    liveins: $vgpr0, $vgpr1278 279    ; SI-LABEL: name: test_copysign_s16_s32280    ; SI: liveins: $vgpr0, $vgpr1281    ; SI-NEXT: {{  $}}282    ; SI-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0283    ; SI-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1284    ; SI-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)285    ; SI-NEXT: [[C:%[0-9]+]]:_(s16) = G_CONSTANT i16 -32768286    ; SI-NEXT: [[C1:%[0-9]+]]:_(s16) = G_CONSTANT i16 32767287    ; SI-NEXT: [[AND:%[0-9]+]]:_(s16) = G_AND [[TRUNC]], [[C1]]288    ; SI-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 16289    ; SI-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[COPY1]], [[C2]](s32)290    ; SI-NEXT: [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[LSHR]](s32)291    ; SI-NEXT: [[AND1:%[0-9]+]]:_(s16) = G_AND [[TRUNC1]], [[C]]292    ; SI-NEXT: %3:_(s16) = disjoint G_OR [[AND]], [[AND1]]293    ; SI-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT %3(s16)294    ; SI-NEXT: $vgpr0 = COPY [[ANYEXT]](s32)295    ;296    ; VI-LABEL: name: test_copysign_s16_s32297    ; VI: liveins: $vgpr0, $vgpr1298    ; VI-NEXT: {{  $}}299    ; VI-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0300    ; VI-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1301    ; VI-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)302    ; VI-NEXT: [[C:%[0-9]+]]:_(s16) = G_CONSTANT i16 -32768303    ; VI-NEXT: [[C1:%[0-9]+]]:_(s16) = G_CONSTANT i16 32767304    ; VI-NEXT: [[AND:%[0-9]+]]:_(s16) = G_AND [[TRUNC]], [[C1]]305    ; VI-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 16306    ; VI-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[COPY1]], [[C2]](s32)307    ; VI-NEXT: [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[LSHR]](s32)308    ; VI-NEXT: [[AND1:%[0-9]+]]:_(s16) = G_AND [[TRUNC1]], [[C]]309    ; VI-NEXT: %3:_(s16) = disjoint G_OR [[AND]], [[AND1]]310    ; VI-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT %3(s16)311    ; VI-NEXT: $vgpr0 = COPY [[ANYEXT]](s32)312    ;313    ; GFX9-LABEL: name: test_copysign_s16_s32314    ; GFX9: liveins: $vgpr0, $vgpr1315    ; GFX9-NEXT: {{  $}}316    ; GFX9-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0317    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1318    ; GFX9-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)319    ; GFX9-NEXT: [[C:%[0-9]+]]:_(s16) = G_CONSTANT i16 -32768320    ; GFX9-NEXT: [[C1:%[0-9]+]]:_(s16) = G_CONSTANT i16 32767321    ; GFX9-NEXT: [[AND:%[0-9]+]]:_(s16) = G_AND [[TRUNC]], [[C1]]322    ; GFX9-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 16323    ; GFX9-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[COPY1]], [[C2]](s32)324    ; GFX9-NEXT: [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[LSHR]](s32)325    ; GFX9-NEXT: [[AND1:%[0-9]+]]:_(s16) = G_AND [[TRUNC1]], [[C]]326    ; GFX9-NEXT: %3:_(s16) = disjoint G_OR [[AND]], [[AND1]]327    ; GFX9-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT %3(s16)328    ; GFX9-NEXT: $vgpr0 = COPY [[ANYEXT]](s32)329    %0:_(s32) = COPY $vgpr0330    %1:_(s32) = COPY $vgpr1331    %2:_(s16) = G_TRUNC %0332    %3:_(s16) = G_FCOPYSIGN %2, %1333    %4:_(s32) = G_ANYEXT %3334    $vgpr0 = COPY %4335...336 337---338name: test_copysign_s32_s16339body: |340  bb.0:341    liveins: $vgpr0, $vgpr1342 343    ; SI-LABEL: name: test_copysign_s32_s16344    ; SI: liveins: $vgpr0, $vgpr1345    ; SI-NEXT: {{  $}}346    ; SI-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0347    ; SI-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1348    ; SI-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 -2147483648349    ; SI-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 2147483647350    ; SI-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY]], [[C1]]351    ; SI-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 16352    ; SI-NEXT: [[C3:%[0-9]+]]:_(s32) = G_CONSTANT i32 65535353    ; SI-NEXT: [[AND1:%[0-9]+]]:_(s32) = G_AND [[COPY1]], [[C3]]354    ; SI-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[AND1]], [[C2]](s32)355    ; SI-NEXT: [[AND2:%[0-9]+]]:_(s32) = G_AND [[SHL]], [[C]]356    ; SI-NEXT: %3:_(s32) = disjoint G_OR [[AND]], [[AND2]]357    ; SI-NEXT: $vgpr0 = COPY %3(s32)358    ;359    ; VI-LABEL: name: test_copysign_s32_s16360    ; VI: liveins: $vgpr0, $vgpr1361    ; VI-NEXT: {{  $}}362    ; VI-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0363    ; VI-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1364    ; VI-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 -2147483648365    ; VI-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 2147483647366    ; VI-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY]], [[C1]]367    ; VI-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 16368    ; VI-NEXT: [[C3:%[0-9]+]]:_(s32) = G_CONSTANT i32 65535369    ; VI-NEXT: [[AND1:%[0-9]+]]:_(s32) = G_AND [[COPY1]], [[C3]]370    ; VI-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[AND1]], [[C2]](s32)371    ; VI-NEXT: [[AND2:%[0-9]+]]:_(s32) = G_AND [[SHL]], [[C]]372    ; VI-NEXT: %3:_(s32) = disjoint G_OR [[AND]], [[AND2]]373    ; VI-NEXT: $vgpr0 = COPY %3(s32)374    ;375    ; GFX9-LABEL: name: test_copysign_s32_s16376    ; GFX9: liveins: $vgpr0, $vgpr1377    ; GFX9-NEXT: {{  $}}378    ; GFX9-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0379    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1380    ; GFX9-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 -2147483648381    ; GFX9-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 2147483647382    ; GFX9-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY]], [[C1]]383    ; GFX9-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 16384    ; GFX9-NEXT: [[C3:%[0-9]+]]:_(s32) = G_CONSTANT i32 65535385    ; GFX9-NEXT: [[AND1:%[0-9]+]]:_(s32) = G_AND [[COPY1]], [[C3]]386    ; GFX9-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[AND1]], [[C2]](s32)387    ; GFX9-NEXT: [[AND2:%[0-9]+]]:_(s32) = G_AND [[SHL]], [[C]]388    ; GFX9-NEXT: %3:_(s32) = disjoint G_OR [[AND]], [[AND2]]389    ; GFX9-NEXT: $vgpr0 = COPY %3(s32)390    %0:_(s32) = COPY $vgpr0391    %1:_(s32) = COPY $vgpr1392    %2:_(s16) = G_TRUNC %1393    %3:_(s32) = G_FCOPYSIGN %0, %2394    $vgpr0 = COPY %3395...396 397---398name: test_copysign_s64_s16399body: |400  bb.0:401    liveins: $vgpr0_vgpr1, $vgpr2402 403    ; SI-LABEL: name: test_copysign_s64_s16404    ; SI: liveins: $vgpr0_vgpr1, $vgpr2405    ; SI-NEXT: {{  $}}406    ; SI-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr1407    ; SI-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr2408    ; SI-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 -9223372036854775808409    ; SI-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 9223372036854775807410    ; SI-NEXT: [[AND:%[0-9]+]]:_(s64) = G_AND [[COPY]], [[C1]]411    ; SI-NEXT: [[ANYEXT:%[0-9]+]]:_(s64) = G_ANYEXT [[COPY1]](s32)412    ; SI-NEXT: [[C2:%[0-9]+]]:_(s64) = G_CONSTANT i64 65535413    ; SI-NEXT: [[AND1:%[0-9]+]]:_(s64) = G_AND [[ANYEXT]], [[C2]]414    ; SI-NEXT: [[C3:%[0-9]+]]:_(s32) = G_CONSTANT i32 48415    ; SI-NEXT: [[SHL:%[0-9]+]]:_(s64) = G_SHL [[AND1]], [[C3]](s32)416    ; SI-NEXT: [[AND2:%[0-9]+]]:_(s64) = G_AND [[SHL]], [[C]]417    ; SI-NEXT: %3:_(s64) = disjoint G_OR [[AND]], [[AND2]]418    ; SI-NEXT: $vgpr0_vgpr1 = COPY %3(s64)419    ;420    ; VI-LABEL: name: test_copysign_s64_s16421    ; VI: liveins: $vgpr0_vgpr1, $vgpr2422    ; VI-NEXT: {{  $}}423    ; VI-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr1424    ; VI-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr2425    ; VI-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 -9223372036854775808426    ; VI-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 9223372036854775807427    ; VI-NEXT: [[AND:%[0-9]+]]:_(s64) = G_AND [[COPY]], [[C1]]428    ; VI-NEXT: [[ANYEXT:%[0-9]+]]:_(s64) = G_ANYEXT [[COPY1]](s32)429    ; VI-NEXT: [[C2:%[0-9]+]]:_(s64) = G_CONSTANT i64 65535430    ; VI-NEXT: [[AND1:%[0-9]+]]:_(s64) = G_AND [[ANYEXT]], [[C2]]431    ; VI-NEXT: [[C3:%[0-9]+]]:_(s32) = G_CONSTANT i32 48432    ; VI-NEXT: [[SHL:%[0-9]+]]:_(s64) = G_SHL [[AND1]], [[C3]](s32)433    ; VI-NEXT: [[AND2:%[0-9]+]]:_(s64) = G_AND [[SHL]], [[C]]434    ; VI-NEXT: %3:_(s64) = disjoint G_OR [[AND]], [[AND2]]435    ; VI-NEXT: $vgpr0_vgpr1 = COPY %3(s64)436    ;437    ; GFX9-LABEL: name: test_copysign_s64_s16438    ; GFX9: liveins: $vgpr0_vgpr1, $vgpr2439    ; GFX9-NEXT: {{  $}}440    ; GFX9-NEXT: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr1441    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr2442    ; GFX9-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 -9223372036854775808443    ; GFX9-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 9223372036854775807444    ; GFX9-NEXT: [[AND:%[0-9]+]]:_(s64) = G_AND [[COPY]], [[C1]]445    ; GFX9-NEXT: [[ANYEXT:%[0-9]+]]:_(s64) = G_ANYEXT [[COPY1]](s32)446    ; GFX9-NEXT: [[C2:%[0-9]+]]:_(s64) = G_CONSTANT i64 65535447    ; GFX9-NEXT: [[AND1:%[0-9]+]]:_(s64) = G_AND [[ANYEXT]], [[C2]]448    ; GFX9-NEXT: [[C3:%[0-9]+]]:_(s32) = G_CONSTANT i32 48449    ; GFX9-NEXT: [[SHL:%[0-9]+]]:_(s64) = G_SHL [[AND1]], [[C3]](s32)450    ; GFX9-NEXT: [[AND2:%[0-9]+]]:_(s64) = G_AND [[SHL]], [[C]]451    ; GFX9-NEXT: %3:_(s64) = disjoint G_OR [[AND]], [[AND2]]452    ; GFX9-NEXT: $vgpr0_vgpr1 = COPY %3(s64)453    %0:_(s64) = COPY $vgpr0_vgpr1454    %1:_(s32) = COPY $vgpr2455    %2:_(s16) = G_TRUNC %1456    %3:_(s64) = G_FCOPYSIGN %0, %2457    $vgpr0_vgpr1 = COPY %3458...459 460---461name: test_copysign_s16_s64462body: |463  bb.0:464    liveins: $vgpr0, $vgpr1_vgpr2465 466    ; SI-LABEL: name: test_copysign_s16_s64467    ; SI: liveins: $vgpr0, $vgpr1_vgpr2468    ; SI-NEXT: {{  $}}469    ; SI-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0470    ; SI-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $vgpr1_vgpr2471    ; SI-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)472    ; SI-NEXT: [[C:%[0-9]+]]:_(s16) = G_CONSTANT i16 -32768473    ; SI-NEXT: [[C1:%[0-9]+]]:_(s16) = G_CONSTANT i16 32767474    ; SI-NEXT: [[AND:%[0-9]+]]:_(s16) = G_AND [[TRUNC]], [[C1]]475    ; SI-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 48476    ; SI-NEXT: [[LSHR:%[0-9]+]]:_(s64) = G_LSHR [[COPY1]], [[C2]](s32)477    ; SI-NEXT: [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[LSHR]](s64)478    ; SI-NEXT: [[AND1:%[0-9]+]]:_(s16) = G_AND [[TRUNC1]], [[C]]479    ; SI-NEXT: %3:_(s16) = disjoint G_OR [[AND]], [[AND1]]480    ; SI-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT %3(s16)481    ; SI-NEXT: $vgpr0 = COPY [[ANYEXT]](s32)482    ;483    ; VI-LABEL: name: test_copysign_s16_s64484    ; VI: liveins: $vgpr0, $vgpr1_vgpr2485    ; VI-NEXT: {{  $}}486    ; VI-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0487    ; VI-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $vgpr1_vgpr2488    ; VI-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)489    ; VI-NEXT: [[C:%[0-9]+]]:_(s16) = G_CONSTANT i16 -32768490    ; VI-NEXT: [[C1:%[0-9]+]]:_(s16) = G_CONSTANT i16 32767491    ; VI-NEXT: [[AND:%[0-9]+]]:_(s16) = G_AND [[TRUNC]], [[C1]]492    ; VI-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 48493    ; VI-NEXT: [[LSHR:%[0-9]+]]:_(s64) = G_LSHR [[COPY1]], [[C2]](s32)494    ; VI-NEXT: [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[LSHR]](s64)495    ; VI-NEXT: [[AND1:%[0-9]+]]:_(s16) = G_AND [[TRUNC1]], [[C]]496    ; VI-NEXT: %3:_(s16) = disjoint G_OR [[AND]], [[AND1]]497    ; VI-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT %3(s16)498    ; VI-NEXT: $vgpr0 = COPY [[ANYEXT]](s32)499    ;500    ; GFX9-LABEL: name: test_copysign_s16_s64501    ; GFX9: liveins: $vgpr0, $vgpr1_vgpr2502    ; GFX9-NEXT: {{  $}}503    ; GFX9-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0504    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $vgpr1_vgpr2505    ; GFX9-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)506    ; GFX9-NEXT: [[C:%[0-9]+]]:_(s16) = G_CONSTANT i16 -32768507    ; GFX9-NEXT: [[C1:%[0-9]+]]:_(s16) = G_CONSTANT i16 32767508    ; GFX9-NEXT: [[AND:%[0-9]+]]:_(s16) = G_AND [[TRUNC]], [[C1]]509    ; GFX9-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 48510    ; GFX9-NEXT: [[LSHR:%[0-9]+]]:_(s64) = G_LSHR [[COPY1]], [[C2]](s32)511    ; GFX9-NEXT: [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[LSHR]](s64)512    ; GFX9-NEXT: [[AND1:%[0-9]+]]:_(s16) = G_AND [[TRUNC1]], [[C]]513    ; GFX9-NEXT: %3:_(s16) = disjoint G_OR [[AND]], [[AND1]]514    ; GFX9-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT %3(s16)515    ; GFX9-NEXT: $vgpr0 = COPY [[ANYEXT]](s32)516    %0:_(s32) = COPY $vgpr0517    %1:_(s64) = COPY $vgpr1_vgpr2518    %2:_(s16) = G_TRUNC %0519    %3:_(s16) = G_FCOPYSIGN %2, %1520    %4:_(s32) = G_ANYEXT %3521    $vgpr0 = COPY %4522...523 524---525name: test_copysign_v2s16_v2s16526body: |527  bb.0:528    liveins: $vgpr0, $vgpr1529 530    ; SI-LABEL: name: test_copysign_v2s16_v2s16531    ; SI: liveins: $vgpr0, $vgpr1532    ; SI-NEXT: {{  $}}533    ; SI-NEXT: [[COPY:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr0534    ; SI-NEXT: [[COPY1:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr1535    ; SI-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 32768536    ; SI-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 16537    ; SI-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[C]], [[C1]](s32)538    ; SI-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[C]], [[SHL]]539    ; SI-NEXT: [[BITCAST:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR]](s32)540    ; SI-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 32767541    ; SI-NEXT: [[SHL1:%[0-9]+]]:_(s32) = G_SHL [[C2]], [[C1]](s32)542    ; SI-NEXT: [[OR1:%[0-9]+]]:_(s32) = G_OR [[C2]], [[SHL1]]543    ; SI-NEXT: [[BITCAST1:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR1]](s32)544    ; SI-NEXT: [[AND:%[0-9]+]]:_(<2 x s16>) = G_AND [[COPY]], [[BITCAST1]]545    ; SI-NEXT: [[AND1:%[0-9]+]]:_(<2 x s16>) = G_AND [[COPY1]], [[BITCAST]]546    ; SI-NEXT: %2:_(<2 x s16>) = disjoint G_OR [[AND]], [[AND1]]547    ; SI-NEXT: $vgpr0 = COPY %2(<2 x s16>)548    ;549    ; VI-LABEL: name: test_copysign_v2s16_v2s16550    ; VI: liveins: $vgpr0, $vgpr1551    ; VI-NEXT: {{  $}}552    ; VI-NEXT: [[COPY:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr0553    ; VI-NEXT: [[COPY1:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr1554    ; VI-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 32768555    ; VI-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 16556    ; VI-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[C]], [[C1]](s32)557    ; VI-NEXT: [[OR:%[0-9]+]]:_(s32) = G_OR [[C]], [[SHL]]558    ; VI-NEXT: [[BITCAST:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR]](s32)559    ; VI-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 32767560    ; VI-NEXT: [[SHL1:%[0-9]+]]:_(s32) = G_SHL [[C2]], [[C1]](s32)561    ; VI-NEXT: [[OR1:%[0-9]+]]:_(s32) = G_OR [[C2]], [[SHL1]]562    ; VI-NEXT: [[BITCAST1:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR1]](s32)563    ; VI-NEXT: [[AND:%[0-9]+]]:_(<2 x s16>) = G_AND [[COPY]], [[BITCAST1]]564    ; VI-NEXT: [[AND1:%[0-9]+]]:_(<2 x s16>) = G_AND [[COPY1]], [[BITCAST]]565    ; VI-NEXT: %2:_(<2 x s16>) = disjoint G_OR [[AND]], [[AND1]]566    ; VI-NEXT: $vgpr0 = COPY %2(<2 x s16>)567    ;568    ; GFX9-LABEL: name: test_copysign_v2s16_v2s16569    ; GFX9: liveins: $vgpr0, $vgpr1570    ; GFX9-NEXT: {{  $}}571    ; GFX9-NEXT: [[COPY:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr0572    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr1573    ; GFX9-NEXT: [[C:%[0-9]+]]:_(s16) = G_CONSTANT i16 -32768574    ; GFX9-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR [[C]](s16), [[C]](s16)575    ; GFX9-NEXT: [[C1:%[0-9]+]]:_(s16) = G_CONSTANT i16 32767576    ; GFX9-NEXT: [[BUILD_VECTOR1:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR [[C1]](s16), [[C1]](s16)577    ; GFX9-NEXT: [[AND:%[0-9]+]]:_(<2 x s16>) = G_AND [[COPY]], [[BUILD_VECTOR1]]578    ; GFX9-NEXT: [[AND1:%[0-9]+]]:_(<2 x s16>) = G_AND [[COPY1]], [[BUILD_VECTOR]]579    ; GFX9-NEXT: %2:_(<2 x s16>) = disjoint G_OR [[AND]], [[AND1]]580    ; GFX9-NEXT: $vgpr0 = COPY %2(<2 x s16>)581    %0:_(<2 x s16>) = COPY $vgpr0582    %1:_(<2 x s16>) = COPY $vgpr1583    %2:_(<2 x s16>) = G_FCOPYSIGN %0, %1584    $vgpr0 = COPY %2585...586 587---588name: test_copysign_v2s32_v2s32589body: |590  bb.0:591    liveins: $vgpr0_vgpr1, $vgpr2_vgpr3592 593    ; SI-LABEL: name: test_copysign_v2s32_v2s32594    ; SI: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3595    ; SI-NEXT: {{  $}}596    ; SI-NEXT: [[COPY:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr0_vgpr1597    ; SI-NEXT: [[COPY1:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr2_vgpr3598    ; SI-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 -2147483648599    ; SI-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[C]](s32), [[C]](s32)600    ; SI-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 2147483647601    ; SI-NEXT: [[BUILD_VECTOR1:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[C1]](s32), [[C1]](s32)602    ; SI-NEXT: [[AND:%[0-9]+]]:_(<2 x s32>) = G_AND [[COPY]], [[BUILD_VECTOR1]]603    ; SI-NEXT: [[AND1:%[0-9]+]]:_(<2 x s32>) = G_AND [[COPY1]], [[BUILD_VECTOR]]604    ; SI-NEXT: %2:_(<2 x s32>) = disjoint G_OR [[AND]], [[AND1]]605    ; SI-NEXT: $vgpr0_vgpr1 = COPY %2(<2 x s32>)606    ;607    ; VI-LABEL: name: test_copysign_v2s32_v2s32608    ; VI: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3609    ; VI-NEXT: {{  $}}610    ; VI-NEXT: [[COPY:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr0_vgpr1611    ; VI-NEXT: [[COPY1:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr2_vgpr3612    ; VI-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 -2147483648613    ; VI-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[C]](s32), [[C]](s32)614    ; VI-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 2147483647615    ; VI-NEXT: [[BUILD_VECTOR1:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[C1]](s32), [[C1]](s32)616    ; VI-NEXT: [[AND:%[0-9]+]]:_(<2 x s32>) = G_AND [[COPY]], [[BUILD_VECTOR1]]617    ; VI-NEXT: [[AND1:%[0-9]+]]:_(<2 x s32>) = G_AND [[COPY1]], [[BUILD_VECTOR]]618    ; VI-NEXT: %2:_(<2 x s32>) = disjoint G_OR [[AND]], [[AND1]]619    ; VI-NEXT: $vgpr0_vgpr1 = COPY %2(<2 x s32>)620    ;621    ; GFX9-LABEL: name: test_copysign_v2s32_v2s32622    ; GFX9: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3623    ; GFX9-NEXT: {{  $}}624    ; GFX9-NEXT: [[COPY:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr0_vgpr1625    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr2_vgpr3626    ; GFX9-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 -2147483648627    ; GFX9-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[C]](s32), [[C]](s32)628    ; GFX9-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 2147483647629    ; GFX9-NEXT: [[BUILD_VECTOR1:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[C1]](s32), [[C1]](s32)630    ; GFX9-NEXT: [[AND:%[0-9]+]]:_(<2 x s32>) = G_AND [[COPY]], [[BUILD_VECTOR1]]631    ; GFX9-NEXT: [[AND1:%[0-9]+]]:_(<2 x s32>) = G_AND [[COPY1]], [[BUILD_VECTOR]]632    ; GFX9-NEXT: %2:_(<2 x s32>) = disjoint G_OR [[AND]], [[AND1]]633    ; GFX9-NEXT: $vgpr0_vgpr1 = COPY %2(<2 x s32>)634    %0:_(<2 x s32>) = COPY $vgpr0_vgpr1635    %1:_(<2 x s32>) = COPY $vgpr2_vgpr3636    %2:_(<2 x s32>) = G_FCOPYSIGN %0, %1637    $vgpr0_vgpr1 = COPY %2638...639 640---641name: test_copysign_v2s64_v2s64642body: |643  bb.0:644    liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5_vgpr6_vgpr7645 646    ; SI-LABEL: name: test_copysign_v2s64_v2s64647    ; SI: liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5_vgpr6_vgpr7648    ; SI-NEXT: {{  $}}649    ; SI-NEXT: [[COPY:%[0-9]+]]:_(<2 x s64>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3650    ; SI-NEXT: [[COPY1:%[0-9]+]]:_(<2 x s64>) = COPY $vgpr4_vgpr5_vgpr6_vgpr7651    ; SI-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 -9223372036854775808652    ; SI-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 9223372036854775807653    ; SI-NEXT: [[UV:%[0-9]+]]:_(s64), [[UV1:%[0-9]+]]:_(s64) = G_UNMERGE_VALUES [[COPY]](<2 x s64>)654    ; SI-NEXT: [[AND:%[0-9]+]]:_(s64) = G_AND [[UV]], [[C1]]655    ; SI-NEXT: [[AND1:%[0-9]+]]:_(s64) = G_AND [[UV1]], [[C1]]656    ; SI-NEXT: [[UV2:%[0-9]+]]:_(s64), [[UV3:%[0-9]+]]:_(s64) = G_UNMERGE_VALUES [[COPY1]](<2 x s64>)657    ; SI-NEXT: [[AND2:%[0-9]+]]:_(s64) = G_AND [[UV2]], [[C]]658    ; SI-NEXT: [[AND3:%[0-9]+]]:_(s64) = G_AND [[UV3]], [[C]]659    ; SI-NEXT: %13:_(s64) = disjoint G_OR [[AND]], [[AND2]]660    ; SI-NEXT: %14:_(s64) = disjoint G_OR [[AND1]], [[AND3]]661    ; SI-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s64>) = G_BUILD_VECTOR %13(s64), %14(s64)662    ; SI-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[BUILD_VECTOR]](<2 x s64>)663    ;664    ; VI-LABEL: name: test_copysign_v2s64_v2s64665    ; VI: liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5_vgpr6_vgpr7666    ; VI-NEXT: {{  $}}667    ; VI-NEXT: [[COPY:%[0-9]+]]:_(<2 x s64>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3668    ; VI-NEXT: [[COPY1:%[0-9]+]]:_(<2 x s64>) = COPY $vgpr4_vgpr5_vgpr6_vgpr7669    ; VI-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 -9223372036854775808670    ; VI-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 9223372036854775807671    ; VI-NEXT: [[UV:%[0-9]+]]:_(s64), [[UV1:%[0-9]+]]:_(s64) = G_UNMERGE_VALUES [[COPY]](<2 x s64>)672    ; VI-NEXT: [[AND:%[0-9]+]]:_(s64) = G_AND [[UV]], [[C1]]673    ; VI-NEXT: [[AND1:%[0-9]+]]:_(s64) = G_AND [[UV1]], [[C1]]674    ; VI-NEXT: [[UV2:%[0-9]+]]:_(s64), [[UV3:%[0-9]+]]:_(s64) = G_UNMERGE_VALUES [[COPY1]](<2 x s64>)675    ; VI-NEXT: [[AND2:%[0-9]+]]:_(s64) = G_AND [[UV2]], [[C]]676    ; VI-NEXT: [[AND3:%[0-9]+]]:_(s64) = G_AND [[UV3]], [[C]]677    ; VI-NEXT: %13:_(s64) = disjoint G_OR [[AND]], [[AND2]]678    ; VI-NEXT: %14:_(s64) = disjoint G_OR [[AND1]], [[AND3]]679    ; VI-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s64>) = G_BUILD_VECTOR %13(s64), %14(s64)680    ; VI-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[BUILD_VECTOR]](<2 x s64>)681    ;682    ; GFX9-LABEL: name: test_copysign_v2s64_v2s64683    ; GFX9: liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5_vgpr6_vgpr7684    ; GFX9-NEXT: {{  $}}685    ; GFX9-NEXT: [[COPY:%[0-9]+]]:_(<2 x s64>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3686    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:_(<2 x s64>) = COPY $vgpr4_vgpr5_vgpr6_vgpr7687    ; GFX9-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 -9223372036854775808688    ; GFX9-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 9223372036854775807689    ; GFX9-NEXT: [[UV:%[0-9]+]]:_(s64), [[UV1:%[0-9]+]]:_(s64) = G_UNMERGE_VALUES [[COPY]](<2 x s64>)690    ; GFX9-NEXT: [[AND:%[0-9]+]]:_(s64) = G_AND [[UV]], [[C1]]691    ; GFX9-NEXT: [[AND1:%[0-9]+]]:_(s64) = G_AND [[UV1]], [[C1]]692    ; GFX9-NEXT: [[UV2:%[0-9]+]]:_(s64), [[UV3:%[0-9]+]]:_(s64) = G_UNMERGE_VALUES [[COPY1]](<2 x s64>)693    ; GFX9-NEXT: [[AND2:%[0-9]+]]:_(s64) = G_AND [[UV2]], [[C]]694    ; GFX9-NEXT: [[AND3:%[0-9]+]]:_(s64) = G_AND [[UV3]], [[C]]695    ; GFX9-NEXT: %13:_(s64) = disjoint G_OR [[AND]], [[AND2]]696    ; GFX9-NEXT: %14:_(s64) = disjoint G_OR [[AND1]], [[AND3]]697    ; GFX9-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s64>) = G_BUILD_VECTOR %13(s64), %14(s64)698    ; GFX9-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[BUILD_VECTOR]](<2 x s64>)699    %0:_(<2 x s64>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3700    %1:_(<2 x s64>) = COPY $vgpr4_vgpr5_vgpr6_vgpr7701    %2:_(<2 x s64>) = G_FCOPYSIGN %0, %1702    $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2703...704 705---706name: test_copysign_v2s64_v2s32707body: |708  bb.0:709    liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5710 711    ; SI-LABEL: name: test_copysign_v2s64_v2s32712    ; SI: liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5713    ; SI-NEXT: {{  $}}714    ; SI-NEXT: [[COPY:%[0-9]+]]:_(<2 x s64>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3715    ; SI-NEXT: [[COPY1:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr4_vgpr5716    ; SI-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 -9223372036854775808717    ; SI-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 9223372036854775807718    ; SI-NEXT: [[UV:%[0-9]+]]:_(s64), [[UV1:%[0-9]+]]:_(s64) = G_UNMERGE_VALUES [[COPY]](<2 x s64>)719    ; SI-NEXT: [[AND:%[0-9]+]]:_(s64) = G_AND [[UV]], [[C1]]720    ; SI-NEXT: [[AND1:%[0-9]+]]:_(s64) = G_AND [[UV1]], [[C1]]721    ; SI-NEXT: [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY1]](<2 x s32>)722    ; SI-NEXT: [[ZEXT:%[0-9]+]]:_(s64) = G_ZEXT [[UV2]](s32)723    ; SI-NEXT: [[ZEXT1:%[0-9]+]]:_(s64) = G_ZEXT [[UV3]](s32)724    ; SI-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 32725    ; SI-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY [[C2]](s32)726    ; SI-NEXT: [[SHL:%[0-9]+]]:_(s64) = G_SHL [[ZEXT]], [[COPY2]](s32)727    ; SI-NEXT: [[SHL1:%[0-9]+]]:_(s64) = G_SHL [[ZEXT1]], [[C2]](s32)728    ; SI-NEXT: [[AND2:%[0-9]+]]:_(s64) = G_AND [[SHL]], [[C]]729    ; SI-NEXT: [[AND3:%[0-9]+]]:_(s64) = G_AND [[SHL1]], [[C]]730    ; SI-NEXT: %17:_(s64) = disjoint G_OR [[AND]], [[AND2]]731    ; SI-NEXT: %18:_(s64) = disjoint G_OR [[AND1]], [[AND3]]732    ; SI-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s64>) = G_BUILD_VECTOR %17(s64), %18(s64)733    ; SI-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[BUILD_VECTOR]](<2 x s64>)734    ;735    ; VI-LABEL: name: test_copysign_v2s64_v2s32736    ; VI: liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5737    ; VI-NEXT: {{  $}}738    ; VI-NEXT: [[COPY:%[0-9]+]]:_(<2 x s64>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3739    ; VI-NEXT: [[COPY1:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr4_vgpr5740    ; VI-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 -9223372036854775808741    ; VI-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 9223372036854775807742    ; VI-NEXT: [[UV:%[0-9]+]]:_(s64), [[UV1:%[0-9]+]]:_(s64) = G_UNMERGE_VALUES [[COPY]](<2 x s64>)743    ; VI-NEXT: [[AND:%[0-9]+]]:_(s64) = G_AND [[UV]], [[C1]]744    ; VI-NEXT: [[AND1:%[0-9]+]]:_(s64) = G_AND [[UV1]], [[C1]]745    ; VI-NEXT: [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY1]](<2 x s32>)746    ; VI-NEXT: [[ZEXT:%[0-9]+]]:_(s64) = G_ZEXT [[UV2]](s32)747    ; VI-NEXT: [[ZEXT1:%[0-9]+]]:_(s64) = G_ZEXT [[UV3]](s32)748    ; VI-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 32749    ; VI-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY [[C2]](s32)750    ; VI-NEXT: [[SHL:%[0-9]+]]:_(s64) = G_SHL [[ZEXT]], [[COPY2]](s32)751    ; VI-NEXT: [[SHL1:%[0-9]+]]:_(s64) = G_SHL [[ZEXT1]], [[C2]](s32)752    ; VI-NEXT: [[AND2:%[0-9]+]]:_(s64) = G_AND [[SHL]], [[C]]753    ; VI-NEXT: [[AND3:%[0-9]+]]:_(s64) = G_AND [[SHL1]], [[C]]754    ; VI-NEXT: %17:_(s64) = disjoint G_OR [[AND]], [[AND2]]755    ; VI-NEXT: %18:_(s64) = disjoint G_OR [[AND1]], [[AND3]]756    ; VI-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s64>) = G_BUILD_VECTOR %17(s64), %18(s64)757    ; VI-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[BUILD_VECTOR]](<2 x s64>)758    ;759    ; GFX9-LABEL: name: test_copysign_v2s64_v2s32760    ; GFX9: liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5761    ; GFX9-NEXT: {{  $}}762    ; GFX9-NEXT: [[COPY:%[0-9]+]]:_(<2 x s64>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3763    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr4_vgpr5764    ; GFX9-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 -9223372036854775808765    ; GFX9-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 9223372036854775807766    ; GFX9-NEXT: [[UV:%[0-9]+]]:_(s64), [[UV1:%[0-9]+]]:_(s64) = G_UNMERGE_VALUES [[COPY]](<2 x s64>)767    ; GFX9-NEXT: [[AND:%[0-9]+]]:_(s64) = G_AND [[UV]], [[C1]]768    ; GFX9-NEXT: [[AND1:%[0-9]+]]:_(s64) = G_AND [[UV1]], [[C1]]769    ; GFX9-NEXT: [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY1]](<2 x s32>)770    ; GFX9-NEXT: [[ZEXT:%[0-9]+]]:_(s64) = G_ZEXT [[UV2]](s32)771    ; GFX9-NEXT: [[ZEXT1:%[0-9]+]]:_(s64) = G_ZEXT [[UV3]](s32)772    ; GFX9-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 32773    ; GFX9-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY [[C2]](s32)774    ; GFX9-NEXT: [[SHL:%[0-9]+]]:_(s64) = G_SHL [[ZEXT]], [[COPY2]](s32)775    ; GFX9-NEXT: [[SHL1:%[0-9]+]]:_(s64) = G_SHL [[ZEXT1]], [[C2]](s32)776    ; GFX9-NEXT: [[AND2:%[0-9]+]]:_(s64) = G_AND [[SHL]], [[C]]777    ; GFX9-NEXT: [[AND3:%[0-9]+]]:_(s64) = G_AND [[SHL1]], [[C]]778    ; GFX9-NEXT: %17:_(s64) = disjoint G_OR [[AND]], [[AND2]]779    ; GFX9-NEXT: %18:_(s64) = disjoint G_OR [[AND1]], [[AND3]]780    ; GFX9-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s64>) = G_BUILD_VECTOR %17(s64), %18(s64)781    ; GFX9-NEXT: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[BUILD_VECTOR]](<2 x s64>)782    %0:_(<2 x s64>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3783    %1:_(<2 x s32>) = COPY $vgpr4_vgpr5784    %2:_(<2 x s64>) = G_FCOPYSIGN %0, %1785    $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2786...787 788 789---790name: test_copysign_v2s32_v2s64791body: |792  bb.0:793    liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5794 795    ; SI-LABEL: name: test_copysign_v2s32_v2s64796    ; SI: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5797    ; SI-NEXT: {{  $}}798    ; SI-NEXT: [[COPY:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr0_vgpr1799    ; SI-NEXT: [[COPY1:%[0-9]+]]:_(<2 x s64>) = COPY $vgpr2_vgpr3_vgpr4_vgpr5800    ; SI-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 -2147483648801    ; SI-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[C]](s32), [[C]](s32)802    ; SI-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 2147483647803    ; SI-NEXT: [[BUILD_VECTOR1:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[C1]](s32), [[C1]](s32)804    ; SI-NEXT: [[AND:%[0-9]+]]:_(<2 x s32>) = G_AND [[COPY]], [[BUILD_VECTOR1]]805    ; SI-NEXT: [[UV:%[0-9]+]]:_(s64), [[UV1:%[0-9]+]]:_(s64) = G_UNMERGE_VALUES [[COPY1]](<2 x s64>)806    ; SI-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 32807    ; SI-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY [[C2]](s32)808    ; SI-NEXT: [[LSHR:%[0-9]+]]:_(s64) = G_LSHR [[UV]], [[COPY2]](s32)809    ; SI-NEXT: [[LSHR1:%[0-9]+]]:_(s64) = G_LSHR [[UV1]], [[C2]](s32)810    ; SI-NEXT: [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[LSHR]](s64)811    ; SI-NEXT: [[TRUNC1:%[0-9]+]]:_(s32) = G_TRUNC [[LSHR1]](s64)812    ; SI-NEXT: [[BUILD_VECTOR2:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[TRUNC]](s32), [[TRUNC1]](s32)813    ; SI-NEXT: [[AND1:%[0-9]+]]:_(<2 x s32>) = G_AND [[BUILD_VECTOR2]], [[BUILD_VECTOR]]814    ; SI-NEXT: %2:_(<2 x s32>) = disjoint G_OR [[AND]], [[AND1]]815    ; SI-NEXT: $vgpr0_vgpr1 = COPY %2(<2 x s32>)816    ;817    ; VI-LABEL: name: test_copysign_v2s32_v2s64818    ; VI: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5819    ; VI-NEXT: {{  $}}820    ; VI-NEXT: [[COPY:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr0_vgpr1821    ; VI-NEXT: [[COPY1:%[0-9]+]]:_(<2 x s64>) = COPY $vgpr2_vgpr3_vgpr4_vgpr5822    ; VI-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 -2147483648823    ; VI-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[C]](s32), [[C]](s32)824    ; VI-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 2147483647825    ; VI-NEXT: [[BUILD_VECTOR1:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[C1]](s32), [[C1]](s32)826    ; VI-NEXT: [[AND:%[0-9]+]]:_(<2 x s32>) = G_AND [[COPY]], [[BUILD_VECTOR1]]827    ; VI-NEXT: [[UV:%[0-9]+]]:_(s64), [[UV1:%[0-9]+]]:_(s64) = G_UNMERGE_VALUES [[COPY1]](<2 x s64>)828    ; VI-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 32829    ; VI-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY [[C2]](s32)830    ; VI-NEXT: [[LSHR:%[0-9]+]]:_(s64) = G_LSHR [[UV]], [[COPY2]](s32)831    ; VI-NEXT: [[LSHR1:%[0-9]+]]:_(s64) = G_LSHR [[UV1]], [[C2]](s32)832    ; VI-NEXT: [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[LSHR]](s64)833    ; VI-NEXT: [[TRUNC1:%[0-9]+]]:_(s32) = G_TRUNC [[LSHR1]](s64)834    ; VI-NEXT: [[BUILD_VECTOR2:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[TRUNC]](s32), [[TRUNC1]](s32)835    ; VI-NEXT: [[AND1:%[0-9]+]]:_(<2 x s32>) = G_AND [[BUILD_VECTOR2]], [[BUILD_VECTOR]]836    ; VI-NEXT: %2:_(<2 x s32>) = disjoint G_OR [[AND]], [[AND1]]837    ; VI-NEXT: $vgpr0_vgpr1 = COPY %2(<2 x s32>)838    ;839    ; GFX9-LABEL: name: test_copysign_v2s32_v2s64840    ; GFX9: liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5841    ; GFX9-NEXT: {{  $}}842    ; GFX9-NEXT: [[COPY:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr0_vgpr1843    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:_(<2 x s64>) = COPY $vgpr2_vgpr3_vgpr4_vgpr5844    ; GFX9-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 -2147483648845    ; GFX9-NEXT: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[C]](s32), [[C]](s32)846    ; GFX9-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 2147483647847    ; GFX9-NEXT: [[BUILD_VECTOR1:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[C1]](s32), [[C1]](s32)848    ; GFX9-NEXT: [[AND:%[0-9]+]]:_(<2 x s32>) = G_AND [[COPY]], [[BUILD_VECTOR1]]849    ; GFX9-NEXT: [[UV:%[0-9]+]]:_(s64), [[UV1:%[0-9]+]]:_(s64) = G_UNMERGE_VALUES [[COPY1]](<2 x s64>)850    ; GFX9-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 32851    ; GFX9-NEXT: [[COPY2:%[0-9]+]]:_(s32) = COPY [[C2]](s32)852    ; GFX9-NEXT: [[LSHR:%[0-9]+]]:_(s64) = G_LSHR [[UV]], [[COPY2]](s32)853    ; GFX9-NEXT: [[LSHR1:%[0-9]+]]:_(s64) = G_LSHR [[UV1]], [[C2]](s32)854    ; GFX9-NEXT: [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[LSHR]](s64)855    ; GFX9-NEXT: [[TRUNC1:%[0-9]+]]:_(s32) = G_TRUNC [[LSHR1]](s64)856    ; GFX9-NEXT: [[BUILD_VECTOR2:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[TRUNC]](s32), [[TRUNC1]](s32)857    ; GFX9-NEXT: [[AND1:%[0-9]+]]:_(<2 x s32>) = G_AND [[BUILD_VECTOR2]], [[BUILD_VECTOR]]858    ; GFX9-NEXT: %2:_(<2 x s32>) = disjoint G_OR [[AND]], [[AND1]]859    ; GFX9-NEXT: $vgpr0_vgpr1 = COPY %2(<2 x s32>)860    %0:_(<2 x s32>) = COPY $vgpr0_vgpr1861    %1:_(<2 x s64>) = COPY $vgpr2_vgpr3_vgpr4_vgpr5862    %2:_(<2 x s32>) = G_FCOPYSIGN %0, %1863    $vgpr0_vgpr1 = COPY %2864...865 866---867name: test_copysign_s32_s32_flagss868body: |869  bb.0:870    liveins: $vgpr0, $vgpr1871 872    ; SI-LABEL: name: test_copysign_s32_s32_flagss873    ; SI: liveins: $vgpr0, $vgpr1874    ; SI-NEXT: {{  $}}875    ; SI-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0876    ; SI-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1877    ; SI-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 -2147483648878    ; SI-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 2147483647879    ; SI-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY]], [[C1]]880    ; SI-NEXT: [[AND1:%[0-9]+]]:_(s32) = G_AND [[COPY1]], [[C]]881    ; SI-NEXT: %2:_(s32) = nnan disjoint G_OR [[AND]], [[AND1]]882    ; SI-NEXT: $vgpr0 = COPY %2(s32)883    ;884    ; VI-LABEL: name: test_copysign_s32_s32_flagss885    ; VI: liveins: $vgpr0, $vgpr1886    ; VI-NEXT: {{  $}}887    ; VI-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0888    ; VI-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1889    ; VI-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 -2147483648890    ; VI-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 2147483647891    ; VI-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY]], [[C1]]892    ; VI-NEXT: [[AND1:%[0-9]+]]:_(s32) = G_AND [[COPY1]], [[C]]893    ; VI-NEXT: %2:_(s32) = nnan disjoint G_OR [[AND]], [[AND1]]894    ; VI-NEXT: $vgpr0 = COPY %2(s32)895    ;896    ; GFX9-LABEL: name: test_copysign_s32_s32_flagss897    ; GFX9: liveins: $vgpr0, $vgpr1898    ; GFX9-NEXT: {{  $}}899    ; GFX9-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0900    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1901    ; GFX9-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 -2147483648902    ; GFX9-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 2147483647903    ; GFX9-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY]], [[C1]]904    ; GFX9-NEXT: [[AND1:%[0-9]+]]:_(s32) = G_AND [[COPY1]], [[C]]905    ; GFX9-NEXT: %2:_(s32) = nnan disjoint G_OR [[AND]], [[AND1]]906    ; GFX9-NEXT: $vgpr0 = COPY %2(s32)907    %0:_(s32) = COPY $vgpr0908    %1:_(s32) = COPY $vgpr1909    %2:_(s32) = nnan G_FCOPYSIGN %0, %1910    $vgpr0 = COPY %2911...912 913 914---915name: test_copysign_s32_s16_flags916body: |917  bb.0:918    liveins: $vgpr0, $vgpr1919    ; SI-LABEL: name: test_copysign_s32_s16_flags920    ; SI: liveins: $vgpr0, $vgpr1921    ; SI-NEXT: {{  $}}922    ; SI-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0923    ; SI-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1924    ; SI-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 -2147483648925    ; SI-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 2147483647926    ; SI-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY]], [[C1]]927    ; SI-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 16928    ; SI-NEXT: [[C3:%[0-9]+]]:_(s32) = G_CONSTANT i32 65535929    ; SI-NEXT: [[AND1:%[0-9]+]]:_(s32) = G_AND [[COPY1]], [[C3]]930    ; SI-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[AND1]], [[C2]](s32)931    ; SI-NEXT: [[AND2:%[0-9]+]]:_(s32) = G_AND [[SHL]], [[C]]932    ; SI-NEXT: %3:_(s32) = nnan disjoint G_OR [[AND]], [[AND2]]933    ; SI-NEXT: $vgpr0 = COPY %3(s32)934    ;935    ; VI-LABEL: name: test_copysign_s32_s16_flags936    ; VI: liveins: $vgpr0, $vgpr1937    ; VI-NEXT: {{  $}}938    ; VI-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0939    ; VI-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1940    ; VI-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 -2147483648941    ; VI-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 2147483647942    ; VI-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY]], [[C1]]943    ; VI-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 16944    ; VI-NEXT: [[C3:%[0-9]+]]:_(s32) = G_CONSTANT i32 65535945    ; VI-NEXT: [[AND1:%[0-9]+]]:_(s32) = G_AND [[COPY1]], [[C3]]946    ; VI-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[AND1]], [[C2]](s32)947    ; VI-NEXT: [[AND2:%[0-9]+]]:_(s32) = G_AND [[SHL]], [[C]]948    ; VI-NEXT: %3:_(s32) = nnan disjoint G_OR [[AND]], [[AND2]]949    ; VI-NEXT: $vgpr0 = COPY %3(s32)950    ;951    ; GFX9-LABEL: name: test_copysign_s32_s16_flags952    ; GFX9: liveins: $vgpr0, $vgpr1953    ; GFX9-NEXT: {{  $}}954    ; GFX9-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0955    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1956    ; GFX9-NEXT: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 -2147483648957    ; GFX9-NEXT: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 2147483647958    ; GFX9-NEXT: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY]], [[C1]]959    ; GFX9-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 16960    ; GFX9-NEXT: [[C3:%[0-9]+]]:_(s32) = G_CONSTANT i32 65535961    ; GFX9-NEXT: [[AND1:%[0-9]+]]:_(s32) = G_AND [[COPY1]], [[C3]]962    ; GFX9-NEXT: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[AND1]], [[C2]](s32)963    ; GFX9-NEXT: [[AND2:%[0-9]+]]:_(s32) = G_AND [[SHL]], [[C]]964    ; GFX9-NEXT: %3:_(s32) = nnan disjoint G_OR [[AND]], [[AND2]]965    ; GFX9-NEXT: $vgpr0 = COPY %3(s32)966    %0:_(s32) = COPY $vgpr0967    %1:_(s32) = COPY $vgpr1968    %2:_(s16) = G_TRUNC %1969    %3:_(s32) = nnan G_FCOPYSIGN %0, %2970    $vgpr0 = COPY %3971...972 973 974---975name: test_copysign_s16_s32_flags976body: |977  bb.0:978    liveins: $vgpr0, $vgpr1979 980    ; SI-LABEL: name: test_copysign_s16_s32_flags981    ; SI: liveins: $vgpr0, $vgpr1982    ; SI-NEXT: {{  $}}983    ; SI-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0984    ; SI-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1985    ; SI-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)986    ; SI-NEXT: [[C:%[0-9]+]]:_(s16) = G_CONSTANT i16 -32768987    ; SI-NEXT: [[C1:%[0-9]+]]:_(s16) = G_CONSTANT i16 32767988    ; SI-NEXT: [[AND:%[0-9]+]]:_(s16) = G_AND [[TRUNC]], [[C1]]989    ; SI-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 16990    ; SI-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[COPY1]], [[C2]](s32)991    ; SI-NEXT: [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[LSHR]](s32)992    ; SI-NEXT: [[AND1:%[0-9]+]]:_(s16) = G_AND [[TRUNC1]], [[C]]993    ; SI-NEXT: %3:_(s16) = nnan disjoint G_OR [[AND]], [[AND1]]994    ; SI-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT %3(s16)995    ; SI-NEXT: $vgpr0 = COPY [[ANYEXT]](s32)996    ;997    ; VI-LABEL: name: test_copysign_s16_s32_flags998    ; VI: liveins: $vgpr0, $vgpr1999    ; VI-NEXT: {{  $}}1000    ; VI-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr01001    ; VI-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr11002    ; VI-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)1003    ; VI-NEXT: [[C:%[0-9]+]]:_(s16) = G_CONSTANT i16 -327681004    ; VI-NEXT: [[C1:%[0-9]+]]:_(s16) = G_CONSTANT i16 327671005    ; VI-NEXT: [[AND:%[0-9]+]]:_(s16) = G_AND [[TRUNC]], [[C1]]1006    ; VI-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 161007    ; VI-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[COPY1]], [[C2]](s32)1008    ; VI-NEXT: [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[LSHR]](s32)1009    ; VI-NEXT: [[AND1:%[0-9]+]]:_(s16) = G_AND [[TRUNC1]], [[C]]1010    ; VI-NEXT: %3:_(s16) = nnan disjoint G_OR [[AND]], [[AND1]]1011    ; VI-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT %3(s16)1012    ; VI-NEXT: $vgpr0 = COPY [[ANYEXT]](s32)1013    ;1014    ; GFX9-LABEL: name: test_copysign_s16_s32_flags1015    ; GFX9: liveins: $vgpr0, $vgpr11016    ; GFX9-NEXT: {{  $}}1017    ; GFX9-NEXT: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr01018    ; GFX9-NEXT: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr11019    ; GFX9-NEXT: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32)1020    ; GFX9-NEXT: [[C:%[0-9]+]]:_(s16) = G_CONSTANT i16 -327681021    ; GFX9-NEXT: [[C1:%[0-9]+]]:_(s16) = G_CONSTANT i16 327671022    ; GFX9-NEXT: [[AND:%[0-9]+]]:_(s16) = G_AND [[TRUNC]], [[C1]]1023    ; GFX9-NEXT: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 161024    ; GFX9-NEXT: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[COPY1]], [[C2]](s32)1025    ; GFX9-NEXT: [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[LSHR]](s32)1026    ; GFX9-NEXT: [[AND1:%[0-9]+]]:_(s16) = G_AND [[TRUNC1]], [[C]]1027    ; GFX9-NEXT: %3:_(s16) = nnan disjoint G_OR [[AND]], [[AND1]]1028    ; GFX9-NEXT: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT %3(s16)1029    ; GFX9-NEXT: $vgpr0 = COPY [[ANYEXT]](s32)1030    %0:_(s32) = COPY $vgpr01031    %1:_(s32) = COPY $vgpr11032    %2:_(s16) = G_TRUNC %01033    %3:_(s16) = nnan G_FCOPYSIGN %2, %11034    %4:_(s32) = G_ANYEXT %31035    $vgpr0 = COPY %41036...1037