1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py 2# RUN: llc -mtriple=amdgcn-mesa-mesa3d -mcpu=tahiti -run-pass=legalizer %s -o - | FileCheck -check-prefix=SI %s 3# RUN: llc -mtriple=amdgcn-mesa-mesa3d -mcpu=fiji -run-pass=legalizer %s -o - | FileCheck -check-prefix=VI %s 4# RUN: llc -mtriple=amdgcn-mesa-mesa3d -mcpu=gfx900 -run-pass=legalizer %s -o - | FileCheck -check-prefix=GFX9 %s 5 6--- 7name: test_copysign_s16_s16 8body: | 9 bb.0: 10 liveins: $vgpr0, $vgpr1 11 12 ; SI-LABEL: name: test_copysign_s16_s16 13 ; SI: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 14 ; SI: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 15 ; SI: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32) 16 ; SI: [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[COPY1]](s32) 17 ; SI: [[C:%[0-9]+]]:_(s16) = G_CONSTANT i16 -32768 18 ; SI: [[C1:%[0-9]+]]:_(s16) = G_CONSTANT i16 32767 19 ; SI: [[AND:%[0-9]+]]:_(s16) = G_AND [[TRUNC]], [[C1]] 20 ; SI: [[AND1:%[0-9]+]]:_(s16) = G_AND [[TRUNC1]], [[C]] 21 ; SI: [[OR:%[0-9]+]]:_(s16) = G_OR [[AND]], [[AND1]] 22 ; SI: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[OR]](s16) 23 ; SI: $vgpr0 = COPY [[ANYEXT]](s32) 24 ; VI-LABEL: name: test_copysign_s16_s16 25 ; VI: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 26 ; VI: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 27 ; VI: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32) 28 ; VI: [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[COPY1]](s32) 29 ; VI: [[C:%[0-9]+]]:_(s16) = G_CONSTANT i16 -32768 30 ; VI: [[C1:%[0-9]+]]:_(s16) = G_CONSTANT i16 32767 31 ; VI: [[AND:%[0-9]+]]:_(s16) = G_AND [[TRUNC]], [[C1]] 32 ; VI: [[AND1:%[0-9]+]]:_(s16) = G_AND [[TRUNC1]], [[C]] 33 ; VI: [[OR:%[0-9]+]]:_(s16) = G_OR [[AND]], [[AND1]] 34 ; VI: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[OR]](s16) 35 ; VI: $vgpr0 = COPY [[ANYEXT]](s32) 36 ; GFX9-LABEL: name: test_copysign_s16_s16 37 ; GFX9: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 38 ; GFX9: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 39 ; GFX9: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32) 40 ; GFX9: [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[COPY1]](s32) 41 ; GFX9: [[C:%[0-9]+]]:_(s16) = G_CONSTANT i16 -32768 42 ; GFX9: [[C1:%[0-9]+]]:_(s16) = G_CONSTANT i16 32767 43 ; GFX9: [[AND:%[0-9]+]]:_(s16) = G_AND [[TRUNC]], [[C1]] 44 ; GFX9: [[AND1:%[0-9]+]]:_(s16) = G_AND [[TRUNC1]], [[C]] 45 ; GFX9: [[OR:%[0-9]+]]:_(s16) = G_OR [[AND]], [[AND1]] 46 ; GFX9: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[OR]](s16) 47 ; GFX9: $vgpr0 = COPY [[ANYEXT]](s32) 48 %0:_(s32) = COPY $vgpr0 49 %1:_(s32) = COPY $vgpr1 50 %2:_(s16) = G_TRUNC %0 51 %3:_(s16) = G_TRUNC %1 52 %4:_(s16) = G_FCOPYSIGN %2, %3 53 %5:_(s32) = G_ANYEXT %4 54 $vgpr0 = COPY %5 55... 56 57--- 58name: test_copysign_s32_s32 59body: | 60 bb.0: 61 liveins: $vgpr0, $vgpr1 62 63 ; SI-LABEL: name: test_copysign_s32_s32 64 ; SI: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 65 ; SI: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 66 ; SI: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 -2147483648 67 ; SI: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 2147483647 68 ; SI: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY]], [[C1]] 69 ; SI: [[AND1:%[0-9]+]]:_(s32) = G_AND [[COPY1]], [[C]] 70 ; SI: [[OR:%[0-9]+]]:_(s32) = G_OR [[AND]], [[AND1]] 71 ; SI: $vgpr0 = COPY [[OR]](s32) 72 ; VI-LABEL: name: test_copysign_s32_s32 73 ; VI: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 74 ; VI: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 75 ; VI: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 -2147483648 76 ; VI: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 2147483647 77 ; VI: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY]], [[C1]] 78 ; VI: [[AND1:%[0-9]+]]:_(s32) = G_AND [[COPY1]], [[C]] 79 ; VI: [[OR:%[0-9]+]]:_(s32) = G_OR [[AND]], [[AND1]] 80 ; VI: $vgpr0 = COPY [[OR]](s32) 81 ; GFX9-LABEL: name: test_copysign_s32_s32 82 ; GFX9: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 83 ; GFX9: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 84 ; GFX9: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 -2147483648 85 ; GFX9: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 2147483647 86 ; GFX9: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY]], [[C1]] 87 ; GFX9: [[AND1:%[0-9]+]]:_(s32) = G_AND [[COPY1]], [[C]] 88 ; GFX9: [[OR:%[0-9]+]]:_(s32) = G_OR [[AND]], [[AND1]] 89 ; GFX9: $vgpr0 = COPY [[OR]](s32) 90 %0:_(s32) = COPY $vgpr0 91 %1:_(s32) = COPY $vgpr1 92 %2:_(s32) = G_FCOPYSIGN %0, %1 93 $vgpr0 = COPY %2 94... 95 96--- 97name: test_copysign_s64_s64 98body: | 99 bb.0: 100 liveins: $vgpr0_vgpr1, $vgpr2_vgpr3 101 102 ; SI-LABEL: name: test_copysign_s64_s64 103 ; SI: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr1 104 ; SI: [[COPY1:%[0-9]+]]:_(s64) = COPY $vgpr2_vgpr3 105 ; SI: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 -9223372036854775808 106 ; SI: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 9223372036854775807 107 ; SI: [[AND:%[0-9]+]]:_(s64) = G_AND [[COPY]], [[C1]] 108 ; SI: [[AND1:%[0-9]+]]:_(s64) = G_AND [[COPY1]], [[C]] 109 ; SI: [[OR:%[0-9]+]]:_(s64) = G_OR [[AND]], [[AND1]] 110 ; SI: $vgpr0_vgpr1 = COPY [[OR]](s64) 111 ; VI-LABEL: name: test_copysign_s64_s64 112 ; VI: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr1 113 ; VI: [[COPY1:%[0-9]+]]:_(s64) = COPY $vgpr2_vgpr3 114 ; VI: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 -9223372036854775808 115 ; VI: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 9223372036854775807 116 ; VI: [[AND:%[0-9]+]]:_(s64) = G_AND [[COPY]], [[C1]] 117 ; VI: [[AND1:%[0-9]+]]:_(s64) = G_AND [[COPY1]], [[C]] 118 ; VI: [[OR:%[0-9]+]]:_(s64) = G_OR [[AND]], [[AND1]] 119 ; VI: $vgpr0_vgpr1 = COPY [[OR]](s64) 120 ; GFX9-LABEL: name: test_copysign_s64_s64 121 ; GFX9: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr1 122 ; GFX9: [[COPY1:%[0-9]+]]:_(s64) = COPY $vgpr2_vgpr3 123 ; GFX9: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 -9223372036854775808 124 ; GFX9: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 9223372036854775807 125 ; GFX9: [[AND:%[0-9]+]]:_(s64) = G_AND [[COPY]], [[C1]] 126 ; GFX9: [[AND1:%[0-9]+]]:_(s64) = G_AND [[COPY1]], [[C]] 127 ; GFX9: [[OR:%[0-9]+]]:_(s64) = G_OR [[AND]], [[AND1]] 128 ; GFX9: $vgpr0_vgpr1 = COPY [[OR]](s64) 129 %0:_(s64) = COPY $vgpr0_vgpr1 130 %1:_(s64) = COPY $vgpr2_vgpr3 131 %2:_(s64) = G_FCOPYSIGN %0, %1 132 $vgpr0_vgpr1 = COPY %2 133... 134 135--- 136name: test_copysign_s64_s32 137body: | 138 bb.0: 139 liveins: $vgpr0_vgpr1, $vgpr2 140 141 ; SI-LABEL: name: test_copysign_s64_s32 142 ; SI: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr1 143 ; SI: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr2 144 ; SI: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 -9223372036854775808 145 ; SI: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 9223372036854775807 146 ; SI: [[AND:%[0-9]+]]:_(s64) = G_AND [[COPY]], [[C1]] 147 ; SI: [[ZEXT:%[0-9]+]]:_(s64) = G_ZEXT [[COPY1]](s32) 148 ; SI: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 32 149 ; SI: [[SHL:%[0-9]+]]:_(s64) = G_SHL [[ZEXT]], [[C2]](s32) 150 ; SI: [[AND1:%[0-9]+]]:_(s64) = G_AND [[SHL]], [[C]] 151 ; SI: [[OR:%[0-9]+]]:_(s64) = G_OR [[AND]], [[AND1]] 152 ; SI: $vgpr0_vgpr1 = COPY [[OR]](s64) 153 ; VI-LABEL: name: test_copysign_s64_s32 154 ; VI: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr1 155 ; VI: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr2 156 ; VI: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 -9223372036854775808 157 ; VI: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 9223372036854775807 158 ; VI: [[AND:%[0-9]+]]:_(s64) = G_AND [[COPY]], [[C1]] 159 ; VI: [[ZEXT:%[0-9]+]]:_(s64) = G_ZEXT [[COPY1]](s32) 160 ; VI: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 32 161 ; VI: [[SHL:%[0-9]+]]:_(s64) = G_SHL [[ZEXT]], [[C2]](s32) 162 ; VI: [[AND1:%[0-9]+]]:_(s64) = G_AND [[SHL]], [[C]] 163 ; VI: [[OR:%[0-9]+]]:_(s64) = G_OR [[AND]], [[AND1]] 164 ; VI: $vgpr0_vgpr1 = COPY [[OR]](s64) 165 ; GFX9-LABEL: name: test_copysign_s64_s32 166 ; GFX9: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr1 167 ; GFX9: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr2 168 ; GFX9: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 -9223372036854775808 169 ; GFX9: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 9223372036854775807 170 ; GFX9: [[AND:%[0-9]+]]:_(s64) = G_AND [[COPY]], [[C1]] 171 ; GFX9: [[ZEXT:%[0-9]+]]:_(s64) = G_ZEXT [[COPY1]](s32) 172 ; GFX9: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 32 173 ; GFX9: [[SHL:%[0-9]+]]:_(s64) = G_SHL [[ZEXT]], [[C2]](s32) 174 ; GFX9: [[AND1:%[0-9]+]]:_(s64) = G_AND [[SHL]], [[C]] 175 ; GFX9: [[OR:%[0-9]+]]:_(s64) = G_OR [[AND]], [[AND1]] 176 ; GFX9: $vgpr0_vgpr1 = COPY [[OR]](s64) 177 %0:_(s64) = COPY $vgpr0_vgpr1 178 %1:_(s32) = COPY $vgpr2 179 %2:_(s64) = G_FCOPYSIGN %0, %1 180 $vgpr0_vgpr1 = COPY %2 181... 182 183--- 184name: test_copysign_s32_s64 185body: | 186 bb.0: 187 liveins: $vgpr0, $vgpr1_vgpr2 188 189 ; SI-LABEL: name: test_copysign_s32_s64 190 ; SI: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 191 ; SI: [[COPY1:%[0-9]+]]:_(s64) = COPY $vgpr1_vgpr2 192 ; SI: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 -2147483648 193 ; SI: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 2147483647 194 ; SI: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY]], [[C1]] 195 ; SI: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 32 196 ; SI: [[LSHR:%[0-9]+]]:_(s64) = G_LSHR [[COPY1]], [[C2]](s32) 197 ; SI: [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[LSHR]](s64) 198 ; SI: [[AND1:%[0-9]+]]:_(s32) = G_AND [[TRUNC]], [[C]] 199 ; SI: [[OR:%[0-9]+]]:_(s32) = G_OR [[AND]], [[AND1]] 200 ; SI: $vgpr0 = COPY [[OR]](s32) 201 ; VI-LABEL: name: test_copysign_s32_s64 202 ; VI: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 203 ; VI: [[COPY1:%[0-9]+]]:_(s64) = COPY $vgpr1_vgpr2 204 ; VI: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 -2147483648 205 ; VI: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 2147483647 206 ; VI: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY]], [[C1]] 207 ; VI: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 32 208 ; VI: [[LSHR:%[0-9]+]]:_(s64) = G_LSHR [[COPY1]], [[C2]](s32) 209 ; VI: [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[LSHR]](s64) 210 ; VI: [[AND1:%[0-9]+]]:_(s32) = G_AND [[TRUNC]], [[C]] 211 ; VI: [[OR:%[0-9]+]]:_(s32) = G_OR [[AND]], [[AND1]] 212 ; VI: $vgpr0 = COPY [[OR]](s32) 213 ; GFX9-LABEL: name: test_copysign_s32_s64 214 ; GFX9: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 215 ; GFX9: [[COPY1:%[0-9]+]]:_(s64) = COPY $vgpr1_vgpr2 216 ; GFX9: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 -2147483648 217 ; GFX9: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 2147483647 218 ; GFX9: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY]], [[C1]] 219 ; GFX9: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 32 220 ; GFX9: [[LSHR:%[0-9]+]]:_(s64) = G_LSHR [[COPY1]], [[C2]](s32) 221 ; GFX9: [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[LSHR]](s64) 222 ; GFX9: [[AND1:%[0-9]+]]:_(s32) = G_AND [[TRUNC]], [[C]] 223 ; GFX9: [[OR:%[0-9]+]]:_(s32) = G_OR [[AND]], [[AND1]] 224 ; GFX9: $vgpr0 = COPY [[OR]](s32) 225 %0:_(s32) = COPY $vgpr0 226 %1:_(s64) = COPY $vgpr1_vgpr2 227 %2:_(s32) = G_FCOPYSIGN %0, %1 228 $vgpr0 = COPY %2 229... 230 231--- 232name: test_copysign_s16_s32 233body: | 234 bb.0: 235 liveins: $vgpr0, $vgpr1 236 237 ; SI-LABEL: name: test_copysign_s16_s32 238 ; SI: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 239 ; SI: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 240 ; SI: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32) 241 ; SI: [[C:%[0-9]+]]:_(s16) = G_CONSTANT i16 -32768 242 ; SI: [[C1:%[0-9]+]]:_(s16) = G_CONSTANT i16 32767 243 ; SI: [[AND:%[0-9]+]]:_(s16) = G_AND [[TRUNC]], [[C1]] 244 ; SI: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 16 245 ; SI: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[COPY1]], [[C2]](s32) 246 ; SI: [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[LSHR]](s32) 247 ; SI: [[AND1:%[0-9]+]]:_(s16) = G_AND [[TRUNC1]], [[C]] 248 ; SI: [[OR:%[0-9]+]]:_(s16) = G_OR [[AND]], [[AND1]] 249 ; SI: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[OR]](s16) 250 ; SI: $vgpr0 = COPY [[ANYEXT]](s32) 251 ; VI-LABEL: name: test_copysign_s16_s32 252 ; VI: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 253 ; VI: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 254 ; VI: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32) 255 ; VI: [[C:%[0-9]+]]:_(s16) = G_CONSTANT i16 -32768 256 ; VI: [[C1:%[0-9]+]]:_(s16) = G_CONSTANT i16 32767 257 ; VI: [[AND:%[0-9]+]]:_(s16) = G_AND [[TRUNC]], [[C1]] 258 ; VI: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 16 259 ; VI: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[COPY1]], [[C2]](s32) 260 ; VI: [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[LSHR]](s32) 261 ; VI: [[AND1:%[0-9]+]]:_(s16) = G_AND [[TRUNC1]], [[C]] 262 ; VI: [[OR:%[0-9]+]]:_(s16) = G_OR [[AND]], [[AND1]] 263 ; VI: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[OR]](s16) 264 ; VI: $vgpr0 = COPY [[ANYEXT]](s32) 265 ; GFX9-LABEL: name: test_copysign_s16_s32 266 ; GFX9: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 267 ; GFX9: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 268 ; GFX9: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32) 269 ; GFX9: [[C:%[0-9]+]]:_(s16) = G_CONSTANT i16 -32768 270 ; GFX9: [[C1:%[0-9]+]]:_(s16) = G_CONSTANT i16 32767 271 ; GFX9: [[AND:%[0-9]+]]:_(s16) = G_AND [[TRUNC]], [[C1]] 272 ; GFX9: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 16 273 ; GFX9: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[COPY1]], [[C2]](s32) 274 ; GFX9: [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[LSHR]](s32) 275 ; GFX9: [[AND1:%[0-9]+]]:_(s16) = G_AND [[TRUNC1]], [[C]] 276 ; GFX9: [[OR:%[0-9]+]]:_(s16) = G_OR [[AND]], [[AND1]] 277 ; GFX9: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[OR]](s16) 278 ; GFX9: $vgpr0 = COPY [[ANYEXT]](s32) 279 %0:_(s32) = COPY $vgpr0 280 %1:_(s32) = COPY $vgpr1 281 %2:_(s16) = G_TRUNC %0 282 %3:_(s16) = G_FCOPYSIGN %2, %1 283 %4:_(s32) = G_ANYEXT %3 284 $vgpr0 = COPY %4 285... 286 287--- 288name: test_copysign_s32_s16 289body: | 290 bb.0: 291 liveins: $vgpr0, $vgpr1 292 293 ; SI-LABEL: name: test_copysign_s32_s16 294 ; SI: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 295 ; SI: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 296 ; SI: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 -2147483648 297 ; SI: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 2147483647 298 ; SI: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY]], [[C1]] 299 ; SI: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 16 300 ; SI: [[C3:%[0-9]+]]:_(s32) = G_CONSTANT i32 65535 301 ; SI: [[COPY2:%[0-9]+]]:_(s32) = COPY [[COPY1]](s32) 302 ; SI: [[AND1:%[0-9]+]]:_(s32) = G_AND [[COPY2]], [[C3]] 303 ; SI: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[AND1]], [[C2]](s32) 304 ; SI: [[AND2:%[0-9]+]]:_(s32) = G_AND [[SHL]], [[C]] 305 ; SI: [[OR:%[0-9]+]]:_(s32) = G_OR [[AND]], [[AND2]] 306 ; SI: $vgpr0 = COPY [[OR]](s32) 307 ; VI-LABEL: name: test_copysign_s32_s16 308 ; VI: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 309 ; VI: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 310 ; VI: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 -2147483648 311 ; VI: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 2147483647 312 ; VI: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY]], [[C1]] 313 ; VI: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 16 314 ; VI: [[C3:%[0-9]+]]:_(s32) = G_CONSTANT i32 65535 315 ; VI: [[COPY2:%[0-9]+]]:_(s32) = COPY [[COPY1]](s32) 316 ; VI: [[AND1:%[0-9]+]]:_(s32) = G_AND [[COPY2]], [[C3]] 317 ; VI: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[AND1]], [[C2]](s32) 318 ; VI: [[AND2:%[0-9]+]]:_(s32) = G_AND [[SHL]], [[C]] 319 ; VI: [[OR:%[0-9]+]]:_(s32) = G_OR [[AND]], [[AND2]] 320 ; VI: $vgpr0 = COPY [[OR]](s32) 321 ; GFX9-LABEL: name: test_copysign_s32_s16 322 ; GFX9: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 323 ; GFX9: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 324 ; GFX9: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 -2147483648 325 ; GFX9: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 2147483647 326 ; GFX9: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY]], [[C1]] 327 ; GFX9: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 16 328 ; GFX9: [[C3:%[0-9]+]]:_(s32) = G_CONSTANT i32 65535 329 ; GFX9: [[COPY2:%[0-9]+]]:_(s32) = COPY [[COPY1]](s32) 330 ; GFX9: [[AND1:%[0-9]+]]:_(s32) = G_AND [[COPY2]], [[C3]] 331 ; GFX9: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[AND1]], [[C2]](s32) 332 ; GFX9: [[AND2:%[0-9]+]]:_(s32) = G_AND [[SHL]], [[C]] 333 ; GFX9: [[OR:%[0-9]+]]:_(s32) = G_OR [[AND]], [[AND2]] 334 ; GFX9: $vgpr0 = COPY [[OR]](s32) 335 %0:_(s32) = COPY $vgpr0 336 %1:_(s32) = COPY $vgpr1 337 %2:_(s16) = G_TRUNC %1 338 %3:_(s32) = G_FCOPYSIGN %0, %2 339 $vgpr0 = COPY %3 340... 341 342--- 343name: test_copysign_s64_s16 344body: | 345 bb.0: 346 liveins: $vgpr0_vgpr1, $vgpr2 347 348 ; SI-LABEL: name: test_copysign_s64_s16 349 ; SI: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr1 350 ; SI: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr2 351 ; SI: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 -9223372036854775808 352 ; SI: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 9223372036854775807 353 ; SI: [[AND:%[0-9]+]]:_(s64) = G_AND [[COPY]], [[C1]] 354 ; SI: [[C2:%[0-9]+]]:_(s64) = G_CONSTANT i64 65535 355 ; SI: [[ANYEXT:%[0-9]+]]:_(s64) = G_ANYEXT [[COPY1]](s32) 356 ; SI: [[AND1:%[0-9]+]]:_(s64) = G_AND [[ANYEXT]], [[C2]] 357 ; SI: [[C3:%[0-9]+]]:_(s32) = G_CONSTANT i32 48 358 ; SI: [[SHL:%[0-9]+]]:_(s64) = G_SHL [[AND1]], [[C3]](s32) 359 ; SI: [[AND2:%[0-9]+]]:_(s64) = G_AND [[SHL]], [[C]] 360 ; SI: [[OR:%[0-9]+]]:_(s64) = G_OR [[AND]], [[AND2]] 361 ; SI: $vgpr0_vgpr1 = COPY [[OR]](s64) 362 ; VI-LABEL: name: test_copysign_s64_s16 363 ; VI: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr1 364 ; VI: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr2 365 ; VI: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 -9223372036854775808 366 ; VI: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 9223372036854775807 367 ; VI: [[AND:%[0-9]+]]:_(s64) = G_AND [[COPY]], [[C1]] 368 ; VI: [[C2:%[0-9]+]]:_(s64) = G_CONSTANT i64 65535 369 ; VI: [[ANYEXT:%[0-9]+]]:_(s64) = G_ANYEXT [[COPY1]](s32) 370 ; VI: [[AND1:%[0-9]+]]:_(s64) = G_AND [[ANYEXT]], [[C2]] 371 ; VI: [[C3:%[0-9]+]]:_(s32) = G_CONSTANT i32 48 372 ; VI: [[SHL:%[0-9]+]]:_(s64) = G_SHL [[AND1]], [[C3]](s32) 373 ; VI: [[AND2:%[0-9]+]]:_(s64) = G_AND [[SHL]], [[C]] 374 ; VI: [[OR:%[0-9]+]]:_(s64) = G_OR [[AND]], [[AND2]] 375 ; VI: $vgpr0_vgpr1 = COPY [[OR]](s64) 376 ; GFX9-LABEL: name: test_copysign_s64_s16 377 ; GFX9: [[COPY:%[0-9]+]]:_(s64) = COPY $vgpr0_vgpr1 378 ; GFX9: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr2 379 ; GFX9: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 -9223372036854775808 380 ; GFX9: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 9223372036854775807 381 ; GFX9: [[AND:%[0-9]+]]:_(s64) = G_AND [[COPY]], [[C1]] 382 ; GFX9: [[C2:%[0-9]+]]:_(s64) = G_CONSTANT i64 65535 383 ; GFX9: [[ANYEXT:%[0-9]+]]:_(s64) = G_ANYEXT [[COPY1]](s32) 384 ; GFX9: [[AND1:%[0-9]+]]:_(s64) = G_AND [[ANYEXT]], [[C2]] 385 ; GFX9: [[C3:%[0-9]+]]:_(s32) = G_CONSTANT i32 48 386 ; GFX9: [[SHL:%[0-9]+]]:_(s64) = G_SHL [[AND1]], [[C3]](s32) 387 ; GFX9: [[AND2:%[0-9]+]]:_(s64) = G_AND [[SHL]], [[C]] 388 ; GFX9: [[OR:%[0-9]+]]:_(s64) = G_OR [[AND]], [[AND2]] 389 ; GFX9: $vgpr0_vgpr1 = COPY [[OR]](s64) 390 %0:_(s64) = COPY $vgpr0_vgpr1 391 %1:_(s32) = COPY $vgpr2 392 %2:_(s16) = G_TRUNC %1 393 %3:_(s64) = G_FCOPYSIGN %0, %2 394 $vgpr0_vgpr1 = COPY %3 395... 396 397--- 398name: test_copysign_s16_s64 399body: | 400 bb.0: 401 liveins: $vgpr0, $vgpr1_vgpr2 402 403 ; SI-LABEL: name: test_copysign_s16_s64 404 ; SI: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 405 ; SI: [[COPY1:%[0-9]+]]:_(s64) = COPY $vgpr1_vgpr2 406 ; SI: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32) 407 ; SI: [[C:%[0-9]+]]:_(s16) = G_CONSTANT i16 -32768 408 ; SI: [[C1:%[0-9]+]]:_(s16) = G_CONSTANT i16 32767 409 ; SI: [[AND:%[0-9]+]]:_(s16) = G_AND [[TRUNC]], [[C1]] 410 ; SI: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 48 411 ; SI: [[LSHR:%[0-9]+]]:_(s64) = G_LSHR [[COPY1]], [[C2]](s32) 412 ; SI: [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[LSHR]](s64) 413 ; SI: [[AND1:%[0-9]+]]:_(s16) = G_AND [[TRUNC1]], [[C]] 414 ; SI: [[OR:%[0-9]+]]:_(s16) = G_OR [[AND]], [[AND1]] 415 ; SI: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[OR]](s16) 416 ; SI: $vgpr0 = COPY [[ANYEXT]](s32) 417 ; VI-LABEL: name: test_copysign_s16_s64 418 ; VI: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 419 ; VI: [[COPY1:%[0-9]+]]:_(s64) = COPY $vgpr1_vgpr2 420 ; VI: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32) 421 ; VI: [[C:%[0-9]+]]:_(s16) = G_CONSTANT i16 -32768 422 ; VI: [[C1:%[0-9]+]]:_(s16) = G_CONSTANT i16 32767 423 ; VI: [[AND:%[0-9]+]]:_(s16) = G_AND [[TRUNC]], [[C1]] 424 ; VI: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 48 425 ; VI: [[LSHR:%[0-9]+]]:_(s64) = G_LSHR [[COPY1]], [[C2]](s32) 426 ; VI: [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[LSHR]](s64) 427 ; VI: [[AND1:%[0-9]+]]:_(s16) = G_AND [[TRUNC1]], [[C]] 428 ; VI: [[OR:%[0-9]+]]:_(s16) = G_OR [[AND]], [[AND1]] 429 ; VI: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[OR]](s16) 430 ; VI: $vgpr0 = COPY [[ANYEXT]](s32) 431 ; GFX9-LABEL: name: test_copysign_s16_s64 432 ; GFX9: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 433 ; GFX9: [[COPY1:%[0-9]+]]:_(s64) = COPY $vgpr1_vgpr2 434 ; GFX9: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32) 435 ; GFX9: [[C:%[0-9]+]]:_(s16) = G_CONSTANT i16 -32768 436 ; GFX9: [[C1:%[0-9]+]]:_(s16) = G_CONSTANT i16 32767 437 ; GFX9: [[AND:%[0-9]+]]:_(s16) = G_AND [[TRUNC]], [[C1]] 438 ; GFX9: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 48 439 ; GFX9: [[LSHR:%[0-9]+]]:_(s64) = G_LSHR [[COPY1]], [[C2]](s32) 440 ; GFX9: [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[LSHR]](s64) 441 ; GFX9: [[AND1:%[0-9]+]]:_(s16) = G_AND [[TRUNC1]], [[C]] 442 ; GFX9: [[OR:%[0-9]+]]:_(s16) = G_OR [[AND]], [[AND1]] 443 ; GFX9: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[OR]](s16) 444 ; GFX9: $vgpr0 = COPY [[ANYEXT]](s32) 445 %0:_(s32) = COPY $vgpr0 446 %1:_(s64) = COPY $vgpr1_vgpr2 447 %2:_(s16) = G_TRUNC %0 448 %3:_(s16) = G_FCOPYSIGN %2, %1 449 %4:_(s32) = G_ANYEXT %3 450 $vgpr0 = COPY %4 451... 452 453--- 454name: test_copysign_v2s16_v2s16 455body: | 456 bb.0: 457 liveins: $vgpr0, $vgpr1 458 459 ; SI-LABEL: name: test_copysign_v2s16_v2s16 460 ; SI: [[COPY:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr0 461 ; SI: [[COPY1:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr1 462 ; SI: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 32768 463 ; SI: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 16 464 ; SI: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[C]], [[C1]](s32) 465 ; SI: [[OR:%[0-9]+]]:_(s32) = G_OR [[C]], [[SHL]] 466 ; SI: [[BITCAST:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR]](s32) 467 ; SI: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 32767 468 ; SI: [[SHL1:%[0-9]+]]:_(s32) = G_SHL [[C2]], [[C1]](s32) 469 ; SI: [[OR1:%[0-9]+]]:_(s32) = G_OR [[C2]], [[SHL1]] 470 ; SI: [[BITCAST1:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR1]](s32) 471 ; SI: [[AND:%[0-9]+]]:_(<2 x s16>) = G_AND [[COPY]], [[BITCAST1]] 472 ; SI: [[AND1:%[0-9]+]]:_(<2 x s16>) = G_AND [[COPY1]], [[BITCAST]] 473 ; SI: [[OR2:%[0-9]+]]:_(<2 x s16>) = G_OR [[AND]], [[AND1]] 474 ; SI: $vgpr0 = COPY [[OR2]](<2 x s16>) 475 ; VI-LABEL: name: test_copysign_v2s16_v2s16 476 ; VI: [[COPY:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr0 477 ; VI: [[COPY1:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr1 478 ; VI: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 32768 479 ; VI: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 16 480 ; VI: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[C]], [[C1]](s32) 481 ; VI: [[OR:%[0-9]+]]:_(s32) = G_OR [[C]], [[SHL]] 482 ; VI: [[BITCAST:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR]](s32) 483 ; VI: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 32767 484 ; VI: [[SHL1:%[0-9]+]]:_(s32) = G_SHL [[C2]], [[C1]](s32) 485 ; VI: [[OR1:%[0-9]+]]:_(s32) = G_OR [[C2]], [[SHL1]] 486 ; VI: [[BITCAST1:%[0-9]+]]:_(<2 x s16>) = G_BITCAST [[OR1]](s32) 487 ; VI: [[AND:%[0-9]+]]:_(<2 x s16>) = G_AND [[COPY]], [[BITCAST1]] 488 ; VI: [[AND1:%[0-9]+]]:_(<2 x s16>) = G_AND [[COPY1]], [[BITCAST]] 489 ; VI: [[OR2:%[0-9]+]]:_(<2 x s16>) = G_OR [[AND]], [[AND1]] 490 ; VI: $vgpr0 = COPY [[OR2]](<2 x s16>) 491 ; GFX9-LABEL: name: test_copysign_v2s16_v2s16 492 ; GFX9: [[COPY:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr0 493 ; GFX9: [[COPY1:%[0-9]+]]:_(<2 x s16>) = COPY $vgpr1 494 ; GFX9: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 -32768 495 ; GFX9: [[BUILD_VECTOR_TRUNC:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[C]](s32), [[C]](s32) 496 ; GFX9: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 32767 497 ; GFX9: [[BUILD_VECTOR_TRUNC1:%[0-9]+]]:_(<2 x s16>) = G_BUILD_VECTOR_TRUNC [[C1]](s32), [[C1]](s32) 498 ; GFX9: [[AND:%[0-9]+]]:_(<2 x s16>) = G_AND [[COPY]], [[BUILD_VECTOR_TRUNC1]] 499 ; GFX9: [[AND1:%[0-9]+]]:_(<2 x s16>) = G_AND [[COPY1]], [[BUILD_VECTOR_TRUNC]] 500 ; GFX9: [[OR:%[0-9]+]]:_(<2 x s16>) = G_OR [[AND]], [[AND1]] 501 ; GFX9: $vgpr0 = COPY [[OR]](<2 x s16>) 502 %0:_(<2 x s16>) = COPY $vgpr0 503 %1:_(<2 x s16>) = COPY $vgpr1 504 %2:_(<2 x s16>) = G_FCOPYSIGN %0, %1 505 $vgpr0 = COPY %2 506... 507 508--- 509name: test_copysign_v2s32_v2s32 510body: | 511 bb.0: 512 liveins: $vgpr0_vgpr1, $vgpr2_vgpr3 513 514 ; SI-LABEL: name: test_copysign_v2s32_v2s32 515 ; SI: [[COPY:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr0_vgpr1 516 ; SI: [[COPY1:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr2_vgpr3 517 ; SI: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 -2147483648 518 ; SI: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[C]](s32), [[C]](s32) 519 ; SI: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 2147483647 520 ; SI: [[BUILD_VECTOR1:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[C1]](s32), [[C1]](s32) 521 ; SI: [[AND:%[0-9]+]]:_(<2 x s32>) = G_AND [[COPY]], [[BUILD_VECTOR1]] 522 ; SI: [[AND1:%[0-9]+]]:_(<2 x s32>) = G_AND [[COPY1]], [[BUILD_VECTOR]] 523 ; SI: [[OR:%[0-9]+]]:_(<2 x s32>) = G_OR [[AND]], [[AND1]] 524 ; SI: $vgpr0_vgpr1 = COPY [[OR]](<2 x s32>) 525 ; VI-LABEL: name: test_copysign_v2s32_v2s32 526 ; VI: [[COPY:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr0_vgpr1 527 ; VI: [[COPY1:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr2_vgpr3 528 ; VI: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 -2147483648 529 ; VI: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[C]](s32), [[C]](s32) 530 ; VI: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 2147483647 531 ; VI: [[BUILD_VECTOR1:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[C1]](s32), [[C1]](s32) 532 ; VI: [[AND:%[0-9]+]]:_(<2 x s32>) = G_AND [[COPY]], [[BUILD_VECTOR1]] 533 ; VI: [[AND1:%[0-9]+]]:_(<2 x s32>) = G_AND [[COPY1]], [[BUILD_VECTOR]] 534 ; VI: [[OR:%[0-9]+]]:_(<2 x s32>) = G_OR [[AND]], [[AND1]] 535 ; VI: $vgpr0_vgpr1 = COPY [[OR]](<2 x s32>) 536 ; GFX9-LABEL: name: test_copysign_v2s32_v2s32 537 ; GFX9: [[COPY:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr0_vgpr1 538 ; GFX9: [[COPY1:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr2_vgpr3 539 ; GFX9: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 -2147483648 540 ; GFX9: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[C]](s32), [[C]](s32) 541 ; GFX9: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 2147483647 542 ; GFX9: [[BUILD_VECTOR1:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[C1]](s32), [[C1]](s32) 543 ; GFX9: [[AND:%[0-9]+]]:_(<2 x s32>) = G_AND [[COPY]], [[BUILD_VECTOR1]] 544 ; GFX9: [[AND1:%[0-9]+]]:_(<2 x s32>) = G_AND [[COPY1]], [[BUILD_VECTOR]] 545 ; GFX9: [[OR:%[0-9]+]]:_(<2 x s32>) = G_OR [[AND]], [[AND1]] 546 ; GFX9: $vgpr0_vgpr1 = COPY [[OR]](<2 x s32>) 547 %0:_(<2 x s32>) = COPY $vgpr0_vgpr1 548 %1:_(<2 x s32>) = COPY $vgpr2_vgpr3 549 %2:_(<2 x s32>) = G_FCOPYSIGN %0, %1 550 $vgpr0_vgpr1 = COPY %2 551... 552 553--- 554name: test_copysign_v2s64_v2s64 555body: | 556 bb.0: 557 liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5_vgpr6_vgpr7 558 559 ; SI-LABEL: name: test_copysign_v2s64_v2s64 560 ; SI: [[COPY:%[0-9]+]]:_(<2 x s64>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3 561 ; SI: [[COPY1:%[0-9]+]]:_(<2 x s64>) = COPY $vgpr4_vgpr5_vgpr6_vgpr7 562 ; SI: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 -9223372036854775808 563 ; SI: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 9223372036854775807 564 ; SI: [[UV:%[0-9]+]]:_(s64), [[UV1:%[0-9]+]]:_(s64) = G_UNMERGE_VALUES [[COPY]](<2 x s64>) 565 ; SI: [[AND:%[0-9]+]]:_(s64) = G_AND [[UV]], [[C1]] 566 ; SI: [[AND1:%[0-9]+]]:_(s64) = G_AND [[UV1]], [[C1]] 567 ; SI: [[UV2:%[0-9]+]]:_(s64), [[UV3:%[0-9]+]]:_(s64) = G_UNMERGE_VALUES [[COPY1]](<2 x s64>) 568 ; SI: [[AND2:%[0-9]+]]:_(s64) = G_AND [[UV2]], [[C]] 569 ; SI: [[AND3:%[0-9]+]]:_(s64) = G_AND [[UV3]], [[C]] 570 ; SI: [[OR:%[0-9]+]]:_(s64) = G_OR [[AND]], [[AND2]] 571 ; SI: [[OR1:%[0-9]+]]:_(s64) = G_OR [[AND1]], [[AND3]] 572 ; SI: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s64>) = G_BUILD_VECTOR [[OR]](s64), [[OR1]](s64) 573 ; SI: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[BUILD_VECTOR]](<2 x s64>) 574 ; VI-LABEL: name: test_copysign_v2s64_v2s64 575 ; VI: [[COPY:%[0-9]+]]:_(<2 x s64>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3 576 ; VI: [[COPY1:%[0-9]+]]:_(<2 x s64>) = COPY $vgpr4_vgpr5_vgpr6_vgpr7 577 ; VI: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 -9223372036854775808 578 ; VI: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 9223372036854775807 579 ; VI: [[UV:%[0-9]+]]:_(s64), [[UV1:%[0-9]+]]:_(s64) = G_UNMERGE_VALUES [[COPY]](<2 x s64>) 580 ; VI: [[AND:%[0-9]+]]:_(s64) = G_AND [[UV]], [[C1]] 581 ; VI: [[AND1:%[0-9]+]]:_(s64) = G_AND [[UV1]], [[C1]] 582 ; VI: [[UV2:%[0-9]+]]:_(s64), [[UV3:%[0-9]+]]:_(s64) = G_UNMERGE_VALUES [[COPY1]](<2 x s64>) 583 ; VI: [[AND2:%[0-9]+]]:_(s64) = G_AND [[UV2]], [[C]] 584 ; VI: [[AND3:%[0-9]+]]:_(s64) = G_AND [[UV3]], [[C]] 585 ; VI: [[OR:%[0-9]+]]:_(s64) = G_OR [[AND]], [[AND2]] 586 ; VI: [[OR1:%[0-9]+]]:_(s64) = G_OR [[AND1]], [[AND3]] 587 ; VI: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s64>) = G_BUILD_VECTOR [[OR]](s64), [[OR1]](s64) 588 ; VI: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[BUILD_VECTOR]](<2 x s64>) 589 ; GFX9-LABEL: name: test_copysign_v2s64_v2s64 590 ; GFX9: [[COPY:%[0-9]+]]:_(<2 x s64>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3 591 ; GFX9: [[COPY1:%[0-9]+]]:_(<2 x s64>) = COPY $vgpr4_vgpr5_vgpr6_vgpr7 592 ; GFX9: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 -9223372036854775808 593 ; GFX9: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 9223372036854775807 594 ; GFX9: [[UV:%[0-9]+]]:_(s64), [[UV1:%[0-9]+]]:_(s64) = G_UNMERGE_VALUES [[COPY]](<2 x s64>) 595 ; GFX9: [[AND:%[0-9]+]]:_(s64) = G_AND [[UV]], [[C1]] 596 ; GFX9: [[AND1:%[0-9]+]]:_(s64) = G_AND [[UV1]], [[C1]] 597 ; GFX9: [[UV2:%[0-9]+]]:_(s64), [[UV3:%[0-9]+]]:_(s64) = G_UNMERGE_VALUES [[COPY1]](<2 x s64>) 598 ; GFX9: [[AND2:%[0-9]+]]:_(s64) = G_AND [[UV2]], [[C]] 599 ; GFX9: [[AND3:%[0-9]+]]:_(s64) = G_AND [[UV3]], [[C]] 600 ; GFX9: [[OR:%[0-9]+]]:_(s64) = G_OR [[AND]], [[AND2]] 601 ; GFX9: [[OR1:%[0-9]+]]:_(s64) = G_OR [[AND1]], [[AND3]] 602 ; GFX9: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s64>) = G_BUILD_VECTOR [[OR]](s64), [[OR1]](s64) 603 ; GFX9: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[BUILD_VECTOR]](<2 x s64>) 604 %0:_(<2 x s64>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3 605 %1:_(<2 x s64>) = COPY $vgpr4_vgpr5_vgpr6_vgpr7 606 %2:_(<2 x s64>) = G_FCOPYSIGN %0, %1 607 $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2 608... 609 610--- 611name: test_copysign_v2s64_v2s32 612body: | 613 bb.0: 614 liveins: $vgpr0_vgpr1_vgpr2_vgpr3, $vgpr4_vgpr5 615 616 ; SI-LABEL: name: test_copysign_v2s64_v2s32 617 ; SI: [[COPY:%[0-9]+]]:_(<2 x s64>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3 618 ; SI: [[COPY1:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr4_vgpr5 619 ; SI: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 -9223372036854775808 620 ; SI: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 9223372036854775807 621 ; SI: [[UV:%[0-9]+]]:_(s64), [[UV1:%[0-9]+]]:_(s64) = G_UNMERGE_VALUES [[COPY]](<2 x s64>) 622 ; SI: [[AND:%[0-9]+]]:_(s64) = G_AND [[UV]], [[C1]] 623 ; SI: [[AND1:%[0-9]+]]:_(s64) = G_AND [[UV1]], [[C1]] 624 ; SI: [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY1]](<2 x s32>) 625 ; SI: [[ZEXT:%[0-9]+]]:_(s64) = G_ZEXT [[UV2]](s32) 626 ; SI: [[ZEXT1:%[0-9]+]]:_(s64) = G_ZEXT [[UV3]](s32) 627 ; SI: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 32 628 ; SI: [[COPY2:%[0-9]+]]:_(s32) = COPY [[C2]](s32) 629 ; SI: [[SHL:%[0-9]+]]:_(s64) = G_SHL [[ZEXT]], [[COPY2]](s32) 630 ; SI: [[SHL1:%[0-9]+]]:_(s64) = G_SHL [[ZEXT1]], [[C2]](s32) 631 ; SI: [[AND2:%[0-9]+]]:_(s64) = G_AND [[SHL]], [[C]] 632 ; SI: [[AND3:%[0-9]+]]:_(s64) = G_AND [[SHL1]], [[C]] 633 ; SI: [[OR:%[0-9]+]]:_(s64) = G_OR [[AND]], [[AND2]] 634 ; SI: [[OR1:%[0-9]+]]:_(s64) = G_OR [[AND1]], [[AND3]] 635 ; SI: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s64>) = G_BUILD_VECTOR [[OR]](s64), [[OR1]](s64) 636 ; SI: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[BUILD_VECTOR]](<2 x s64>) 637 ; VI-LABEL: name: test_copysign_v2s64_v2s32 638 ; VI: [[COPY:%[0-9]+]]:_(<2 x s64>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3 639 ; VI: [[COPY1:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr4_vgpr5 640 ; VI: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 -9223372036854775808 641 ; VI: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 9223372036854775807 642 ; VI: [[UV:%[0-9]+]]:_(s64), [[UV1:%[0-9]+]]:_(s64) = G_UNMERGE_VALUES [[COPY]](<2 x s64>) 643 ; VI: [[AND:%[0-9]+]]:_(s64) = G_AND [[UV]], [[C1]] 644 ; VI: [[AND1:%[0-9]+]]:_(s64) = G_AND [[UV1]], [[C1]] 645 ; VI: [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY1]](<2 x s32>) 646 ; VI: [[ZEXT:%[0-9]+]]:_(s64) = G_ZEXT [[UV2]](s32) 647 ; VI: [[ZEXT1:%[0-9]+]]:_(s64) = G_ZEXT [[UV3]](s32) 648 ; VI: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 32 649 ; VI: [[COPY2:%[0-9]+]]:_(s32) = COPY [[C2]](s32) 650 ; VI: [[SHL:%[0-9]+]]:_(s64) = G_SHL [[ZEXT]], [[COPY2]](s32) 651 ; VI: [[SHL1:%[0-9]+]]:_(s64) = G_SHL [[ZEXT1]], [[C2]](s32) 652 ; VI: [[AND2:%[0-9]+]]:_(s64) = G_AND [[SHL]], [[C]] 653 ; VI: [[AND3:%[0-9]+]]:_(s64) = G_AND [[SHL1]], [[C]] 654 ; VI: [[OR:%[0-9]+]]:_(s64) = G_OR [[AND]], [[AND2]] 655 ; VI: [[OR1:%[0-9]+]]:_(s64) = G_OR [[AND1]], [[AND3]] 656 ; VI: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s64>) = G_BUILD_VECTOR [[OR]](s64), [[OR1]](s64) 657 ; VI: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[BUILD_VECTOR]](<2 x s64>) 658 ; GFX9-LABEL: name: test_copysign_v2s64_v2s32 659 ; GFX9: [[COPY:%[0-9]+]]:_(<2 x s64>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3 660 ; GFX9: [[COPY1:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr4_vgpr5 661 ; GFX9: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 -9223372036854775808 662 ; GFX9: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 9223372036854775807 663 ; GFX9: [[UV:%[0-9]+]]:_(s64), [[UV1:%[0-9]+]]:_(s64) = G_UNMERGE_VALUES [[COPY]](<2 x s64>) 664 ; GFX9: [[AND:%[0-9]+]]:_(s64) = G_AND [[UV]], [[C1]] 665 ; GFX9: [[AND1:%[0-9]+]]:_(s64) = G_AND [[UV1]], [[C1]] 666 ; GFX9: [[UV2:%[0-9]+]]:_(s32), [[UV3:%[0-9]+]]:_(s32) = G_UNMERGE_VALUES [[COPY1]](<2 x s32>) 667 ; GFX9: [[ZEXT:%[0-9]+]]:_(s64) = G_ZEXT [[UV2]](s32) 668 ; GFX9: [[ZEXT1:%[0-9]+]]:_(s64) = G_ZEXT [[UV3]](s32) 669 ; GFX9: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 32 670 ; GFX9: [[COPY2:%[0-9]+]]:_(s32) = COPY [[C2]](s32) 671 ; GFX9: [[SHL:%[0-9]+]]:_(s64) = G_SHL [[ZEXT]], [[COPY2]](s32) 672 ; GFX9: [[SHL1:%[0-9]+]]:_(s64) = G_SHL [[ZEXT1]], [[C2]](s32) 673 ; GFX9: [[AND2:%[0-9]+]]:_(s64) = G_AND [[SHL]], [[C]] 674 ; GFX9: [[AND3:%[0-9]+]]:_(s64) = G_AND [[SHL1]], [[C]] 675 ; GFX9: [[OR:%[0-9]+]]:_(s64) = G_OR [[AND]], [[AND2]] 676 ; GFX9: [[OR1:%[0-9]+]]:_(s64) = G_OR [[AND1]], [[AND3]] 677 ; GFX9: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s64>) = G_BUILD_VECTOR [[OR]](s64), [[OR1]](s64) 678 ; GFX9: $vgpr0_vgpr1_vgpr2_vgpr3 = COPY [[BUILD_VECTOR]](<2 x s64>) 679 %0:_(<2 x s64>) = COPY $vgpr0_vgpr1_vgpr2_vgpr3 680 %1:_(<2 x s32>) = COPY $vgpr4_vgpr5 681 %2:_(<2 x s64>) = G_FCOPYSIGN %0, %1 682 $vgpr0_vgpr1_vgpr2_vgpr3 = COPY %2 683... 684 685 686--- 687name: test_copysign_v2s32_v2s64 688body: | 689 bb.0: 690 liveins: $vgpr0_vgpr1, $vgpr2_vgpr3_vgpr4_vgpr5 691 692 ; SI-LABEL: name: test_copysign_v2s32_v2s64 693 ; SI: [[COPY:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr0_vgpr1 694 ; SI: [[COPY1:%[0-9]+]]:_(<2 x s64>) = COPY $vgpr2_vgpr3_vgpr4_vgpr5 695 ; SI: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 -2147483648 696 ; SI: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[C]](s32), [[C]](s32) 697 ; SI: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 2147483647 698 ; SI: [[BUILD_VECTOR1:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[C1]](s32), [[C1]](s32) 699 ; SI: [[AND:%[0-9]+]]:_(<2 x s32>) = G_AND [[COPY]], [[BUILD_VECTOR1]] 700 ; SI: [[UV:%[0-9]+]]:_(s64), [[UV1:%[0-9]+]]:_(s64) = G_UNMERGE_VALUES [[COPY1]](<2 x s64>) 701 ; SI: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 32 702 ; SI: [[COPY2:%[0-9]+]]:_(s32) = COPY [[C2]](s32) 703 ; SI: [[LSHR:%[0-9]+]]:_(s64) = G_LSHR [[UV]], [[COPY2]](s32) 704 ; SI: [[LSHR1:%[0-9]+]]:_(s64) = G_LSHR [[UV1]], [[C2]](s32) 705 ; SI: [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[LSHR]](s64) 706 ; SI: [[TRUNC1:%[0-9]+]]:_(s32) = G_TRUNC [[LSHR1]](s64) 707 ; SI: [[BUILD_VECTOR2:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[TRUNC]](s32), [[TRUNC1]](s32) 708 ; SI: [[AND1:%[0-9]+]]:_(<2 x s32>) = G_AND [[BUILD_VECTOR2]], [[BUILD_VECTOR]] 709 ; SI: [[OR:%[0-9]+]]:_(<2 x s32>) = G_OR [[AND]], [[AND1]] 710 ; SI: $vgpr0_vgpr1 = COPY [[OR]](<2 x s32>) 711 ; VI-LABEL: name: test_copysign_v2s32_v2s64 712 ; VI: [[COPY:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr0_vgpr1 713 ; VI: [[COPY1:%[0-9]+]]:_(<2 x s64>) = COPY $vgpr2_vgpr3_vgpr4_vgpr5 714 ; VI: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 -2147483648 715 ; VI: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[C]](s32), [[C]](s32) 716 ; VI: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 2147483647 717 ; VI: [[BUILD_VECTOR1:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[C1]](s32), [[C1]](s32) 718 ; VI: [[AND:%[0-9]+]]:_(<2 x s32>) = G_AND [[COPY]], [[BUILD_VECTOR1]] 719 ; VI: [[UV:%[0-9]+]]:_(s64), [[UV1:%[0-9]+]]:_(s64) = G_UNMERGE_VALUES [[COPY1]](<2 x s64>) 720 ; VI: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 32 721 ; VI: [[COPY2:%[0-9]+]]:_(s32) = COPY [[C2]](s32) 722 ; VI: [[LSHR:%[0-9]+]]:_(s64) = G_LSHR [[UV]], [[COPY2]](s32) 723 ; VI: [[LSHR1:%[0-9]+]]:_(s64) = G_LSHR [[UV1]], [[C2]](s32) 724 ; VI: [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[LSHR]](s64) 725 ; VI: [[TRUNC1:%[0-9]+]]:_(s32) = G_TRUNC [[LSHR1]](s64) 726 ; VI: [[BUILD_VECTOR2:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[TRUNC]](s32), [[TRUNC1]](s32) 727 ; VI: [[AND1:%[0-9]+]]:_(<2 x s32>) = G_AND [[BUILD_VECTOR2]], [[BUILD_VECTOR]] 728 ; VI: [[OR:%[0-9]+]]:_(<2 x s32>) = G_OR [[AND]], [[AND1]] 729 ; VI: $vgpr0_vgpr1 = COPY [[OR]](<2 x s32>) 730 ; GFX9-LABEL: name: test_copysign_v2s32_v2s64 731 ; GFX9: [[COPY:%[0-9]+]]:_(<2 x s32>) = COPY $vgpr0_vgpr1 732 ; GFX9: [[COPY1:%[0-9]+]]:_(<2 x s64>) = COPY $vgpr2_vgpr3_vgpr4_vgpr5 733 ; GFX9: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 -2147483648 734 ; GFX9: [[BUILD_VECTOR:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[C]](s32), [[C]](s32) 735 ; GFX9: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 2147483647 736 ; GFX9: [[BUILD_VECTOR1:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[C1]](s32), [[C1]](s32) 737 ; GFX9: [[AND:%[0-9]+]]:_(<2 x s32>) = G_AND [[COPY]], [[BUILD_VECTOR1]] 738 ; GFX9: [[UV:%[0-9]+]]:_(s64), [[UV1:%[0-9]+]]:_(s64) = G_UNMERGE_VALUES [[COPY1]](<2 x s64>) 739 ; GFX9: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 32 740 ; GFX9: [[COPY2:%[0-9]+]]:_(s32) = COPY [[C2]](s32) 741 ; GFX9: [[LSHR:%[0-9]+]]:_(s64) = G_LSHR [[UV]], [[COPY2]](s32) 742 ; GFX9: [[LSHR1:%[0-9]+]]:_(s64) = G_LSHR [[UV1]], [[C2]](s32) 743 ; GFX9: [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[LSHR]](s64) 744 ; GFX9: [[TRUNC1:%[0-9]+]]:_(s32) = G_TRUNC [[LSHR1]](s64) 745 ; GFX9: [[BUILD_VECTOR2:%[0-9]+]]:_(<2 x s32>) = G_BUILD_VECTOR [[TRUNC]](s32), [[TRUNC1]](s32) 746 ; GFX9: [[AND1:%[0-9]+]]:_(<2 x s32>) = G_AND [[BUILD_VECTOR2]], [[BUILD_VECTOR]] 747 ; GFX9: [[OR:%[0-9]+]]:_(<2 x s32>) = G_OR [[AND]], [[AND1]] 748 ; GFX9: $vgpr0_vgpr1 = COPY [[OR]](<2 x s32>) 749 %0:_(<2 x s32>) = COPY $vgpr0_vgpr1 750 %1:_(<2 x s64>) = COPY $vgpr2_vgpr3_vgpr4_vgpr5 751 %2:_(<2 x s32>) = G_FCOPYSIGN %0, %1 752 $vgpr0_vgpr1 = COPY %2 753... 754 755--- 756name: test_copysign_s32_s32_flagss 757body: | 758 bb.0: 759 liveins: $vgpr0, $vgpr1 760 761 ; SI-LABEL: name: test_copysign_s32_s32_flagss 762 ; SI: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 763 ; SI: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 764 ; SI: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 -2147483648 765 ; SI: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 2147483647 766 ; SI: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY]], [[C1]] 767 ; SI: [[AND1:%[0-9]+]]:_(s32) = G_AND [[COPY1]], [[C]] 768 ; SI: [[OR:%[0-9]+]]:_(s32) = nnan G_OR [[AND]], [[AND1]] 769 ; SI: $vgpr0 = COPY [[OR]](s32) 770 ; VI-LABEL: name: test_copysign_s32_s32_flagss 771 ; VI: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 772 ; VI: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 773 ; VI: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 -2147483648 774 ; VI: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 2147483647 775 ; VI: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY]], [[C1]] 776 ; VI: [[AND1:%[0-9]+]]:_(s32) = G_AND [[COPY1]], [[C]] 777 ; VI: [[OR:%[0-9]+]]:_(s32) = nnan G_OR [[AND]], [[AND1]] 778 ; VI: $vgpr0 = COPY [[OR]](s32) 779 ; GFX9-LABEL: name: test_copysign_s32_s32_flagss 780 ; GFX9: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 781 ; GFX9: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 782 ; GFX9: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 -2147483648 783 ; GFX9: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 2147483647 784 ; GFX9: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY]], [[C1]] 785 ; GFX9: [[AND1:%[0-9]+]]:_(s32) = G_AND [[COPY1]], [[C]] 786 ; GFX9: [[OR:%[0-9]+]]:_(s32) = nnan G_OR [[AND]], [[AND1]] 787 ; GFX9: $vgpr0 = COPY [[OR]](s32) 788 %0:_(s32) = COPY $vgpr0 789 %1:_(s32) = COPY $vgpr1 790 %2:_(s32) = nnan G_FCOPYSIGN %0, %1 791 $vgpr0 = COPY %2 792... 793 794 795--- 796name: test_copysign_s32_s16_flags 797body: | 798 bb.0: 799 liveins: $vgpr0, $vgpr1 800 ; SI-LABEL: name: test_copysign_s32_s16_flags 801 ; SI: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 802 ; SI: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 803 ; SI: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 -2147483648 804 ; SI: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 2147483647 805 ; SI: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY]], [[C1]] 806 ; SI: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 16 807 ; SI: [[C3:%[0-9]+]]:_(s32) = G_CONSTANT i32 65535 808 ; SI: [[COPY2:%[0-9]+]]:_(s32) = COPY [[COPY1]](s32) 809 ; SI: [[AND1:%[0-9]+]]:_(s32) = G_AND [[COPY2]], [[C3]] 810 ; SI: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[AND1]], [[C2]](s32) 811 ; SI: [[AND2:%[0-9]+]]:_(s32) = G_AND [[SHL]], [[C]] 812 ; SI: [[OR:%[0-9]+]]:_(s32) = nnan G_OR [[AND]], [[AND2]] 813 ; SI: $vgpr0 = COPY [[OR]](s32) 814 ; VI-LABEL: name: test_copysign_s32_s16_flags 815 ; VI: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 816 ; VI: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 817 ; VI: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 -2147483648 818 ; VI: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 2147483647 819 ; VI: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY]], [[C1]] 820 ; VI: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 16 821 ; VI: [[C3:%[0-9]+]]:_(s32) = G_CONSTANT i32 65535 822 ; VI: [[COPY2:%[0-9]+]]:_(s32) = COPY [[COPY1]](s32) 823 ; VI: [[AND1:%[0-9]+]]:_(s32) = G_AND [[COPY2]], [[C3]] 824 ; VI: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[AND1]], [[C2]](s32) 825 ; VI: [[AND2:%[0-9]+]]:_(s32) = G_AND [[SHL]], [[C]] 826 ; VI: [[OR:%[0-9]+]]:_(s32) = nnan G_OR [[AND]], [[AND2]] 827 ; VI: $vgpr0 = COPY [[OR]](s32) 828 ; GFX9-LABEL: name: test_copysign_s32_s16_flags 829 ; GFX9: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 830 ; GFX9: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 831 ; GFX9: [[C:%[0-9]+]]:_(s32) = G_CONSTANT i32 -2147483648 832 ; GFX9: [[C1:%[0-9]+]]:_(s32) = G_CONSTANT i32 2147483647 833 ; GFX9: [[AND:%[0-9]+]]:_(s32) = G_AND [[COPY]], [[C1]] 834 ; GFX9: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 16 835 ; GFX9: [[C3:%[0-9]+]]:_(s32) = G_CONSTANT i32 65535 836 ; GFX9: [[COPY2:%[0-9]+]]:_(s32) = COPY [[COPY1]](s32) 837 ; GFX9: [[AND1:%[0-9]+]]:_(s32) = G_AND [[COPY2]], [[C3]] 838 ; GFX9: [[SHL:%[0-9]+]]:_(s32) = G_SHL [[AND1]], [[C2]](s32) 839 ; GFX9: [[AND2:%[0-9]+]]:_(s32) = G_AND [[SHL]], [[C]] 840 ; GFX9: [[OR:%[0-9]+]]:_(s32) = nnan G_OR [[AND]], [[AND2]] 841 ; GFX9: $vgpr0 = COPY [[OR]](s32) 842 %0:_(s32) = COPY $vgpr0 843 %1:_(s32) = COPY $vgpr1 844 %2:_(s16) = G_TRUNC %1 845 %3:_(s32) = nnan G_FCOPYSIGN %0, %2 846 $vgpr0 = COPY %3 847... 848 849 850--- 851name: test_copysign_s16_s32_flags 852body: | 853 bb.0: 854 liveins: $vgpr0, $vgpr1 855 856 ; SI-LABEL: name: test_copysign_s16_s32_flags 857 ; SI: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 858 ; SI: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 859 ; SI: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32) 860 ; SI: [[C:%[0-9]+]]:_(s16) = G_CONSTANT i16 -32768 861 ; SI: [[C1:%[0-9]+]]:_(s16) = G_CONSTANT i16 32767 862 ; SI: [[AND:%[0-9]+]]:_(s16) = G_AND [[TRUNC]], [[C1]] 863 ; SI: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 16 864 ; SI: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[COPY1]], [[C2]](s32) 865 ; SI: [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[LSHR]](s32) 866 ; SI: [[AND1:%[0-9]+]]:_(s16) = G_AND [[TRUNC1]], [[C]] 867 ; SI: [[OR:%[0-9]+]]:_(s16) = nnan G_OR [[AND]], [[AND1]] 868 ; SI: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[OR]](s16) 869 ; SI: $vgpr0 = COPY [[ANYEXT]](s32) 870 ; VI-LABEL: name: test_copysign_s16_s32_flags 871 ; VI: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 872 ; VI: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 873 ; VI: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32) 874 ; VI: [[C:%[0-9]+]]:_(s16) = G_CONSTANT i16 -32768 875 ; VI: [[C1:%[0-9]+]]:_(s16) = G_CONSTANT i16 32767 876 ; VI: [[AND:%[0-9]+]]:_(s16) = G_AND [[TRUNC]], [[C1]] 877 ; VI: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 16 878 ; VI: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[COPY1]], [[C2]](s32) 879 ; VI: [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[LSHR]](s32) 880 ; VI: [[AND1:%[0-9]+]]:_(s16) = G_AND [[TRUNC1]], [[C]] 881 ; VI: [[OR:%[0-9]+]]:_(s16) = nnan G_OR [[AND]], [[AND1]] 882 ; VI: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[OR]](s16) 883 ; VI: $vgpr0 = COPY [[ANYEXT]](s32) 884 ; GFX9-LABEL: name: test_copysign_s16_s32_flags 885 ; GFX9: [[COPY:%[0-9]+]]:_(s32) = COPY $vgpr0 886 ; GFX9: [[COPY1:%[0-9]+]]:_(s32) = COPY $vgpr1 887 ; GFX9: [[TRUNC:%[0-9]+]]:_(s16) = G_TRUNC [[COPY]](s32) 888 ; GFX9: [[C:%[0-9]+]]:_(s16) = G_CONSTANT i16 -32768 889 ; GFX9: [[C1:%[0-9]+]]:_(s16) = G_CONSTANT i16 32767 890 ; GFX9: [[AND:%[0-9]+]]:_(s16) = G_AND [[TRUNC]], [[C1]] 891 ; GFX9: [[C2:%[0-9]+]]:_(s32) = G_CONSTANT i32 16 892 ; GFX9: [[LSHR:%[0-9]+]]:_(s32) = G_LSHR [[COPY1]], [[C2]](s32) 893 ; GFX9: [[TRUNC1:%[0-9]+]]:_(s16) = G_TRUNC [[LSHR]](s32) 894 ; GFX9: [[AND1:%[0-9]+]]:_(s16) = G_AND [[TRUNC1]], [[C]] 895 ; GFX9: [[OR:%[0-9]+]]:_(s16) = nnan G_OR [[AND]], [[AND1]] 896 ; GFX9: [[ANYEXT:%[0-9]+]]:_(s32) = G_ANYEXT [[OR]](s16) 897 ; GFX9: $vgpr0 = COPY [[ANYEXT]](s32) 898 %0:_(s32) = COPY $vgpr0 899 %1:_(s32) = COPY $vgpr1 900 %2:_(s16) = G_TRUNC %0 901 %3:_(s16) = nnan G_FCOPYSIGN %2, %1 902 %4:_(s32) = G_ANYEXT %3 903 $vgpr0 = COPY %4 904... 905