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