1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py 2# RUN: llc -mtriple=amdgcn -mcpu=gfx908 -run-pass=regbankselect -regbankselect-fast -verify-machineinstrs -o - %s | FileCheck -check-prefix=FAST %s 3# RUN: llc -mtriple=amdgcn -mcpu=gfx908 -run-pass=regbankselect -regbankselect-greedy -verify-machineinstrs -o - %s | FileCheck -check-prefix=GREEDY %s 4 5--- 6name: phi_s32_ss_sbranch 7legalized: true 8tracksRegLiveness: true 9 10body: | 11 ; FAST-LABEL: name: phi_s32_ss_sbranch 12 ; FAST: bb.0: 13 ; FAST-NEXT: successors: %bb.1(0x40000000), %bb.2(0x40000000) 14 ; FAST-NEXT: liveins: $sgpr0, $sgpr1, $sgpr2 15 ; FAST-NEXT: {{ $}} 16 ; FAST-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 17 ; FAST-NEXT: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1 18 ; FAST-NEXT: [[COPY2:%[0-9]+]]:sgpr(s32) = COPY $sgpr2 19 ; FAST-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 0 20 ; FAST-NEXT: [[ICMP:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(eq), [[COPY2]](s32), [[C]] 21 ; FAST-NEXT: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[ICMP]](s32) 22 ; FAST-NEXT: [[ZEXT:%[0-9]+]]:sgpr(s32) = G_ZEXT [[TRUNC]](s1) 23 ; FAST-NEXT: G_BRCOND [[ZEXT]](s32), %bb.1 24 ; FAST-NEXT: G_BR %bb.2 25 ; FAST-NEXT: {{ $}} 26 ; FAST-NEXT: bb.1: 27 ; FAST-NEXT: successors: %bb.2(0x80000000) 28 ; FAST-NEXT: {{ $}} 29 ; FAST-NEXT: [[COPY3:%[0-9]+]]:sgpr(s32) = COPY [[COPY1]](s32) 30 ; FAST-NEXT: G_BR %bb.2 31 ; FAST-NEXT: {{ $}} 32 ; FAST-NEXT: bb.2: 33 ; FAST-NEXT: [[PHI:%[0-9]+]]:sgpr(s32) = G_PHI [[COPY]](s32), %bb.0, [[COPY3]](s32), %bb.1 34 ; FAST-NEXT: $sgpr0 = COPY [[PHI]](s32) 35 ; FAST-NEXT: S_SETPC_B64 undef $sgpr30_sgpr31 36 ; GREEDY-LABEL: name: phi_s32_ss_sbranch 37 ; GREEDY: bb.0: 38 ; GREEDY-NEXT: successors: %bb.1(0x40000000), %bb.2(0x40000000) 39 ; GREEDY-NEXT: liveins: $sgpr0, $sgpr1, $sgpr2 40 ; GREEDY-NEXT: {{ $}} 41 ; GREEDY-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 42 ; GREEDY-NEXT: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1 43 ; GREEDY-NEXT: [[COPY2:%[0-9]+]]:sgpr(s32) = COPY $sgpr2 44 ; GREEDY-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 0 45 ; GREEDY-NEXT: [[ICMP:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(eq), [[COPY2]](s32), [[C]] 46 ; GREEDY-NEXT: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[ICMP]](s32) 47 ; GREEDY-NEXT: [[ZEXT:%[0-9]+]]:sgpr(s32) = G_ZEXT [[TRUNC]](s1) 48 ; GREEDY-NEXT: G_BRCOND [[ZEXT]](s32), %bb.1 49 ; GREEDY-NEXT: G_BR %bb.2 50 ; GREEDY-NEXT: {{ $}} 51 ; GREEDY-NEXT: bb.1: 52 ; GREEDY-NEXT: successors: %bb.2(0x80000000) 53 ; GREEDY-NEXT: {{ $}} 54 ; GREEDY-NEXT: [[COPY3:%[0-9]+]]:sgpr(s32) = COPY [[COPY1]](s32) 55 ; GREEDY-NEXT: G_BR %bb.2 56 ; GREEDY-NEXT: {{ $}} 57 ; GREEDY-NEXT: bb.2: 58 ; GREEDY-NEXT: [[PHI:%[0-9]+]]:sgpr(s32) = G_PHI [[COPY]](s32), %bb.0, [[COPY3]](s32), %bb.1 59 ; GREEDY-NEXT: $sgpr0 = COPY [[PHI]](s32) 60 ; GREEDY-NEXT: S_SETPC_B64 undef $sgpr30_sgpr31 61 bb.0: 62 successors: %bb.1, %bb.2 63 liveins: $sgpr0, $sgpr1, $sgpr2 64 65 %0:_(s32) = COPY $sgpr0 66 %1:_(s32) = COPY $sgpr1 67 %2:_(s32) = COPY $sgpr2 68 %3:_(s32) = G_CONSTANT i32 0 69 %4:_(s1) = G_ICMP intpred(eq), %2, %3 70 G_BRCOND %4, %bb.1 71 G_BR %bb.2 72 73 bb.1: 74 successors: %bb.2 75 76 %5:_(s32) = COPY %1 77 G_BR %bb.2 78 79 bb.2: 80 %6:_(s32) = G_PHI %0, %bb.0, %5, %bb.1 81 $sgpr0 = COPY %6 82 S_SETPC_B64 undef $sgpr30_sgpr31 83 84... 85 86--- 87name: phi_s32_sv_sbranch 88legalized: true 89tracksRegLiveness: true 90 91body: | 92 ; FAST-LABEL: name: phi_s32_sv_sbranch 93 ; FAST: bb.0: 94 ; FAST-NEXT: successors: %bb.1(0x40000000), %bb.2(0x40000000) 95 ; FAST-NEXT: liveins: $sgpr0, $vgpr0, $sgpr1 96 ; FAST-NEXT: {{ $}} 97 ; FAST-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 98 ; FAST-NEXT: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr0 99 ; FAST-NEXT: [[COPY2:%[0-9]+]]:sgpr(s32) = COPY $sgpr1 100 ; FAST-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 0 101 ; FAST-NEXT: [[ICMP:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(eq), [[COPY2]](s32), [[C]] 102 ; FAST-NEXT: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[ICMP]](s32) 103 ; FAST-NEXT: [[ZEXT:%[0-9]+]]:sgpr(s32) = G_ZEXT [[TRUNC]](s1) 104 ; FAST-NEXT: G_BRCOND [[ZEXT]](s32), %bb.1 105 ; FAST-NEXT: G_BR %bb.2 106 ; FAST-NEXT: {{ $}} 107 ; FAST-NEXT: bb.1: 108 ; FAST-NEXT: successors: %bb.2(0x80000000) 109 ; FAST-NEXT: {{ $}} 110 ; FAST-NEXT: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY [[COPY1]](s32) 111 ; FAST-NEXT: G_BR %bb.2 112 ; FAST-NEXT: {{ $}} 113 ; FAST-NEXT: bb.2: 114 ; FAST-NEXT: [[PHI:%[0-9]+]]:vgpr(s32) = G_PHI [[COPY]](s32), %bb.0, [[COPY3]](s32), %bb.1 115 ; FAST-NEXT: $vgpr0 = COPY [[PHI]](s32) 116 ; FAST-NEXT: S_SETPC_B64 undef $sgpr30_sgpr31 117 ; GREEDY-LABEL: name: phi_s32_sv_sbranch 118 ; GREEDY: bb.0: 119 ; GREEDY-NEXT: successors: %bb.1(0x40000000), %bb.2(0x40000000) 120 ; GREEDY-NEXT: liveins: $sgpr0, $vgpr0, $sgpr1 121 ; GREEDY-NEXT: {{ $}} 122 ; GREEDY-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 123 ; GREEDY-NEXT: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr0 124 ; GREEDY-NEXT: [[COPY2:%[0-9]+]]:sgpr(s32) = COPY $sgpr1 125 ; GREEDY-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 0 126 ; GREEDY-NEXT: [[ICMP:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(eq), [[COPY2]](s32), [[C]] 127 ; GREEDY-NEXT: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[ICMP]](s32) 128 ; GREEDY-NEXT: [[ZEXT:%[0-9]+]]:sgpr(s32) = G_ZEXT [[TRUNC]](s1) 129 ; GREEDY-NEXT: G_BRCOND [[ZEXT]](s32), %bb.1 130 ; GREEDY-NEXT: G_BR %bb.2 131 ; GREEDY-NEXT: {{ $}} 132 ; GREEDY-NEXT: bb.1: 133 ; GREEDY-NEXT: successors: %bb.2(0x80000000) 134 ; GREEDY-NEXT: {{ $}} 135 ; GREEDY-NEXT: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY [[COPY1]](s32) 136 ; GREEDY-NEXT: G_BR %bb.2 137 ; GREEDY-NEXT: {{ $}} 138 ; GREEDY-NEXT: bb.2: 139 ; GREEDY-NEXT: [[PHI:%[0-9]+]]:vgpr(s32) = G_PHI [[COPY]](s32), %bb.0, [[COPY3]](s32), %bb.1 140 ; GREEDY-NEXT: $vgpr0 = COPY [[PHI]](s32) 141 ; GREEDY-NEXT: S_SETPC_B64 undef $sgpr30_sgpr31 142 bb.0: 143 successors: %bb.1, %bb.2 144 liveins: $sgpr0, $vgpr0, $sgpr1 145 146 %0:_(s32) = COPY $sgpr0 147 %1:_(s32) = COPY $vgpr0 148 %2:_(s32) = COPY $sgpr1 149 %3:_(s32) = G_CONSTANT i32 0 150 %4:_(s1) = G_ICMP intpred(eq), %2, %3 151 G_BRCOND %4, %bb.1 152 G_BR %bb.2 153 154 bb.1: 155 successors: %bb.2 156 157 %5:_(s32) = COPY %1 158 G_BR %bb.2 159 160 bb.2: 161 %6:_(s32) = G_PHI %0, %bb.0, %5, %bb.1 162 $vgpr0 = COPY %6 163 S_SETPC_B64 undef $sgpr30_sgpr31 164 165... 166 167--- 168name: phi_s32_vs_sbranch 169legalized: true 170tracksRegLiveness: true 171 172body: | 173 ; FAST-LABEL: name: phi_s32_vs_sbranch 174 ; FAST: bb.0: 175 ; FAST-NEXT: successors: %bb.1(0x40000000), %bb.2(0x40000000) 176 ; FAST-NEXT: liveins: $vgpr0, $sgpr0, $sgpr1 177 ; FAST-NEXT: {{ $}} 178 ; FAST-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0 179 ; FAST-NEXT: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 180 ; FAST-NEXT: [[COPY2:%[0-9]+]]:sgpr(s32) = COPY $sgpr1 181 ; FAST-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 0 182 ; FAST-NEXT: [[ICMP:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(eq), [[COPY2]](s32), [[C]] 183 ; FAST-NEXT: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[ICMP]](s32) 184 ; FAST-NEXT: [[ZEXT:%[0-9]+]]:sgpr(s32) = G_ZEXT [[TRUNC]](s1) 185 ; FAST-NEXT: G_BRCOND [[ZEXT]](s32), %bb.1 186 ; FAST-NEXT: G_BR %bb.2 187 ; FAST-NEXT: {{ $}} 188 ; FAST-NEXT: bb.1: 189 ; FAST-NEXT: successors: %bb.2(0x80000000) 190 ; FAST-NEXT: {{ $}} 191 ; FAST-NEXT: [[COPY3:%[0-9]+]]:sgpr(s32) = COPY [[COPY1]](s32) 192 ; FAST-NEXT: G_BR %bb.2 193 ; FAST-NEXT: {{ $}} 194 ; FAST-NEXT: bb.2: 195 ; FAST-NEXT: [[PHI:%[0-9]+]]:vgpr(s32) = G_PHI [[COPY]](s32), %bb.0, [[COPY3]](s32), %bb.1 196 ; FAST-NEXT: $vgpr0 = COPY [[PHI]](s32) 197 ; FAST-NEXT: S_SETPC_B64 undef $sgpr30_sgpr31 198 ; GREEDY-LABEL: name: phi_s32_vs_sbranch 199 ; GREEDY: bb.0: 200 ; GREEDY-NEXT: successors: %bb.1(0x40000000), %bb.2(0x40000000) 201 ; GREEDY-NEXT: liveins: $vgpr0, $sgpr0, $sgpr1 202 ; GREEDY-NEXT: {{ $}} 203 ; GREEDY-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0 204 ; GREEDY-NEXT: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 205 ; GREEDY-NEXT: [[COPY2:%[0-9]+]]:sgpr(s32) = COPY $sgpr1 206 ; GREEDY-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 0 207 ; GREEDY-NEXT: [[ICMP:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(eq), [[COPY2]](s32), [[C]] 208 ; GREEDY-NEXT: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[ICMP]](s32) 209 ; GREEDY-NEXT: [[ZEXT:%[0-9]+]]:sgpr(s32) = G_ZEXT [[TRUNC]](s1) 210 ; GREEDY-NEXT: G_BRCOND [[ZEXT]](s32), %bb.1 211 ; GREEDY-NEXT: G_BR %bb.2 212 ; GREEDY-NEXT: {{ $}} 213 ; GREEDY-NEXT: bb.1: 214 ; GREEDY-NEXT: successors: %bb.2(0x80000000) 215 ; GREEDY-NEXT: {{ $}} 216 ; GREEDY-NEXT: [[COPY3:%[0-9]+]]:sgpr(s32) = COPY [[COPY1]](s32) 217 ; GREEDY-NEXT: G_BR %bb.2 218 ; GREEDY-NEXT: {{ $}} 219 ; GREEDY-NEXT: bb.2: 220 ; GREEDY-NEXT: [[PHI:%[0-9]+]]:vgpr(s32) = G_PHI [[COPY]](s32), %bb.0, [[COPY3]](s32), %bb.1 221 ; GREEDY-NEXT: $vgpr0 = COPY [[PHI]](s32) 222 ; GREEDY-NEXT: S_SETPC_B64 undef $sgpr30_sgpr31 223 bb.0: 224 successors: %bb.1, %bb.2 225 liveins: $vgpr0, $sgpr0, $sgpr1 226 227 %0:_(s32) = COPY $vgpr0 228 %1:_(s32) = COPY $sgpr0 229 %2:_(s32) = COPY $sgpr1 230 %3:_(s32) = G_CONSTANT i32 0 231 %4:_(s1) = G_ICMP intpred(eq), %2, %3 232 G_BRCOND %4, %bb.1 233 G_BR %bb.2 234 235 bb.1: 236 successors: %bb.2 237 238 %5:_(s32) = COPY %1 239 G_BR %bb.2 240 241 bb.2: 242 %6:_(s32) = G_PHI %0, %bb.0, %5, %bb.1 243 $vgpr0 = COPY %6 244 S_SETPC_B64 undef $sgpr30_sgpr31 245 246... 247 248--- 249name: phi_s32_vv_sbranch 250legalized: true 251tracksRegLiveness: true 252 253body: | 254 ; FAST-LABEL: name: phi_s32_vv_sbranch 255 ; FAST: bb.0: 256 ; FAST-NEXT: successors: %bb.1(0x40000000), %bb.2(0x40000000) 257 ; FAST-NEXT: liveins: $vgpr0, $vgpr1, $sgpr0 258 ; FAST-NEXT: {{ $}} 259 ; FAST-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0 260 ; FAST-NEXT: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr1 261 ; FAST-NEXT: [[COPY2:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 262 ; FAST-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 0 263 ; FAST-NEXT: [[ICMP:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(eq), [[COPY2]](s32), [[C]] 264 ; FAST-NEXT: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[ICMP]](s32) 265 ; FAST-NEXT: [[ZEXT:%[0-9]+]]:sgpr(s32) = G_ZEXT [[TRUNC]](s1) 266 ; FAST-NEXT: G_BRCOND [[ZEXT]](s32), %bb.1 267 ; FAST-NEXT: G_BR %bb.2 268 ; FAST-NEXT: {{ $}} 269 ; FAST-NEXT: bb.1: 270 ; FAST-NEXT: successors: %bb.2(0x80000000) 271 ; FAST-NEXT: {{ $}} 272 ; FAST-NEXT: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY [[COPY1]](s32) 273 ; FAST-NEXT: G_BR %bb.2 274 ; FAST-NEXT: {{ $}} 275 ; FAST-NEXT: bb.2: 276 ; FAST-NEXT: [[PHI:%[0-9]+]]:vgpr(s32) = G_PHI [[COPY]](s32), %bb.0, [[COPY3]](s32), %bb.1 277 ; FAST-NEXT: $vgpr0 = COPY [[PHI]](s32) 278 ; FAST-NEXT: S_SETPC_B64 undef $sgpr30_sgpr31 279 ; GREEDY-LABEL: name: phi_s32_vv_sbranch 280 ; GREEDY: bb.0: 281 ; GREEDY-NEXT: successors: %bb.1(0x40000000), %bb.2(0x40000000) 282 ; GREEDY-NEXT: liveins: $vgpr0, $vgpr1, $sgpr0 283 ; GREEDY-NEXT: {{ $}} 284 ; GREEDY-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0 285 ; GREEDY-NEXT: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr1 286 ; GREEDY-NEXT: [[COPY2:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 287 ; GREEDY-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 0 288 ; GREEDY-NEXT: [[ICMP:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(eq), [[COPY2]](s32), [[C]] 289 ; GREEDY-NEXT: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[ICMP]](s32) 290 ; GREEDY-NEXT: [[ZEXT:%[0-9]+]]:sgpr(s32) = G_ZEXT [[TRUNC]](s1) 291 ; GREEDY-NEXT: G_BRCOND [[ZEXT]](s32), %bb.1 292 ; GREEDY-NEXT: G_BR %bb.2 293 ; GREEDY-NEXT: {{ $}} 294 ; GREEDY-NEXT: bb.1: 295 ; GREEDY-NEXT: successors: %bb.2(0x80000000) 296 ; GREEDY-NEXT: {{ $}} 297 ; GREEDY-NEXT: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY [[COPY1]](s32) 298 ; GREEDY-NEXT: G_BR %bb.2 299 ; GREEDY-NEXT: {{ $}} 300 ; GREEDY-NEXT: bb.2: 301 ; GREEDY-NEXT: [[PHI:%[0-9]+]]:vgpr(s32) = G_PHI [[COPY]](s32), %bb.0, [[COPY3]](s32), %bb.1 302 ; GREEDY-NEXT: $vgpr0 = COPY [[PHI]](s32) 303 ; GREEDY-NEXT: S_SETPC_B64 undef $sgpr30_sgpr31 304 bb.0: 305 successors: %bb.1, %bb.2 306 liveins: $vgpr0, $vgpr1, $sgpr0 307 308 %0:_(s32) = COPY $vgpr0 309 %1:_(s32) = COPY $vgpr1 310 %2:_(s32) = COPY $sgpr0 311 %3:_(s32) = G_CONSTANT i32 0 312 %4:_(s1) = G_ICMP intpred(eq), %2, %3 313 G_BRCOND %4, %bb.1 314 G_BR %bb.2 315 316 bb.1: 317 successors: %bb.2 318 319 %5:_(s32) = COPY %1 320 G_BR %bb.2 321 322 bb.2: 323 %6:_(s32) = G_PHI %0, %bb.0, %5, %bb.1 324 $vgpr0 = COPY %6 325 S_SETPC_B64 undef $sgpr30_sgpr31 326 327... 328--- 329name: phi_s32_ss_vcc_sbranch 330legalized: true 331tracksRegLiveness: true 332 333body: | 334 ; FAST-LABEL: name: phi_s32_ss_vcc_sbranch 335 ; FAST: bb.0: 336 ; FAST-NEXT: successors: %bb.1(0x40000000), %bb.2(0x40000000) 337 ; FAST-NEXT: liveins: $sgpr0, $sgpr1, $vgpr0 338 ; FAST-NEXT: {{ $}} 339 ; FAST-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 340 ; FAST-NEXT: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1 341 ; FAST-NEXT: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY $vgpr0 342 ; FAST-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 0 343 ; FAST-NEXT: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY [[C]](s32) 344 ; FAST-NEXT: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(eq), [[COPY2]](s32), [[COPY3]] 345 ; FAST-NEXT: G_BRCOND [[ICMP]](s1), %bb.1 346 ; FAST-NEXT: G_BR %bb.2 347 ; FAST-NEXT: {{ $}} 348 ; FAST-NEXT: bb.1: 349 ; FAST-NEXT: successors: %bb.2(0x80000000) 350 ; FAST-NEXT: {{ $}} 351 ; FAST-NEXT: [[COPY4:%[0-9]+]]:sgpr(s32) = COPY [[COPY1]](s32) 352 ; FAST-NEXT: G_BR %bb.2 353 ; FAST-NEXT: {{ $}} 354 ; FAST-NEXT: bb.2: 355 ; FAST-NEXT: [[PHI:%[0-9]+]]:sgpr(s32) = G_PHI [[COPY]](s32), %bb.0, [[COPY4]](s32), %bb.1 356 ; FAST-NEXT: $sgpr0 = COPY [[PHI]](s32) 357 ; FAST-NEXT: S_SETPC_B64 undef $sgpr30_sgpr31 358 ; GREEDY-LABEL: name: phi_s32_ss_vcc_sbranch 359 ; GREEDY: bb.0: 360 ; GREEDY-NEXT: successors: %bb.1(0x40000000), %bb.2(0x40000000) 361 ; GREEDY-NEXT: liveins: $sgpr0, $sgpr1, $vgpr0 362 ; GREEDY-NEXT: {{ $}} 363 ; GREEDY-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 364 ; GREEDY-NEXT: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1 365 ; GREEDY-NEXT: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY $vgpr0 366 ; GREEDY-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 0 367 ; GREEDY-NEXT: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY [[C]](s32) 368 ; GREEDY-NEXT: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(eq), [[COPY2]](s32), [[COPY3]] 369 ; GREEDY-NEXT: G_BRCOND [[ICMP]](s1), %bb.1 370 ; GREEDY-NEXT: G_BR %bb.2 371 ; GREEDY-NEXT: {{ $}} 372 ; GREEDY-NEXT: bb.1: 373 ; GREEDY-NEXT: successors: %bb.2(0x80000000) 374 ; GREEDY-NEXT: {{ $}} 375 ; GREEDY-NEXT: [[COPY4:%[0-9]+]]:sgpr(s32) = COPY [[COPY1]](s32) 376 ; GREEDY-NEXT: G_BR %bb.2 377 ; GREEDY-NEXT: {{ $}} 378 ; GREEDY-NEXT: bb.2: 379 ; GREEDY-NEXT: [[PHI:%[0-9]+]]:sgpr(s32) = G_PHI [[COPY]](s32), %bb.0, [[COPY4]](s32), %bb.1 380 ; GREEDY-NEXT: $sgpr0 = COPY [[PHI]](s32) 381 ; GREEDY-NEXT: S_SETPC_B64 undef $sgpr30_sgpr31 382 bb.0: 383 successors: %bb.1, %bb.2 384 liveins: $sgpr0, $sgpr1, $vgpr0 385 386 %0:_(s32) = COPY $sgpr0 387 %1:_(s32) = COPY $sgpr1 388 %2:_(s32) = COPY $vgpr0 389 %3:_(s32) = G_CONSTANT i32 0 390 %4:_(s1) = G_ICMP intpred(eq), %2, %3 391 G_BRCOND %4, %bb.1 392 G_BR %bb.2 393 394 bb.1: 395 successors: %bb.2 396 397 %5:_(s32) = COPY %1 398 G_BR %bb.2 399 400 bb.2: 401 %6:_(s32) = G_PHI %0, %bb.0, %5, %bb.1 402 $sgpr0 = COPY %6 403 S_SETPC_B64 undef $sgpr30_sgpr31 404 405... 406 407--- 408name: phi_s32_sv_vcc_sbranch 409legalized: true 410tracksRegLiveness: true 411 412body: | 413 ; FAST-LABEL: name: phi_s32_sv_vcc_sbranch 414 ; FAST: bb.0: 415 ; FAST-NEXT: successors: %bb.1(0x40000000), %bb.2(0x40000000) 416 ; FAST-NEXT: liveins: $sgpr0, $vgpr0, $vgpr1 417 ; FAST-NEXT: {{ $}} 418 ; FAST-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 419 ; FAST-NEXT: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr0 420 ; FAST-NEXT: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY $vgpr1 421 ; FAST-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 0 422 ; FAST-NEXT: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY [[C]](s32) 423 ; FAST-NEXT: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(eq), [[COPY2]](s32), [[COPY3]] 424 ; FAST-NEXT: G_BRCOND [[ICMP]](s1), %bb.1 425 ; FAST-NEXT: G_BR %bb.2 426 ; FAST-NEXT: {{ $}} 427 ; FAST-NEXT: bb.1: 428 ; FAST-NEXT: successors: %bb.2(0x80000000) 429 ; FAST-NEXT: {{ $}} 430 ; FAST-NEXT: [[COPY4:%[0-9]+]]:vgpr(s32) = COPY [[COPY1]](s32) 431 ; FAST-NEXT: G_BR %bb.2 432 ; FAST-NEXT: {{ $}} 433 ; FAST-NEXT: bb.2: 434 ; FAST-NEXT: [[PHI:%[0-9]+]]:vgpr(s32) = G_PHI [[COPY]](s32), %bb.0, [[COPY4]](s32), %bb.1 435 ; FAST-NEXT: $vgpr0 = COPY [[PHI]](s32) 436 ; FAST-NEXT: S_SETPC_B64 undef $sgpr30_sgpr31 437 ; GREEDY-LABEL: name: phi_s32_sv_vcc_sbranch 438 ; GREEDY: bb.0: 439 ; GREEDY-NEXT: successors: %bb.1(0x40000000), %bb.2(0x40000000) 440 ; GREEDY-NEXT: liveins: $sgpr0, $vgpr0, $vgpr1 441 ; GREEDY-NEXT: {{ $}} 442 ; GREEDY-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 443 ; GREEDY-NEXT: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr0 444 ; GREEDY-NEXT: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY $vgpr1 445 ; GREEDY-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 0 446 ; GREEDY-NEXT: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY [[C]](s32) 447 ; GREEDY-NEXT: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(eq), [[COPY2]](s32), [[COPY3]] 448 ; GREEDY-NEXT: G_BRCOND [[ICMP]](s1), %bb.1 449 ; GREEDY-NEXT: G_BR %bb.2 450 ; GREEDY-NEXT: {{ $}} 451 ; GREEDY-NEXT: bb.1: 452 ; GREEDY-NEXT: successors: %bb.2(0x80000000) 453 ; GREEDY-NEXT: {{ $}} 454 ; GREEDY-NEXT: [[COPY4:%[0-9]+]]:vgpr(s32) = COPY [[COPY1]](s32) 455 ; GREEDY-NEXT: G_BR %bb.2 456 ; GREEDY-NEXT: {{ $}} 457 ; GREEDY-NEXT: bb.2: 458 ; GREEDY-NEXT: [[PHI:%[0-9]+]]:vgpr(s32) = G_PHI [[COPY]](s32), %bb.0, [[COPY4]](s32), %bb.1 459 ; GREEDY-NEXT: $vgpr0 = COPY [[PHI]](s32) 460 ; GREEDY-NEXT: S_SETPC_B64 undef $sgpr30_sgpr31 461 bb.0: 462 successors: %bb.1, %bb.2 463 liveins: $sgpr0, $vgpr0, $vgpr1 464 465 %0:_(s32) = COPY $sgpr0 466 %1:_(s32) = COPY $vgpr0 467 %2:_(s32) = COPY $vgpr1 468 %3:_(s32) = G_CONSTANT i32 0 469 %4:_(s1) = G_ICMP intpred(eq), %2, %3 470 G_BRCOND %4, %bb.1 471 G_BR %bb.2 472 473 bb.1: 474 successors: %bb.2 475 476 %5:_(s32) = COPY %1 477 G_BR %bb.2 478 479 bb.2: 480 %6:_(s32) = G_PHI %0, %bb.0, %5, %bb.1 481 $vgpr0 = COPY %6 482 S_SETPC_B64 undef $sgpr30_sgpr31 483 484... 485 486--- 487name: phi_s32_vs_vcc_sbranch 488legalized: true 489tracksRegLiveness: true 490 491body: | 492 ; FAST-LABEL: name: phi_s32_vs_vcc_sbranch 493 ; FAST: bb.0: 494 ; FAST-NEXT: successors: %bb.1(0x40000000), %bb.2(0x40000000) 495 ; FAST-NEXT: liveins: $vgpr0, $sgpr0, $vgpr1 496 ; FAST-NEXT: {{ $}} 497 ; FAST-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0 498 ; FAST-NEXT: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 499 ; FAST-NEXT: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY $vgpr1 500 ; FAST-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 0 501 ; FAST-NEXT: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY [[C]](s32) 502 ; FAST-NEXT: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(eq), [[COPY2]](s32), [[COPY3]] 503 ; FAST-NEXT: G_BRCOND [[ICMP]](s1), %bb.1 504 ; FAST-NEXT: G_BR %bb.2 505 ; FAST-NEXT: {{ $}} 506 ; FAST-NEXT: bb.1: 507 ; FAST-NEXT: successors: %bb.2(0x80000000) 508 ; FAST-NEXT: {{ $}} 509 ; FAST-NEXT: [[COPY4:%[0-9]+]]:sgpr(s32) = COPY [[COPY1]](s32) 510 ; FAST-NEXT: G_BR %bb.2 511 ; FAST-NEXT: {{ $}} 512 ; FAST-NEXT: bb.2: 513 ; FAST-NEXT: [[PHI:%[0-9]+]]:vgpr(s32) = G_PHI [[COPY]](s32), %bb.0, [[COPY4]](s32), %bb.1 514 ; FAST-NEXT: $vgpr0 = COPY [[PHI]](s32) 515 ; FAST-NEXT: S_SETPC_B64 undef $sgpr30_sgpr31 516 ; GREEDY-LABEL: name: phi_s32_vs_vcc_sbranch 517 ; GREEDY: bb.0: 518 ; GREEDY-NEXT: successors: %bb.1(0x40000000), %bb.2(0x40000000) 519 ; GREEDY-NEXT: liveins: $vgpr0, $sgpr0, $vgpr1 520 ; GREEDY-NEXT: {{ $}} 521 ; GREEDY-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0 522 ; GREEDY-NEXT: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 523 ; GREEDY-NEXT: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY $vgpr1 524 ; GREEDY-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 0 525 ; GREEDY-NEXT: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY [[C]](s32) 526 ; GREEDY-NEXT: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(eq), [[COPY2]](s32), [[COPY3]] 527 ; GREEDY-NEXT: G_BRCOND [[ICMP]](s1), %bb.1 528 ; GREEDY-NEXT: G_BR %bb.2 529 ; GREEDY-NEXT: {{ $}} 530 ; GREEDY-NEXT: bb.1: 531 ; GREEDY-NEXT: successors: %bb.2(0x80000000) 532 ; GREEDY-NEXT: {{ $}} 533 ; GREEDY-NEXT: [[COPY4:%[0-9]+]]:sgpr(s32) = COPY [[COPY1]](s32) 534 ; GREEDY-NEXT: G_BR %bb.2 535 ; GREEDY-NEXT: {{ $}} 536 ; GREEDY-NEXT: bb.2: 537 ; GREEDY-NEXT: [[PHI:%[0-9]+]]:vgpr(s32) = G_PHI [[COPY]](s32), %bb.0, [[COPY4]](s32), %bb.1 538 ; GREEDY-NEXT: $vgpr0 = COPY [[PHI]](s32) 539 ; GREEDY-NEXT: S_SETPC_B64 undef $sgpr30_sgpr31 540 bb.0: 541 successors: %bb.1, %bb.2 542 liveins: $vgpr0, $sgpr0, $vgpr1 543 544 %0:_(s32) = COPY $vgpr0 545 %1:_(s32) = COPY $sgpr0 546 %2:_(s32) = COPY $vgpr1 547 %3:_(s32) = G_CONSTANT i32 0 548 %4:_(s1) = G_ICMP intpred(eq), %2, %3 549 G_BRCOND %4, %bb.1 550 G_BR %bb.2 551 552 bb.1: 553 successors: %bb.2 554 555 %5:_(s32) = COPY %1 556 G_BR %bb.2 557 558 bb.2: 559 %6:_(s32) = G_PHI %0, %bb.0, %5, %bb.1 560 $vgpr0 = COPY %6 561 S_SETPC_B64 undef $sgpr30_sgpr31 562 563... 564 565--- 566name: phi_s32_vv_vcc_sbranch 567legalized: true 568tracksRegLiveness: true 569 570body: | 571 ; FAST-LABEL: name: phi_s32_vv_vcc_sbranch 572 ; FAST: bb.0: 573 ; FAST-NEXT: successors: %bb.1(0x40000000), %bb.2(0x40000000) 574 ; FAST-NEXT: liveins: $vgpr0, $vgpr1, $vgpr2 575 ; FAST-NEXT: {{ $}} 576 ; FAST-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0 577 ; FAST-NEXT: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr1 578 ; FAST-NEXT: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY $vgpr2 579 ; FAST-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 0 580 ; FAST-NEXT: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY [[C]](s32) 581 ; FAST-NEXT: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(eq), [[COPY2]](s32), [[COPY3]] 582 ; FAST-NEXT: G_BRCOND [[ICMP]](s1), %bb.1 583 ; FAST-NEXT: G_BR %bb.2 584 ; FAST-NEXT: {{ $}} 585 ; FAST-NEXT: bb.1: 586 ; FAST-NEXT: successors: %bb.2(0x80000000) 587 ; FAST-NEXT: {{ $}} 588 ; FAST-NEXT: [[COPY4:%[0-9]+]]:vgpr(s32) = COPY [[COPY1]](s32) 589 ; FAST-NEXT: G_BR %bb.2 590 ; FAST-NEXT: {{ $}} 591 ; FAST-NEXT: bb.2: 592 ; FAST-NEXT: [[PHI:%[0-9]+]]:vgpr(s32) = G_PHI [[COPY]](s32), %bb.0, [[COPY4]](s32), %bb.1 593 ; FAST-NEXT: $vgpr0 = COPY [[PHI]](s32) 594 ; FAST-NEXT: S_SETPC_B64 undef $sgpr30_sgpr31 595 ; GREEDY-LABEL: name: phi_s32_vv_vcc_sbranch 596 ; GREEDY: bb.0: 597 ; GREEDY-NEXT: successors: %bb.1(0x40000000), %bb.2(0x40000000) 598 ; GREEDY-NEXT: liveins: $vgpr0, $vgpr1, $vgpr2 599 ; GREEDY-NEXT: {{ $}} 600 ; GREEDY-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0 601 ; GREEDY-NEXT: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr1 602 ; GREEDY-NEXT: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY $vgpr2 603 ; GREEDY-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 0 604 ; GREEDY-NEXT: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY [[C]](s32) 605 ; GREEDY-NEXT: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(eq), [[COPY2]](s32), [[COPY3]] 606 ; GREEDY-NEXT: G_BRCOND [[ICMP]](s1), %bb.1 607 ; GREEDY-NEXT: G_BR %bb.2 608 ; GREEDY-NEXT: {{ $}} 609 ; GREEDY-NEXT: bb.1: 610 ; GREEDY-NEXT: successors: %bb.2(0x80000000) 611 ; GREEDY-NEXT: {{ $}} 612 ; GREEDY-NEXT: [[COPY4:%[0-9]+]]:vgpr(s32) = COPY [[COPY1]](s32) 613 ; GREEDY-NEXT: G_BR %bb.2 614 ; GREEDY-NEXT: {{ $}} 615 ; GREEDY-NEXT: bb.2: 616 ; GREEDY-NEXT: [[PHI:%[0-9]+]]:vgpr(s32) = G_PHI [[COPY]](s32), %bb.0, [[COPY4]](s32), %bb.1 617 ; GREEDY-NEXT: $vgpr0 = COPY [[PHI]](s32) 618 ; GREEDY-NEXT: S_SETPC_B64 undef $sgpr30_sgpr31 619 bb.0: 620 successors: %bb.1, %bb.2 621 liveins: $vgpr0, $vgpr1, $vgpr2 622 623 %0:_(s32) = COPY $vgpr0 624 %1:_(s32) = COPY $vgpr1 625 %2:_(s32) = COPY $vgpr2 626 %3:_(s32) = G_CONSTANT i32 0 627 %4:_(s1) = G_ICMP intpred(eq), %2, %3 628 G_BRCOND %4, %bb.1 629 G_BR %bb.2 630 631 bb.1: 632 successors: %bb.2 633 634 %5:_(s32) = COPY %1 635 G_BR %bb.2 636 637 bb.2: 638 %6:_(s32) = G_PHI %0, %bb.0, %5, %bb.1 639 $vgpr0 = COPY %6 640 S_SETPC_B64 undef $sgpr30_sgpr31 641 642... 643 644--- 645name: phi_s1_scc_scc_sbranch 646legalized: true 647tracksRegLiveness: true 648 649body: | 650 ; FAST-LABEL: name: phi_s1_scc_scc_sbranch 651 ; FAST: bb.0: 652 ; FAST-NEXT: successors: %bb.1(0x40000000), %bb.2(0x40000000) 653 ; FAST-NEXT: liveins: $sgpr0, $sgpr1, $sgpr2 654 ; FAST-NEXT: {{ $}} 655 ; FAST-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 656 ; FAST-NEXT: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1 657 ; FAST-NEXT: [[COPY2:%[0-9]+]]:sgpr(s32) = COPY $sgpr2 658 ; FAST-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 0 659 ; FAST-NEXT: [[ICMP:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(eq), [[COPY]](s32), [[C]] 660 ; FAST-NEXT: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[ICMP]](s32) 661 ; FAST-NEXT: [[ICMP1:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(eq), [[COPY2]](s32), [[C]] 662 ; FAST-NEXT: [[TRUNC1:%[0-9]+]]:sgpr(s1) = G_TRUNC [[ICMP1]](s32) 663 ; FAST-NEXT: [[ZEXT:%[0-9]+]]:sgpr(s32) = G_ZEXT [[TRUNC1]](s1) 664 ; FAST-NEXT: [[ANYEXT:%[0-9]+]]:sgpr(s32) = G_ANYEXT [[TRUNC]](s1) 665 ; FAST-NEXT: G_BRCOND [[ZEXT]](s32), %bb.1 666 ; FAST-NEXT: G_BR %bb.2 667 ; FAST-NEXT: {{ $}} 668 ; FAST-NEXT: bb.1: 669 ; FAST-NEXT: successors: %bb.2(0x80000000) 670 ; FAST-NEXT: {{ $}} 671 ; FAST-NEXT: [[ICMP2:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(eq), [[COPY1]](s32), [[C]] 672 ; FAST-NEXT: [[TRUNC2:%[0-9]+]]:sgpr(s1) = G_TRUNC [[ICMP2]](s32) 673 ; FAST-NEXT: [[ANYEXT1:%[0-9]+]]:sgpr(s32) = G_ANYEXT [[TRUNC2]](s1) 674 ; FAST-NEXT: G_BR %bb.2 675 ; FAST-NEXT: {{ $}} 676 ; FAST-NEXT: bb.2: 677 ; FAST-NEXT: [[PHI:%[0-9]+]]:sgpr(s32) = G_PHI [[ANYEXT]](s32), %bb.0, [[ANYEXT1]](s32), %bb.1 678 ; FAST-NEXT: [[TRUNC3:%[0-9]+]]:sgpr(s1) = G_TRUNC [[PHI]](s32) 679 ; FAST-NEXT: [[ZEXT1:%[0-9]+]]:sgpr(s32) = G_ZEXT [[TRUNC3]](s1) 680 ; FAST-NEXT: [[SELECT:%[0-9]+]]:sgpr(s32) = G_SELECT [[ZEXT1]](s32), [[C]], [[COPY]] 681 ; FAST-NEXT: S_SETPC_B64 undef $sgpr30_sgpr31, implicit [[SELECT]](s32) 682 ; GREEDY-LABEL: name: phi_s1_scc_scc_sbranch 683 ; GREEDY: bb.0: 684 ; GREEDY-NEXT: successors: %bb.1(0x40000000), %bb.2(0x40000000) 685 ; GREEDY-NEXT: liveins: $sgpr0, $sgpr1, $sgpr2 686 ; GREEDY-NEXT: {{ $}} 687 ; GREEDY-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 688 ; GREEDY-NEXT: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1 689 ; GREEDY-NEXT: [[COPY2:%[0-9]+]]:sgpr(s32) = COPY $sgpr2 690 ; GREEDY-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 0 691 ; GREEDY-NEXT: [[ICMP:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(eq), [[COPY]](s32), [[C]] 692 ; GREEDY-NEXT: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[ICMP]](s32) 693 ; GREEDY-NEXT: [[ICMP1:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(eq), [[COPY2]](s32), [[C]] 694 ; GREEDY-NEXT: [[TRUNC1:%[0-9]+]]:sgpr(s1) = G_TRUNC [[ICMP1]](s32) 695 ; GREEDY-NEXT: [[ZEXT:%[0-9]+]]:sgpr(s32) = G_ZEXT [[TRUNC1]](s1) 696 ; GREEDY-NEXT: [[ANYEXT:%[0-9]+]]:sgpr(s32) = G_ANYEXT [[TRUNC]](s1) 697 ; GREEDY-NEXT: G_BRCOND [[ZEXT]](s32), %bb.1 698 ; GREEDY-NEXT: G_BR %bb.2 699 ; GREEDY-NEXT: {{ $}} 700 ; GREEDY-NEXT: bb.1: 701 ; GREEDY-NEXT: successors: %bb.2(0x80000000) 702 ; GREEDY-NEXT: {{ $}} 703 ; GREEDY-NEXT: [[ICMP2:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(eq), [[COPY1]](s32), [[C]] 704 ; GREEDY-NEXT: [[TRUNC2:%[0-9]+]]:sgpr(s1) = G_TRUNC [[ICMP2]](s32) 705 ; GREEDY-NEXT: [[ANYEXT1:%[0-9]+]]:sgpr(s32) = G_ANYEXT [[TRUNC2]](s1) 706 ; GREEDY-NEXT: G_BR %bb.2 707 ; GREEDY-NEXT: {{ $}} 708 ; GREEDY-NEXT: bb.2: 709 ; GREEDY-NEXT: [[PHI:%[0-9]+]]:sgpr(s32) = G_PHI [[ANYEXT]](s32), %bb.0, [[ANYEXT1]](s32), %bb.1 710 ; GREEDY-NEXT: [[TRUNC3:%[0-9]+]]:sgpr(s1) = G_TRUNC [[PHI]](s32) 711 ; GREEDY-NEXT: [[ZEXT1:%[0-9]+]]:sgpr(s32) = G_ZEXT [[TRUNC3]](s1) 712 ; GREEDY-NEXT: [[SELECT:%[0-9]+]]:sgpr(s32) = G_SELECT [[ZEXT1]](s32), [[C]], [[COPY]] 713 ; GREEDY-NEXT: S_SETPC_B64 undef $sgpr30_sgpr31, implicit [[SELECT]](s32) 714 bb.0: 715 successors: %bb.1, %bb.2 716 liveins: $sgpr0, $sgpr1, $sgpr2 717 718 %0:_(s32) = COPY $sgpr0 719 %1:_(s32) = COPY $sgpr1 720 %2:_(s32) = COPY $sgpr2 721 %3:_(s32) = G_CONSTANT i32 0 722 %4:_(s1) = G_ICMP intpred(eq), %0, %3 723 %5:_(s1) = G_ICMP intpred(eq), %2, %3 724 G_BRCOND %5, %bb.1 725 G_BR %bb.2 726 727 bb.1: 728 successors: %bb.2 729 730 %6:_(s1) = G_ICMP intpred(eq), %1, %3 731 G_BR %bb.2 732 733 bb.2: 734 %7:_(s1) = G_PHI %4, %bb.0, %6, %bb.1 735 %8:_(s32) = G_SELECT %7, %3, %0 736 S_SETPC_B64 undef $sgpr30_sgpr31, implicit %8 737 738... 739 740--- 741name: phi_s1_scc_scc_scc_sbranch 742legalized: true 743tracksRegLiveness: true 744 745body: | 746 ; FAST-LABEL: name: phi_s1_scc_scc_scc_sbranch 747 ; FAST: bb.0: 748 ; FAST-NEXT: successors: %bb.1(0x40000000), %bb.3(0x40000000) 749 ; FAST-NEXT: liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3 750 ; FAST-NEXT: {{ $}} 751 ; FAST-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 752 ; FAST-NEXT: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1 753 ; FAST-NEXT: [[COPY2:%[0-9]+]]:sgpr(s32) = COPY $sgpr2 754 ; FAST-NEXT: [[COPY3:%[0-9]+]]:sgpr(s32) = COPY $sgpr3 755 ; FAST-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 0 756 ; FAST-NEXT: [[ICMP:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(eq), [[COPY]](s32), [[COPY3]] 757 ; FAST-NEXT: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[ICMP]](s32) 758 ; FAST-NEXT: [[ICMP1:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(eq), [[COPY2]](s32), [[COPY3]] 759 ; FAST-NEXT: [[TRUNC1:%[0-9]+]]:sgpr(s1) = G_TRUNC [[ICMP1]](s32) 760 ; FAST-NEXT: [[ZEXT:%[0-9]+]]:sgpr(s32) = G_ZEXT [[TRUNC1]](s1) 761 ; FAST-NEXT: [[ANYEXT:%[0-9]+]]:sgpr(s32) = G_ANYEXT [[TRUNC]](s1) 762 ; FAST-NEXT: G_BRCOND [[ZEXT]](s32), %bb.3 763 ; FAST-NEXT: G_BR %bb.1 764 ; FAST-NEXT: {{ $}} 765 ; FAST-NEXT: bb.1: 766 ; FAST-NEXT: successors: %bb.2(0x40000000), %bb.3(0x40000000) 767 ; FAST-NEXT: {{ $}} 768 ; FAST-NEXT: [[C1:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 99 769 ; FAST-NEXT: [[C2:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 888 770 ; FAST-NEXT: [[ICMP2:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(eq), [[COPY1]](s32), [[C1]] 771 ; FAST-NEXT: [[TRUNC2:%[0-9]+]]:sgpr(s1) = G_TRUNC [[ICMP2]](s32) 772 ; FAST-NEXT: [[ICMP3:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(eq), [[COPY1]](s32), [[C2]] 773 ; FAST-NEXT: [[TRUNC3:%[0-9]+]]:sgpr(s1) = G_TRUNC [[ICMP3]](s32) 774 ; FAST-NEXT: [[ZEXT1:%[0-9]+]]:sgpr(s32) = G_ZEXT [[TRUNC3]](s1) 775 ; FAST-NEXT: [[ANYEXT1:%[0-9]+]]:sgpr(s32) = G_ANYEXT [[TRUNC2]](s1) 776 ; FAST-NEXT: G_BRCOND [[ZEXT1]](s32), %bb.3 777 ; FAST-NEXT: G_BR %bb.2 778 ; FAST-NEXT: {{ $}} 779 ; FAST-NEXT: bb.2: 780 ; FAST-NEXT: successors: %bb.3(0x80000000) 781 ; FAST-NEXT: {{ $}} 782 ; FAST-NEXT: [[C3:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 123 783 ; FAST-NEXT: [[ICMP4:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(eq), [[COPY2]](s32), [[C3]] 784 ; FAST-NEXT: [[TRUNC4:%[0-9]+]]:sgpr(s1) = G_TRUNC [[ICMP4]](s32) 785 ; FAST-NEXT: [[ANYEXT2:%[0-9]+]]:sgpr(s32) = G_ANYEXT [[TRUNC4]](s1) 786 ; FAST-NEXT: G_BR %bb.3 787 ; FAST-NEXT: {{ $}} 788 ; FAST-NEXT: bb.3: 789 ; FAST-NEXT: [[PHI:%[0-9]+]]:sgpr(s32) = G_PHI [[ANYEXT]](s32), %bb.0, [[ANYEXT1]](s32), %bb.1, [[ANYEXT2]](s32), %bb.2 790 ; FAST-NEXT: [[TRUNC5:%[0-9]+]]:sgpr(s1) = G_TRUNC [[PHI]](s32) 791 ; FAST-NEXT: [[ZEXT2:%[0-9]+]]:sgpr(s32) = G_ZEXT [[TRUNC5]](s1) 792 ; FAST-NEXT: [[SELECT:%[0-9]+]]:sgpr(s32) = G_SELECT [[ZEXT2]](s32), [[COPY]], [[COPY1]] 793 ; FAST-NEXT: S_SETPC_B64 undef $sgpr30_sgpr31, implicit [[SELECT]](s32) 794 ; GREEDY-LABEL: name: phi_s1_scc_scc_scc_sbranch 795 ; GREEDY: bb.0: 796 ; GREEDY-NEXT: successors: %bb.1(0x40000000), %bb.3(0x40000000) 797 ; GREEDY-NEXT: liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3 798 ; GREEDY-NEXT: {{ $}} 799 ; GREEDY-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 800 ; GREEDY-NEXT: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1 801 ; GREEDY-NEXT: [[COPY2:%[0-9]+]]:sgpr(s32) = COPY $sgpr2 802 ; GREEDY-NEXT: [[COPY3:%[0-9]+]]:sgpr(s32) = COPY $sgpr3 803 ; GREEDY-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 0 804 ; GREEDY-NEXT: [[ICMP:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(eq), [[COPY]](s32), [[COPY3]] 805 ; GREEDY-NEXT: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[ICMP]](s32) 806 ; GREEDY-NEXT: [[ICMP1:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(eq), [[COPY2]](s32), [[COPY3]] 807 ; GREEDY-NEXT: [[TRUNC1:%[0-9]+]]:sgpr(s1) = G_TRUNC [[ICMP1]](s32) 808 ; GREEDY-NEXT: [[ZEXT:%[0-9]+]]:sgpr(s32) = G_ZEXT [[TRUNC1]](s1) 809 ; GREEDY-NEXT: [[ANYEXT:%[0-9]+]]:sgpr(s32) = G_ANYEXT [[TRUNC]](s1) 810 ; GREEDY-NEXT: G_BRCOND [[ZEXT]](s32), %bb.3 811 ; GREEDY-NEXT: G_BR %bb.1 812 ; GREEDY-NEXT: {{ $}} 813 ; GREEDY-NEXT: bb.1: 814 ; GREEDY-NEXT: successors: %bb.2(0x40000000), %bb.3(0x40000000) 815 ; GREEDY-NEXT: {{ $}} 816 ; GREEDY-NEXT: [[C1:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 99 817 ; GREEDY-NEXT: [[C2:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 888 818 ; GREEDY-NEXT: [[ICMP2:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(eq), [[COPY1]](s32), [[C1]] 819 ; GREEDY-NEXT: [[TRUNC2:%[0-9]+]]:sgpr(s1) = G_TRUNC [[ICMP2]](s32) 820 ; GREEDY-NEXT: [[ICMP3:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(eq), [[COPY1]](s32), [[C2]] 821 ; GREEDY-NEXT: [[TRUNC3:%[0-9]+]]:sgpr(s1) = G_TRUNC [[ICMP3]](s32) 822 ; GREEDY-NEXT: [[ZEXT1:%[0-9]+]]:sgpr(s32) = G_ZEXT [[TRUNC3]](s1) 823 ; GREEDY-NEXT: [[ANYEXT1:%[0-9]+]]:sgpr(s32) = G_ANYEXT [[TRUNC2]](s1) 824 ; GREEDY-NEXT: G_BRCOND [[ZEXT1]](s32), %bb.3 825 ; GREEDY-NEXT: G_BR %bb.2 826 ; GREEDY-NEXT: {{ $}} 827 ; GREEDY-NEXT: bb.2: 828 ; GREEDY-NEXT: successors: %bb.3(0x80000000) 829 ; GREEDY-NEXT: {{ $}} 830 ; GREEDY-NEXT: [[C3:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 123 831 ; GREEDY-NEXT: [[ICMP4:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(eq), [[COPY2]](s32), [[C3]] 832 ; GREEDY-NEXT: [[TRUNC4:%[0-9]+]]:sgpr(s1) = G_TRUNC [[ICMP4]](s32) 833 ; GREEDY-NEXT: [[ANYEXT2:%[0-9]+]]:sgpr(s32) = G_ANYEXT [[TRUNC4]](s1) 834 ; GREEDY-NEXT: G_BR %bb.3 835 ; GREEDY-NEXT: {{ $}} 836 ; GREEDY-NEXT: bb.3: 837 ; GREEDY-NEXT: [[PHI:%[0-9]+]]:sgpr(s32) = G_PHI [[ANYEXT]](s32), %bb.0, [[ANYEXT1]](s32), %bb.1, [[ANYEXT2]](s32), %bb.2 838 ; GREEDY-NEXT: [[TRUNC5:%[0-9]+]]:sgpr(s1) = G_TRUNC [[PHI]](s32) 839 ; GREEDY-NEXT: [[ZEXT2:%[0-9]+]]:sgpr(s32) = G_ZEXT [[TRUNC5]](s1) 840 ; GREEDY-NEXT: [[SELECT:%[0-9]+]]:sgpr(s32) = G_SELECT [[ZEXT2]](s32), [[COPY]], [[COPY1]] 841 ; GREEDY-NEXT: S_SETPC_B64 undef $sgpr30_sgpr31, implicit [[SELECT]](s32) 842 bb.0: 843 successors: %bb.1, %bb.3 844 liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3 845 846 %0:_(s32) = COPY $sgpr0 847 %1:_(s32) = COPY $sgpr1 848 %2:_(s32) = COPY $sgpr2 849 %3:_(s32) = COPY $sgpr3 850 %4:_(s32) = G_CONSTANT i32 0 851 %5:_(s1) = G_ICMP intpred(eq), %0, %3 852 %6:_(s1) = G_ICMP intpred(eq), %2, %3 853 G_BRCOND %6, %bb.3 854 G_BR %bb.1 855 856 bb.1: 857 successors: %bb.2, %bb.3 858 859 %7:_(s32) = G_CONSTANT i32 99 860 %8:_(s32) = G_CONSTANT i32 888 861 %9:_(s1) = G_ICMP intpred(eq), %1, %7 862 %10:_(s1) = G_ICMP intpred(eq), %1, %8 863 G_BRCOND %10, %bb.3 864 G_BR %bb.2 865 866 bb.2: 867 successors: %bb.3 868 869 %11:_(s32) = G_CONSTANT i32 123 870 %12:_(s1) = G_ICMP intpred(eq), %2, %11 871 G_BR %bb.3 872 873 bb.3: 874 %13:_(s1) = G_PHI %5, %bb.0, %9, %bb.1, %12, %bb.2 875 %14:_(s32) = G_SELECT %13, %0, %1 876 S_SETPC_B64 undef $sgpr30_sgpr31, implicit %14 877 878... 879 880--- 881name: phi_s1_scc_vcc_sbranch 882legalized: true 883tracksRegLiveness: true 884 885body: | 886 ; FAST-LABEL: name: phi_s1_scc_vcc_sbranch 887 ; FAST: bb.0: 888 ; FAST-NEXT: successors: %bb.1(0x40000000), %bb.2(0x40000000) 889 ; FAST-NEXT: liveins: $sgpr0, $sgpr1, $vgpr0 890 ; FAST-NEXT: {{ $}} 891 ; FAST-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 892 ; FAST-NEXT: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr0 893 ; FAST-NEXT: [[COPY2:%[0-9]+]]:sgpr(s32) = COPY $sgpr1 894 ; FAST-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 0 895 ; FAST-NEXT: [[ICMP:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(eq), [[COPY]](s32), [[C]] 896 ; FAST-NEXT: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[ICMP]](s32) 897 ; FAST-NEXT: [[ICMP1:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(eq), [[COPY2]](s32), [[C]] 898 ; FAST-NEXT: [[TRUNC1:%[0-9]+]]:sgpr(s1) = G_TRUNC [[ICMP1]](s32) 899 ; FAST-NEXT: [[ZEXT:%[0-9]+]]:sgpr(s32) = G_ZEXT [[TRUNC1]](s1) 900 ; FAST-NEXT: [[COPY3:%[0-9]+]]:vcc(s1) = COPY [[TRUNC]](s1) 901 ; FAST-NEXT: G_BRCOND [[ZEXT]](s32), %bb.1 902 ; FAST-NEXT: G_BR %bb.2 903 ; FAST-NEXT: {{ $}} 904 ; FAST-NEXT: bb.1: 905 ; FAST-NEXT: successors: %bb.2(0x80000000) 906 ; FAST-NEXT: {{ $}} 907 ; FAST-NEXT: [[COPY4:%[0-9]+]]:vgpr(s32) = COPY [[C]](s32) 908 ; FAST-NEXT: [[ICMP2:%[0-9]+]]:vcc(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[COPY4]] 909 ; FAST-NEXT: G_BR %bb.2 910 ; FAST-NEXT: {{ $}} 911 ; FAST-NEXT: bb.2: 912 ; FAST-NEXT: [[PHI:%[0-9]+]]:vcc(s1) = G_PHI [[COPY3]](s1), %bb.0, [[ICMP2]](s1), %bb.1 913 ; FAST-NEXT: [[COPY5:%[0-9]+]]:vgpr(s32) = COPY [[C]](s32) 914 ; FAST-NEXT: [[COPY6:%[0-9]+]]:vgpr(s32) = COPY [[COPY]](s32) 915 ; FAST-NEXT: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[PHI]](s1), [[COPY5]], [[COPY6]] 916 ; FAST-NEXT: S_SETPC_B64 undef $sgpr30_sgpr31, implicit [[SELECT]](s32) 917 ; GREEDY-LABEL: name: phi_s1_scc_vcc_sbranch 918 ; GREEDY: bb.0: 919 ; GREEDY-NEXT: successors: %bb.1(0x40000000), %bb.2(0x40000000) 920 ; GREEDY-NEXT: liveins: $sgpr0, $sgpr1, $vgpr0 921 ; GREEDY-NEXT: {{ $}} 922 ; GREEDY-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 923 ; GREEDY-NEXT: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr0 924 ; GREEDY-NEXT: [[COPY2:%[0-9]+]]:sgpr(s32) = COPY $sgpr1 925 ; GREEDY-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 0 926 ; GREEDY-NEXT: [[ICMP:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(eq), [[COPY]](s32), [[C]] 927 ; GREEDY-NEXT: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[ICMP]](s32) 928 ; GREEDY-NEXT: [[ICMP1:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(eq), [[COPY2]](s32), [[C]] 929 ; GREEDY-NEXT: [[TRUNC1:%[0-9]+]]:sgpr(s1) = G_TRUNC [[ICMP1]](s32) 930 ; GREEDY-NEXT: [[ZEXT:%[0-9]+]]:sgpr(s32) = G_ZEXT [[TRUNC1]](s1) 931 ; GREEDY-NEXT: [[COPY3:%[0-9]+]]:vcc(s1) = COPY [[TRUNC]](s1) 932 ; GREEDY-NEXT: G_BRCOND [[ZEXT]](s32), %bb.1 933 ; GREEDY-NEXT: G_BR %bb.2 934 ; GREEDY-NEXT: {{ $}} 935 ; GREEDY-NEXT: bb.1: 936 ; GREEDY-NEXT: successors: %bb.2(0x80000000) 937 ; GREEDY-NEXT: {{ $}} 938 ; GREEDY-NEXT: [[COPY4:%[0-9]+]]:vgpr(s32) = COPY [[C]](s32) 939 ; GREEDY-NEXT: [[ICMP2:%[0-9]+]]:vcc(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[COPY4]] 940 ; GREEDY-NEXT: G_BR %bb.2 941 ; GREEDY-NEXT: {{ $}} 942 ; GREEDY-NEXT: bb.2: 943 ; GREEDY-NEXT: [[PHI:%[0-9]+]]:vcc(s1) = G_PHI [[COPY3]](s1), %bb.0, [[ICMP2]](s1), %bb.1 944 ; GREEDY-NEXT: [[COPY5:%[0-9]+]]:vgpr(s32) = COPY [[C]](s32) 945 ; GREEDY-NEXT: [[COPY6:%[0-9]+]]:vgpr(s32) = COPY [[COPY]](s32) 946 ; GREEDY-NEXT: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[PHI]](s1), [[COPY5]], [[COPY6]] 947 ; GREEDY-NEXT: S_SETPC_B64 undef $sgpr30_sgpr31, implicit [[SELECT]](s32) 948 bb.0: 949 successors: %bb.1, %bb.2 950 liveins: $sgpr0, $sgpr1, $vgpr0 951 952 %0:_(s32) = COPY $sgpr0 953 %1:_(s32) = COPY $vgpr0 954 %2:_(s32) = COPY $sgpr1 955 %3:_(s32) = G_CONSTANT i32 0 956 %4:_(s1) = G_ICMP intpred(eq), %0, %3 957 %5:_(s1) = G_ICMP intpred(eq), %2, %3 958 G_BRCOND %5, %bb.1 959 G_BR %bb.2 960 961 bb.1: 962 successors: %bb.2 963 964 %6:_(s1) = G_ICMP intpred(eq), %1, %3 965 G_BR %bb.2 966 967 bb.2: 968 %7:_(s1) = G_PHI %4, %bb.0, %6, %bb.1 969 %8:_(s32) = G_SELECT %7, %3, %0 970 S_SETPC_B64 undef $sgpr30_sgpr31, implicit %8 971 972... 973 974--- 975name: phi_s1_vcc_scc_sbranch 976legalized: true 977tracksRegLiveness: true 978 979body: | 980 ; FAST-LABEL: name: phi_s1_vcc_scc_sbranch 981 ; FAST: bb.0: 982 ; FAST-NEXT: successors: %bb.1(0x40000000), %bb.2(0x40000000) 983 ; FAST-NEXT: liveins: $vgpr0, $sgpr0, $sgpr1 984 ; FAST-NEXT: {{ $}} 985 ; FAST-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0 986 ; FAST-NEXT: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 987 ; FAST-NEXT: [[COPY2:%[0-9]+]]:sgpr(s32) = COPY $sgpr1 988 ; FAST-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 0 989 ; FAST-NEXT: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY [[C]](s32) 990 ; FAST-NEXT: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(eq), [[COPY]](s32), [[COPY3]] 991 ; FAST-NEXT: [[ICMP1:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(eq), [[COPY2]](s32), [[C]] 992 ; FAST-NEXT: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[ICMP1]](s32) 993 ; FAST-NEXT: [[ZEXT:%[0-9]+]]:sgpr(s32) = G_ZEXT [[TRUNC]](s1) 994 ; FAST-NEXT: G_BRCOND [[ZEXT]](s32), %bb.1 995 ; FAST-NEXT: G_BR %bb.2 996 ; FAST-NEXT: {{ $}} 997 ; FAST-NEXT: bb.1: 998 ; FAST-NEXT: successors: %bb.2(0x80000000) 999 ; FAST-NEXT: {{ $}} 1000 ; FAST-NEXT: [[ICMP2:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(eq), [[COPY1]](s32), [[C]] 1001 ; FAST-NEXT: [[TRUNC1:%[0-9]+]]:sgpr(s1) = G_TRUNC [[ICMP2]](s32) 1002 ; FAST-NEXT: [[COPY4:%[0-9]+]]:vcc(s1) = COPY [[TRUNC1]](s1) 1003 ; FAST-NEXT: G_BR %bb.2 1004 ; FAST-NEXT: {{ $}} 1005 ; FAST-NEXT: bb.2: 1006 ; FAST-NEXT: [[PHI:%[0-9]+]]:vcc(s1) = G_PHI [[ICMP]](s1), %bb.0, [[COPY4]](s1), %bb.1 1007 ; FAST-NEXT: [[COPY5:%[0-9]+]]:vgpr(s32) = COPY [[C]](s32) 1008 ; FAST-NEXT: [[COPY6:%[0-9]+]]:vgpr(s32) = COPY [[COPY1]](s32) 1009 ; FAST-NEXT: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[PHI]](s1), [[COPY5]], [[COPY6]] 1010 ; FAST-NEXT: S_SETPC_B64 undef $sgpr30_sgpr31, implicit [[SELECT]](s32) 1011 ; GREEDY-LABEL: name: phi_s1_vcc_scc_sbranch 1012 ; GREEDY: bb.0: 1013 ; GREEDY-NEXT: successors: %bb.1(0x40000000), %bb.2(0x40000000) 1014 ; GREEDY-NEXT: liveins: $vgpr0, $sgpr0, $sgpr1 1015 ; GREEDY-NEXT: {{ $}} 1016 ; GREEDY-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0 1017 ; GREEDY-NEXT: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 1018 ; GREEDY-NEXT: [[COPY2:%[0-9]+]]:sgpr(s32) = COPY $sgpr1 1019 ; GREEDY-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 0 1020 ; GREEDY-NEXT: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY [[C]](s32) 1021 ; GREEDY-NEXT: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(eq), [[COPY]](s32), [[COPY3]] 1022 ; GREEDY-NEXT: [[ICMP1:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(eq), [[COPY2]](s32), [[C]] 1023 ; GREEDY-NEXT: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[ICMP1]](s32) 1024 ; GREEDY-NEXT: [[ZEXT:%[0-9]+]]:sgpr(s32) = G_ZEXT [[TRUNC]](s1) 1025 ; GREEDY-NEXT: G_BRCOND [[ZEXT]](s32), %bb.1 1026 ; GREEDY-NEXT: G_BR %bb.2 1027 ; GREEDY-NEXT: {{ $}} 1028 ; GREEDY-NEXT: bb.1: 1029 ; GREEDY-NEXT: successors: %bb.2(0x80000000) 1030 ; GREEDY-NEXT: {{ $}} 1031 ; GREEDY-NEXT: [[ICMP2:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(eq), [[COPY1]](s32), [[C]] 1032 ; GREEDY-NEXT: [[TRUNC1:%[0-9]+]]:sgpr(s1) = G_TRUNC [[ICMP2]](s32) 1033 ; GREEDY-NEXT: [[COPY4:%[0-9]+]]:vcc(s1) = COPY [[TRUNC1]](s1) 1034 ; GREEDY-NEXT: G_BR %bb.2 1035 ; GREEDY-NEXT: {{ $}} 1036 ; GREEDY-NEXT: bb.2: 1037 ; GREEDY-NEXT: [[PHI:%[0-9]+]]:vcc(s1) = G_PHI [[ICMP]](s1), %bb.0, [[COPY4]](s1), %bb.1 1038 ; GREEDY-NEXT: [[COPY5:%[0-9]+]]:vgpr(s32) = COPY [[C]](s32) 1039 ; GREEDY-NEXT: [[COPY6:%[0-9]+]]:vgpr(s32) = COPY [[COPY1]](s32) 1040 ; GREEDY-NEXT: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[PHI]](s1), [[COPY5]], [[COPY6]] 1041 ; GREEDY-NEXT: S_SETPC_B64 undef $sgpr30_sgpr31, implicit [[SELECT]](s32) 1042 bb.0: 1043 successors: %bb.1, %bb.2 1044 liveins: $vgpr0, $sgpr0, $sgpr1 1045 1046 %0:_(s32) = COPY $vgpr0 1047 %1:_(s32) = COPY $sgpr0 1048 %2:_(s32) = COPY $sgpr1 1049 %3:_(s32) = G_CONSTANT i32 0 1050 %4:_(s1) = G_ICMP intpred(eq), %0, %3 1051 %5:_(s1) = G_ICMP intpred(eq), %2, %3 1052 G_BRCOND %5, %bb.1 1053 G_BR %bb.2 1054 1055 bb.1: 1056 successors: %bb.2 1057 1058 %6:_(s1) = G_ICMP intpred(eq), %1, %3 1059 G_BR %bb.2 1060 1061 bb.2: 1062 %7:_(s1) = G_PHI %4, %bb.0, %6, %bb.1 1063 %8:_(s32) = G_SELECT %7, %3, %1 1064 S_SETPC_B64 undef $sgpr30_sgpr31, implicit %8 1065 1066... 1067 1068--- 1069name: phi_s1_vcc_vcc_sbranch 1070legalized: true 1071tracksRegLiveness: true 1072 1073body: | 1074 ; FAST-LABEL: name: phi_s1_vcc_vcc_sbranch 1075 ; FAST: bb.0: 1076 ; FAST-NEXT: successors: %bb.1(0x40000000), %bb.2(0x40000000) 1077 ; FAST-NEXT: liveins: $vgpr0, $vgpr1, $sgpr0 1078 ; FAST-NEXT: {{ $}} 1079 ; FAST-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0 1080 ; FAST-NEXT: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr1 1081 ; FAST-NEXT: [[COPY2:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 1082 ; FAST-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 0 1083 ; FAST-NEXT: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY [[C]](s32) 1084 ; FAST-NEXT: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(eq), [[COPY]](s32), [[COPY3]] 1085 ; FAST-NEXT: [[ICMP1:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(eq), [[COPY2]](s32), [[C]] 1086 ; FAST-NEXT: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[ICMP1]](s32) 1087 ; FAST-NEXT: [[ZEXT:%[0-9]+]]:sgpr(s32) = G_ZEXT [[TRUNC]](s1) 1088 ; FAST-NEXT: G_BRCOND [[ZEXT]](s32), %bb.1 1089 ; FAST-NEXT: G_BR %bb.2 1090 ; FAST-NEXT: {{ $}} 1091 ; FAST-NEXT: bb.1: 1092 ; FAST-NEXT: successors: %bb.2(0x80000000) 1093 ; FAST-NEXT: {{ $}} 1094 ; FAST-NEXT: [[COPY4:%[0-9]+]]:vgpr(s32) = COPY [[C]](s32) 1095 ; FAST-NEXT: [[ICMP2:%[0-9]+]]:vcc(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[COPY4]] 1096 ; FAST-NEXT: G_BR %bb.2 1097 ; FAST-NEXT: {{ $}} 1098 ; FAST-NEXT: bb.2: 1099 ; FAST-NEXT: [[PHI:%[0-9]+]]:vcc(s1) = G_PHI [[ICMP]](s1), %bb.0, [[ICMP2]](s1), %bb.1 1100 ; FAST-NEXT: [[COPY5:%[0-9]+]]:vgpr(s32) = COPY [[C]](s32) 1101 ; FAST-NEXT: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[PHI]](s1), [[COPY5]], [[COPY]] 1102 ; FAST-NEXT: S_SETPC_B64 undef $sgpr30_sgpr31, implicit [[SELECT]](s32) 1103 ; GREEDY-LABEL: name: phi_s1_vcc_vcc_sbranch 1104 ; GREEDY: bb.0: 1105 ; GREEDY-NEXT: successors: %bb.1(0x40000000), %bb.2(0x40000000) 1106 ; GREEDY-NEXT: liveins: $vgpr0, $vgpr1, $sgpr0 1107 ; GREEDY-NEXT: {{ $}} 1108 ; GREEDY-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0 1109 ; GREEDY-NEXT: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr1 1110 ; GREEDY-NEXT: [[COPY2:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 1111 ; GREEDY-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 0 1112 ; GREEDY-NEXT: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY [[C]](s32) 1113 ; GREEDY-NEXT: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(eq), [[COPY]](s32), [[COPY3]] 1114 ; GREEDY-NEXT: [[ICMP1:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(eq), [[COPY2]](s32), [[C]] 1115 ; GREEDY-NEXT: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[ICMP1]](s32) 1116 ; GREEDY-NEXT: [[ZEXT:%[0-9]+]]:sgpr(s32) = G_ZEXT [[TRUNC]](s1) 1117 ; GREEDY-NEXT: G_BRCOND [[ZEXT]](s32), %bb.1 1118 ; GREEDY-NEXT: G_BR %bb.2 1119 ; GREEDY-NEXT: {{ $}} 1120 ; GREEDY-NEXT: bb.1: 1121 ; GREEDY-NEXT: successors: %bb.2(0x80000000) 1122 ; GREEDY-NEXT: {{ $}} 1123 ; GREEDY-NEXT: [[COPY4:%[0-9]+]]:vgpr(s32) = COPY [[C]](s32) 1124 ; GREEDY-NEXT: [[ICMP2:%[0-9]+]]:vcc(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[COPY4]] 1125 ; GREEDY-NEXT: G_BR %bb.2 1126 ; GREEDY-NEXT: {{ $}} 1127 ; GREEDY-NEXT: bb.2: 1128 ; GREEDY-NEXT: [[PHI:%[0-9]+]]:vcc(s1) = G_PHI [[ICMP]](s1), %bb.0, [[ICMP2]](s1), %bb.1 1129 ; GREEDY-NEXT: [[COPY5:%[0-9]+]]:vgpr(s32) = COPY [[C]](s32) 1130 ; GREEDY-NEXT: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[PHI]](s1), [[COPY5]], [[COPY]] 1131 ; GREEDY-NEXT: S_SETPC_B64 undef $sgpr30_sgpr31, implicit [[SELECT]](s32) 1132 bb.0: 1133 successors: %bb.1, %bb.2 1134 liveins: $vgpr0, $vgpr1, $sgpr0 1135 1136 %0:_(s32) = COPY $vgpr0 1137 %1:_(s32) = COPY $vgpr1 1138 %2:_(s32) = COPY $sgpr0 1139 %3:_(s32) = G_CONSTANT i32 0 1140 %4:_(s1) = G_ICMP intpred(eq), %0, %3 1141 %5:_(s1) = G_ICMP intpred(eq), %2, %3 1142 G_BRCOND %5, %bb.1 1143 G_BR %bb.2 1144 1145 bb.1: 1146 successors: %bb.2 1147 1148 %6:_(s1) = G_ICMP intpred(eq), %1, %3 1149 G_BR %bb.2 1150 1151 bb.2: 1152 %7:_(s1) = G_PHI %4, %bb.0, %6, %bb.1 1153 %8:_(s32) = G_SELECT %7, %3, %0 1154 S_SETPC_B64 undef $sgpr30_sgpr31, implicit %8 1155 1156... 1157 1158--- 1159name: phi_s1_s_scc_sbranch 1160legalized: true 1161tracksRegLiveness: true 1162 1163body: | 1164 ; FAST-LABEL: name: phi_s1_s_scc_sbranch 1165 ; FAST: bb.0: 1166 ; FAST-NEXT: successors: %bb.1(0x40000000), %bb.2(0x40000000) 1167 ; FAST-NEXT: liveins: $sgpr0, $sgpr1, $sgpr2 1168 ; FAST-NEXT: {{ $}} 1169 ; FAST-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 1170 ; FAST-NEXT: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1 1171 ; FAST-NEXT: [[COPY2:%[0-9]+]]:sgpr(s32) = COPY $sgpr2 1172 ; FAST-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 0 1173 ; FAST-NEXT: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[COPY]](s32) 1174 ; FAST-NEXT: [[ICMP:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(eq), [[COPY2]](s32), [[C]] 1175 ; FAST-NEXT: [[TRUNC1:%[0-9]+]]:sgpr(s1) = G_TRUNC [[ICMP]](s32) 1176 ; FAST-NEXT: [[ZEXT:%[0-9]+]]:sgpr(s32) = G_ZEXT [[TRUNC1]](s1) 1177 ; FAST-NEXT: [[ANYEXT:%[0-9]+]]:sgpr(s32) = G_ANYEXT [[TRUNC]](s1) 1178 ; FAST-NEXT: G_BRCOND [[ZEXT]](s32), %bb.1 1179 ; FAST-NEXT: G_BR %bb.2 1180 ; FAST-NEXT: {{ $}} 1181 ; FAST-NEXT: bb.1: 1182 ; FAST-NEXT: successors: %bb.2(0x80000000) 1183 ; FAST-NEXT: {{ $}} 1184 ; FAST-NEXT: [[ICMP1:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(eq), [[COPY1]](s32), [[C]] 1185 ; FAST-NEXT: [[TRUNC2:%[0-9]+]]:sgpr(s1) = G_TRUNC [[ICMP1]](s32) 1186 ; FAST-NEXT: [[ANYEXT1:%[0-9]+]]:sgpr(s32) = G_ANYEXT [[TRUNC2]](s1) 1187 ; FAST-NEXT: G_BR %bb.2 1188 ; FAST-NEXT: {{ $}} 1189 ; FAST-NEXT: bb.2: 1190 ; FAST-NEXT: [[PHI:%[0-9]+]]:sgpr(s32) = G_PHI [[ANYEXT]](s32), %bb.0, [[ANYEXT1]](s32), %bb.1 1191 ; FAST-NEXT: [[TRUNC3:%[0-9]+]]:sgpr(s1) = G_TRUNC [[PHI]](s32) 1192 ; FAST-NEXT: [[ZEXT1:%[0-9]+]]:sgpr(s32) = G_ZEXT [[TRUNC3]](s1) 1193 ; FAST-NEXT: [[SELECT:%[0-9]+]]:sgpr(s32) = G_SELECT [[ZEXT1]](s32), [[C]], [[COPY]] 1194 ; FAST-NEXT: S_SETPC_B64 undef $sgpr30_sgpr31, implicit [[SELECT]](s32) 1195 ; GREEDY-LABEL: name: phi_s1_s_scc_sbranch 1196 ; GREEDY: bb.0: 1197 ; GREEDY-NEXT: successors: %bb.1(0x40000000), %bb.2(0x40000000) 1198 ; GREEDY-NEXT: liveins: $sgpr0, $sgpr1, $sgpr2 1199 ; GREEDY-NEXT: {{ $}} 1200 ; GREEDY-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 1201 ; GREEDY-NEXT: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1 1202 ; GREEDY-NEXT: [[COPY2:%[0-9]+]]:sgpr(s32) = COPY $sgpr2 1203 ; GREEDY-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 0 1204 ; GREEDY-NEXT: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[COPY]](s32) 1205 ; GREEDY-NEXT: [[ICMP:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(eq), [[COPY2]](s32), [[C]] 1206 ; GREEDY-NEXT: [[TRUNC1:%[0-9]+]]:sgpr(s1) = G_TRUNC [[ICMP]](s32) 1207 ; GREEDY-NEXT: [[ZEXT:%[0-9]+]]:sgpr(s32) = G_ZEXT [[TRUNC1]](s1) 1208 ; GREEDY-NEXT: [[ANYEXT:%[0-9]+]]:sgpr(s32) = G_ANYEXT [[TRUNC]](s1) 1209 ; GREEDY-NEXT: G_BRCOND [[ZEXT]](s32), %bb.1 1210 ; GREEDY-NEXT: G_BR %bb.2 1211 ; GREEDY-NEXT: {{ $}} 1212 ; GREEDY-NEXT: bb.1: 1213 ; GREEDY-NEXT: successors: %bb.2(0x80000000) 1214 ; GREEDY-NEXT: {{ $}} 1215 ; GREEDY-NEXT: [[ICMP1:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(eq), [[COPY1]](s32), [[C]] 1216 ; GREEDY-NEXT: [[TRUNC2:%[0-9]+]]:sgpr(s1) = G_TRUNC [[ICMP1]](s32) 1217 ; GREEDY-NEXT: [[ANYEXT1:%[0-9]+]]:sgpr(s32) = G_ANYEXT [[TRUNC2]](s1) 1218 ; GREEDY-NEXT: G_BR %bb.2 1219 ; GREEDY-NEXT: {{ $}} 1220 ; GREEDY-NEXT: bb.2: 1221 ; GREEDY-NEXT: [[PHI:%[0-9]+]]:sgpr(s32) = G_PHI [[ANYEXT]](s32), %bb.0, [[ANYEXT1]](s32), %bb.1 1222 ; GREEDY-NEXT: [[TRUNC3:%[0-9]+]]:sgpr(s1) = G_TRUNC [[PHI]](s32) 1223 ; GREEDY-NEXT: [[ZEXT1:%[0-9]+]]:sgpr(s32) = G_ZEXT [[TRUNC3]](s1) 1224 ; GREEDY-NEXT: [[SELECT:%[0-9]+]]:sgpr(s32) = G_SELECT [[ZEXT1]](s32), [[C]], [[COPY]] 1225 ; GREEDY-NEXT: S_SETPC_B64 undef $sgpr30_sgpr31, implicit [[SELECT]](s32) 1226 bb.0: 1227 successors: %bb.1, %bb.2 1228 liveins: $sgpr0, $sgpr1, $sgpr2 1229 1230 %0:_(s32) = COPY $sgpr0 1231 %1:_(s32) = COPY $sgpr1 1232 %2:_(s32) = COPY $sgpr2 1233 %3:_(s32) = G_CONSTANT i32 0 1234 %4:_(s1) = G_TRUNC %0 1235 %5:_(s1) = G_ICMP intpred(eq), %2, %3 1236 G_BRCOND %5, %bb.1 1237 G_BR %bb.2 1238 1239 bb.1: 1240 successors: %bb.2 1241 1242 %6:_(s1) = G_ICMP intpred(eq), %1, %3 1243 G_BR %bb.2 1244 1245 bb.2: 1246 %7:_(s1) = G_PHI %4, %bb.0, %6, %bb.1 1247 %8:_(s32) = G_SELECT %7, %3, %0 1248 S_SETPC_B64 undef $sgpr30_sgpr31, implicit %8 1249 1250... 1251 1252--- 1253name: phi_s1_scc_s_sbranch 1254legalized: true 1255tracksRegLiveness: true 1256 1257body: | 1258 ; FAST-LABEL: name: phi_s1_scc_s_sbranch 1259 ; FAST: bb.0: 1260 ; FAST-NEXT: successors: %bb.1(0x40000000), %bb.2(0x40000000) 1261 ; FAST-NEXT: liveins: $sgpr0, $sgpr1, $sgpr2 1262 ; FAST-NEXT: {{ $}} 1263 ; FAST-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 1264 ; FAST-NEXT: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1 1265 ; FAST-NEXT: [[COPY2:%[0-9]+]]:sgpr(s32) = COPY $sgpr2 1266 ; FAST-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 0 1267 ; FAST-NEXT: [[ICMP:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(eq), [[COPY]](s32), [[C]] 1268 ; FAST-NEXT: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[ICMP]](s32) 1269 ; FAST-NEXT: [[ICMP1:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(eq), [[COPY2]](s32), [[C]] 1270 ; FAST-NEXT: [[TRUNC1:%[0-9]+]]:sgpr(s1) = G_TRUNC [[ICMP1]](s32) 1271 ; FAST-NEXT: [[ZEXT:%[0-9]+]]:sgpr(s32) = G_ZEXT [[TRUNC1]](s1) 1272 ; FAST-NEXT: [[ANYEXT:%[0-9]+]]:sgpr(s32) = G_ANYEXT [[TRUNC]](s1) 1273 ; FAST-NEXT: G_BRCOND [[ZEXT]](s32), %bb.1 1274 ; FAST-NEXT: G_BR %bb.2 1275 ; FAST-NEXT: {{ $}} 1276 ; FAST-NEXT: bb.1: 1277 ; FAST-NEXT: successors: %bb.2(0x80000000) 1278 ; FAST-NEXT: {{ $}} 1279 ; FAST-NEXT: [[TRUNC2:%[0-9]+]]:sgpr(s1) = G_TRUNC [[COPY1]](s32) 1280 ; FAST-NEXT: [[ANYEXT1:%[0-9]+]]:sgpr(s32) = G_ANYEXT [[TRUNC2]](s1) 1281 ; FAST-NEXT: G_BR %bb.2 1282 ; FAST-NEXT: {{ $}} 1283 ; FAST-NEXT: bb.2: 1284 ; FAST-NEXT: [[PHI:%[0-9]+]]:sgpr(s32) = G_PHI [[ANYEXT]](s32), %bb.0, [[ANYEXT1]](s32), %bb.1 1285 ; FAST-NEXT: [[TRUNC3:%[0-9]+]]:sgpr(s1) = G_TRUNC [[PHI]](s32) 1286 ; FAST-NEXT: [[ZEXT1:%[0-9]+]]:sgpr(s32) = G_ZEXT [[TRUNC3]](s1) 1287 ; FAST-NEXT: [[SELECT:%[0-9]+]]:sgpr(s32) = G_SELECT [[ZEXT1]](s32), [[C]], [[COPY]] 1288 ; FAST-NEXT: S_SETPC_B64 undef $sgpr30_sgpr31, implicit [[SELECT]](s32) 1289 ; GREEDY-LABEL: name: phi_s1_scc_s_sbranch 1290 ; GREEDY: bb.0: 1291 ; GREEDY-NEXT: successors: %bb.1(0x40000000), %bb.2(0x40000000) 1292 ; GREEDY-NEXT: liveins: $sgpr0, $sgpr1, $sgpr2 1293 ; GREEDY-NEXT: {{ $}} 1294 ; GREEDY-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 1295 ; GREEDY-NEXT: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1 1296 ; GREEDY-NEXT: [[COPY2:%[0-9]+]]:sgpr(s32) = COPY $sgpr2 1297 ; GREEDY-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 0 1298 ; GREEDY-NEXT: [[ICMP:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(eq), [[COPY]](s32), [[C]] 1299 ; GREEDY-NEXT: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[ICMP]](s32) 1300 ; GREEDY-NEXT: [[ICMP1:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(eq), [[COPY2]](s32), [[C]] 1301 ; GREEDY-NEXT: [[TRUNC1:%[0-9]+]]:sgpr(s1) = G_TRUNC [[ICMP1]](s32) 1302 ; GREEDY-NEXT: [[ZEXT:%[0-9]+]]:sgpr(s32) = G_ZEXT [[TRUNC1]](s1) 1303 ; GREEDY-NEXT: [[ANYEXT:%[0-9]+]]:sgpr(s32) = G_ANYEXT [[TRUNC]](s1) 1304 ; GREEDY-NEXT: G_BRCOND [[ZEXT]](s32), %bb.1 1305 ; GREEDY-NEXT: G_BR %bb.2 1306 ; GREEDY-NEXT: {{ $}} 1307 ; GREEDY-NEXT: bb.1: 1308 ; GREEDY-NEXT: successors: %bb.2(0x80000000) 1309 ; GREEDY-NEXT: {{ $}} 1310 ; GREEDY-NEXT: [[TRUNC2:%[0-9]+]]:sgpr(s1) = G_TRUNC [[COPY1]](s32) 1311 ; GREEDY-NEXT: [[ANYEXT1:%[0-9]+]]:sgpr(s32) = G_ANYEXT [[TRUNC2]](s1) 1312 ; GREEDY-NEXT: G_BR %bb.2 1313 ; GREEDY-NEXT: {{ $}} 1314 ; GREEDY-NEXT: bb.2: 1315 ; GREEDY-NEXT: [[PHI:%[0-9]+]]:sgpr(s32) = G_PHI [[ANYEXT]](s32), %bb.0, [[ANYEXT1]](s32), %bb.1 1316 ; GREEDY-NEXT: [[TRUNC3:%[0-9]+]]:sgpr(s1) = G_TRUNC [[PHI]](s32) 1317 ; GREEDY-NEXT: [[ZEXT1:%[0-9]+]]:sgpr(s32) = G_ZEXT [[TRUNC3]](s1) 1318 ; GREEDY-NEXT: [[SELECT:%[0-9]+]]:sgpr(s32) = G_SELECT [[ZEXT1]](s32), [[C]], [[COPY]] 1319 ; GREEDY-NEXT: S_SETPC_B64 undef $sgpr30_sgpr31, implicit [[SELECT]](s32) 1320 bb.0: 1321 successors: %bb.1, %bb.2 1322 liveins: $sgpr0, $sgpr1, $sgpr2 1323 1324 %0:_(s32) = COPY $sgpr0 1325 %1:_(s32) = COPY $sgpr1 1326 %2:_(s32) = COPY $sgpr2 1327 %3:_(s32) = G_CONSTANT i32 0 1328 %4:_(s1) = G_ICMP intpred(eq), %0, %3 1329 %5:_(s1) = G_ICMP intpred(eq), %2, %3 1330 G_BRCOND %5, %bb.1 1331 G_BR %bb.2 1332 1333 bb.1: 1334 successors: %bb.2 1335 1336 %6:_(s1) = G_TRUNC %1 1337 G_BR %bb.2 1338 1339 bb.2: 1340 %7:_(s1) = G_PHI %4, %bb.0, %6, %bb.1 1341 %8:_(s32) = G_SELECT %7, %3, %0 1342 S_SETPC_B64 undef $sgpr30_sgpr31, implicit %8 1343 1344... 1345 1346--- 1347name: phi_s1_scc_v_sbranch 1348legalized: true 1349tracksRegLiveness: true 1350 1351body: | 1352 ; FAST-LABEL: name: phi_s1_scc_v_sbranch 1353 ; FAST: bb.0: 1354 ; FAST-NEXT: successors: %bb.1(0x40000000), %bb.2(0x40000000) 1355 ; FAST-NEXT: liveins: $vgpr0, $sgpr0, $sgpr1, $sgpr2 1356 ; FAST-NEXT: {{ $}} 1357 ; FAST-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 1358 ; FAST-NEXT: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr0 1359 ; FAST-NEXT: [[COPY2:%[0-9]+]]:sgpr(s32) = COPY $sgpr2 1360 ; FAST-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 0 1361 ; FAST-NEXT: [[ICMP:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(eq), [[COPY]](s32), [[C]] 1362 ; FAST-NEXT: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[ICMP]](s32) 1363 ; FAST-NEXT: [[ICMP1:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(eq), [[COPY2]](s32), [[C]] 1364 ; FAST-NEXT: [[TRUNC1:%[0-9]+]]:sgpr(s1) = G_TRUNC [[ICMP1]](s32) 1365 ; FAST-NEXT: [[ZEXT:%[0-9]+]]:sgpr(s32) = G_ZEXT [[TRUNC1]](s1) 1366 ; FAST-NEXT: [[ANYEXT:%[0-9]+]]:vgpr(s32) = G_ANYEXT [[TRUNC]](s1) 1367 ; FAST-NEXT: G_BRCOND [[ZEXT]](s32), %bb.1 1368 ; FAST-NEXT: G_BR %bb.2 1369 ; FAST-NEXT: {{ $}} 1370 ; FAST-NEXT: bb.1: 1371 ; FAST-NEXT: successors: %bb.2(0x80000000) 1372 ; FAST-NEXT: {{ $}} 1373 ; FAST-NEXT: [[TRUNC2:%[0-9]+]]:vgpr(s1) = G_TRUNC [[COPY1]](s32) 1374 ; FAST-NEXT: [[ANYEXT1:%[0-9]+]]:vgpr(s32) = G_ANYEXT [[TRUNC2]](s1) 1375 ; FAST-NEXT: G_BR %bb.2 1376 ; FAST-NEXT: {{ $}} 1377 ; FAST-NEXT: bb.2: 1378 ; FAST-NEXT: [[PHI:%[0-9]+]]:vgpr(s32) = G_PHI [[ANYEXT]](s32), %bb.0, [[ANYEXT1]](s32), %bb.1 1379 ; FAST-NEXT: [[TRUNC3:%[0-9]+]]:vgpr(s1) = G_TRUNC [[PHI]](s32) 1380 ; FAST-NEXT: [[COPY3:%[0-9]+]]:vcc(s1) = COPY [[TRUNC3]](s1) 1381 ; FAST-NEXT: [[COPY4:%[0-9]+]]:vgpr(s32) = COPY [[C]](s32) 1382 ; FAST-NEXT: [[COPY5:%[0-9]+]]:vgpr(s32) = COPY [[COPY]](s32) 1383 ; FAST-NEXT: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[COPY3]](s1), [[COPY4]], [[COPY5]] 1384 ; FAST-NEXT: S_SETPC_B64 undef $sgpr30_sgpr31, implicit [[SELECT]](s32) 1385 ; GREEDY-LABEL: name: phi_s1_scc_v_sbranch 1386 ; GREEDY: bb.0: 1387 ; GREEDY-NEXT: successors: %bb.1(0x40000000), %bb.2(0x40000000) 1388 ; GREEDY-NEXT: liveins: $vgpr0, $sgpr0, $sgpr1, $sgpr2 1389 ; GREEDY-NEXT: {{ $}} 1390 ; GREEDY-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 1391 ; GREEDY-NEXT: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr0 1392 ; GREEDY-NEXT: [[COPY2:%[0-9]+]]:sgpr(s32) = COPY $sgpr2 1393 ; GREEDY-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 0 1394 ; GREEDY-NEXT: [[ICMP:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(eq), [[COPY]](s32), [[C]] 1395 ; GREEDY-NEXT: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[ICMP]](s32) 1396 ; GREEDY-NEXT: [[ICMP1:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(eq), [[COPY2]](s32), [[C]] 1397 ; GREEDY-NEXT: [[TRUNC1:%[0-9]+]]:sgpr(s1) = G_TRUNC [[ICMP1]](s32) 1398 ; GREEDY-NEXT: [[ZEXT:%[0-9]+]]:sgpr(s32) = G_ZEXT [[TRUNC1]](s1) 1399 ; GREEDY-NEXT: [[ANYEXT:%[0-9]+]]:vgpr(s32) = G_ANYEXT [[TRUNC]](s1) 1400 ; GREEDY-NEXT: G_BRCOND [[ZEXT]](s32), %bb.1 1401 ; GREEDY-NEXT: G_BR %bb.2 1402 ; GREEDY-NEXT: {{ $}} 1403 ; GREEDY-NEXT: bb.1: 1404 ; GREEDY-NEXT: successors: %bb.2(0x80000000) 1405 ; GREEDY-NEXT: {{ $}} 1406 ; GREEDY-NEXT: [[TRUNC2:%[0-9]+]]:vgpr(s1) = G_TRUNC [[COPY1]](s32) 1407 ; GREEDY-NEXT: [[ANYEXT1:%[0-9]+]]:vgpr(s32) = G_ANYEXT [[TRUNC2]](s1) 1408 ; GREEDY-NEXT: G_BR %bb.2 1409 ; GREEDY-NEXT: {{ $}} 1410 ; GREEDY-NEXT: bb.2: 1411 ; GREEDY-NEXT: [[PHI:%[0-9]+]]:vgpr(s32) = G_PHI [[ANYEXT]](s32), %bb.0, [[ANYEXT1]](s32), %bb.1 1412 ; GREEDY-NEXT: [[TRUNC3:%[0-9]+]]:vgpr(s1) = G_TRUNC [[PHI]](s32) 1413 ; GREEDY-NEXT: [[COPY3:%[0-9]+]]:vcc(s1) = COPY [[TRUNC3]](s1) 1414 ; GREEDY-NEXT: [[COPY4:%[0-9]+]]:vgpr(s32) = COPY [[C]](s32) 1415 ; GREEDY-NEXT: [[COPY5:%[0-9]+]]:vgpr(s32) = COPY [[COPY]](s32) 1416 ; GREEDY-NEXT: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[COPY3]](s1), [[COPY4]], [[COPY5]] 1417 ; GREEDY-NEXT: S_SETPC_B64 undef $sgpr30_sgpr31, implicit [[SELECT]](s32) 1418 bb.0: 1419 successors: %bb.1, %bb.2 1420 liveins: $vgpr0, $sgpr0, $sgpr1, $sgpr2 1421 1422 %0:_(s32) = COPY $sgpr0 1423 %1:_(s32) = COPY $vgpr0 1424 %2:_(s32) = COPY $sgpr2 1425 %3:_(s32) = G_CONSTANT i32 0 1426 %4:_(s1) = G_ICMP intpred(eq), %0, %3 1427 %5:_(s1) = G_ICMP intpred(eq), %2, %3 1428 G_BRCOND %5, %bb.1 1429 G_BR %bb.2 1430 1431 bb.1: 1432 successors: %bb.2 1433 1434 %6:_(s1) = G_TRUNC %1 1435 G_BR %bb.2 1436 1437 bb.2: 1438 %7:_(s1) = G_PHI %4, %bb.0, %6, %bb.1 1439 %8:_(s32) = G_SELECT %7, %3, %0 1440 S_SETPC_B64 undef $sgpr30_sgpr31, implicit %8 1441 1442... 1443 1444--- 1445name: phi_s1_v_scc_sbranch 1446legalized: true 1447tracksRegLiveness: true 1448 1449body: | 1450 ; FAST-LABEL: name: phi_s1_v_scc_sbranch 1451 ; FAST: bb.0: 1452 ; FAST-NEXT: successors: %bb.1(0x40000000), %bb.2(0x40000000) 1453 ; FAST-NEXT: liveins: $vgpr0, $sgpr0, $sgpr1 1454 ; FAST-NEXT: {{ $}} 1455 ; FAST-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0 1456 ; FAST-NEXT: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 1457 ; FAST-NEXT: [[COPY2:%[0-9]+]]:sgpr(s32) = COPY $sgpr1 1458 ; FAST-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 0 1459 ; FAST-NEXT: [[TRUNC:%[0-9]+]]:vgpr(s1) = G_TRUNC [[COPY]](s32) 1460 ; FAST-NEXT: [[ICMP:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(eq), [[COPY2]](s32), [[C]] 1461 ; FAST-NEXT: [[TRUNC1:%[0-9]+]]:sgpr(s1) = G_TRUNC [[ICMP]](s32) 1462 ; FAST-NEXT: [[ZEXT:%[0-9]+]]:sgpr(s32) = G_ZEXT [[TRUNC1]](s1) 1463 ; FAST-NEXT: [[ANYEXT:%[0-9]+]]:vgpr(s32) = G_ANYEXT [[TRUNC]](s1) 1464 ; FAST-NEXT: G_BRCOND [[ZEXT]](s32), %bb.1 1465 ; FAST-NEXT: G_BR %bb.2 1466 ; FAST-NEXT: {{ $}} 1467 ; FAST-NEXT: bb.1: 1468 ; FAST-NEXT: successors: %bb.2(0x80000000) 1469 ; FAST-NEXT: {{ $}} 1470 ; FAST-NEXT: [[ICMP1:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(eq), [[COPY1]](s32), [[C]] 1471 ; FAST-NEXT: [[TRUNC2:%[0-9]+]]:sgpr(s1) = G_TRUNC [[ICMP1]](s32) 1472 ; FAST-NEXT: [[ANYEXT1:%[0-9]+]]:vgpr(s32) = G_ANYEXT [[TRUNC2]](s1) 1473 ; FAST-NEXT: G_BR %bb.2 1474 ; FAST-NEXT: {{ $}} 1475 ; FAST-NEXT: bb.2: 1476 ; FAST-NEXT: [[PHI:%[0-9]+]]:vgpr(s32) = G_PHI [[ANYEXT]](s32), %bb.0, [[ANYEXT1]](s32), %bb.1 1477 ; FAST-NEXT: [[TRUNC3:%[0-9]+]]:vgpr(s1) = G_TRUNC [[PHI]](s32) 1478 ; FAST-NEXT: [[COPY3:%[0-9]+]]:vcc(s1) = COPY [[TRUNC3]](s1) 1479 ; FAST-NEXT: [[COPY4:%[0-9]+]]:vgpr(s32) = COPY [[C]](s32) 1480 ; FAST-NEXT: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[COPY3]](s1), [[COPY4]], [[COPY]] 1481 ; FAST-NEXT: S_SETPC_B64 undef $sgpr30_sgpr31, implicit [[SELECT]](s32) 1482 ; GREEDY-LABEL: name: phi_s1_v_scc_sbranch 1483 ; GREEDY: bb.0: 1484 ; GREEDY-NEXT: successors: %bb.1(0x40000000), %bb.2(0x40000000) 1485 ; GREEDY-NEXT: liveins: $vgpr0, $sgpr0, $sgpr1 1486 ; GREEDY-NEXT: {{ $}} 1487 ; GREEDY-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0 1488 ; GREEDY-NEXT: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 1489 ; GREEDY-NEXT: [[COPY2:%[0-9]+]]:sgpr(s32) = COPY $sgpr1 1490 ; GREEDY-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 0 1491 ; GREEDY-NEXT: [[TRUNC:%[0-9]+]]:vgpr(s1) = G_TRUNC [[COPY]](s32) 1492 ; GREEDY-NEXT: [[ICMP:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(eq), [[COPY2]](s32), [[C]] 1493 ; GREEDY-NEXT: [[TRUNC1:%[0-9]+]]:sgpr(s1) = G_TRUNC [[ICMP]](s32) 1494 ; GREEDY-NEXT: [[ZEXT:%[0-9]+]]:sgpr(s32) = G_ZEXT [[TRUNC1]](s1) 1495 ; GREEDY-NEXT: [[ANYEXT:%[0-9]+]]:vgpr(s32) = G_ANYEXT [[TRUNC]](s1) 1496 ; GREEDY-NEXT: G_BRCOND [[ZEXT]](s32), %bb.1 1497 ; GREEDY-NEXT: G_BR %bb.2 1498 ; GREEDY-NEXT: {{ $}} 1499 ; GREEDY-NEXT: bb.1: 1500 ; GREEDY-NEXT: successors: %bb.2(0x80000000) 1501 ; GREEDY-NEXT: {{ $}} 1502 ; GREEDY-NEXT: [[ICMP1:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(eq), [[COPY1]](s32), [[C]] 1503 ; GREEDY-NEXT: [[TRUNC2:%[0-9]+]]:sgpr(s1) = G_TRUNC [[ICMP1]](s32) 1504 ; GREEDY-NEXT: [[ANYEXT1:%[0-9]+]]:vgpr(s32) = G_ANYEXT [[TRUNC2]](s1) 1505 ; GREEDY-NEXT: G_BR %bb.2 1506 ; GREEDY-NEXT: {{ $}} 1507 ; GREEDY-NEXT: bb.2: 1508 ; GREEDY-NEXT: [[PHI:%[0-9]+]]:vgpr(s32) = G_PHI [[ANYEXT]](s32), %bb.0, [[ANYEXT1]](s32), %bb.1 1509 ; GREEDY-NEXT: [[TRUNC3:%[0-9]+]]:vgpr(s1) = G_TRUNC [[PHI]](s32) 1510 ; GREEDY-NEXT: [[COPY3:%[0-9]+]]:vcc(s1) = COPY [[TRUNC3]](s1) 1511 ; GREEDY-NEXT: [[COPY4:%[0-9]+]]:vgpr(s32) = COPY [[C]](s32) 1512 ; GREEDY-NEXT: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[COPY3]](s1), [[COPY4]], [[COPY]] 1513 ; GREEDY-NEXT: S_SETPC_B64 undef $sgpr30_sgpr31, implicit [[SELECT]](s32) 1514 bb.0: 1515 successors: %bb.1, %bb.2 1516 liveins: $vgpr0, $sgpr0, $sgpr1 1517 1518 %0:_(s32) = COPY $vgpr0 1519 %1:_(s32) = COPY $sgpr0 1520 %2:_(s32) = COPY $sgpr1 1521 %3:_(s32) = G_CONSTANT i32 0 1522 %4:_(s1) = G_TRUNC %0 1523 %5:_(s1) = G_ICMP intpred(eq), %2, %3 1524 G_BRCOND %5, %bb.1 1525 G_BR %bb.2 1526 1527 bb.1: 1528 successors: %bb.2 1529 1530 %6:_(s1) = G_ICMP intpred(eq), %1, %3 1531 G_BR %bb.2 1532 1533 bb.2: 1534 %7:_(s1) = G_PHI %4, %bb.0, %6, %bb.1 1535 %8:_(s32) = G_SELECT %7, %3, %0 1536 S_SETPC_B64 undef $sgpr30_sgpr31, implicit %8 1537 1538... 1539 1540--- 1541name: phi_s1_vcc_s_sbranch 1542legalized: true 1543tracksRegLiveness: true 1544 1545body: | 1546 ; FAST-LABEL: name: phi_s1_vcc_s_sbranch 1547 ; FAST: bb.0: 1548 ; FAST-NEXT: successors: %bb.1(0x40000000), %bb.2(0x40000000) 1549 ; FAST-NEXT: liveins: $vgpr0, $sgpr0, $sgpr1 1550 ; FAST-NEXT: {{ $}} 1551 ; FAST-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0 1552 ; FAST-NEXT: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 1553 ; FAST-NEXT: [[COPY2:%[0-9]+]]:sgpr(s32) = COPY $sgpr1 1554 ; FAST-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 0 1555 ; FAST-NEXT: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY [[C]](s32) 1556 ; FAST-NEXT: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(eq), [[COPY]](s32), [[COPY3]] 1557 ; FAST-NEXT: [[ICMP1:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(eq), [[COPY2]](s32), [[C]] 1558 ; FAST-NEXT: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[ICMP1]](s32) 1559 ; FAST-NEXT: [[ZEXT:%[0-9]+]]:sgpr(s32) = G_ZEXT [[TRUNC]](s1) 1560 ; FAST-NEXT: G_BRCOND [[ZEXT]](s32), %bb.1 1561 ; FAST-NEXT: G_BR %bb.2 1562 ; FAST-NEXT: {{ $}} 1563 ; FAST-NEXT: bb.1: 1564 ; FAST-NEXT: successors: %bb.2(0x80000000) 1565 ; FAST-NEXT: {{ $}} 1566 ; FAST-NEXT: [[TRUNC1:%[0-9]+]]:sgpr(s1) = G_TRUNC [[COPY1]](s32) 1567 ; FAST-NEXT: [[COPY4:%[0-9]+]]:vcc(s1) = COPY [[TRUNC1]](s1) 1568 ; FAST-NEXT: G_BR %bb.2 1569 ; FAST-NEXT: {{ $}} 1570 ; FAST-NEXT: bb.2: 1571 ; FAST-NEXT: [[PHI:%[0-9]+]]:vcc(s1) = G_PHI [[ICMP]](s1), %bb.0, [[COPY4]](s1), %bb.1 1572 ; FAST-NEXT: [[COPY5:%[0-9]+]]:vgpr(s32) = COPY [[C]](s32) 1573 ; FAST-NEXT: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[PHI]](s1), [[COPY5]], [[COPY]] 1574 ; FAST-NEXT: S_SETPC_B64 undef $sgpr30_sgpr31, implicit [[SELECT]](s32) 1575 ; GREEDY-LABEL: name: phi_s1_vcc_s_sbranch 1576 ; GREEDY: bb.0: 1577 ; GREEDY-NEXT: successors: %bb.1(0x40000000), %bb.2(0x40000000) 1578 ; GREEDY-NEXT: liveins: $vgpr0, $sgpr0, $sgpr1 1579 ; GREEDY-NEXT: {{ $}} 1580 ; GREEDY-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0 1581 ; GREEDY-NEXT: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 1582 ; GREEDY-NEXT: [[COPY2:%[0-9]+]]:sgpr(s32) = COPY $sgpr1 1583 ; GREEDY-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 0 1584 ; GREEDY-NEXT: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY [[C]](s32) 1585 ; GREEDY-NEXT: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(eq), [[COPY]](s32), [[COPY3]] 1586 ; GREEDY-NEXT: [[ICMP1:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(eq), [[COPY2]](s32), [[C]] 1587 ; GREEDY-NEXT: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[ICMP1]](s32) 1588 ; GREEDY-NEXT: [[ZEXT:%[0-9]+]]:sgpr(s32) = G_ZEXT [[TRUNC]](s1) 1589 ; GREEDY-NEXT: G_BRCOND [[ZEXT]](s32), %bb.1 1590 ; GREEDY-NEXT: G_BR %bb.2 1591 ; GREEDY-NEXT: {{ $}} 1592 ; GREEDY-NEXT: bb.1: 1593 ; GREEDY-NEXT: successors: %bb.2(0x80000000) 1594 ; GREEDY-NEXT: {{ $}} 1595 ; GREEDY-NEXT: [[TRUNC1:%[0-9]+]]:sgpr(s1) = G_TRUNC [[COPY1]](s32) 1596 ; GREEDY-NEXT: [[COPY4:%[0-9]+]]:vcc(s1) = COPY [[TRUNC1]](s1) 1597 ; GREEDY-NEXT: G_BR %bb.2 1598 ; GREEDY-NEXT: {{ $}} 1599 ; GREEDY-NEXT: bb.2: 1600 ; GREEDY-NEXT: [[PHI:%[0-9]+]]:vcc(s1) = G_PHI [[ICMP]](s1), %bb.0, [[COPY4]](s1), %bb.1 1601 ; GREEDY-NEXT: [[COPY5:%[0-9]+]]:vgpr(s32) = COPY [[C]](s32) 1602 ; GREEDY-NEXT: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[PHI]](s1), [[COPY5]], [[COPY]] 1603 ; GREEDY-NEXT: S_SETPC_B64 undef $sgpr30_sgpr31, implicit [[SELECT]](s32) 1604 bb.0: 1605 successors: %bb.1, %bb.2 1606 liveins: $vgpr0, $sgpr0, $sgpr1 1607 1608 %0:_(s32) = COPY $vgpr0 1609 %1:_(s32) = COPY $sgpr0 1610 %2:_(s32) = COPY $sgpr1 1611 %3:_(s32) = G_CONSTANT i32 0 1612 %4:_(s1) = G_ICMP intpred(eq), %0, %3 1613 %5:_(s1) = G_ICMP intpred(eq), %2, %3 1614 G_BRCOND %5, %bb.1 1615 G_BR %bb.2 1616 1617 bb.1: 1618 successors: %bb.2 1619 1620 %6:_(s1) = G_TRUNC %1 1621 G_BR %bb.2 1622 1623 bb.2: 1624 %7:_(s1) = G_PHI %4, %bb.0, %6, %bb.1 1625 %8:_(s32) = G_SELECT %7, %3, %0 1626 S_SETPC_B64 undef $sgpr30_sgpr31, implicit %8 1627 1628... 1629 1630--- 1631name: phi_s1_s_vcc_sbranch 1632legalized: true 1633tracksRegLiveness: true 1634 1635body: | 1636 ; FAST-LABEL: name: phi_s1_s_vcc_sbranch 1637 ; FAST: bb.0: 1638 ; FAST-NEXT: successors: %bb.1(0x40000000), %bb.2(0x40000000) 1639 ; FAST-NEXT: liveins: $vgpr0, $sgpr0, $sgpr1 1640 ; FAST-NEXT: {{ $}} 1641 ; FAST-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 1642 ; FAST-NEXT: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr0 1643 ; FAST-NEXT: [[COPY2:%[0-9]+]]:sgpr(s32) = COPY $sgpr1 1644 ; FAST-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 0 1645 ; FAST-NEXT: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[COPY]](s32) 1646 ; FAST-NEXT: [[ICMP:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(eq), [[COPY2]](s32), [[C]] 1647 ; FAST-NEXT: [[TRUNC1:%[0-9]+]]:sgpr(s1) = G_TRUNC [[ICMP]](s32) 1648 ; FAST-NEXT: [[ZEXT:%[0-9]+]]:sgpr(s32) = G_ZEXT [[TRUNC1]](s1) 1649 ; FAST-NEXT: [[COPY3:%[0-9]+]]:vcc(s1) = COPY [[TRUNC]](s1) 1650 ; FAST-NEXT: G_BRCOND [[ZEXT]](s32), %bb.1 1651 ; FAST-NEXT: G_BR %bb.2 1652 ; FAST-NEXT: {{ $}} 1653 ; FAST-NEXT: bb.1: 1654 ; FAST-NEXT: successors: %bb.2(0x80000000) 1655 ; FAST-NEXT: {{ $}} 1656 ; FAST-NEXT: [[COPY4:%[0-9]+]]:vgpr(s32) = COPY [[C]](s32) 1657 ; FAST-NEXT: [[ICMP1:%[0-9]+]]:vcc(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[COPY4]] 1658 ; FAST-NEXT: G_BR %bb.2 1659 ; FAST-NEXT: {{ $}} 1660 ; FAST-NEXT: bb.2: 1661 ; FAST-NEXT: [[PHI:%[0-9]+]]:vcc(s1) = G_PHI [[COPY3]](s1), %bb.0, [[ICMP1]](s1), %bb.1 1662 ; FAST-NEXT: [[COPY5:%[0-9]+]]:vgpr(s32) = COPY [[C]](s32) 1663 ; FAST-NEXT: [[COPY6:%[0-9]+]]:vgpr(s32) = COPY [[COPY]](s32) 1664 ; FAST-NEXT: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[PHI]](s1), [[COPY5]], [[COPY6]] 1665 ; FAST-NEXT: S_SETPC_B64 undef $sgpr30_sgpr31, implicit [[SELECT]](s32) 1666 ; GREEDY-LABEL: name: phi_s1_s_vcc_sbranch 1667 ; GREEDY: bb.0: 1668 ; GREEDY-NEXT: successors: %bb.1(0x40000000), %bb.2(0x40000000) 1669 ; GREEDY-NEXT: liveins: $vgpr0, $sgpr0, $sgpr1 1670 ; GREEDY-NEXT: {{ $}} 1671 ; GREEDY-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 1672 ; GREEDY-NEXT: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr0 1673 ; GREEDY-NEXT: [[COPY2:%[0-9]+]]:sgpr(s32) = COPY $sgpr1 1674 ; GREEDY-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 0 1675 ; GREEDY-NEXT: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[COPY]](s32) 1676 ; GREEDY-NEXT: [[ICMP:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(eq), [[COPY2]](s32), [[C]] 1677 ; GREEDY-NEXT: [[TRUNC1:%[0-9]+]]:sgpr(s1) = G_TRUNC [[ICMP]](s32) 1678 ; GREEDY-NEXT: [[ZEXT:%[0-9]+]]:sgpr(s32) = G_ZEXT [[TRUNC1]](s1) 1679 ; GREEDY-NEXT: [[COPY3:%[0-9]+]]:vcc(s1) = COPY [[TRUNC]](s1) 1680 ; GREEDY-NEXT: G_BRCOND [[ZEXT]](s32), %bb.1 1681 ; GREEDY-NEXT: G_BR %bb.2 1682 ; GREEDY-NEXT: {{ $}} 1683 ; GREEDY-NEXT: bb.1: 1684 ; GREEDY-NEXT: successors: %bb.2(0x80000000) 1685 ; GREEDY-NEXT: {{ $}} 1686 ; GREEDY-NEXT: [[COPY4:%[0-9]+]]:vgpr(s32) = COPY [[C]](s32) 1687 ; GREEDY-NEXT: [[ICMP1:%[0-9]+]]:vcc(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[COPY4]] 1688 ; GREEDY-NEXT: G_BR %bb.2 1689 ; GREEDY-NEXT: {{ $}} 1690 ; GREEDY-NEXT: bb.2: 1691 ; GREEDY-NEXT: [[PHI:%[0-9]+]]:vcc(s1) = G_PHI [[COPY3]](s1), %bb.0, [[ICMP1]](s1), %bb.1 1692 ; GREEDY-NEXT: [[COPY5:%[0-9]+]]:vgpr(s32) = COPY [[C]](s32) 1693 ; GREEDY-NEXT: [[COPY6:%[0-9]+]]:vgpr(s32) = COPY [[COPY]](s32) 1694 ; GREEDY-NEXT: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[PHI]](s1), [[COPY5]], [[COPY6]] 1695 ; GREEDY-NEXT: S_SETPC_B64 undef $sgpr30_sgpr31, implicit [[SELECT]](s32) 1696 bb.0: 1697 successors: %bb.1, %bb.2 1698 liveins: $vgpr0, $sgpr0, $sgpr1 1699 1700 %0:_(s32) = COPY $sgpr0 1701 %1:_(s32) = COPY $vgpr0 1702 %2:_(s32) = COPY $sgpr1 1703 %3:_(s32) = G_CONSTANT i32 0 1704 %4:_(s1) = G_TRUNC %0 1705 %5:_(s1) = G_ICMP intpred(eq), %2, %3 1706 G_BRCOND %5, %bb.1 1707 G_BR %bb.2 1708 1709 bb.1: 1710 successors: %bb.2 1711 1712 %6:_(s1) = G_ICMP intpred(eq), %1, %3 1713 G_BR %bb.2 1714 1715 bb.2: 1716 %7:_(s1) = G_PHI %4, %bb.0, %6, %bb.1 1717 %8:_(s32) = G_SELECT %7, %3, %0 1718 S_SETPC_B64 undef $sgpr30_sgpr31, implicit %8 1719 1720... 1721 1722--- 1723name: phi_s1_vcc_v_sbranch 1724legalized: true 1725tracksRegLiveness: true 1726 1727body: | 1728 ; FAST-LABEL: name: phi_s1_vcc_v_sbranch 1729 ; FAST: bb.0: 1730 ; FAST-NEXT: successors: %bb.1(0x40000000), %bb.2(0x40000000) 1731 ; FAST-NEXT: liveins: $vgpr0, $vgpr1, $sgpr0 1732 ; FAST-NEXT: {{ $}} 1733 ; FAST-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0 1734 ; FAST-NEXT: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr1 1735 ; FAST-NEXT: [[COPY2:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 1736 ; FAST-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 0 1737 ; FAST-NEXT: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY [[C]](s32) 1738 ; FAST-NEXT: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(eq), [[COPY]](s32), [[COPY3]] 1739 ; FAST-NEXT: [[ICMP1:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(eq), [[COPY2]](s32), [[C]] 1740 ; FAST-NEXT: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[ICMP1]](s32) 1741 ; FAST-NEXT: [[ZEXT:%[0-9]+]]:sgpr(s32) = G_ZEXT [[TRUNC]](s1) 1742 ; FAST-NEXT: [[C1:%[0-9]+]]:vgpr(s32) = G_CONSTANT i32 1 1743 ; FAST-NEXT: [[C2:%[0-9]+]]:vgpr(s32) = G_CONSTANT i32 0 1744 ; FAST-NEXT: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[C1]], [[C2]] 1745 ; FAST-NEXT: G_BRCOND [[ZEXT]](s32), %bb.1 1746 ; FAST-NEXT: G_BR %bb.2 1747 ; FAST-NEXT: {{ $}} 1748 ; FAST-NEXT: bb.1: 1749 ; FAST-NEXT: successors: %bb.2(0x80000000) 1750 ; FAST-NEXT: {{ $}} 1751 ; FAST-NEXT: [[TRUNC1:%[0-9]+]]:vgpr(s1) = G_TRUNC [[COPY1]](s32) 1752 ; FAST-NEXT: [[ANYEXT:%[0-9]+]]:vgpr(s32) = G_ANYEXT [[TRUNC1]](s1) 1753 ; FAST-NEXT: G_BR %bb.2 1754 ; FAST-NEXT: {{ $}} 1755 ; FAST-NEXT: bb.2: 1756 ; FAST-NEXT: [[PHI:%[0-9]+]]:vgpr(s32) = G_PHI [[SELECT]](s32), %bb.0, [[ANYEXT]](s32), %bb.1 1757 ; FAST-NEXT: [[TRUNC2:%[0-9]+]]:vgpr(s1) = G_TRUNC [[PHI]](s32) 1758 ; FAST-NEXT: [[COPY4:%[0-9]+]]:vcc(s1) = COPY [[TRUNC2]](s1) 1759 ; FAST-NEXT: [[COPY5:%[0-9]+]]:vgpr(s32) = COPY [[C]](s32) 1760 ; FAST-NEXT: [[SELECT1:%[0-9]+]]:vgpr(s32) = G_SELECT [[COPY4]](s1), [[COPY5]], [[COPY]] 1761 ; FAST-NEXT: S_SETPC_B64 undef $sgpr30_sgpr31, implicit [[SELECT1]](s32) 1762 ; GREEDY-LABEL: name: phi_s1_vcc_v_sbranch 1763 ; GREEDY: bb.0: 1764 ; GREEDY-NEXT: successors: %bb.1(0x40000000), %bb.2(0x40000000) 1765 ; GREEDY-NEXT: liveins: $vgpr0, $vgpr1, $sgpr0 1766 ; GREEDY-NEXT: {{ $}} 1767 ; GREEDY-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0 1768 ; GREEDY-NEXT: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr1 1769 ; GREEDY-NEXT: [[COPY2:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 1770 ; GREEDY-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 0 1771 ; GREEDY-NEXT: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY [[C]](s32) 1772 ; GREEDY-NEXT: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(eq), [[COPY]](s32), [[COPY3]] 1773 ; GREEDY-NEXT: [[ICMP1:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(eq), [[COPY2]](s32), [[C]] 1774 ; GREEDY-NEXT: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[ICMP1]](s32) 1775 ; GREEDY-NEXT: [[ZEXT:%[0-9]+]]:sgpr(s32) = G_ZEXT [[TRUNC]](s1) 1776 ; GREEDY-NEXT: [[C1:%[0-9]+]]:vgpr(s32) = G_CONSTANT i32 1 1777 ; GREEDY-NEXT: [[C2:%[0-9]+]]:vgpr(s32) = G_CONSTANT i32 0 1778 ; GREEDY-NEXT: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[C1]], [[C2]] 1779 ; GREEDY-NEXT: G_BRCOND [[ZEXT]](s32), %bb.1 1780 ; GREEDY-NEXT: G_BR %bb.2 1781 ; GREEDY-NEXT: {{ $}} 1782 ; GREEDY-NEXT: bb.1: 1783 ; GREEDY-NEXT: successors: %bb.2(0x80000000) 1784 ; GREEDY-NEXT: {{ $}} 1785 ; GREEDY-NEXT: [[TRUNC1:%[0-9]+]]:vgpr(s1) = G_TRUNC [[COPY1]](s32) 1786 ; GREEDY-NEXT: [[ANYEXT:%[0-9]+]]:vgpr(s32) = G_ANYEXT [[TRUNC1]](s1) 1787 ; GREEDY-NEXT: G_BR %bb.2 1788 ; GREEDY-NEXT: {{ $}} 1789 ; GREEDY-NEXT: bb.2: 1790 ; GREEDY-NEXT: [[PHI:%[0-9]+]]:vgpr(s32) = G_PHI [[SELECT]](s32), %bb.0, [[ANYEXT]](s32), %bb.1 1791 ; GREEDY-NEXT: [[TRUNC2:%[0-9]+]]:vgpr(s1) = G_TRUNC [[PHI]](s32) 1792 ; GREEDY-NEXT: [[COPY4:%[0-9]+]]:vcc(s1) = COPY [[TRUNC2]](s1) 1793 ; GREEDY-NEXT: [[COPY5:%[0-9]+]]:vgpr(s32) = COPY [[C]](s32) 1794 ; GREEDY-NEXT: [[SELECT1:%[0-9]+]]:vgpr(s32) = G_SELECT [[COPY4]](s1), [[COPY5]], [[COPY]] 1795 ; GREEDY-NEXT: S_SETPC_B64 undef $sgpr30_sgpr31, implicit [[SELECT1]](s32) 1796 bb.0: 1797 successors: %bb.1, %bb.2 1798 liveins: $vgpr0, $vgpr1, $sgpr0 1799 1800 %0:_(s32) = COPY $vgpr0 1801 %1:_(s32) = COPY $vgpr1 1802 %2:_(s32) = COPY $sgpr0 1803 %3:_(s32) = G_CONSTANT i32 0 1804 %4:_(s1) = G_ICMP intpred(eq), %0, %3 1805 %5:_(s1) = G_ICMP intpred(eq), %2, %3 1806 G_BRCOND %5, %bb.1 1807 G_BR %bb.2 1808 1809 bb.1: 1810 successors: %bb.2 1811 1812 %6:_(s1) = G_TRUNC %1 1813 G_BR %bb.2 1814 1815 bb.2: 1816 %7:_(s1) = G_PHI %4, %bb.0, %6, %bb.1 1817 %8:_(s32) = G_SELECT %7, %3, %0 1818 S_SETPC_B64 undef $sgpr30_sgpr31, implicit %8 1819 1820... 1821 1822--- 1823name: phi_s1_v_vcc_sbranch 1824legalized: true 1825tracksRegLiveness: true 1826 1827body: | 1828 ; FAST-LABEL: name: phi_s1_v_vcc_sbranch 1829 ; FAST: bb.0: 1830 ; FAST-NEXT: successors: %bb.1(0x40000000), %bb.2(0x40000000) 1831 ; FAST-NEXT: liveins: $vgpr0, $vgpr1, $sgpr0 1832 ; FAST-NEXT: {{ $}} 1833 ; FAST-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0 1834 ; FAST-NEXT: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr1 1835 ; FAST-NEXT: [[COPY2:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 1836 ; FAST-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 0 1837 ; FAST-NEXT: [[TRUNC:%[0-9]+]]:vgpr(s1) = G_TRUNC [[COPY]](s32) 1838 ; FAST-NEXT: [[ICMP:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(eq), [[COPY2]](s32), [[C]] 1839 ; FAST-NEXT: [[TRUNC1:%[0-9]+]]:sgpr(s1) = G_TRUNC [[ICMP]](s32) 1840 ; FAST-NEXT: [[ZEXT:%[0-9]+]]:sgpr(s32) = G_ZEXT [[TRUNC1]](s1) 1841 ; FAST-NEXT: [[ANYEXT:%[0-9]+]]:vgpr(s32) = G_ANYEXT [[TRUNC]](s1) 1842 ; FAST-NEXT: G_BRCOND [[ZEXT]](s32), %bb.1 1843 ; FAST-NEXT: G_BR %bb.2 1844 ; FAST-NEXT: {{ $}} 1845 ; FAST-NEXT: bb.1: 1846 ; FAST-NEXT: successors: %bb.2(0x80000000) 1847 ; FAST-NEXT: {{ $}} 1848 ; FAST-NEXT: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY [[C]](s32) 1849 ; FAST-NEXT: [[ICMP1:%[0-9]+]]:vcc(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[COPY3]] 1850 ; FAST-NEXT: [[C1:%[0-9]+]]:vgpr(s32) = G_CONSTANT i32 1 1851 ; FAST-NEXT: [[C2:%[0-9]+]]:vgpr(s32) = G_CONSTANT i32 0 1852 ; FAST-NEXT: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP1]](s1), [[C1]], [[C2]] 1853 ; FAST-NEXT: G_BR %bb.2 1854 ; FAST-NEXT: {{ $}} 1855 ; FAST-NEXT: bb.2: 1856 ; FAST-NEXT: [[PHI:%[0-9]+]]:vgpr(s32) = G_PHI [[ANYEXT]](s32), %bb.0, [[SELECT]](s32), %bb.1 1857 ; FAST-NEXT: [[TRUNC2:%[0-9]+]]:vgpr(s1) = G_TRUNC [[PHI]](s32) 1858 ; FAST-NEXT: [[COPY4:%[0-9]+]]:vcc(s1) = COPY [[TRUNC2]](s1) 1859 ; FAST-NEXT: [[COPY5:%[0-9]+]]:vgpr(s32) = COPY [[C]](s32) 1860 ; FAST-NEXT: [[SELECT1:%[0-9]+]]:vgpr(s32) = G_SELECT [[COPY4]](s1), [[COPY5]], [[COPY]] 1861 ; FAST-NEXT: S_SETPC_B64 undef $sgpr30_sgpr31, implicit [[SELECT1]](s32) 1862 ; GREEDY-LABEL: name: phi_s1_v_vcc_sbranch 1863 ; GREEDY: bb.0: 1864 ; GREEDY-NEXT: successors: %bb.1(0x40000000), %bb.2(0x40000000) 1865 ; GREEDY-NEXT: liveins: $vgpr0, $vgpr1, $sgpr0 1866 ; GREEDY-NEXT: {{ $}} 1867 ; GREEDY-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0 1868 ; GREEDY-NEXT: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr1 1869 ; GREEDY-NEXT: [[COPY2:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 1870 ; GREEDY-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 0 1871 ; GREEDY-NEXT: [[TRUNC:%[0-9]+]]:vgpr(s1) = G_TRUNC [[COPY]](s32) 1872 ; GREEDY-NEXT: [[ICMP:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(eq), [[COPY2]](s32), [[C]] 1873 ; GREEDY-NEXT: [[TRUNC1:%[0-9]+]]:sgpr(s1) = G_TRUNC [[ICMP]](s32) 1874 ; GREEDY-NEXT: [[ZEXT:%[0-9]+]]:sgpr(s32) = G_ZEXT [[TRUNC1]](s1) 1875 ; GREEDY-NEXT: [[ANYEXT:%[0-9]+]]:vgpr(s32) = G_ANYEXT [[TRUNC]](s1) 1876 ; GREEDY-NEXT: G_BRCOND [[ZEXT]](s32), %bb.1 1877 ; GREEDY-NEXT: G_BR %bb.2 1878 ; GREEDY-NEXT: {{ $}} 1879 ; GREEDY-NEXT: bb.1: 1880 ; GREEDY-NEXT: successors: %bb.2(0x80000000) 1881 ; GREEDY-NEXT: {{ $}} 1882 ; GREEDY-NEXT: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY [[C]](s32) 1883 ; GREEDY-NEXT: [[ICMP1:%[0-9]+]]:vcc(s1) = G_ICMP intpred(eq), [[COPY1]](s32), [[COPY3]] 1884 ; GREEDY-NEXT: [[C1:%[0-9]+]]:vgpr(s32) = G_CONSTANT i32 1 1885 ; GREEDY-NEXT: [[C2:%[0-9]+]]:vgpr(s32) = G_CONSTANT i32 0 1886 ; GREEDY-NEXT: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP1]](s1), [[C1]], [[C2]] 1887 ; GREEDY-NEXT: G_BR %bb.2 1888 ; GREEDY-NEXT: {{ $}} 1889 ; GREEDY-NEXT: bb.2: 1890 ; GREEDY-NEXT: [[PHI:%[0-9]+]]:vgpr(s32) = G_PHI [[ANYEXT]](s32), %bb.0, [[SELECT]](s32), %bb.1 1891 ; GREEDY-NEXT: [[TRUNC2:%[0-9]+]]:vgpr(s1) = G_TRUNC [[PHI]](s32) 1892 ; GREEDY-NEXT: [[COPY4:%[0-9]+]]:vcc(s1) = COPY [[TRUNC2]](s1) 1893 ; GREEDY-NEXT: [[COPY5:%[0-9]+]]:vgpr(s32) = COPY [[C]](s32) 1894 ; GREEDY-NEXT: [[SELECT1:%[0-9]+]]:vgpr(s32) = G_SELECT [[COPY4]](s1), [[COPY5]], [[COPY]] 1895 ; GREEDY-NEXT: S_SETPC_B64 undef $sgpr30_sgpr31, implicit [[SELECT1]](s32) 1896 bb.0: 1897 successors: %bb.1, %bb.2 1898 liveins: $vgpr0, $vgpr1, $sgpr0 1899 1900 %0:_(s32) = COPY $vgpr0 1901 %1:_(s32) = COPY $vgpr1 1902 %2:_(s32) = COPY $sgpr0 1903 %3:_(s32) = G_CONSTANT i32 0 1904 %4:_(s1) = G_TRUNC %0 1905 %5:_(s1) = G_ICMP intpred(eq), %2, %3 1906 G_BRCOND %5, %bb.1 1907 G_BR %bb.2 1908 1909 bb.1: 1910 successors: %bb.2 1911 1912 %6:_(s1) = G_ICMP intpred(eq), %1, %3 1913 G_BR %bb.2 1914 1915 bb.2: 1916 %7:_(s1) = G_PHI %4, %bb.0, %6, %bb.1 1917 %8:_(s32) = G_SELECT %7, %3, %0 1918 S_SETPC_B64 undef $sgpr30_sgpr31, implicit %8 1919 1920... 1921 1922--- 1923name: phi_s1_v_s_sbranch 1924legalized: true 1925tracksRegLiveness: true 1926 1927body: | 1928 ; FAST-LABEL: name: phi_s1_v_s_sbranch 1929 ; FAST: bb.0: 1930 ; FAST-NEXT: successors: %bb.1(0x40000000), %bb.2(0x40000000) 1931 ; FAST-NEXT: liveins: $vgpr0, $sgpr0, $sgpr1 1932 ; FAST-NEXT: {{ $}} 1933 ; FAST-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0 1934 ; FAST-NEXT: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 1935 ; FAST-NEXT: [[COPY2:%[0-9]+]]:sgpr(s32) = COPY $sgpr1 1936 ; FAST-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 0 1937 ; FAST-NEXT: [[TRUNC:%[0-9]+]]:vgpr(s1) = G_TRUNC [[COPY]](s32) 1938 ; FAST-NEXT: [[ICMP:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(eq), [[COPY2]](s32), [[C]] 1939 ; FAST-NEXT: [[TRUNC1:%[0-9]+]]:sgpr(s1) = G_TRUNC [[ICMP]](s32) 1940 ; FAST-NEXT: [[ZEXT:%[0-9]+]]:sgpr(s32) = G_ZEXT [[TRUNC1]](s1) 1941 ; FAST-NEXT: [[ANYEXT:%[0-9]+]]:vgpr(s32) = G_ANYEXT [[TRUNC]](s1) 1942 ; FAST-NEXT: G_BRCOND [[ZEXT]](s32), %bb.1 1943 ; FAST-NEXT: G_BR %bb.2 1944 ; FAST-NEXT: {{ $}} 1945 ; FAST-NEXT: bb.1: 1946 ; FAST-NEXT: successors: %bb.2(0x80000000) 1947 ; FAST-NEXT: {{ $}} 1948 ; FAST-NEXT: [[TRUNC2:%[0-9]+]]:sgpr(s1) = G_TRUNC [[COPY1]](s32) 1949 ; FAST-NEXT: [[ANYEXT1:%[0-9]+]]:vgpr(s32) = G_ANYEXT [[TRUNC2]](s1) 1950 ; FAST-NEXT: G_BR %bb.2 1951 ; FAST-NEXT: {{ $}} 1952 ; FAST-NEXT: bb.2: 1953 ; FAST-NEXT: [[PHI:%[0-9]+]]:vgpr(s32) = G_PHI [[ANYEXT]](s32), %bb.0, [[ANYEXT1]](s32), %bb.1 1954 ; FAST-NEXT: [[TRUNC3:%[0-9]+]]:vgpr(s1) = G_TRUNC [[PHI]](s32) 1955 ; FAST-NEXT: [[COPY3:%[0-9]+]]:vcc(s1) = COPY [[TRUNC3]](s1) 1956 ; FAST-NEXT: [[COPY4:%[0-9]+]]:vgpr(s32) = COPY [[C]](s32) 1957 ; FAST-NEXT: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[COPY3]](s1), [[COPY4]], [[COPY]] 1958 ; FAST-NEXT: S_SETPC_B64 undef $sgpr30_sgpr31, implicit [[SELECT]](s32) 1959 ; GREEDY-LABEL: name: phi_s1_v_s_sbranch 1960 ; GREEDY: bb.0: 1961 ; GREEDY-NEXT: successors: %bb.1(0x40000000), %bb.2(0x40000000) 1962 ; GREEDY-NEXT: liveins: $vgpr0, $sgpr0, $sgpr1 1963 ; GREEDY-NEXT: {{ $}} 1964 ; GREEDY-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0 1965 ; GREEDY-NEXT: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 1966 ; GREEDY-NEXT: [[COPY2:%[0-9]+]]:sgpr(s32) = COPY $sgpr1 1967 ; GREEDY-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 0 1968 ; GREEDY-NEXT: [[TRUNC:%[0-9]+]]:vgpr(s1) = G_TRUNC [[COPY]](s32) 1969 ; GREEDY-NEXT: [[ICMP:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(eq), [[COPY2]](s32), [[C]] 1970 ; GREEDY-NEXT: [[TRUNC1:%[0-9]+]]:sgpr(s1) = G_TRUNC [[ICMP]](s32) 1971 ; GREEDY-NEXT: [[ZEXT:%[0-9]+]]:sgpr(s32) = G_ZEXT [[TRUNC1]](s1) 1972 ; GREEDY-NEXT: [[ANYEXT:%[0-9]+]]:vgpr(s32) = G_ANYEXT [[TRUNC]](s1) 1973 ; GREEDY-NEXT: G_BRCOND [[ZEXT]](s32), %bb.1 1974 ; GREEDY-NEXT: G_BR %bb.2 1975 ; GREEDY-NEXT: {{ $}} 1976 ; GREEDY-NEXT: bb.1: 1977 ; GREEDY-NEXT: successors: %bb.2(0x80000000) 1978 ; GREEDY-NEXT: {{ $}} 1979 ; GREEDY-NEXT: [[TRUNC2:%[0-9]+]]:sgpr(s1) = G_TRUNC [[COPY1]](s32) 1980 ; GREEDY-NEXT: [[ANYEXT1:%[0-9]+]]:vgpr(s32) = G_ANYEXT [[TRUNC2]](s1) 1981 ; GREEDY-NEXT: G_BR %bb.2 1982 ; GREEDY-NEXT: {{ $}} 1983 ; GREEDY-NEXT: bb.2: 1984 ; GREEDY-NEXT: [[PHI:%[0-9]+]]:vgpr(s32) = G_PHI [[ANYEXT]](s32), %bb.0, [[ANYEXT1]](s32), %bb.1 1985 ; GREEDY-NEXT: [[TRUNC3:%[0-9]+]]:vgpr(s1) = G_TRUNC [[PHI]](s32) 1986 ; GREEDY-NEXT: [[COPY3:%[0-9]+]]:vcc(s1) = COPY [[TRUNC3]](s1) 1987 ; GREEDY-NEXT: [[COPY4:%[0-9]+]]:vgpr(s32) = COPY [[C]](s32) 1988 ; GREEDY-NEXT: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[COPY3]](s1), [[COPY4]], [[COPY]] 1989 ; GREEDY-NEXT: S_SETPC_B64 undef $sgpr30_sgpr31, implicit [[SELECT]](s32) 1990 bb.0: 1991 successors: %bb.1, %bb.2 1992 liveins: $vgpr0, $sgpr0, $sgpr1 1993 1994 %0:_(s32) = COPY $vgpr0 1995 %1:_(s32) = COPY $sgpr0 1996 %2:_(s32) = COPY $sgpr1 1997 %3:_(s32) = G_CONSTANT i32 0 1998 %4:_(s1) = G_TRUNC %0 1999 %5:_(s1) = G_ICMP intpred(eq), %2, %3 2000 G_BRCOND %5, %bb.1 2001 G_BR %bb.2 2002 2003 bb.1: 2004 successors: %bb.2 2005 2006 %6:_(s1) = G_TRUNC %1 2007 G_BR %bb.2 2008 2009 bb.2: 2010 %7:_(s1) = G_PHI %4, %bb.0, %6, %bb.1 2011 %8:_(s32) = G_SELECT %7, %3, %0 2012 S_SETPC_B64 undef $sgpr30_sgpr31, implicit %8 2013 2014... 2015 2016--- 2017name: phi_s1_s_v_sbranch 2018legalized: true 2019tracksRegLiveness: true 2020 2021body: | 2022 ; FAST-LABEL: name: phi_s1_s_v_sbranch 2023 ; FAST: bb.0: 2024 ; FAST-NEXT: successors: %bb.1(0x40000000), %bb.2(0x40000000) 2025 ; FAST-NEXT: liveins: $vgpr0, $sgpr0, $sgpr1 2026 ; FAST-NEXT: {{ $}} 2027 ; FAST-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 2028 ; FAST-NEXT: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr0 2029 ; FAST-NEXT: [[COPY2:%[0-9]+]]:sgpr(s32) = COPY $sgpr1 2030 ; FAST-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 0 2031 ; FAST-NEXT: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[COPY]](s32) 2032 ; FAST-NEXT: [[ICMP:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(eq), [[COPY2]](s32), [[C]] 2033 ; FAST-NEXT: [[TRUNC1:%[0-9]+]]:sgpr(s1) = G_TRUNC [[ICMP]](s32) 2034 ; FAST-NEXT: [[ZEXT:%[0-9]+]]:sgpr(s32) = G_ZEXT [[TRUNC1]](s1) 2035 ; FAST-NEXT: [[ANYEXT:%[0-9]+]]:vgpr(s32) = G_ANYEXT [[TRUNC]](s1) 2036 ; FAST-NEXT: G_BRCOND [[ZEXT]](s32), %bb.1 2037 ; FAST-NEXT: G_BR %bb.2 2038 ; FAST-NEXT: {{ $}} 2039 ; FAST-NEXT: bb.1: 2040 ; FAST-NEXT: successors: %bb.2(0x80000000) 2041 ; FAST-NEXT: {{ $}} 2042 ; FAST-NEXT: [[TRUNC2:%[0-9]+]]:vgpr(s1) = G_TRUNC [[COPY1]](s32) 2043 ; FAST-NEXT: [[ANYEXT1:%[0-9]+]]:vgpr(s32) = G_ANYEXT [[TRUNC2]](s1) 2044 ; FAST-NEXT: G_BR %bb.2 2045 ; FAST-NEXT: {{ $}} 2046 ; FAST-NEXT: bb.2: 2047 ; FAST-NEXT: [[PHI:%[0-9]+]]:vgpr(s32) = G_PHI [[ANYEXT]](s32), %bb.0, [[ANYEXT1]](s32), %bb.1 2048 ; FAST-NEXT: [[TRUNC3:%[0-9]+]]:vgpr(s1) = G_TRUNC [[PHI]](s32) 2049 ; FAST-NEXT: [[COPY3:%[0-9]+]]:vcc(s1) = COPY [[TRUNC3]](s1) 2050 ; FAST-NEXT: [[COPY4:%[0-9]+]]:vgpr(s32) = COPY [[C]](s32) 2051 ; FAST-NEXT: [[COPY5:%[0-9]+]]:vgpr(s32) = COPY [[COPY]](s32) 2052 ; FAST-NEXT: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[COPY3]](s1), [[COPY4]], [[COPY5]] 2053 ; FAST-NEXT: S_SETPC_B64 undef $sgpr30_sgpr31, implicit [[SELECT]](s32) 2054 ; GREEDY-LABEL: name: phi_s1_s_v_sbranch 2055 ; GREEDY: bb.0: 2056 ; GREEDY-NEXT: successors: %bb.1(0x40000000), %bb.2(0x40000000) 2057 ; GREEDY-NEXT: liveins: $vgpr0, $sgpr0, $sgpr1 2058 ; GREEDY-NEXT: {{ $}} 2059 ; GREEDY-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 2060 ; GREEDY-NEXT: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr0 2061 ; GREEDY-NEXT: [[COPY2:%[0-9]+]]:sgpr(s32) = COPY $sgpr1 2062 ; GREEDY-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 0 2063 ; GREEDY-NEXT: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[COPY]](s32) 2064 ; GREEDY-NEXT: [[ICMP:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(eq), [[COPY2]](s32), [[C]] 2065 ; GREEDY-NEXT: [[TRUNC1:%[0-9]+]]:sgpr(s1) = G_TRUNC [[ICMP]](s32) 2066 ; GREEDY-NEXT: [[ZEXT:%[0-9]+]]:sgpr(s32) = G_ZEXT [[TRUNC1]](s1) 2067 ; GREEDY-NEXT: [[ANYEXT:%[0-9]+]]:vgpr(s32) = G_ANYEXT [[TRUNC]](s1) 2068 ; GREEDY-NEXT: G_BRCOND [[ZEXT]](s32), %bb.1 2069 ; GREEDY-NEXT: G_BR %bb.2 2070 ; GREEDY-NEXT: {{ $}} 2071 ; GREEDY-NEXT: bb.1: 2072 ; GREEDY-NEXT: successors: %bb.2(0x80000000) 2073 ; GREEDY-NEXT: {{ $}} 2074 ; GREEDY-NEXT: [[TRUNC2:%[0-9]+]]:vgpr(s1) = G_TRUNC [[COPY1]](s32) 2075 ; GREEDY-NEXT: [[ANYEXT1:%[0-9]+]]:vgpr(s32) = G_ANYEXT [[TRUNC2]](s1) 2076 ; GREEDY-NEXT: G_BR %bb.2 2077 ; GREEDY-NEXT: {{ $}} 2078 ; GREEDY-NEXT: bb.2: 2079 ; GREEDY-NEXT: [[PHI:%[0-9]+]]:vgpr(s32) = G_PHI [[ANYEXT]](s32), %bb.0, [[ANYEXT1]](s32), %bb.1 2080 ; GREEDY-NEXT: [[TRUNC3:%[0-9]+]]:vgpr(s1) = G_TRUNC [[PHI]](s32) 2081 ; GREEDY-NEXT: [[COPY3:%[0-9]+]]:vcc(s1) = COPY [[TRUNC3]](s1) 2082 ; GREEDY-NEXT: [[COPY4:%[0-9]+]]:vgpr(s32) = COPY [[C]](s32) 2083 ; GREEDY-NEXT: [[COPY5:%[0-9]+]]:vgpr(s32) = COPY [[COPY]](s32) 2084 ; GREEDY-NEXT: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[COPY3]](s1), [[COPY4]], [[COPY5]] 2085 ; GREEDY-NEXT: S_SETPC_B64 undef $sgpr30_sgpr31, implicit [[SELECT]](s32) 2086 bb.0: 2087 successors: %bb.1, %bb.2 2088 liveins: $vgpr0, $sgpr0, $sgpr1 2089 2090 %0:_(s32) = COPY $sgpr0 2091 %1:_(s32) = COPY $vgpr0 2092 %2:_(s32) = COPY $sgpr1 2093 %3:_(s32) = G_CONSTANT i32 0 2094 %4:_(s1) = G_TRUNC %0 2095 %5:_(s1) = G_ICMP intpred(eq), %2, %3 2096 G_BRCOND %5, %bb.1 2097 G_BR %bb.2 2098 2099 bb.1: 2100 successors: %bb.2 2101 2102 %6:_(s1) = G_TRUNC %1 2103 G_BR %bb.2 2104 2105 bb.2: 2106 %7:_(s1) = G_PHI %4, %bb.0, %6, %bb.1 2107 %8:_(s32) = G_SELECT %7, %3, %0 2108 S_SETPC_B64 undef $sgpr30_sgpr31, implicit %8 2109 2110... 2111 2112--- 2113name: phi_s1_v_v_sbranch 2114legalized: true 2115tracksRegLiveness: true 2116 2117body: | 2118 ; FAST-LABEL: name: phi_s1_v_v_sbranch 2119 ; FAST: bb.0: 2120 ; FAST-NEXT: successors: %bb.1(0x40000000), %bb.2(0x40000000) 2121 ; FAST-NEXT: liveins: $vgpr0, $vgpr1, $sgpr0 2122 ; FAST-NEXT: {{ $}} 2123 ; FAST-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0 2124 ; FAST-NEXT: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr1 2125 ; FAST-NEXT: [[COPY2:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 2126 ; FAST-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 0 2127 ; FAST-NEXT: [[TRUNC:%[0-9]+]]:vgpr(s1) = G_TRUNC [[COPY]](s32) 2128 ; FAST-NEXT: [[ICMP:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(eq), [[COPY2]](s32), [[C]] 2129 ; FAST-NEXT: [[TRUNC1:%[0-9]+]]:sgpr(s1) = G_TRUNC [[ICMP]](s32) 2130 ; FAST-NEXT: [[ZEXT:%[0-9]+]]:sgpr(s32) = G_ZEXT [[TRUNC1]](s1) 2131 ; FAST-NEXT: [[ANYEXT:%[0-9]+]]:vgpr(s32) = G_ANYEXT [[TRUNC]](s1) 2132 ; FAST-NEXT: G_BRCOND [[ZEXT]](s32), %bb.1 2133 ; FAST-NEXT: G_BR %bb.2 2134 ; FAST-NEXT: {{ $}} 2135 ; FAST-NEXT: bb.1: 2136 ; FAST-NEXT: successors: %bb.2(0x80000000) 2137 ; FAST-NEXT: {{ $}} 2138 ; FAST-NEXT: [[TRUNC2:%[0-9]+]]:vgpr(s1) = G_TRUNC [[COPY1]](s32) 2139 ; FAST-NEXT: [[ANYEXT1:%[0-9]+]]:vgpr(s32) = G_ANYEXT [[TRUNC2]](s1) 2140 ; FAST-NEXT: G_BR %bb.2 2141 ; FAST-NEXT: {{ $}} 2142 ; FAST-NEXT: bb.2: 2143 ; FAST-NEXT: [[PHI:%[0-9]+]]:vgpr(s32) = G_PHI [[ANYEXT]](s32), %bb.0, [[ANYEXT1]](s32), %bb.1 2144 ; FAST-NEXT: [[TRUNC3:%[0-9]+]]:vgpr(s1) = G_TRUNC [[PHI]](s32) 2145 ; FAST-NEXT: [[COPY3:%[0-9]+]]:vcc(s1) = COPY [[TRUNC3]](s1) 2146 ; FAST-NEXT: [[COPY4:%[0-9]+]]:vgpr(s32) = COPY [[C]](s32) 2147 ; FAST-NEXT: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[COPY3]](s1), [[COPY4]], [[COPY]] 2148 ; FAST-NEXT: S_SETPC_B64 undef $sgpr30_sgpr31, implicit [[SELECT]](s32) 2149 ; GREEDY-LABEL: name: phi_s1_v_v_sbranch 2150 ; GREEDY: bb.0: 2151 ; GREEDY-NEXT: successors: %bb.1(0x40000000), %bb.2(0x40000000) 2152 ; GREEDY-NEXT: liveins: $vgpr0, $vgpr1, $sgpr0 2153 ; GREEDY-NEXT: {{ $}} 2154 ; GREEDY-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0 2155 ; GREEDY-NEXT: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr1 2156 ; GREEDY-NEXT: [[COPY2:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 2157 ; GREEDY-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 0 2158 ; GREEDY-NEXT: [[TRUNC:%[0-9]+]]:vgpr(s1) = G_TRUNC [[COPY]](s32) 2159 ; GREEDY-NEXT: [[ICMP:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(eq), [[COPY2]](s32), [[C]] 2160 ; GREEDY-NEXT: [[TRUNC1:%[0-9]+]]:sgpr(s1) = G_TRUNC [[ICMP]](s32) 2161 ; GREEDY-NEXT: [[ZEXT:%[0-9]+]]:sgpr(s32) = G_ZEXT [[TRUNC1]](s1) 2162 ; GREEDY-NEXT: [[ANYEXT:%[0-9]+]]:vgpr(s32) = G_ANYEXT [[TRUNC]](s1) 2163 ; GREEDY-NEXT: G_BRCOND [[ZEXT]](s32), %bb.1 2164 ; GREEDY-NEXT: G_BR %bb.2 2165 ; GREEDY-NEXT: {{ $}} 2166 ; GREEDY-NEXT: bb.1: 2167 ; GREEDY-NEXT: successors: %bb.2(0x80000000) 2168 ; GREEDY-NEXT: {{ $}} 2169 ; GREEDY-NEXT: [[TRUNC2:%[0-9]+]]:vgpr(s1) = G_TRUNC [[COPY1]](s32) 2170 ; GREEDY-NEXT: [[ANYEXT1:%[0-9]+]]:vgpr(s32) = G_ANYEXT [[TRUNC2]](s1) 2171 ; GREEDY-NEXT: G_BR %bb.2 2172 ; GREEDY-NEXT: {{ $}} 2173 ; GREEDY-NEXT: bb.2: 2174 ; GREEDY-NEXT: [[PHI:%[0-9]+]]:vgpr(s32) = G_PHI [[ANYEXT]](s32), %bb.0, [[ANYEXT1]](s32), %bb.1 2175 ; GREEDY-NEXT: [[TRUNC3:%[0-9]+]]:vgpr(s1) = G_TRUNC [[PHI]](s32) 2176 ; GREEDY-NEXT: [[COPY3:%[0-9]+]]:vcc(s1) = COPY [[TRUNC3]](s1) 2177 ; GREEDY-NEXT: [[COPY4:%[0-9]+]]:vgpr(s32) = COPY [[C]](s32) 2178 ; GREEDY-NEXT: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[COPY3]](s1), [[COPY4]], [[COPY]] 2179 ; GREEDY-NEXT: S_SETPC_B64 undef $sgpr30_sgpr31, implicit [[SELECT]](s32) 2180 bb.0: 2181 successors: %bb.1, %bb.2 2182 liveins: $vgpr0, $vgpr1, $sgpr0 2183 2184 %0:_(s32) = COPY $vgpr0 2185 %1:_(s32) = COPY $vgpr1 2186 %2:_(s32) = COPY $sgpr0 2187 %3:_(s32) = G_CONSTANT i32 0 2188 %4:_(s1) = G_TRUNC %0 2189 %5:_(s1) = G_ICMP intpred(eq), %2, %3 2190 G_BRCOND %5, %bb.1 2191 G_BR %bb.2 2192 2193 bb.1: 2194 successors: %bb.2 2195 2196 %6:_(s1) = G_TRUNC %1 2197 G_BR %bb.2 2198 2199 bb.2: 2200 %7:_(s1) = G_PHI %4, %bb.0, %6, %bb.1 2201 %8:_(s32) = G_SELECT %7, %3, %0 2202 S_SETPC_B64 undef $sgpr30_sgpr31, implicit %8 2203 2204... 2205 2206--- 2207name: phi_s1_s_s_sbranch 2208legalized: true 2209tracksRegLiveness: true 2210 2211body: | 2212 ; FAST-LABEL: name: phi_s1_s_s_sbranch 2213 ; FAST: bb.0: 2214 ; FAST-NEXT: successors: %bb.1(0x40000000), %bb.2(0x40000000) 2215 ; FAST-NEXT: liveins: $sgpr0, $sgpr1, $sgpr2 2216 ; FAST-NEXT: {{ $}} 2217 ; FAST-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 2218 ; FAST-NEXT: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1 2219 ; FAST-NEXT: [[COPY2:%[0-9]+]]:sgpr(s32) = COPY $sgpr2 2220 ; FAST-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 0 2221 ; FAST-NEXT: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[COPY]](s32) 2222 ; FAST-NEXT: [[ICMP:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(eq), [[COPY2]](s32), [[C]] 2223 ; FAST-NEXT: [[TRUNC1:%[0-9]+]]:sgpr(s1) = G_TRUNC [[ICMP]](s32) 2224 ; FAST-NEXT: [[ZEXT:%[0-9]+]]:sgpr(s32) = G_ZEXT [[TRUNC1]](s1) 2225 ; FAST-NEXT: [[ANYEXT:%[0-9]+]]:sgpr(s32) = G_ANYEXT [[TRUNC]](s1) 2226 ; FAST-NEXT: G_BRCOND [[ZEXT]](s32), %bb.1 2227 ; FAST-NEXT: G_BR %bb.2 2228 ; FAST-NEXT: {{ $}} 2229 ; FAST-NEXT: bb.1: 2230 ; FAST-NEXT: successors: %bb.2(0x80000000) 2231 ; FAST-NEXT: {{ $}} 2232 ; FAST-NEXT: [[TRUNC2:%[0-9]+]]:sgpr(s1) = G_TRUNC [[COPY1]](s32) 2233 ; FAST-NEXT: [[ANYEXT1:%[0-9]+]]:sgpr(s32) = G_ANYEXT [[TRUNC2]](s1) 2234 ; FAST-NEXT: G_BR %bb.2 2235 ; FAST-NEXT: {{ $}} 2236 ; FAST-NEXT: bb.2: 2237 ; FAST-NEXT: [[PHI:%[0-9]+]]:sgpr(s32) = G_PHI [[ANYEXT]](s32), %bb.0, [[ANYEXT1]](s32), %bb.1 2238 ; FAST-NEXT: [[TRUNC3:%[0-9]+]]:sgpr(s1) = G_TRUNC [[PHI]](s32) 2239 ; FAST-NEXT: [[ZEXT1:%[0-9]+]]:sgpr(s32) = G_ZEXT [[TRUNC3]](s1) 2240 ; FAST-NEXT: [[SELECT:%[0-9]+]]:sgpr(s32) = G_SELECT [[ZEXT1]](s32), [[C]], [[COPY]] 2241 ; FAST-NEXT: S_SETPC_B64 undef $sgpr30_sgpr31, implicit [[SELECT]](s32) 2242 ; GREEDY-LABEL: name: phi_s1_s_s_sbranch 2243 ; GREEDY: bb.0: 2244 ; GREEDY-NEXT: successors: %bb.1(0x40000000), %bb.2(0x40000000) 2245 ; GREEDY-NEXT: liveins: $sgpr0, $sgpr1, $sgpr2 2246 ; GREEDY-NEXT: {{ $}} 2247 ; GREEDY-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 2248 ; GREEDY-NEXT: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1 2249 ; GREEDY-NEXT: [[COPY2:%[0-9]+]]:sgpr(s32) = COPY $sgpr2 2250 ; GREEDY-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 0 2251 ; GREEDY-NEXT: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[COPY]](s32) 2252 ; GREEDY-NEXT: [[ICMP:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(eq), [[COPY2]](s32), [[C]] 2253 ; GREEDY-NEXT: [[TRUNC1:%[0-9]+]]:sgpr(s1) = G_TRUNC [[ICMP]](s32) 2254 ; GREEDY-NEXT: [[ZEXT:%[0-9]+]]:sgpr(s32) = G_ZEXT [[TRUNC1]](s1) 2255 ; GREEDY-NEXT: [[ANYEXT:%[0-9]+]]:sgpr(s32) = G_ANYEXT [[TRUNC]](s1) 2256 ; GREEDY-NEXT: G_BRCOND [[ZEXT]](s32), %bb.1 2257 ; GREEDY-NEXT: G_BR %bb.2 2258 ; GREEDY-NEXT: {{ $}} 2259 ; GREEDY-NEXT: bb.1: 2260 ; GREEDY-NEXT: successors: %bb.2(0x80000000) 2261 ; GREEDY-NEXT: {{ $}} 2262 ; GREEDY-NEXT: [[TRUNC2:%[0-9]+]]:sgpr(s1) = G_TRUNC [[COPY1]](s32) 2263 ; GREEDY-NEXT: [[ANYEXT1:%[0-9]+]]:sgpr(s32) = G_ANYEXT [[TRUNC2]](s1) 2264 ; GREEDY-NEXT: G_BR %bb.2 2265 ; GREEDY-NEXT: {{ $}} 2266 ; GREEDY-NEXT: bb.2: 2267 ; GREEDY-NEXT: [[PHI:%[0-9]+]]:sgpr(s32) = G_PHI [[ANYEXT]](s32), %bb.0, [[ANYEXT1]](s32), %bb.1 2268 ; GREEDY-NEXT: [[TRUNC3:%[0-9]+]]:sgpr(s1) = G_TRUNC [[PHI]](s32) 2269 ; GREEDY-NEXT: [[ZEXT1:%[0-9]+]]:sgpr(s32) = G_ZEXT [[TRUNC3]](s1) 2270 ; GREEDY-NEXT: [[SELECT:%[0-9]+]]:sgpr(s32) = G_SELECT [[ZEXT1]](s32), [[C]], [[COPY]] 2271 ; GREEDY-NEXT: S_SETPC_B64 undef $sgpr30_sgpr31, implicit [[SELECT]](s32) 2272 bb.0: 2273 successors: %bb.1, %bb.2 2274 liveins: $sgpr0, $sgpr1, $sgpr2 2275 2276 %0:_(s32) = COPY $sgpr0 2277 %1:_(s32) = COPY $sgpr1 2278 %2:_(s32) = COPY $sgpr2 2279 %3:_(s32) = G_CONSTANT i32 0 2280 %4:_(s1) = G_TRUNC %0 2281 %5:_(s1) = G_ICMP intpred(eq), %2, %3 2282 G_BRCOND %5, %bb.1 2283 G_BR %bb.2 2284 2285 bb.1: 2286 successors: %bb.2 2287 2288 %6:_(s1) = G_TRUNC %1 2289 G_BR %bb.2 2290 2291 bb.2: 2292 %7:_(s1) = G_PHI %4, %bb.0, %6, %bb.1 2293 %8:_(s32) = G_SELECT %7, %3, %0 2294 S_SETPC_B64 undef $sgpr30_sgpr31, implicit %8 2295 2296... 2297 2298# Test a phi where the VGPR input is after the phi itself 2299--- 2300name: phi_s32_s_loop_v_sbranch 2301legalized: true 2302tracksRegLiveness: true 2303 2304body: | 2305 ; FAST-LABEL: name: phi_s32_s_loop_v_sbranch 2306 ; FAST: bb.0: 2307 ; FAST-NEXT: successors: %bb.1(0x80000000) 2308 ; FAST-NEXT: liveins: $sgpr0, $sgpr1, $vgpr0 2309 ; FAST-NEXT: {{ $}} 2310 ; FAST-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 2311 ; FAST-NEXT: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1 2312 ; FAST-NEXT: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY $vgpr0 2313 ; FAST-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 0 2314 ; FAST-NEXT: G_BR %bb.1 2315 ; FAST-NEXT: {{ $}} 2316 ; FAST-NEXT: bb.1: 2317 ; FAST-NEXT: successors: %bb.1(0x40000000), %bb.2(0x40000000) 2318 ; FAST-NEXT: {{ $}} 2319 ; FAST-NEXT: [[PHI:%[0-9]+]]:vgpr(s32) = G_PHI [[COPY]](s32), %bb.0, %5(s32), %bb.1 2320 ; FAST-NEXT: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY [[COPY2]](s32) 2321 ; FAST-NEXT: [[ICMP:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(eq), [[COPY1]](s32), [[C]] 2322 ; FAST-NEXT: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[ICMP]](s32) 2323 ; FAST-NEXT: [[ZEXT:%[0-9]+]]:sgpr(s32) = G_ZEXT [[TRUNC]](s1) 2324 ; FAST-NEXT: G_BRCOND [[ZEXT]](s32), %bb.1 2325 ; FAST-NEXT: G_BR %bb.2 2326 ; FAST-NEXT: {{ $}} 2327 ; FAST-NEXT: bb.2: 2328 ; FAST-NEXT: S_SETPC_B64 undef $sgpr30_sgpr31, implicit [[PHI]](s32) 2329 ; GREEDY-LABEL: name: phi_s32_s_loop_v_sbranch 2330 ; GREEDY: bb.0: 2331 ; GREEDY-NEXT: successors: %bb.1(0x80000000) 2332 ; GREEDY-NEXT: liveins: $sgpr0, $sgpr1, $vgpr0 2333 ; GREEDY-NEXT: {{ $}} 2334 ; GREEDY-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 2335 ; GREEDY-NEXT: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1 2336 ; GREEDY-NEXT: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY $vgpr0 2337 ; GREEDY-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 0 2338 ; GREEDY-NEXT: G_BR %bb.1 2339 ; GREEDY-NEXT: {{ $}} 2340 ; GREEDY-NEXT: bb.1: 2341 ; GREEDY-NEXT: successors: %bb.1(0x40000000), %bb.2(0x40000000) 2342 ; GREEDY-NEXT: {{ $}} 2343 ; GREEDY-NEXT: [[PHI:%[0-9]+]]:vgpr(s32) = G_PHI [[COPY]](s32), %bb.0, %5(s32), %bb.1 2344 ; GREEDY-NEXT: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY [[COPY2]](s32) 2345 ; GREEDY-NEXT: [[ICMP:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(eq), [[COPY1]](s32), [[C]] 2346 ; GREEDY-NEXT: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[ICMP]](s32) 2347 ; GREEDY-NEXT: [[ZEXT:%[0-9]+]]:sgpr(s32) = G_ZEXT [[TRUNC]](s1) 2348 ; GREEDY-NEXT: G_BRCOND [[ZEXT]](s32), %bb.1 2349 ; GREEDY-NEXT: G_BR %bb.2 2350 ; GREEDY-NEXT: {{ $}} 2351 ; GREEDY-NEXT: bb.2: 2352 ; GREEDY-NEXT: S_SETPC_B64 undef $sgpr30_sgpr31, implicit [[PHI]](s32) 2353 bb.0: 2354 successors: %bb.1 2355 liveins: $sgpr0, $sgpr1, $vgpr0 2356 2357 %0:_(s32) = COPY $sgpr0 2358 %1:_(s32) = COPY $sgpr1 2359 %2:_(s32) = COPY $vgpr0 2360 %3:_(s32) = G_CONSTANT i32 0 2361 G_BR %bb.1 2362 2363 bb.1: 2364 successors: %bb.1, %bb.2 2365 2366 %4:_(s32) = G_PHI %0, %bb.0, %5, %bb.1 2367 %5:_(s32) = COPY %2 2368 %6:_(s1) = G_ICMP intpred(eq), %1, %3 2369 G_BRCOND %6, %bb.1 2370 G_BR %bb.2 2371 2372 bb.2: 2373 S_SETPC_B64 undef $sgpr30_sgpr31, implicit %4 2374 2375... 2376 2377# Test a phi where an SGPR input is after the phi itself 2378--- 2379name: phi_s32_s_loop_s_sbranch 2380legalized: true 2381tracksRegLiveness: true 2382 2383body: | 2384 ; FAST-LABEL: name: phi_s32_s_loop_s_sbranch 2385 ; FAST: bb.0: 2386 ; FAST-NEXT: successors: %bb.1(0x80000000) 2387 ; FAST-NEXT: liveins: $sgpr0, $sgpr1, $sgpr2 2388 ; FAST-NEXT: {{ $}} 2389 ; FAST-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 2390 ; FAST-NEXT: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1 2391 ; FAST-NEXT: [[COPY2:%[0-9]+]]:sgpr(s32) = COPY $sgpr2 2392 ; FAST-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 0 2393 ; FAST-NEXT: G_BR %bb.1 2394 ; FAST-NEXT: {{ $}} 2395 ; FAST-NEXT: bb.1: 2396 ; FAST-NEXT: successors: %bb.1(0x40000000), %bb.2(0x40000000) 2397 ; FAST-NEXT: {{ $}} 2398 ; FAST-NEXT: [[PHI:%[0-9]+]]:vgpr(s32) = G_PHI [[COPY]](s32), %bb.0, %5(s32), %bb.1 2399 ; FAST-NEXT: [[COPY3:%[0-9]+]]:sgpr(s32) = COPY [[COPY2]](s32) 2400 ; FAST-NEXT: [[ICMP:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(eq), [[COPY1]](s32), [[C]] 2401 ; FAST-NEXT: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[ICMP]](s32) 2402 ; FAST-NEXT: [[ZEXT:%[0-9]+]]:sgpr(s32) = G_ZEXT [[TRUNC]](s1) 2403 ; FAST-NEXT: G_BRCOND [[ZEXT]](s32), %bb.1 2404 ; FAST-NEXT: G_BR %bb.2 2405 ; FAST-NEXT: {{ $}} 2406 ; FAST-NEXT: bb.2: 2407 ; FAST-NEXT: S_SETPC_B64 undef $sgpr30_sgpr31, implicit [[PHI]](s32) 2408 ; GREEDY-LABEL: name: phi_s32_s_loop_s_sbranch 2409 ; GREEDY: bb.0: 2410 ; GREEDY-NEXT: successors: %bb.1(0x80000000) 2411 ; GREEDY-NEXT: liveins: $sgpr0, $sgpr1, $sgpr2 2412 ; GREEDY-NEXT: {{ $}} 2413 ; GREEDY-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 2414 ; GREEDY-NEXT: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1 2415 ; GREEDY-NEXT: [[COPY2:%[0-9]+]]:sgpr(s32) = COPY $sgpr2 2416 ; GREEDY-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 0 2417 ; GREEDY-NEXT: G_BR %bb.1 2418 ; GREEDY-NEXT: {{ $}} 2419 ; GREEDY-NEXT: bb.1: 2420 ; GREEDY-NEXT: successors: %bb.1(0x40000000), %bb.2(0x40000000) 2421 ; GREEDY-NEXT: {{ $}} 2422 ; GREEDY-NEXT: [[PHI:%[0-9]+]]:vgpr(s32) = G_PHI [[COPY]](s32), %bb.0, %5(s32), %bb.1 2423 ; GREEDY-NEXT: [[COPY3:%[0-9]+]]:sgpr(s32) = COPY [[COPY2]](s32) 2424 ; GREEDY-NEXT: [[ICMP:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(eq), [[COPY1]](s32), [[C]] 2425 ; GREEDY-NEXT: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[ICMP]](s32) 2426 ; GREEDY-NEXT: [[ZEXT:%[0-9]+]]:sgpr(s32) = G_ZEXT [[TRUNC]](s1) 2427 ; GREEDY-NEXT: G_BRCOND [[ZEXT]](s32), %bb.1 2428 ; GREEDY-NEXT: G_BR %bb.2 2429 ; GREEDY-NEXT: {{ $}} 2430 ; GREEDY-NEXT: bb.2: 2431 ; GREEDY-NEXT: S_SETPC_B64 undef $sgpr30_sgpr31, implicit [[PHI]](s32) 2432 bb.0: 2433 successors: %bb.1 2434 liveins: $sgpr0, $sgpr1, $sgpr2 2435 2436 %0:_(s32) = COPY $sgpr0 2437 %1:_(s32) = COPY $sgpr1 2438 %2:_(s32) = COPY $sgpr2 2439 %3:_(s32) = G_CONSTANT i32 0 2440 G_BR %bb.1 2441 2442 bb.1: 2443 successors: %bb.1, %bb.2 2444 2445 %4:_(s32) = G_PHI %0, %bb.0, %5, %bb.1 2446 %5:_(s32) = COPY %2 2447 %6:_(s1) = G_ICMP intpred(eq), %1, %3 2448 G_BRCOND %6, %bb.1 2449 G_BR %bb.2 2450 2451 bb.2: 2452 S_SETPC_B64 undef $sgpr30_sgpr31, implicit %4 2453 2454... 2455 2456--- 2457name: phi_s32_ss_sbranch_cycle 2458legalized: true 2459tracksRegLiveness: true 2460 2461body: | 2462 ; FAST-LABEL: name: phi_s32_ss_sbranch_cycle 2463 ; FAST: bb.0: 2464 ; FAST-NEXT: successors: %bb.1(0x40000000), %bb.2(0x40000000) 2465 ; FAST-NEXT: liveins: $sgpr0, $sgpr1, $sgpr2 2466 ; FAST-NEXT: {{ $}} 2467 ; FAST-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 2468 ; FAST-NEXT: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1 2469 ; FAST-NEXT: [[COPY2:%[0-9]+]]:sgpr(s32) = COPY $sgpr2 2470 ; FAST-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 0 2471 ; FAST-NEXT: [[ICMP:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(eq), [[COPY2]](s32), [[C]] 2472 ; FAST-NEXT: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[ICMP]](s32) 2473 ; FAST-NEXT: [[ZEXT:%[0-9]+]]:sgpr(s32) = G_ZEXT [[TRUNC]](s1) 2474 ; FAST-NEXT: G_BRCOND [[ZEXT]](s32), %bb.1 2475 ; FAST-NEXT: G_BR %bb.2 2476 ; FAST-NEXT: {{ $}} 2477 ; FAST-NEXT: bb.1: 2478 ; FAST-NEXT: successors: %bb.2(0x80000000) 2479 ; FAST-NEXT: {{ $}} 2480 ; FAST-NEXT: [[PHI:%[0-9]+]]:vgpr(s32) = G_PHI [[COPY]](s32), %bb.0, %6(s32), %bb.2 2481 ; FAST-NEXT: G_BR %bb.2 2482 ; FAST-NEXT: {{ $}} 2483 ; FAST-NEXT: bb.2: 2484 ; FAST-NEXT: successors: %bb.1(0x80000000) 2485 ; FAST-NEXT: {{ $}} 2486 ; FAST-NEXT: [[PHI1:%[0-9]+]]:vgpr(s32) = G_PHI [[COPY]](s32), %bb.0, [[PHI]](s32), %bb.1 2487 ; FAST-NEXT: G_BR %bb.1 2488 ; GREEDY-LABEL: name: phi_s32_ss_sbranch_cycle 2489 ; GREEDY: bb.0: 2490 ; GREEDY-NEXT: successors: %bb.1(0x40000000), %bb.2(0x40000000) 2491 ; GREEDY-NEXT: liveins: $sgpr0, $sgpr1, $sgpr2 2492 ; GREEDY-NEXT: {{ $}} 2493 ; GREEDY-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 2494 ; GREEDY-NEXT: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1 2495 ; GREEDY-NEXT: [[COPY2:%[0-9]+]]:sgpr(s32) = COPY $sgpr2 2496 ; GREEDY-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 0 2497 ; GREEDY-NEXT: [[ICMP:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(eq), [[COPY2]](s32), [[C]] 2498 ; GREEDY-NEXT: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[ICMP]](s32) 2499 ; GREEDY-NEXT: [[ZEXT:%[0-9]+]]:sgpr(s32) = G_ZEXT [[TRUNC]](s1) 2500 ; GREEDY-NEXT: G_BRCOND [[ZEXT]](s32), %bb.1 2501 ; GREEDY-NEXT: G_BR %bb.2 2502 ; GREEDY-NEXT: {{ $}} 2503 ; GREEDY-NEXT: bb.1: 2504 ; GREEDY-NEXT: successors: %bb.2(0x80000000) 2505 ; GREEDY-NEXT: {{ $}} 2506 ; GREEDY-NEXT: [[PHI:%[0-9]+]]:vgpr(s32) = G_PHI [[COPY]](s32), %bb.0, %6(s32), %bb.2 2507 ; GREEDY-NEXT: G_BR %bb.2 2508 ; GREEDY-NEXT: {{ $}} 2509 ; GREEDY-NEXT: bb.2: 2510 ; GREEDY-NEXT: successors: %bb.1(0x80000000) 2511 ; GREEDY-NEXT: {{ $}} 2512 ; GREEDY-NEXT: [[PHI1:%[0-9]+]]:vgpr(s32) = G_PHI [[COPY]](s32), %bb.0, [[PHI]](s32), %bb.1 2513 ; GREEDY-NEXT: G_BR %bb.1 2514 bb.0: 2515 successors: %bb.1, %bb.2 2516 liveins: $sgpr0, $sgpr1, $sgpr2 2517 2518 %0:_(s32) = COPY $sgpr0 2519 %1:_(s32) = COPY $sgpr1 2520 %2:_(s32) = COPY $sgpr2 2521 %3:_(s32) = G_CONSTANT i32 0 2522 %4:_(s1) = G_ICMP intpred(eq), %2, %3 2523 G_BRCOND %4, %bb.1 2524 G_BR %bb.2 2525 2526 bb.1: 2527 successors: %bb.2 2528 %5:_(s32) = G_PHI %0, %bb.0, %6, %bb.2 2529 G_BR %bb.2 2530 2531 bb.2: 2532 successors: %bb.1 2533 %6:_(s32) = G_PHI %0, %bb.0, %5, %bb.1 2534 G_BR %bb.1 2535... 2536 2537--- 2538name: phi_s32_vs_sbranch_cycle 2539legalized: true 2540tracksRegLiveness: true 2541 2542body: | 2543 ; FAST-LABEL: name: phi_s32_vs_sbranch_cycle 2544 ; FAST: bb.0: 2545 ; FAST-NEXT: successors: %bb.1(0x40000000), %bb.2(0x40000000) 2546 ; FAST-NEXT: liveins: $vgpr0, $sgpr1, $sgpr2 2547 ; FAST-NEXT: {{ $}} 2548 ; FAST-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0 2549 ; FAST-NEXT: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1 2550 ; FAST-NEXT: [[COPY2:%[0-9]+]]:sgpr(s32) = COPY $sgpr2 2551 ; FAST-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 0 2552 ; FAST-NEXT: [[ICMP:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(eq), [[COPY2]](s32), [[C]] 2553 ; FAST-NEXT: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[ICMP]](s32) 2554 ; FAST-NEXT: [[ZEXT:%[0-9]+]]:sgpr(s32) = G_ZEXT [[TRUNC]](s1) 2555 ; FAST-NEXT: G_BRCOND [[ZEXT]](s32), %bb.1 2556 ; FAST-NEXT: G_BR %bb.2 2557 ; FAST-NEXT: {{ $}} 2558 ; FAST-NEXT: bb.1: 2559 ; FAST-NEXT: successors: %bb.2(0x80000000) 2560 ; FAST-NEXT: {{ $}} 2561 ; FAST-NEXT: [[PHI:%[0-9]+]]:vgpr(s32) = G_PHI [[COPY]](s32), %bb.0, %6(s32), %bb.2 2562 ; FAST-NEXT: G_BR %bb.2 2563 ; FAST-NEXT: {{ $}} 2564 ; FAST-NEXT: bb.2: 2565 ; FAST-NEXT: successors: %bb.1(0x80000000) 2566 ; FAST-NEXT: {{ $}} 2567 ; FAST-NEXT: [[PHI1:%[0-9]+]]:vgpr(s32) = G_PHI [[COPY]](s32), %bb.0, [[PHI]](s32), %bb.1 2568 ; FAST-NEXT: G_BR %bb.1 2569 ; GREEDY-LABEL: name: phi_s32_vs_sbranch_cycle 2570 ; GREEDY: bb.0: 2571 ; GREEDY-NEXT: successors: %bb.1(0x40000000), %bb.2(0x40000000) 2572 ; GREEDY-NEXT: liveins: $vgpr0, $sgpr1, $sgpr2 2573 ; GREEDY-NEXT: {{ $}} 2574 ; GREEDY-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0 2575 ; GREEDY-NEXT: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1 2576 ; GREEDY-NEXT: [[COPY2:%[0-9]+]]:sgpr(s32) = COPY $sgpr2 2577 ; GREEDY-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 0 2578 ; GREEDY-NEXT: [[ICMP:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(eq), [[COPY2]](s32), [[C]] 2579 ; GREEDY-NEXT: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[ICMP]](s32) 2580 ; GREEDY-NEXT: [[ZEXT:%[0-9]+]]:sgpr(s32) = G_ZEXT [[TRUNC]](s1) 2581 ; GREEDY-NEXT: G_BRCOND [[ZEXT]](s32), %bb.1 2582 ; GREEDY-NEXT: G_BR %bb.2 2583 ; GREEDY-NEXT: {{ $}} 2584 ; GREEDY-NEXT: bb.1: 2585 ; GREEDY-NEXT: successors: %bb.2(0x80000000) 2586 ; GREEDY-NEXT: {{ $}} 2587 ; GREEDY-NEXT: [[PHI:%[0-9]+]]:vgpr(s32) = G_PHI [[COPY]](s32), %bb.0, %6(s32), %bb.2 2588 ; GREEDY-NEXT: G_BR %bb.2 2589 ; GREEDY-NEXT: {{ $}} 2590 ; GREEDY-NEXT: bb.2: 2591 ; GREEDY-NEXT: successors: %bb.1(0x80000000) 2592 ; GREEDY-NEXT: {{ $}} 2593 ; GREEDY-NEXT: [[PHI1:%[0-9]+]]:vgpr(s32) = G_PHI [[COPY]](s32), %bb.0, [[PHI]](s32), %bb.1 2594 ; GREEDY-NEXT: G_BR %bb.1 2595 bb.0: 2596 successors: %bb.1, %bb.2 2597 liveins: $vgpr0, $sgpr1, $sgpr2 2598 2599 %0:_(s32) = COPY $vgpr0 2600 %1:_(s32) = COPY $sgpr1 2601 %2:_(s32) = COPY $sgpr2 2602 %3:_(s32) = G_CONSTANT i32 0 2603 %4:_(s1) = G_ICMP intpred(eq), %2, %3 2604 G_BRCOND %4, %bb.1 2605 G_BR %bb.2 2606 2607 bb.1: 2608 successors: %bb.2 2609 %5:_(s32) = G_PHI %0, %bb.0, %6, %bb.2 2610 G_BR %bb.2 2611 2612 bb.2: 2613 successors: %bb.1 2614 %6:_(s32) = G_PHI %0, %bb.0, %5, %bb.1 2615 G_BR %bb.1 2616... 2617 2618--- 2619name: phi_s32_aa_sbranch 2620legalized: true 2621tracksRegLiveness: true 2622 2623body: | 2624 ; FAST-LABEL: name: phi_s32_aa_sbranch 2625 ; FAST: bb.0: 2626 ; FAST-NEXT: successors: %bb.1(0x40000000), %bb.2(0x40000000) 2627 ; FAST-NEXT: liveins: $agpr0, $agpr1, $sgpr2 2628 ; FAST-NEXT: {{ $}} 2629 ; FAST-NEXT: [[COPY:%[0-9]+]]:agpr(s32) = COPY $agpr0 2630 ; FAST-NEXT: [[COPY1:%[0-9]+]]:agpr(s32) = COPY $agpr1 2631 ; FAST-NEXT: [[COPY2:%[0-9]+]]:sgpr(s32) = COPY $sgpr2 2632 ; FAST-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 0 2633 ; FAST-NEXT: [[ICMP:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(eq), [[COPY2]](s32), [[C]] 2634 ; FAST-NEXT: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[ICMP]](s32) 2635 ; FAST-NEXT: [[ZEXT:%[0-9]+]]:sgpr(s32) = G_ZEXT [[TRUNC]](s1) 2636 ; FAST-NEXT: G_BRCOND [[ZEXT]](s32), %bb.1 2637 ; FAST-NEXT: G_BR %bb.2 2638 ; FAST-NEXT: {{ $}} 2639 ; FAST-NEXT: bb.1: 2640 ; FAST-NEXT: successors: %bb.2(0x80000000) 2641 ; FAST-NEXT: {{ $}} 2642 ; FAST-NEXT: [[COPY3:%[0-9]+]]:agpr(s32) = COPY [[COPY1]](s32) 2643 ; FAST-NEXT: G_BR %bb.2 2644 ; FAST-NEXT: {{ $}} 2645 ; FAST-NEXT: bb.2: 2646 ; FAST-NEXT: [[PHI:%[0-9]+]]:agpr(s32) = G_PHI [[COPY]](s32), %bb.0, [[COPY3]](s32), %bb.1 2647 ; FAST-NEXT: $agpr0 = COPY [[PHI]](s32) 2648 ; FAST-NEXT: S_SETPC_B64 undef $sgpr30_sgpr31 2649 ; GREEDY-LABEL: name: phi_s32_aa_sbranch 2650 ; GREEDY: bb.0: 2651 ; GREEDY-NEXT: successors: %bb.1(0x40000000), %bb.2(0x40000000) 2652 ; GREEDY-NEXT: liveins: $agpr0, $agpr1, $sgpr2 2653 ; GREEDY-NEXT: {{ $}} 2654 ; GREEDY-NEXT: [[COPY:%[0-9]+]]:agpr(s32) = COPY $agpr0 2655 ; GREEDY-NEXT: [[COPY1:%[0-9]+]]:agpr(s32) = COPY $agpr1 2656 ; GREEDY-NEXT: [[COPY2:%[0-9]+]]:sgpr(s32) = COPY $sgpr2 2657 ; GREEDY-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 0 2658 ; GREEDY-NEXT: [[ICMP:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(eq), [[COPY2]](s32), [[C]] 2659 ; GREEDY-NEXT: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[ICMP]](s32) 2660 ; GREEDY-NEXT: [[ZEXT:%[0-9]+]]:sgpr(s32) = G_ZEXT [[TRUNC]](s1) 2661 ; GREEDY-NEXT: G_BRCOND [[ZEXT]](s32), %bb.1 2662 ; GREEDY-NEXT: G_BR %bb.2 2663 ; GREEDY-NEXT: {{ $}} 2664 ; GREEDY-NEXT: bb.1: 2665 ; GREEDY-NEXT: successors: %bb.2(0x80000000) 2666 ; GREEDY-NEXT: {{ $}} 2667 ; GREEDY-NEXT: [[COPY3:%[0-9]+]]:agpr(s32) = COPY [[COPY1]](s32) 2668 ; GREEDY-NEXT: G_BR %bb.2 2669 ; GREEDY-NEXT: {{ $}} 2670 ; GREEDY-NEXT: bb.2: 2671 ; GREEDY-NEXT: [[PHI:%[0-9]+]]:agpr(s32) = G_PHI [[COPY]](s32), %bb.0, [[COPY3]](s32), %bb.1 2672 ; GREEDY-NEXT: $agpr0 = COPY [[PHI]](s32) 2673 ; GREEDY-NEXT: S_SETPC_B64 undef $sgpr30_sgpr31 2674 bb.0: 2675 successors: %bb.1, %bb.2 2676 liveins: $agpr0, $agpr1, $sgpr2 2677 2678 %0:_(s32) = COPY $agpr0 2679 %1:_(s32) = COPY $agpr1 2680 %2:_(s32) = COPY $sgpr2 2681 %3:_(s32) = G_CONSTANT i32 0 2682 %4:_(s1) = G_ICMP intpred(eq), %2, %3 2683 G_BRCOND %4, %bb.1 2684 G_BR %bb.2 2685 2686 bb.1: 2687 successors: %bb.2 2688 2689 %5:_(s32) = COPY %1 2690 G_BR %bb.2 2691 2692 bb.2: 2693 %6:_(s32) = G_PHI %0, %bb.0, %5, %bb.1 2694 $agpr0 = COPY %6 2695 S_SETPC_B64 undef $sgpr30_sgpr31 2696 2697... 2698 2699--- 2700name: phi_s32_av_sbranch 2701legalized: true 2702tracksRegLiveness: true 2703 2704body: | 2705 ; FAST-LABEL: name: phi_s32_av_sbranch 2706 ; FAST: bb.0: 2707 ; FAST-NEXT: successors: %bb.1(0x40000000), %bb.2(0x40000000) 2708 ; FAST-NEXT: liveins: $agpr0, $vgpr0, $sgpr2 2709 ; FAST-NEXT: {{ $}} 2710 ; FAST-NEXT: [[COPY:%[0-9]+]]:agpr(s32) = COPY $agpr0 2711 ; FAST-NEXT: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr0 2712 ; FAST-NEXT: [[COPY2:%[0-9]+]]:sgpr(s32) = COPY $sgpr2 2713 ; FAST-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 0 2714 ; FAST-NEXT: [[ICMP:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(eq), [[COPY2]](s32), [[C]] 2715 ; FAST-NEXT: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[ICMP]](s32) 2716 ; FAST-NEXT: [[ZEXT:%[0-9]+]]:sgpr(s32) = G_ZEXT [[TRUNC]](s1) 2717 ; FAST-NEXT: G_BRCOND [[ZEXT]](s32), %bb.1 2718 ; FAST-NEXT: G_BR %bb.2 2719 ; FAST-NEXT: {{ $}} 2720 ; FAST-NEXT: bb.1: 2721 ; FAST-NEXT: successors: %bb.2(0x80000000) 2722 ; FAST-NEXT: {{ $}} 2723 ; FAST-NEXT: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY [[COPY1]](s32) 2724 ; FAST-NEXT: G_BR %bb.2 2725 ; FAST-NEXT: {{ $}} 2726 ; FAST-NEXT: bb.2: 2727 ; FAST-NEXT: [[PHI:%[0-9]+]]:vgpr(s32) = G_PHI [[COPY]](s32), %bb.0, [[COPY3]](s32), %bb.1 2728 ; FAST-NEXT: $agpr0 = COPY [[PHI]](s32) 2729 ; FAST-NEXT: S_SETPC_B64 undef $sgpr30_sgpr31 2730 ; GREEDY-LABEL: name: phi_s32_av_sbranch 2731 ; GREEDY: bb.0: 2732 ; GREEDY-NEXT: successors: %bb.1(0x40000000), %bb.2(0x40000000) 2733 ; GREEDY-NEXT: liveins: $agpr0, $vgpr0, $sgpr2 2734 ; GREEDY-NEXT: {{ $}} 2735 ; GREEDY-NEXT: [[COPY:%[0-9]+]]:agpr(s32) = COPY $agpr0 2736 ; GREEDY-NEXT: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr0 2737 ; GREEDY-NEXT: [[COPY2:%[0-9]+]]:sgpr(s32) = COPY $sgpr2 2738 ; GREEDY-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 0 2739 ; GREEDY-NEXT: [[ICMP:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(eq), [[COPY2]](s32), [[C]] 2740 ; GREEDY-NEXT: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[ICMP]](s32) 2741 ; GREEDY-NEXT: [[ZEXT:%[0-9]+]]:sgpr(s32) = G_ZEXT [[TRUNC]](s1) 2742 ; GREEDY-NEXT: G_BRCOND [[ZEXT]](s32), %bb.1 2743 ; GREEDY-NEXT: G_BR %bb.2 2744 ; GREEDY-NEXT: {{ $}} 2745 ; GREEDY-NEXT: bb.1: 2746 ; GREEDY-NEXT: successors: %bb.2(0x80000000) 2747 ; GREEDY-NEXT: {{ $}} 2748 ; GREEDY-NEXT: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY [[COPY1]](s32) 2749 ; GREEDY-NEXT: G_BR %bb.2 2750 ; GREEDY-NEXT: {{ $}} 2751 ; GREEDY-NEXT: bb.2: 2752 ; GREEDY-NEXT: [[PHI:%[0-9]+]]:vgpr(s32) = G_PHI [[COPY]](s32), %bb.0, [[COPY3]](s32), %bb.1 2753 ; GREEDY-NEXT: $agpr0 = COPY [[PHI]](s32) 2754 ; GREEDY-NEXT: S_SETPC_B64 undef $sgpr30_sgpr31 2755 bb.0: 2756 successors: %bb.1, %bb.2 2757 liveins: $agpr0, $vgpr0, $sgpr2 2758 2759 %0:_(s32) = COPY $agpr0 2760 %1:_(s32) = COPY $vgpr0 2761 %2:_(s32) = COPY $sgpr2 2762 %3:_(s32) = G_CONSTANT i32 0 2763 %4:_(s1) = G_ICMP intpred(eq), %2, %3 2764 G_BRCOND %4, %bb.1 2765 G_BR %bb.2 2766 2767 bb.1: 2768 successors: %bb.2 2769 2770 %5:_(s32) = COPY %1 2771 G_BR %bb.2 2772 2773 bb.2: 2774 %6:_(s32) = G_PHI %0, %bb.0, %5, %bb.1 2775 $agpr0 = COPY %6 2776 S_SETPC_B64 undef $sgpr30_sgpr31 2777 2778... 2779--- 2780name: phi_s32_va_sbranch 2781legalized: true 2782tracksRegLiveness: true 2783 2784body: | 2785 ; FAST-LABEL: name: phi_s32_va_sbranch 2786 ; FAST: bb.0: 2787 ; FAST-NEXT: successors: %bb.1(0x40000000), %bb.2(0x40000000) 2788 ; FAST-NEXT: liveins: $agpr0, $vgpr0, $sgpr2 2789 ; FAST-NEXT: {{ $}} 2790 ; FAST-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0 2791 ; FAST-NEXT: [[COPY1:%[0-9]+]]:agpr(s32) = COPY $agpr0 2792 ; FAST-NEXT: [[COPY2:%[0-9]+]]:sgpr(s32) = COPY $sgpr2 2793 ; FAST-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 0 2794 ; FAST-NEXT: [[ICMP:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(eq), [[COPY2]](s32), [[C]] 2795 ; FAST-NEXT: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[ICMP]](s32) 2796 ; FAST-NEXT: [[ZEXT:%[0-9]+]]:sgpr(s32) = G_ZEXT [[TRUNC]](s1) 2797 ; FAST-NEXT: G_BRCOND [[ZEXT]](s32), %bb.1 2798 ; FAST-NEXT: G_BR %bb.2 2799 ; FAST-NEXT: {{ $}} 2800 ; FAST-NEXT: bb.1: 2801 ; FAST-NEXT: successors: %bb.2(0x80000000) 2802 ; FAST-NEXT: {{ $}} 2803 ; FAST-NEXT: [[COPY3:%[0-9]+]]:agpr(s32) = COPY [[COPY1]](s32) 2804 ; FAST-NEXT: G_BR %bb.2 2805 ; FAST-NEXT: {{ $}} 2806 ; FAST-NEXT: bb.2: 2807 ; FAST-NEXT: [[PHI:%[0-9]+]]:vgpr(s32) = G_PHI [[COPY]](s32), %bb.0, [[COPY3]](s32), %bb.1 2808 ; FAST-NEXT: $agpr0 = COPY [[PHI]](s32) 2809 ; FAST-NEXT: S_SETPC_B64 undef $sgpr30_sgpr31 2810 ; GREEDY-LABEL: name: phi_s32_va_sbranch 2811 ; GREEDY: bb.0: 2812 ; GREEDY-NEXT: successors: %bb.1(0x40000000), %bb.2(0x40000000) 2813 ; GREEDY-NEXT: liveins: $agpr0, $vgpr0, $sgpr2 2814 ; GREEDY-NEXT: {{ $}} 2815 ; GREEDY-NEXT: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0 2816 ; GREEDY-NEXT: [[COPY1:%[0-9]+]]:agpr(s32) = COPY $agpr0 2817 ; GREEDY-NEXT: [[COPY2:%[0-9]+]]:sgpr(s32) = COPY $sgpr2 2818 ; GREEDY-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 0 2819 ; GREEDY-NEXT: [[ICMP:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(eq), [[COPY2]](s32), [[C]] 2820 ; GREEDY-NEXT: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[ICMP]](s32) 2821 ; GREEDY-NEXT: [[ZEXT:%[0-9]+]]:sgpr(s32) = G_ZEXT [[TRUNC]](s1) 2822 ; GREEDY-NEXT: G_BRCOND [[ZEXT]](s32), %bb.1 2823 ; GREEDY-NEXT: G_BR %bb.2 2824 ; GREEDY-NEXT: {{ $}} 2825 ; GREEDY-NEXT: bb.1: 2826 ; GREEDY-NEXT: successors: %bb.2(0x80000000) 2827 ; GREEDY-NEXT: {{ $}} 2828 ; GREEDY-NEXT: [[COPY3:%[0-9]+]]:agpr(s32) = COPY [[COPY1]](s32) 2829 ; GREEDY-NEXT: G_BR %bb.2 2830 ; GREEDY-NEXT: {{ $}} 2831 ; GREEDY-NEXT: bb.2: 2832 ; GREEDY-NEXT: [[PHI:%[0-9]+]]:vgpr(s32) = G_PHI [[COPY]](s32), %bb.0, [[COPY3]](s32), %bb.1 2833 ; GREEDY-NEXT: $agpr0 = COPY [[PHI]](s32) 2834 ; GREEDY-NEXT: S_SETPC_B64 undef $sgpr30_sgpr31 2835 bb.0: 2836 successors: %bb.1, %bb.2 2837 liveins: $agpr0, $vgpr0, $sgpr2 2838 2839 %0:_(s32) = COPY $vgpr0 2840 %1:_(s32) = COPY $agpr0 2841 %2:_(s32) = COPY $sgpr2 2842 %3:_(s32) = G_CONSTANT i32 0 2843 %4:_(s1) = G_ICMP intpred(eq), %2, %3 2844 G_BRCOND %4, %bb.1 2845 G_BR %bb.2 2846 2847 bb.1: 2848 successors: %bb.2 2849 2850 %5:_(s32) = COPY %1 2851 G_BR %bb.2 2852 2853 bb.2: 2854 %6:_(s32) = G_PHI %0, %bb.0, %5, %bb.1 2855 $agpr0 = COPY %6 2856 S_SETPC_B64 undef $sgpr30_sgpr31 2857 2858... 2859 2860--- 2861name: phi_s32_as_sbranch 2862legalized: true 2863tracksRegLiveness: true 2864 2865body: | 2866 ; FAST-LABEL: name: phi_s32_as_sbranch 2867 ; FAST: bb.0: 2868 ; FAST-NEXT: successors: %bb.1(0x40000000), %bb.2(0x40000000) 2869 ; FAST-NEXT: liveins: $agpr0, $sgpr0, $sgpr2 2870 ; FAST-NEXT: {{ $}} 2871 ; FAST-NEXT: [[COPY:%[0-9]+]]:agpr(s32) = COPY $agpr0 2872 ; FAST-NEXT: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 2873 ; FAST-NEXT: [[COPY2:%[0-9]+]]:sgpr(s32) = COPY $sgpr2 2874 ; FAST-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 0 2875 ; FAST-NEXT: [[ICMP:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(eq), [[COPY2]](s32), [[C]] 2876 ; FAST-NEXT: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[ICMP]](s32) 2877 ; FAST-NEXT: [[ZEXT:%[0-9]+]]:sgpr(s32) = G_ZEXT [[TRUNC]](s1) 2878 ; FAST-NEXT: G_BRCOND [[ZEXT]](s32), %bb.1 2879 ; FAST-NEXT: G_BR %bb.2 2880 ; FAST-NEXT: {{ $}} 2881 ; FAST-NEXT: bb.1: 2882 ; FAST-NEXT: successors: %bb.2(0x80000000) 2883 ; FAST-NEXT: {{ $}} 2884 ; FAST-NEXT: [[COPY3:%[0-9]+]]:sgpr(s32) = COPY [[COPY1]](s32) 2885 ; FAST-NEXT: G_BR %bb.2 2886 ; FAST-NEXT: {{ $}} 2887 ; FAST-NEXT: bb.2: 2888 ; FAST-NEXT: [[PHI:%[0-9]+]]:vgpr(s32) = G_PHI [[COPY]](s32), %bb.0, [[COPY3]](s32), %bb.1 2889 ; FAST-NEXT: $agpr0 = COPY [[PHI]](s32) 2890 ; FAST-NEXT: S_SETPC_B64 undef $sgpr30_sgpr31 2891 ; GREEDY-LABEL: name: phi_s32_as_sbranch 2892 ; GREEDY: bb.0: 2893 ; GREEDY-NEXT: successors: %bb.1(0x40000000), %bb.2(0x40000000) 2894 ; GREEDY-NEXT: liveins: $agpr0, $sgpr0, $sgpr2 2895 ; GREEDY-NEXT: {{ $}} 2896 ; GREEDY-NEXT: [[COPY:%[0-9]+]]:agpr(s32) = COPY $agpr0 2897 ; GREEDY-NEXT: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 2898 ; GREEDY-NEXT: [[COPY2:%[0-9]+]]:sgpr(s32) = COPY $sgpr2 2899 ; GREEDY-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 0 2900 ; GREEDY-NEXT: [[ICMP:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(eq), [[COPY2]](s32), [[C]] 2901 ; GREEDY-NEXT: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[ICMP]](s32) 2902 ; GREEDY-NEXT: [[ZEXT:%[0-9]+]]:sgpr(s32) = G_ZEXT [[TRUNC]](s1) 2903 ; GREEDY-NEXT: G_BRCOND [[ZEXT]](s32), %bb.1 2904 ; GREEDY-NEXT: G_BR %bb.2 2905 ; GREEDY-NEXT: {{ $}} 2906 ; GREEDY-NEXT: bb.1: 2907 ; GREEDY-NEXT: successors: %bb.2(0x80000000) 2908 ; GREEDY-NEXT: {{ $}} 2909 ; GREEDY-NEXT: [[COPY3:%[0-9]+]]:sgpr(s32) = COPY [[COPY1]](s32) 2910 ; GREEDY-NEXT: G_BR %bb.2 2911 ; GREEDY-NEXT: {{ $}} 2912 ; GREEDY-NEXT: bb.2: 2913 ; GREEDY-NEXT: [[PHI:%[0-9]+]]:vgpr(s32) = G_PHI [[COPY]](s32), %bb.0, [[COPY3]](s32), %bb.1 2914 ; GREEDY-NEXT: $agpr0 = COPY [[PHI]](s32) 2915 ; GREEDY-NEXT: S_SETPC_B64 undef $sgpr30_sgpr31 2916 bb.0: 2917 successors: %bb.1, %bb.2 2918 liveins: $agpr0, $sgpr0, $sgpr2 2919 2920 %0:_(s32) = COPY $agpr0 2921 %1:_(s32) = COPY $sgpr0 2922 %2:_(s32) = COPY $sgpr2 2923 %3:_(s32) = G_CONSTANT i32 0 2924 %4:_(s1) = G_ICMP intpred(eq), %2, %3 2925 G_BRCOND %4, %bb.1 2926 G_BR %bb.2 2927 2928 bb.1: 2929 successors: %bb.2 2930 2931 %5:_(s32) = COPY %1 2932 G_BR %bb.2 2933 2934 bb.2: 2935 %6:_(s32) = G_PHI %0, %bb.0, %5, %bb.1 2936 $agpr0 = COPY %6 2937 S_SETPC_B64 undef $sgpr30_sgpr31 2938 2939... 2940 2941--- 2942name: phi_s32_sa_sbranch 2943legalized: true 2944tracksRegLiveness: true 2945 2946body: | 2947 ; FAST-LABEL: name: phi_s32_sa_sbranch 2948 ; FAST: bb.0: 2949 ; FAST-NEXT: successors: %bb.1(0x40000000), %bb.2(0x40000000) 2950 ; FAST-NEXT: liveins: $agpr0, $sgpr0, $sgpr2 2951 ; FAST-NEXT: {{ $}} 2952 ; FAST-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 2953 ; FAST-NEXT: [[COPY1:%[0-9]+]]:agpr(s32) = COPY $agpr0 2954 ; FAST-NEXT: [[COPY2:%[0-9]+]]:sgpr(s32) = COPY $sgpr2 2955 ; FAST-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 0 2956 ; FAST-NEXT: [[ICMP:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(eq), [[COPY2]](s32), [[C]] 2957 ; FAST-NEXT: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[ICMP]](s32) 2958 ; FAST-NEXT: [[ZEXT:%[0-9]+]]:sgpr(s32) = G_ZEXT [[TRUNC]](s1) 2959 ; FAST-NEXT: G_BRCOND [[ZEXT]](s32), %bb.1 2960 ; FAST-NEXT: G_BR %bb.2 2961 ; FAST-NEXT: {{ $}} 2962 ; FAST-NEXT: bb.1: 2963 ; FAST-NEXT: successors: %bb.2(0x80000000) 2964 ; FAST-NEXT: {{ $}} 2965 ; FAST-NEXT: [[COPY3:%[0-9]+]]:agpr(s32) = COPY [[COPY1]](s32) 2966 ; FAST-NEXT: G_BR %bb.2 2967 ; FAST-NEXT: {{ $}} 2968 ; FAST-NEXT: bb.2: 2969 ; FAST-NEXT: [[PHI:%[0-9]+]]:vgpr(s32) = G_PHI [[COPY]](s32), %bb.0, [[COPY3]](s32), %bb.1 2970 ; FAST-NEXT: $agpr0 = COPY [[PHI]](s32) 2971 ; FAST-NEXT: S_SETPC_B64 undef $sgpr30_sgpr31 2972 ; GREEDY-LABEL: name: phi_s32_sa_sbranch 2973 ; GREEDY: bb.0: 2974 ; GREEDY-NEXT: successors: %bb.1(0x40000000), %bb.2(0x40000000) 2975 ; GREEDY-NEXT: liveins: $agpr0, $sgpr0, $sgpr2 2976 ; GREEDY-NEXT: {{ $}} 2977 ; GREEDY-NEXT: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 2978 ; GREEDY-NEXT: [[COPY1:%[0-9]+]]:agpr(s32) = COPY $agpr0 2979 ; GREEDY-NEXT: [[COPY2:%[0-9]+]]:sgpr(s32) = COPY $sgpr2 2980 ; GREEDY-NEXT: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 0 2981 ; GREEDY-NEXT: [[ICMP:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(eq), [[COPY2]](s32), [[C]] 2982 ; GREEDY-NEXT: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[ICMP]](s32) 2983 ; GREEDY-NEXT: [[ZEXT:%[0-9]+]]:sgpr(s32) = G_ZEXT [[TRUNC]](s1) 2984 ; GREEDY-NEXT: G_BRCOND [[ZEXT]](s32), %bb.1 2985 ; GREEDY-NEXT: G_BR %bb.2 2986 ; GREEDY-NEXT: {{ $}} 2987 ; GREEDY-NEXT: bb.1: 2988 ; GREEDY-NEXT: successors: %bb.2(0x80000000) 2989 ; GREEDY-NEXT: {{ $}} 2990 ; GREEDY-NEXT: [[COPY3:%[0-9]+]]:agpr(s32) = COPY [[COPY1]](s32) 2991 ; GREEDY-NEXT: G_BR %bb.2 2992 ; GREEDY-NEXT: {{ $}} 2993 ; GREEDY-NEXT: bb.2: 2994 ; GREEDY-NEXT: [[PHI:%[0-9]+]]:vgpr(s32) = G_PHI [[COPY]](s32), %bb.0, [[COPY3]](s32), %bb.1 2995 ; GREEDY-NEXT: $agpr0 = COPY [[PHI]](s32) 2996 ; GREEDY-NEXT: S_SETPC_B64 undef $sgpr30_sgpr31 2997 bb.0: 2998 successors: %bb.1, %bb.2 2999 liveins: $agpr0, $sgpr0, $sgpr2 3000 3001 %0:_(s32) = COPY $sgpr0 3002 %1:_(s32) = COPY $agpr0 3003 %2:_(s32) = COPY $sgpr2 3004 %3:_(s32) = G_CONSTANT i32 0 3005 %4:_(s1) = G_ICMP intpred(eq), %2, %3 3006 G_BRCOND %4, %bb.1 3007 G_BR %bb.2 3008 3009 bb.1: 3010 successors: %bb.2 3011 3012 %5:_(s32) = COPY %1 3013 G_BR %bb.2 3014 3015 bb.2: 3016 %6:_(s32) = G_PHI %0, %bb.0, %5, %bb.1 3017 $agpr0 = COPY %6 3018 S_SETPC_B64 undef $sgpr30_sgpr31 3019 3020... 3021