1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py 2# RUN: llc -march=amdgcn -mcpu=fiji -run-pass=regbankselect -global-isel %s -verify-machineinstrs -o - -regbankselect-fast | FileCheck -check-prefix=FAST %s 3# RUN: llc -march=amdgcn -mcpu=fiji -run-pass=regbankselect -global-isel %s -verify-machineinstrs -o - -regbankselect-greedy | FileCheck -check-prefix=GREEDY %s 4 5--- 6name: select_s32_scc_ss 7legalized: true 8body: | 9 bb.0: 10 liveins: $sgpr0, $sgpr1, $sgpr2, $sgpr3 11 ; FAST-LABEL: name: select_s32_scc_ss 12 ; FAST: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 13 ; FAST: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1 14 ; FAST: [[COPY2:%[0-9]+]]:sgpr(s32) = COPY $sgpr2 15 ; FAST: [[COPY3:%[0-9]+]]:sgpr(s32) = COPY $sgpr3 16 ; FAST: [[ICMP:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(ne), [[COPY]](s32), [[COPY1]] 17 ; FAST: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[ICMP]](s32) 18 ; FAST: [[ZEXT:%[0-9]+]]:sgpr(s32) = G_ZEXT [[TRUNC]](s1) 19 ; FAST: [[SELECT:%[0-9]+]]:sgpr(s32) = G_SELECT [[ZEXT]](s32), [[COPY2]], [[COPY3]] 20 ; GREEDY-LABEL: name: select_s32_scc_ss 21 ; GREEDY: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 22 ; GREEDY: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1 23 ; GREEDY: [[COPY2:%[0-9]+]]:sgpr(s32) = COPY $sgpr2 24 ; GREEDY: [[COPY3:%[0-9]+]]:sgpr(s32) = COPY $sgpr3 25 ; GREEDY: [[ICMP:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(ne), [[COPY]](s32), [[COPY1]] 26 ; GREEDY: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[ICMP]](s32) 27 ; GREEDY: [[ZEXT:%[0-9]+]]:sgpr(s32) = G_ZEXT [[TRUNC]](s1) 28 ; GREEDY: [[SELECT:%[0-9]+]]:sgpr(s32) = G_SELECT [[ZEXT]](s32), [[COPY2]], [[COPY3]] 29 %0:_(s32) = COPY $sgpr0 30 %1:_(s32) = COPY $sgpr1 31 %2:_(s32) = COPY $sgpr2 32 %3:_(s32) = COPY $sgpr3 33 %4:_(s1) = G_ICMP intpred(ne), %0, %1 34 %5:_(s32) = G_SELECT %4, %2, %3 35... 36 37--- 38name: select_s32_scc_sv 39legalized: true 40body: | 41 bb.0: 42 liveins: $sgpr0, $sgpr1, $sgpr2, $vgpr0 43 ; FAST-LABEL: name: select_s32_scc_sv 44 ; FAST: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 45 ; FAST: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1 46 ; FAST: [[COPY2:%[0-9]+]]:sgpr(s32) = COPY $sgpr2 47 ; FAST: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY $vgpr0 48 ; FAST: [[ICMP:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(ne), [[COPY]](s32), [[COPY1]] 49 ; FAST: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[ICMP]](s32) 50 ; FAST: [[COPY4:%[0-9]+]]:vcc(s1) = COPY [[TRUNC]](s1) 51 ; FAST: [[COPY5:%[0-9]+]]:vgpr(s32) = COPY [[COPY2]](s32) 52 ; FAST: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[COPY4]](s1), [[COPY5]], [[COPY3]] 53 ; GREEDY-LABEL: name: select_s32_scc_sv 54 ; GREEDY: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 55 ; GREEDY: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1 56 ; GREEDY: [[COPY2:%[0-9]+]]:sgpr(s32) = COPY $sgpr2 57 ; GREEDY: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY $vgpr0 58 ; GREEDY: [[ICMP:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(ne), [[COPY]](s32), [[COPY1]] 59 ; GREEDY: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[ICMP]](s32) 60 ; GREEDY: [[COPY4:%[0-9]+]]:vcc(s1) = COPY [[TRUNC]](s1) 61 ; GREEDY: [[COPY5:%[0-9]+]]:vgpr(s32) = COPY [[COPY2]](s32) 62 ; GREEDY: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[COPY4]](s1), [[COPY5]], [[COPY3]] 63 %0:_(s32) = COPY $sgpr0 64 %1:_(s32) = COPY $sgpr1 65 %2:_(s32) = COPY $sgpr2 66 %3:_(s32) = COPY $vgpr0 67 %4:_(s1) = G_ICMP intpred(ne), %0, %1 68 %5:_(s32) = G_SELECT %4, %2, %3 69 70... 71 72--- 73name: select_s32_scc_vs 74legalized: true 75body: | 76 bb.0: 77 liveins: $sgpr0, $sgpr1, $sgpr2, $vgpr0 78 ; FAST-LABEL: name: select_s32_scc_vs 79 ; FAST: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 80 ; FAST: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1 81 ; FAST: [[COPY2:%[0-9]+]]:sgpr(s32) = COPY $sgpr2 82 ; FAST: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY $vgpr0 83 ; FAST: [[ICMP:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(ne), [[COPY]](s32), [[COPY1]] 84 ; FAST: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[ICMP]](s32) 85 ; FAST: [[COPY4:%[0-9]+]]:vcc(s1) = COPY [[TRUNC]](s1) 86 ; FAST: [[COPY5:%[0-9]+]]:vgpr(s32) = COPY [[COPY2]](s32) 87 ; FAST: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[COPY4]](s1), [[COPY3]], [[COPY5]] 88 ; GREEDY-LABEL: name: select_s32_scc_vs 89 ; GREEDY: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 90 ; GREEDY: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1 91 ; GREEDY: [[COPY2:%[0-9]+]]:sgpr(s32) = COPY $sgpr2 92 ; GREEDY: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY $vgpr0 93 ; GREEDY: [[ICMP:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(ne), [[COPY]](s32), [[COPY1]] 94 ; GREEDY: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[ICMP]](s32) 95 ; GREEDY: [[COPY4:%[0-9]+]]:vcc(s1) = COPY [[TRUNC]](s1) 96 ; GREEDY: [[COPY5:%[0-9]+]]:vgpr(s32) = COPY [[COPY2]](s32) 97 ; GREEDY: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[COPY4]](s1), [[COPY3]], [[COPY5]] 98 %0:_(s32) = COPY $sgpr0 99 %1:_(s32) = COPY $sgpr1 100 %2:_(s32) = COPY $sgpr2 101 %3:_(s32) = COPY $vgpr0 102 %4:_(s1) = G_ICMP intpred(ne), %0, %1 103 %5:_(s32) = G_SELECT %4, %3, %2 104... 105 106--- 107name: select_s32_scc_vv 108legalized: true 109body: | 110 bb.0: 111 liveins: $sgpr0, $sgpr1, $vgpr0, $vgpr1 112 ; FAST-LABEL: name: select_s32_scc_vv 113 ; FAST: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 114 ; FAST: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1 115 ; FAST: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY $vgpr0 116 ; FAST: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY $vgpr1 117 ; FAST: [[ICMP:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(ne), [[COPY]](s32), [[COPY1]] 118 ; FAST: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[ICMP]](s32) 119 ; FAST: [[COPY4:%[0-9]+]]:vcc(s1) = COPY [[TRUNC]](s1) 120 ; FAST: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[COPY4]](s1), [[COPY2]], [[COPY3]] 121 ; GREEDY-LABEL: name: select_s32_scc_vv 122 ; GREEDY: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 123 ; GREEDY: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1 124 ; GREEDY: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY $vgpr0 125 ; GREEDY: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY $vgpr1 126 ; GREEDY: [[ICMP:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(ne), [[COPY]](s32), [[COPY1]] 127 ; GREEDY: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[ICMP]](s32) 128 ; GREEDY: [[COPY4:%[0-9]+]]:vcc(s1) = COPY [[TRUNC]](s1) 129 ; GREEDY: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[COPY4]](s1), [[COPY2]], [[COPY3]] 130 %0:_(s32) = COPY $sgpr0 131 %1:_(s32) = COPY $sgpr1 132 %2:_(s32) = COPY $vgpr0 133 %3:_(s32) = COPY $vgpr1 134 %4:_(s1) = G_ICMP intpred(ne), %0, %1 135 %5:_(s32) = G_SELECT %4, %2, %3 136... 137 138--- 139name: select_s32_vcc_ss 140legalized: true 141body: | 142 bb.0: 143 liveins: $sgpr0, $sgpr1, $vgpr0, $vgpr1 144 ; FAST-LABEL: name: select_s32_vcc_ss 145 ; FAST: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 146 ; FAST: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1 147 ; FAST: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY $vgpr0 148 ; FAST: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY $vgpr1 149 ; FAST: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(ne), [[COPY2]](s32), [[COPY3]] 150 ; FAST: [[COPY4:%[0-9]+]]:vgpr(s32) = COPY [[COPY]](s32) 151 ; FAST: [[COPY5:%[0-9]+]]:vgpr(s32) = COPY [[COPY1]](s32) 152 ; FAST: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[COPY4]], [[COPY5]] 153 ; GREEDY-LABEL: name: select_s32_vcc_ss 154 ; GREEDY: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 155 ; GREEDY: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1 156 ; GREEDY: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY $vgpr0 157 ; GREEDY: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY $vgpr1 158 ; GREEDY: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(ne), [[COPY2]](s32), [[COPY3]] 159 ; GREEDY: [[COPY4:%[0-9]+]]:vgpr(s32) = COPY [[COPY]](s32) 160 ; GREEDY: [[COPY5:%[0-9]+]]:vgpr(s32) = COPY [[COPY1]](s32) 161 ; GREEDY: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[COPY4]], [[COPY5]] 162 %0:_(s32) = COPY $sgpr0 163 %1:_(s32) = COPY $sgpr1 164 %2:_(s32) = COPY $vgpr0 165 %3:_(s32) = COPY $vgpr1 166 %4:_(s1) = G_ICMP intpred(ne), %2, %3 167 %5:_(s32) = G_SELECT %4, %0, %1 168... 169 170--- 171name: select_s32_vcc_sv 172legalized: true 173body: | 174 bb.0: 175 liveins: $sgpr0, $vgpr0, $vgpr1, $vgpr2 176 ; FAST-LABEL: name: select_s32_vcc_sv 177 ; FAST: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 178 ; FAST: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr0 179 ; FAST: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY $vgpr1 180 ; FAST: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY $vgpr2 181 ; FAST: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(ne), [[COPY1]](s32), [[COPY2]] 182 ; FAST: [[COPY4:%[0-9]+]]:vgpr(s32) = COPY [[COPY]](s32) 183 ; FAST: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[COPY4]], [[COPY3]] 184 ; GREEDY-LABEL: name: select_s32_vcc_sv 185 ; GREEDY: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 186 ; GREEDY: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr0 187 ; GREEDY: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY $vgpr1 188 ; GREEDY: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY $vgpr2 189 ; GREEDY: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(ne), [[COPY1]](s32), [[COPY2]] 190 ; GREEDY: [[COPY4:%[0-9]+]]:vgpr(s32) = COPY [[COPY]](s32) 191 ; GREEDY: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[COPY4]], [[COPY3]] 192 %0:_(s32) = COPY $sgpr0 193 %1:_(s32) = COPY $vgpr0 194 %2:_(s32) = COPY $vgpr1 195 %3:_(s32) = COPY $vgpr2 196 %4:_(s1) = G_ICMP intpred(ne), %1, %2 197 %5:_(s32) = G_SELECT %4, %0, %3 198... 199 200--- 201name: select_s32_vcc_vs 202legalized: true 203body: | 204 bb.0: 205 liveins: $sgpr0, $vgpr0, $vgpr1, $vgpr2 206 ; FAST-LABEL: name: select_s32_vcc_vs 207 ; FAST: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 208 ; FAST: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr0 209 ; FAST: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY $vgpr1 210 ; FAST: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY $vgpr2 211 ; FAST: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(ne), [[COPY1]](s32), [[COPY2]] 212 ; FAST: [[COPY4:%[0-9]+]]:vgpr(s32) = COPY [[COPY]](s32) 213 ; FAST: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[COPY3]], [[COPY4]] 214 ; GREEDY-LABEL: name: select_s32_vcc_vs 215 ; GREEDY: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 216 ; GREEDY: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr0 217 ; GREEDY: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY $vgpr1 218 ; GREEDY: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY $vgpr2 219 ; GREEDY: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(ne), [[COPY1]](s32), [[COPY2]] 220 ; GREEDY: [[COPY4:%[0-9]+]]:vgpr(s32) = COPY [[COPY]](s32) 221 ; GREEDY: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[COPY3]], [[COPY4]] 222 %0:_(s32) = COPY $sgpr0 223 %1:_(s32) = COPY $vgpr0 224 %2:_(s32) = COPY $vgpr1 225 %3:_(s32) = COPY $vgpr2 226 %4:_(s1) = G_ICMP intpred(ne), %1, %2 227 %5:_(s32) = G_SELECT %4, %3, %0 228... 229 230--- 231name: select_s32_vcc_vv 232legalized: true 233body: | 234 bb.0: 235 liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3 236 ; FAST-LABEL: name: select_s32_vcc_vv 237 ; FAST: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0 238 ; FAST: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr1 239 ; FAST: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY $vgpr2 240 ; FAST: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY $vgpr3 241 ; FAST: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(ne), [[COPY]](s32), [[COPY1]] 242 ; FAST: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[COPY2]], [[COPY3]] 243 ; GREEDY-LABEL: name: select_s32_vcc_vv 244 ; GREEDY: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0 245 ; GREEDY: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr1 246 ; GREEDY: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY $vgpr2 247 ; GREEDY: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY $vgpr3 248 ; GREEDY: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(ne), [[COPY]](s32), [[COPY1]] 249 ; GREEDY: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[COPY2]], [[COPY3]] 250 %0:_(s32) = COPY $vgpr0 251 %1:_(s32) = COPY $vgpr1 252 %2:_(s32) = COPY $vgpr2 253 %3:_(s32) = COPY $vgpr3 254 %4:_(s1) = G_ICMP intpred(ne), %0, %1 255 %5:_(s32) = G_SELECT %4, %2, %3 256... 257 258--- 259name: select_s64_sss 260legalized: true 261body: | 262 bb.0: 263 liveins: $sgpr0, $sgpr1, $sgpr2_sgpr3, $sgpr4_sgpr5 264 ; FAST-LABEL: name: select_s64_sss 265 ; FAST: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 266 ; FAST: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1 267 ; FAST: [[COPY2:%[0-9]+]]:sgpr(s64) = COPY $sgpr2_sgpr3 268 ; FAST: [[COPY3:%[0-9]+]]:sgpr(s64) = COPY $sgpr4_sgpr5 269 ; FAST: [[ICMP:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(ne), [[COPY]](s32), [[COPY1]] 270 ; FAST: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[ICMP]](s32) 271 ; FAST: [[ZEXT:%[0-9]+]]:sgpr(s32) = G_ZEXT [[TRUNC]](s1) 272 ; FAST: [[SELECT:%[0-9]+]]:sgpr(s64) = G_SELECT [[ZEXT]](s32), [[COPY2]], [[COPY3]] 273 ; GREEDY-LABEL: name: select_s64_sss 274 ; GREEDY: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 275 ; GREEDY: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1 276 ; GREEDY: [[COPY2:%[0-9]+]]:sgpr(s64) = COPY $sgpr2_sgpr3 277 ; GREEDY: [[COPY3:%[0-9]+]]:sgpr(s64) = COPY $sgpr4_sgpr5 278 ; GREEDY: [[ICMP:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(ne), [[COPY]](s32), [[COPY1]] 279 ; GREEDY: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[ICMP]](s32) 280 ; GREEDY: [[ZEXT:%[0-9]+]]:sgpr(s32) = G_ZEXT [[TRUNC]](s1) 281 ; GREEDY: [[SELECT:%[0-9]+]]:sgpr(s64) = G_SELECT [[ZEXT]](s32), [[COPY2]], [[COPY3]] 282 %0:_(s32) = COPY $sgpr0 283 %1:_(s32) = COPY $sgpr1 284 %2:_(s64) = COPY $sgpr2_sgpr3 285 %3:_(s64) = COPY $sgpr4_sgpr5 286 %4:_(s1) = G_ICMP intpred(ne), %0, %1 287 %5:_(s64) = G_SELECT %4, %2, %3 288... 289 290--- 291name: select_s64_ssv 292legalized: true 293body: | 294 bb.0: 295 liveins: $sgpr0, $sgpr1, $sgpr2_sgpr3, $vgpr0_vgpr1 296 ; FAST-LABEL: name: select_s64_ssv 297 ; FAST: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 298 ; FAST: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1 299 ; FAST: [[COPY2:%[0-9]+]]:sgpr(s64) = COPY $sgpr2_sgpr3 300 ; FAST: [[COPY3:%[0-9]+]]:vgpr(s64) = COPY $vgpr0_vgpr1 301 ; FAST: [[ICMP:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(ne), [[COPY]](s32), [[COPY1]] 302 ; FAST: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[ICMP]](s32) 303 ; FAST: [[COPY4:%[0-9]+]]:vcc(s1) = COPY [[TRUNC]](s1) 304 ; FAST: [[UV:%[0-9]+]]:vgpr(s32), [[UV1:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY2]](s64) 305 ; FAST: [[UV2:%[0-9]+]]:vgpr(s32), [[UV3:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY3]](s64) 306 ; FAST: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[COPY4]](s1), [[UV]], [[UV2]] 307 ; FAST: [[SELECT1:%[0-9]+]]:vgpr(s32) = G_SELECT [[COPY4]](s1), [[UV1]], [[UV3]] 308 ; FAST: [[MV:%[0-9]+]]:vgpr(s64) = G_MERGE_VALUES [[SELECT]](s32), [[SELECT1]](s32) 309 ; GREEDY-LABEL: name: select_s64_ssv 310 ; GREEDY: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 311 ; GREEDY: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1 312 ; GREEDY: [[COPY2:%[0-9]+]]:sgpr(s64) = COPY $sgpr2_sgpr3 313 ; GREEDY: [[COPY3:%[0-9]+]]:vgpr(s64) = COPY $vgpr0_vgpr1 314 ; GREEDY: [[ICMP:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(ne), [[COPY]](s32), [[COPY1]] 315 ; GREEDY: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[ICMP]](s32) 316 ; GREEDY: [[COPY4:%[0-9]+]]:vcc(s1) = COPY [[TRUNC]](s1) 317 ; GREEDY: [[UV:%[0-9]+]]:vgpr(s32), [[UV1:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY2]](s64) 318 ; GREEDY: [[UV2:%[0-9]+]]:vgpr(s32), [[UV3:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY3]](s64) 319 ; GREEDY: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[COPY4]](s1), [[UV]], [[UV2]] 320 ; GREEDY: [[SELECT1:%[0-9]+]]:vgpr(s32) = G_SELECT [[COPY4]](s1), [[UV1]], [[UV3]] 321 ; GREEDY: [[MV:%[0-9]+]]:vgpr(s64) = G_MERGE_VALUES [[SELECT]](s32), [[SELECT1]](s32) 322 %0:_(s32) = COPY $sgpr0 323 %1:_(s32) = COPY $sgpr1 324 %2:_(s64) = COPY $sgpr2_sgpr3 325 %3:_(s64) = COPY $vgpr0_vgpr1 326 %4:_(s1) = G_ICMP intpred(ne), %0, %1 327 %5:_(s64) = G_SELECT %4, %2, %3 328 329... 330 331--- 332name: select_s64_svs 333legalized: true 334body: | 335 bb.0: 336 liveins: $sgpr0, $sgpr1, $sgpr2_sgpr3, $vgpr0_vgpr1 337 ; FAST-LABEL: name: select_s64_svs 338 ; FAST: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 339 ; FAST: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1 340 ; FAST: [[COPY2:%[0-9]+]]:sgpr(s64) = COPY $sgpr2_sgpr3 341 ; FAST: [[COPY3:%[0-9]+]]:vgpr(s64) = COPY $vgpr0_vgpr1 342 ; FAST: [[ICMP:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(ne), [[COPY]](s32), [[COPY1]] 343 ; FAST: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[ICMP]](s32) 344 ; FAST: [[COPY4:%[0-9]+]]:vcc(s1) = COPY [[TRUNC]](s1) 345 ; FAST: [[UV:%[0-9]+]]:vgpr(s32), [[UV1:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY3]](s64) 346 ; FAST: [[UV2:%[0-9]+]]:vgpr(s32), [[UV3:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY2]](s64) 347 ; FAST: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[COPY4]](s1), [[UV]], [[UV2]] 348 ; FAST: [[SELECT1:%[0-9]+]]:vgpr(s32) = G_SELECT [[COPY4]](s1), [[UV1]], [[UV3]] 349 ; FAST: [[MV:%[0-9]+]]:vgpr(s64) = G_MERGE_VALUES [[SELECT]](s32), [[SELECT1]](s32) 350 ; GREEDY-LABEL: name: select_s64_svs 351 ; GREEDY: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 352 ; GREEDY: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1 353 ; GREEDY: [[COPY2:%[0-9]+]]:sgpr(s64) = COPY $sgpr2_sgpr3 354 ; GREEDY: [[COPY3:%[0-9]+]]:vgpr(s64) = COPY $vgpr0_vgpr1 355 ; GREEDY: [[ICMP:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(ne), [[COPY]](s32), [[COPY1]] 356 ; GREEDY: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[ICMP]](s32) 357 ; GREEDY: [[COPY4:%[0-9]+]]:vcc(s1) = COPY [[TRUNC]](s1) 358 ; GREEDY: [[UV:%[0-9]+]]:vgpr(s32), [[UV1:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY3]](s64) 359 ; GREEDY: [[UV2:%[0-9]+]]:vgpr(s32), [[UV3:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY2]](s64) 360 ; GREEDY: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[COPY4]](s1), [[UV]], [[UV2]] 361 ; GREEDY: [[SELECT1:%[0-9]+]]:vgpr(s32) = G_SELECT [[COPY4]](s1), [[UV1]], [[UV3]] 362 ; GREEDY: [[MV:%[0-9]+]]:vgpr(s64) = G_MERGE_VALUES [[SELECT]](s32), [[SELECT1]](s32) 363 %0:_(s32) = COPY $sgpr0 364 %1:_(s32) = COPY $sgpr1 365 %2:_(s64) = COPY $sgpr2_sgpr3 366 %3:_(s64) = COPY $vgpr0_vgpr1 367 %4:_(s1) = G_ICMP intpred(ne), %0, %1 368 %5:_(s64) = G_SELECT %4, %3, %2 369... 370 371--- 372name: select_s64_svv 373legalized: true 374body: | 375 bb.0: 376 liveins: $sgpr0, $sgpr1, $sgpr2_sgpr3, $vgpr0_vgpr1, $vgpr2_vgpr3 377 ; FAST-LABEL: name: select_s64_svv 378 ; FAST: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 379 ; FAST: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1 380 ; FAST: [[COPY2:%[0-9]+]]:vgpr(s64) = COPY $vgpr0_vgpr1 381 ; FAST: [[COPY3:%[0-9]+]]:vgpr(s64) = COPY $vgpr2_vgpr3 382 ; FAST: [[ICMP:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(ne), [[COPY]](s32), [[COPY1]] 383 ; FAST: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[ICMP]](s32) 384 ; FAST: [[COPY4:%[0-9]+]]:vcc(s1) = COPY [[TRUNC]](s1) 385 ; FAST: [[UV:%[0-9]+]]:vgpr(s32), [[UV1:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY2]](s64) 386 ; FAST: [[UV2:%[0-9]+]]:vgpr(s32), [[UV3:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY3]](s64) 387 ; FAST: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[COPY4]](s1), [[UV]], [[UV2]] 388 ; FAST: [[SELECT1:%[0-9]+]]:vgpr(s32) = G_SELECT [[COPY4]](s1), [[UV1]], [[UV3]] 389 ; FAST: [[MV:%[0-9]+]]:vgpr(s64) = G_MERGE_VALUES [[SELECT]](s32), [[SELECT1]](s32) 390 ; GREEDY-LABEL: name: select_s64_svv 391 ; GREEDY: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 392 ; GREEDY: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1 393 ; GREEDY: [[COPY2:%[0-9]+]]:vgpr(s64) = COPY $vgpr0_vgpr1 394 ; GREEDY: [[COPY3:%[0-9]+]]:vgpr(s64) = COPY $vgpr2_vgpr3 395 ; GREEDY: [[ICMP:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(ne), [[COPY]](s32), [[COPY1]] 396 ; GREEDY: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[ICMP]](s32) 397 ; GREEDY: [[COPY4:%[0-9]+]]:vcc(s1) = COPY [[TRUNC]](s1) 398 ; GREEDY: [[UV:%[0-9]+]]:vgpr(s32), [[UV1:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY2]](s64) 399 ; GREEDY: [[UV2:%[0-9]+]]:vgpr(s32), [[UV3:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY3]](s64) 400 ; GREEDY: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[COPY4]](s1), [[UV]], [[UV2]] 401 ; GREEDY: [[SELECT1:%[0-9]+]]:vgpr(s32) = G_SELECT [[COPY4]](s1), [[UV1]], [[UV3]] 402 ; GREEDY: [[MV:%[0-9]+]]:vgpr(s64) = G_MERGE_VALUES [[SELECT]](s32), [[SELECT1]](s32) 403 %0:_(s32) = COPY $sgpr0 404 %1:_(s32) = COPY $sgpr1 405 %2:_(s64) = COPY $vgpr0_vgpr1 406 %3:_(s64) = COPY $vgpr2_vgpr3 407 %4:_(s1) = G_ICMP intpred(ne), %0, %1 408 %5:_(s64) = G_SELECT %4, %2, %3 409... 410 411--- 412name: select_s64_vss 413legalized: true 414body: | 415 bb.0: 416 liveins: $sgpr0_sgpr1, $sgpr2_sgpr3, $vgpr0, $vgpr1 417 ; FAST-LABEL: name: select_s64_vss 418 ; FAST: [[COPY:%[0-9]+]]:sgpr(s64) = COPY $sgpr0_sgpr1 419 ; FAST: [[COPY1:%[0-9]+]]:sgpr(s64) = COPY $sgpr2_sgpr3 420 ; FAST: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY $vgpr0 421 ; FAST: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY $vgpr1 422 ; FAST: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(ne), [[COPY2]](s32), [[COPY3]] 423 ; FAST: [[UV:%[0-9]+]]:vgpr(s32), [[UV1:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY]](s64) 424 ; FAST: [[UV2:%[0-9]+]]:vgpr(s32), [[UV3:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY1]](s64) 425 ; FAST: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[UV]], [[UV2]] 426 ; FAST: [[SELECT1:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[UV1]], [[UV3]] 427 ; FAST: [[MV:%[0-9]+]]:vgpr(s64) = G_MERGE_VALUES [[SELECT]](s32), [[SELECT1]](s32) 428 ; GREEDY-LABEL: name: select_s64_vss 429 ; GREEDY: [[COPY:%[0-9]+]]:sgpr(s64) = COPY $sgpr0_sgpr1 430 ; GREEDY: [[COPY1:%[0-9]+]]:sgpr(s64) = COPY $sgpr2_sgpr3 431 ; GREEDY: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY $vgpr0 432 ; GREEDY: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY $vgpr1 433 ; GREEDY: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(ne), [[COPY2]](s32), [[COPY3]] 434 ; GREEDY: [[UV:%[0-9]+]]:vgpr(s32), [[UV1:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY]](s64) 435 ; GREEDY: [[UV2:%[0-9]+]]:vgpr(s32), [[UV3:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY1]](s64) 436 ; GREEDY: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[UV]], [[UV2]] 437 ; GREEDY: [[SELECT1:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[UV1]], [[UV3]] 438 ; GREEDY: [[MV:%[0-9]+]]:vgpr(s64) = G_MERGE_VALUES [[SELECT]](s32), [[SELECT1]](s32) 439 %0:_(s64) = COPY $sgpr0_sgpr1 440 %1:_(s64) = COPY $sgpr2_sgpr3 441 %2:_(s32) = COPY $vgpr0 442 %3:_(s32) = COPY $vgpr1 443 %4:_(s1) = G_ICMP intpred(ne), %2, %3 444 %5:_(s64) = G_SELECT %4, %0, %1 445... 446 447--- 448name: select_s64_vsv 449legalized: true 450body: | 451 bb.0: 452 liveins: $sgpr0_sgpr1, $vgpr0, $vgpr1, $vgpr2_vgpr3 453 ; FAST-LABEL: name: select_s64_vsv 454 ; FAST: [[COPY:%[0-9]+]]:sgpr(s64) = COPY $sgpr0_sgpr1 455 ; FAST: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr0 456 ; FAST: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY $vgpr1 457 ; FAST: [[COPY3:%[0-9]+]]:vgpr(s64) = COPY $vgpr2_vgpr3 458 ; FAST: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(ne), [[COPY1]](s32), [[COPY2]] 459 ; FAST: [[UV:%[0-9]+]]:vgpr(s32), [[UV1:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY]](s64) 460 ; FAST: [[UV2:%[0-9]+]]:vgpr(s32), [[UV3:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY3]](s64) 461 ; FAST: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[UV]], [[UV2]] 462 ; FAST: [[SELECT1:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[UV1]], [[UV3]] 463 ; FAST: [[MV:%[0-9]+]]:vgpr(s64) = G_MERGE_VALUES [[SELECT]](s32), [[SELECT1]](s32) 464 ; GREEDY-LABEL: name: select_s64_vsv 465 ; GREEDY: [[COPY:%[0-9]+]]:sgpr(s64) = COPY $sgpr0_sgpr1 466 ; GREEDY: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr0 467 ; GREEDY: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY $vgpr1 468 ; GREEDY: [[COPY3:%[0-9]+]]:vgpr(s64) = COPY $vgpr2_vgpr3 469 ; GREEDY: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(ne), [[COPY1]](s32), [[COPY2]] 470 ; GREEDY: [[UV:%[0-9]+]]:vgpr(s32), [[UV1:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY]](s64) 471 ; GREEDY: [[UV2:%[0-9]+]]:vgpr(s32), [[UV3:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY3]](s64) 472 ; GREEDY: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[UV]], [[UV2]] 473 ; GREEDY: [[SELECT1:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[UV1]], [[UV3]] 474 ; GREEDY: [[MV:%[0-9]+]]:vgpr(s64) = G_MERGE_VALUES [[SELECT]](s32), [[SELECT1]](s32) 475 %0:_(s64) = COPY $sgpr0_sgpr1 476 %1:_(s32) = COPY $vgpr0 477 %2:_(s32) = COPY $vgpr1 478 %3:_(s64) = COPY $vgpr2_vgpr3 479 %4:_(s1) = G_ICMP intpred(ne), %1, %2 480 %5:_(s64) = G_SELECT %4, %0, %3 481... 482 483--- 484name: select_s64_vvs 485legalized: true 486body: | 487 bb.0: 488 liveins: $sgpr0_sgpr1, $vgpr0, $vgpr1, $vgpr2_vgpr3 489 ; FAST-LABEL: name: select_s64_vvs 490 ; FAST: [[COPY:%[0-9]+]]:sgpr(s64) = COPY $sgpr0_sgpr1 491 ; FAST: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr0 492 ; FAST: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY $vgpr1 493 ; FAST: [[COPY3:%[0-9]+]]:vgpr(s64) = COPY $vgpr2_vgpr3 494 ; FAST: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(ne), [[COPY1]](s32), [[COPY2]] 495 ; FAST: [[UV:%[0-9]+]]:vgpr(s32), [[UV1:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY3]](s64) 496 ; FAST: [[UV2:%[0-9]+]]:vgpr(s32), [[UV3:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY]](s64) 497 ; FAST: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[UV]], [[UV2]] 498 ; FAST: [[SELECT1:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[UV1]], [[UV3]] 499 ; FAST: [[MV:%[0-9]+]]:vgpr(s64) = G_MERGE_VALUES [[SELECT]](s32), [[SELECT1]](s32) 500 ; GREEDY-LABEL: name: select_s64_vvs 501 ; GREEDY: [[COPY:%[0-9]+]]:sgpr(s64) = COPY $sgpr0_sgpr1 502 ; GREEDY: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr0 503 ; GREEDY: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY $vgpr1 504 ; GREEDY: [[COPY3:%[0-9]+]]:vgpr(s64) = COPY $vgpr2_vgpr3 505 ; GREEDY: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(ne), [[COPY1]](s32), [[COPY2]] 506 ; GREEDY: [[UV:%[0-9]+]]:vgpr(s32), [[UV1:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY3]](s64) 507 ; GREEDY: [[UV2:%[0-9]+]]:vgpr(s32), [[UV3:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY]](s64) 508 ; GREEDY: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[UV]], [[UV2]] 509 ; GREEDY: [[SELECT1:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[UV1]], [[UV3]] 510 ; GREEDY: [[MV:%[0-9]+]]:vgpr(s64) = G_MERGE_VALUES [[SELECT]](s32), [[SELECT1]](s32) 511 %0:_(s64) = COPY $sgpr0_sgpr1 512 %1:_(s32) = COPY $vgpr0 513 %2:_(s32) = COPY $vgpr1 514 %3:_(s64) = COPY $vgpr2_vgpr3 515 %4:_(s1) = G_ICMP intpred(ne), %1, %2 516 %5:_(s64) = G_SELECT %4, %3, %0 517... 518 519--- 520name: select_s64_vvv 521legalized: true 522body: | 523 bb.0: 524 liveins: $vgpr0, $vgpr1, $vgpr2_vgpr3, $vgpr4_vgpr5 525 ; FAST-LABEL: name: select_s64_vvv 526 ; FAST: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0 527 ; FAST: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr1 528 ; FAST: [[COPY2:%[0-9]+]]:vgpr(s64) = COPY $vgpr2_vgpr3 529 ; FAST: [[COPY3:%[0-9]+]]:vgpr(s64) = COPY $vgpr4_vgpr5 530 ; FAST: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(ne), [[COPY]](s32), [[COPY1]] 531 ; FAST: [[UV:%[0-9]+]]:vgpr(s32), [[UV1:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY2]](s64) 532 ; FAST: [[UV2:%[0-9]+]]:vgpr(s32), [[UV3:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY3]](s64) 533 ; FAST: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[UV]], [[UV2]] 534 ; FAST: [[SELECT1:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[UV1]], [[UV3]] 535 ; FAST: [[MV:%[0-9]+]]:vgpr(s64) = G_MERGE_VALUES [[SELECT]](s32), [[SELECT1]](s32) 536 ; GREEDY-LABEL: name: select_s64_vvv 537 ; GREEDY: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0 538 ; GREEDY: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr1 539 ; GREEDY: [[COPY2:%[0-9]+]]:vgpr(s64) = COPY $vgpr2_vgpr3 540 ; GREEDY: [[COPY3:%[0-9]+]]:vgpr(s64) = COPY $vgpr4_vgpr5 541 ; GREEDY: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(ne), [[COPY]](s32), [[COPY1]] 542 ; GREEDY: [[UV:%[0-9]+]]:vgpr(s32), [[UV1:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY2]](s64) 543 ; GREEDY: [[UV2:%[0-9]+]]:vgpr(s32), [[UV3:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY3]](s64) 544 ; GREEDY: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[UV]], [[UV2]] 545 ; GREEDY: [[SELECT1:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[UV1]], [[UV3]] 546 ; GREEDY: [[MV:%[0-9]+]]:vgpr(s64) = G_MERGE_VALUES [[SELECT]](s32), [[SELECT1]](s32) 547 %0:_(s32) = COPY $vgpr0 548 %1:_(s32) = COPY $vgpr1 549 %2:_(s64) = COPY $vgpr2_vgpr3 550 %3:_(s64) = COPY $vgpr4_vgpr5 551 %4:_(s1) = G_ICMP intpred(ne), %0, %1 552 %5:_(s64) = G_SELECT %4, %2, %3 553... 554 555--- 556name: select_v2s32_scc_ss 557legalized: true 558body: | 559 bb.0: 560 liveins: $sgpr0, $sgpr1, $sgpr2_sgpr3, $sgpr4_sgpr5 561 ; FAST-LABEL: name: select_v2s32_scc_ss 562 ; FAST: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 563 ; FAST: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1 564 ; FAST: [[COPY2:%[0-9]+]]:sgpr(<2 x s32>) = COPY $sgpr2_sgpr3 565 ; FAST: [[COPY3:%[0-9]+]]:sgpr(<2 x s32>) = COPY $sgpr4_sgpr5 566 ; FAST: [[ICMP:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(ne), [[COPY]](s32), [[COPY1]] 567 ; FAST: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[ICMP]](s32) 568 ; FAST: [[ZEXT:%[0-9]+]]:sgpr(s32) = G_ZEXT [[TRUNC]](s1) 569 ; FAST: [[SELECT:%[0-9]+]]:sgpr(<2 x s32>) = G_SELECT [[ZEXT]](s32), [[COPY2]], [[COPY3]] 570 ; GREEDY-LABEL: name: select_v2s32_scc_ss 571 ; GREEDY: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 572 ; GREEDY: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1 573 ; GREEDY: [[COPY2:%[0-9]+]]:sgpr(<2 x s32>) = COPY $sgpr2_sgpr3 574 ; GREEDY: [[COPY3:%[0-9]+]]:sgpr(<2 x s32>) = COPY $sgpr4_sgpr5 575 ; GREEDY: [[ICMP:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(ne), [[COPY]](s32), [[COPY1]] 576 ; GREEDY: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[ICMP]](s32) 577 ; GREEDY: [[ZEXT:%[0-9]+]]:sgpr(s32) = G_ZEXT [[TRUNC]](s1) 578 ; GREEDY: [[SELECT:%[0-9]+]]:sgpr(<2 x s32>) = G_SELECT [[ZEXT]](s32), [[COPY2]], [[COPY3]] 579 %0:_(s32) = COPY $sgpr0 580 %1:_(s32) = COPY $sgpr1 581 %2:_(<2 x s32>) = COPY $sgpr2_sgpr3 582 %3:_(<2 x s32>) = COPY $sgpr4_sgpr5 583 %4:_(s1) = G_ICMP intpred(ne), %0, %1 584 %5:_(<2 x s32>) = G_SELECT %4, %2, %3 585... 586 587--- 588name: select_v2s32_scc_sv 589legalized: true 590body: | 591 bb.0: 592 liveins: $sgpr0, $sgpr1, $sgpr2_sgpr3, $vgpr0_vgpr1 593 ; FAST-LABEL: name: select_v2s32_scc_sv 594 ; FAST: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 595 ; FAST: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1 596 ; FAST: [[COPY2:%[0-9]+]]:sgpr(<2 x s32>) = COPY $sgpr2_sgpr3 597 ; FAST: [[COPY3:%[0-9]+]]:vgpr(<2 x s32>) = COPY $vgpr0_vgpr1 598 ; FAST: [[ICMP:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(ne), [[COPY]](s32), [[COPY1]] 599 ; FAST: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[ICMP]](s32) 600 ; FAST: [[COPY4:%[0-9]+]]:vcc(s1) = COPY [[TRUNC]](s1) 601 ; FAST: [[UV:%[0-9]+]]:vgpr(s32), [[UV1:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY2]](<2 x s32>) 602 ; FAST: [[UV2:%[0-9]+]]:vgpr(s32), [[UV3:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY3]](<2 x s32>) 603 ; FAST: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[COPY4]](s1), [[UV]], [[UV2]] 604 ; FAST: [[SELECT1:%[0-9]+]]:vgpr(s32) = G_SELECT [[COPY4]](s1), [[UV1]], [[UV3]] 605 ; FAST: [[BUILD_VECTOR:%[0-9]+]]:vgpr(<2 x s32>) = G_BUILD_VECTOR [[SELECT]](s32), [[SELECT1]](s32) 606 ; GREEDY-LABEL: name: select_v2s32_scc_sv 607 ; GREEDY: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 608 ; GREEDY: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1 609 ; GREEDY: [[COPY2:%[0-9]+]]:sgpr(<2 x s32>) = COPY $sgpr2_sgpr3 610 ; GREEDY: [[COPY3:%[0-9]+]]:vgpr(<2 x s32>) = COPY $vgpr0_vgpr1 611 ; GREEDY: [[ICMP:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(ne), [[COPY]](s32), [[COPY1]] 612 ; GREEDY: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[ICMP]](s32) 613 ; GREEDY: [[COPY4:%[0-9]+]]:vcc(s1) = COPY [[TRUNC]](s1) 614 ; GREEDY: [[UV:%[0-9]+]]:vgpr(s32), [[UV1:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY2]](<2 x s32>) 615 ; GREEDY: [[UV2:%[0-9]+]]:vgpr(s32), [[UV3:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY3]](<2 x s32>) 616 ; GREEDY: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[COPY4]](s1), [[UV]], [[UV2]] 617 ; GREEDY: [[SELECT1:%[0-9]+]]:vgpr(s32) = G_SELECT [[COPY4]](s1), [[UV1]], [[UV3]] 618 ; GREEDY: [[BUILD_VECTOR:%[0-9]+]]:vgpr(<2 x s32>) = G_BUILD_VECTOR [[SELECT]](s32), [[SELECT1]](s32) 619 %0:_(s32) = COPY $sgpr0 620 %1:_(s32) = COPY $sgpr1 621 %2:_(<2 x s32>) = COPY $sgpr2_sgpr3 622 %3:_(<2 x s32>) = COPY $vgpr0_vgpr1 623 %4:_(s1) = G_ICMP intpred(ne), %0, %1 624 %5:_(<2 x s32>) = G_SELECT %4, %2, %3 625 626... 627 628--- 629name: select_v2s32_scc_vs 630legalized: true 631body: | 632 bb.0: 633 liveins: $sgpr0, $sgpr1, $sgpr2_sgpr3, $vgpr0_vgpr1 634 ; FAST-LABEL: name: select_v2s32_scc_vs 635 ; FAST: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 636 ; FAST: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1 637 ; FAST: [[COPY2:%[0-9]+]]:sgpr(<2 x s32>) = COPY $sgpr2_sgpr3 638 ; FAST: [[COPY3:%[0-9]+]]:vgpr(<2 x s32>) = COPY $vgpr0_vgpr1 639 ; FAST: [[ICMP:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(ne), [[COPY]](s32), [[COPY1]] 640 ; FAST: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[ICMP]](s32) 641 ; FAST: [[COPY4:%[0-9]+]]:vcc(s1) = COPY [[TRUNC]](s1) 642 ; FAST: [[UV:%[0-9]+]]:vgpr(s32), [[UV1:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY3]](<2 x s32>) 643 ; FAST: [[UV2:%[0-9]+]]:vgpr(s32), [[UV3:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY2]](<2 x s32>) 644 ; FAST: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[COPY4]](s1), [[UV]], [[UV2]] 645 ; FAST: [[SELECT1:%[0-9]+]]:vgpr(s32) = G_SELECT [[COPY4]](s1), [[UV1]], [[UV3]] 646 ; FAST: [[BUILD_VECTOR:%[0-9]+]]:vgpr(<2 x s32>) = G_BUILD_VECTOR [[SELECT]](s32), [[SELECT1]](s32) 647 ; GREEDY-LABEL: name: select_v2s32_scc_vs 648 ; GREEDY: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 649 ; GREEDY: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1 650 ; GREEDY: [[COPY2:%[0-9]+]]:sgpr(<2 x s32>) = COPY $sgpr2_sgpr3 651 ; GREEDY: [[COPY3:%[0-9]+]]:vgpr(<2 x s32>) = COPY $vgpr0_vgpr1 652 ; GREEDY: [[ICMP:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(ne), [[COPY]](s32), [[COPY1]] 653 ; GREEDY: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[ICMP]](s32) 654 ; GREEDY: [[COPY4:%[0-9]+]]:vcc(s1) = COPY [[TRUNC]](s1) 655 ; GREEDY: [[UV:%[0-9]+]]:vgpr(s32), [[UV1:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY3]](<2 x s32>) 656 ; GREEDY: [[UV2:%[0-9]+]]:vgpr(s32), [[UV3:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY2]](<2 x s32>) 657 ; GREEDY: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[COPY4]](s1), [[UV]], [[UV2]] 658 ; GREEDY: [[SELECT1:%[0-9]+]]:vgpr(s32) = G_SELECT [[COPY4]](s1), [[UV1]], [[UV3]] 659 ; GREEDY: [[BUILD_VECTOR:%[0-9]+]]:vgpr(<2 x s32>) = G_BUILD_VECTOR [[SELECT]](s32), [[SELECT1]](s32) 660 %0:_(s32) = COPY $sgpr0 661 %1:_(s32) = COPY $sgpr1 662 %2:_(<2 x s32>) = COPY $sgpr2_sgpr3 663 %3:_(<2 x s32>) = COPY $vgpr0_vgpr1 664 %4:_(s1) = G_ICMP intpred(ne), %0, %1 665 %5:_(<2 x s32>) = G_SELECT %4, %3, %2 666... 667 668--- 669name: select_v2s32_scc_vv 670legalized: true 671body: | 672 bb.0: 673 liveins: $sgpr0, $sgpr1, $sgpr2_sgpr3, $vgpr0_vgpr1, $vgpr2_vgpr3 674 ; FAST-LABEL: name: select_v2s32_scc_vv 675 ; FAST: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 676 ; FAST: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1 677 ; FAST: [[COPY2:%[0-9]+]]:vgpr(<2 x s32>) = COPY $vgpr0_vgpr1 678 ; FAST: [[COPY3:%[0-9]+]]:vgpr(<2 x s32>) = COPY $vgpr2_vgpr3 679 ; FAST: [[ICMP:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(ne), [[COPY]](s32), [[COPY1]] 680 ; FAST: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[ICMP]](s32) 681 ; FAST: [[COPY4:%[0-9]+]]:vcc(s1) = COPY [[TRUNC]](s1) 682 ; FAST: [[UV:%[0-9]+]]:vgpr(s32), [[UV1:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY2]](<2 x s32>) 683 ; FAST: [[UV2:%[0-9]+]]:vgpr(s32), [[UV3:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY3]](<2 x s32>) 684 ; FAST: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[COPY4]](s1), [[UV]], [[UV2]] 685 ; FAST: [[SELECT1:%[0-9]+]]:vgpr(s32) = G_SELECT [[COPY4]](s1), [[UV1]], [[UV3]] 686 ; FAST: [[BUILD_VECTOR:%[0-9]+]]:vgpr(<2 x s32>) = G_BUILD_VECTOR [[SELECT]](s32), [[SELECT1]](s32) 687 ; GREEDY-LABEL: name: select_v2s32_scc_vv 688 ; GREEDY: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 689 ; GREEDY: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1 690 ; GREEDY: [[COPY2:%[0-9]+]]:vgpr(<2 x s32>) = COPY $vgpr0_vgpr1 691 ; GREEDY: [[COPY3:%[0-9]+]]:vgpr(<2 x s32>) = COPY $vgpr2_vgpr3 692 ; GREEDY: [[ICMP:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(ne), [[COPY]](s32), [[COPY1]] 693 ; GREEDY: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[ICMP]](s32) 694 ; GREEDY: [[COPY4:%[0-9]+]]:vcc(s1) = COPY [[TRUNC]](s1) 695 ; GREEDY: [[UV:%[0-9]+]]:vgpr(s32), [[UV1:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY2]](<2 x s32>) 696 ; GREEDY: [[UV2:%[0-9]+]]:vgpr(s32), [[UV3:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY3]](<2 x s32>) 697 ; GREEDY: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[COPY4]](s1), [[UV]], [[UV2]] 698 ; GREEDY: [[SELECT1:%[0-9]+]]:vgpr(s32) = G_SELECT [[COPY4]](s1), [[UV1]], [[UV3]] 699 ; GREEDY: [[BUILD_VECTOR:%[0-9]+]]:vgpr(<2 x s32>) = G_BUILD_VECTOR [[SELECT]](s32), [[SELECT1]](s32) 700 %0:_(s32) = COPY $sgpr0 701 %1:_(s32) = COPY $sgpr1 702 %2:_(<2 x s32>) = COPY $vgpr0_vgpr1 703 %3:_(<2 x s32>) = COPY $vgpr2_vgpr3 704 %4:_(s1) = G_ICMP intpred(ne), %0, %1 705 %5:_(<2 x s32>) = G_SELECT %4, %2, %3 706... 707 708--- 709name: select_v2s32_vcc_ss 710legalized: true 711body: | 712 bb.0: 713 liveins: $sgpr0_sgpr1, $sgpr2_sgpr3, $vgpr0, $vgpr1 714 ; FAST-LABEL: name: select_v2s32_vcc_ss 715 ; FAST: [[COPY:%[0-9]+]]:sgpr(<2 x s32>) = COPY $sgpr0_sgpr1 716 ; FAST: [[COPY1:%[0-9]+]]:sgpr(<2 x s32>) = COPY $sgpr2_sgpr3 717 ; FAST: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY $vgpr0 718 ; FAST: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY $vgpr1 719 ; FAST: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(ne), [[COPY2]](s32), [[COPY3]] 720 ; FAST: [[UV:%[0-9]+]]:vgpr(s32), [[UV1:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY]](<2 x s32>) 721 ; FAST: [[UV2:%[0-9]+]]:vgpr(s32), [[UV3:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY1]](<2 x s32>) 722 ; FAST: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[UV]], [[UV2]] 723 ; FAST: [[SELECT1:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[UV1]], [[UV3]] 724 ; FAST: [[BUILD_VECTOR:%[0-9]+]]:vgpr(<2 x s32>) = G_BUILD_VECTOR [[SELECT]](s32), [[SELECT1]](s32) 725 ; GREEDY-LABEL: name: select_v2s32_vcc_ss 726 ; GREEDY: [[COPY:%[0-9]+]]:sgpr(<2 x s32>) = COPY $sgpr0_sgpr1 727 ; GREEDY: [[COPY1:%[0-9]+]]:sgpr(<2 x s32>) = COPY $sgpr2_sgpr3 728 ; GREEDY: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY $vgpr0 729 ; GREEDY: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY $vgpr1 730 ; GREEDY: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(ne), [[COPY2]](s32), [[COPY3]] 731 ; GREEDY: [[UV:%[0-9]+]]:vgpr(s32), [[UV1:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY]](<2 x s32>) 732 ; GREEDY: [[UV2:%[0-9]+]]:vgpr(s32), [[UV3:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY1]](<2 x s32>) 733 ; GREEDY: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[UV]], [[UV2]] 734 ; GREEDY: [[SELECT1:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[UV1]], [[UV3]] 735 ; GREEDY: [[BUILD_VECTOR:%[0-9]+]]:vgpr(<2 x s32>) = G_BUILD_VECTOR [[SELECT]](s32), [[SELECT1]](s32) 736 %0:_(<2 x s32>) = COPY $sgpr0_sgpr1 737 %1:_(<2 x s32>) = COPY $sgpr2_sgpr3 738 %2:_(s32) = COPY $vgpr0 739 %3:_(s32) = COPY $vgpr1 740 %4:_(s1) = G_ICMP intpred(ne), %2, %3 741 %5:_(<2 x s32>) = G_SELECT %4, %0, %1 742... 743 744--- 745name: select_v2s32_vcc_sv 746legalized: true 747body: | 748 bb.0: 749 liveins: $sgpr0_sgpr1, $vgpr0, $vgpr1, $vgpr2_vgpr3 750 ; FAST-LABEL: name: select_v2s32_vcc_sv 751 ; FAST: [[COPY:%[0-9]+]]:sgpr(<2 x s32>) = COPY $sgpr0_sgpr1 752 ; FAST: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr0 753 ; FAST: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY $vgpr1 754 ; FAST: [[COPY3:%[0-9]+]]:vgpr(<2 x s32>) = COPY $vgpr2_vgpr3 755 ; FAST: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(ne), [[COPY1]](s32), [[COPY2]] 756 ; FAST: [[UV:%[0-9]+]]:vgpr(s32), [[UV1:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY]](<2 x s32>) 757 ; FAST: [[UV2:%[0-9]+]]:vgpr(s32), [[UV3:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY3]](<2 x s32>) 758 ; FAST: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[UV]], [[UV2]] 759 ; FAST: [[SELECT1:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[UV1]], [[UV3]] 760 ; FAST: [[BUILD_VECTOR:%[0-9]+]]:vgpr(<2 x s32>) = G_BUILD_VECTOR [[SELECT]](s32), [[SELECT1]](s32) 761 ; GREEDY-LABEL: name: select_v2s32_vcc_sv 762 ; GREEDY: [[COPY:%[0-9]+]]:sgpr(<2 x s32>) = COPY $sgpr0_sgpr1 763 ; GREEDY: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr0 764 ; GREEDY: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY $vgpr1 765 ; GREEDY: [[COPY3:%[0-9]+]]:vgpr(<2 x s32>) = COPY $vgpr2_vgpr3 766 ; GREEDY: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(ne), [[COPY1]](s32), [[COPY2]] 767 ; GREEDY: [[UV:%[0-9]+]]:vgpr(s32), [[UV1:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY]](<2 x s32>) 768 ; GREEDY: [[UV2:%[0-9]+]]:vgpr(s32), [[UV3:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY3]](<2 x s32>) 769 ; GREEDY: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[UV]], [[UV2]] 770 ; GREEDY: [[SELECT1:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[UV1]], [[UV3]] 771 ; GREEDY: [[BUILD_VECTOR:%[0-9]+]]:vgpr(<2 x s32>) = G_BUILD_VECTOR [[SELECT]](s32), [[SELECT1]](s32) 772 %0:_(<2 x s32>) = COPY $sgpr0_sgpr1 773 %1:_(s32) = COPY $vgpr0 774 %2:_(s32) = COPY $vgpr1 775 %3:_(<2 x s32>) = COPY $vgpr2_vgpr3 776 %4:_(s1) = G_ICMP intpred(ne), %1, %2 777 %5:_(<2 x s32>) = G_SELECT %4, %0, %3 778... 779 780--- 781name: select_v2s32_vcc_vs 782legalized: true 783body: | 784 bb.0: 785 liveins: $sgpr0_sgpr1, $vgpr0, $vgpr1, $vgpr2_vgpr3 786 ; FAST-LABEL: name: select_v2s32_vcc_vs 787 ; FAST: [[COPY:%[0-9]+]]:sgpr(<2 x s32>) = COPY $sgpr0_sgpr1 788 ; FAST: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr0 789 ; FAST: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY $vgpr1 790 ; FAST: [[COPY3:%[0-9]+]]:vgpr(<2 x s32>) = COPY $vgpr2_vgpr3 791 ; FAST: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(ne), [[COPY1]](s32), [[COPY2]] 792 ; FAST: [[UV:%[0-9]+]]:vgpr(s32), [[UV1:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY3]](<2 x s32>) 793 ; FAST: [[UV2:%[0-9]+]]:vgpr(s32), [[UV3:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY]](<2 x s32>) 794 ; FAST: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[UV]], [[UV2]] 795 ; FAST: [[SELECT1:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[UV1]], [[UV3]] 796 ; FAST: [[BUILD_VECTOR:%[0-9]+]]:vgpr(<2 x s32>) = G_BUILD_VECTOR [[SELECT]](s32), [[SELECT1]](s32) 797 ; GREEDY-LABEL: name: select_v2s32_vcc_vs 798 ; GREEDY: [[COPY:%[0-9]+]]:sgpr(<2 x s32>) = COPY $sgpr0_sgpr1 799 ; GREEDY: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr0 800 ; GREEDY: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY $vgpr1 801 ; GREEDY: [[COPY3:%[0-9]+]]:vgpr(<2 x s32>) = COPY $vgpr2_vgpr3 802 ; GREEDY: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(ne), [[COPY1]](s32), [[COPY2]] 803 ; GREEDY: [[UV:%[0-9]+]]:vgpr(s32), [[UV1:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY3]](<2 x s32>) 804 ; GREEDY: [[UV2:%[0-9]+]]:vgpr(s32), [[UV3:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY]](<2 x s32>) 805 ; GREEDY: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[UV]], [[UV2]] 806 ; GREEDY: [[SELECT1:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[UV1]], [[UV3]] 807 ; GREEDY: [[BUILD_VECTOR:%[0-9]+]]:vgpr(<2 x s32>) = G_BUILD_VECTOR [[SELECT]](s32), [[SELECT1]](s32) 808 %0:_(<2 x s32>) = COPY $sgpr0_sgpr1 809 %1:_(s32) = COPY $vgpr0 810 %2:_(s32) = COPY $vgpr1 811 %3:_(<2 x s32>) = COPY $vgpr2_vgpr3 812 %4:_(s1) = G_ICMP intpred(ne), %1, %2 813 %5:_(<2 x s32>) = G_SELECT %4, %3, %0 814... 815 816--- 817name: select_v2s32_vcc_vv 818legalized: true 819body: | 820 bb.0: 821 liveins: $vgpr0, $vgpr1, $vgpr2_vgpr3, $vgpr4_vgpr5 822 ; FAST-LABEL: name: select_v2s32_vcc_vv 823 ; FAST: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0 824 ; FAST: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr1 825 ; FAST: [[COPY2:%[0-9]+]]:vgpr(<2 x s32>) = COPY $vgpr2_vgpr3 826 ; FAST: [[COPY3:%[0-9]+]]:vgpr(<2 x s32>) = COPY $vgpr4_vgpr5 827 ; FAST: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(ne), [[COPY]](s32), [[COPY1]] 828 ; FAST: [[UV:%[0-9]+]]:vgpr(s32), [[UV1:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY2]](<2 x s32>) 829 ; FAST: [[UV2:%[0-9]+]]:vgpr(s32), [[UV3:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY3]](<2 x s32>) 830 ; FAST: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[UV]], [[UV2]] 831 ; FAST: [[SELECT1:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[UV1]], [[UV3]] 832 ; FAST: [[BUILD_VECTOR:%[0-9]+]]:vgpr(<2 x s32>) = G_BUILD_VECTOR [[SELECT]](s32), [[SELECT1]](s32) 833 ; GREEDY-LABEL: name: select_v2s32_vcc_vv 834 ; GREEDY: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0 835 ; GREEDY: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr1 836 ; GREEDY: [[COPY2:%[0-9]+]]:vgpr(<2 x s32>) = COPY $vgpr2_vgpr3 837 ; GREEDY: [[COPY3:%[0-9]+]]:vgpr(<2 x s32>) = COPY $vgpr4_vgpr5 838 ; GREEDY: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(ne), [[COPY]](s32), [[COPY1]] 839 ; GREEDY: [[UV:%[0-9]+]]:vgpr(s32), [[UV1:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY2]](<2 x s32>) 840 ; GREEDY: [[UV2:%[0-9]+]]:vgpr(s32), [[UV3:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY3]](<2 x s32>) 841 ; GREEDY: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[UV]], [[UV2]] 842 ; GREEDY: [[SELECT1:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[UV1]], [[UV3]] 843 ; GREEDY: [[BUILD_VECTOR:%[0-9]+]]:vgpr(<2 x s32>) = G_BUILD_VECTOR [[SELECT]](s32), [[SELECT1]](s32) 844 %0:_(s32) = COPY $vgpr0 845 %1:_(s32) = COPY $vgpr1 846 %2:_(<2 x s32>) = COPY $vgpr2_vgpr3 847 %3:_(<2 x s32>) = COPY $vgpr4_vgpr5 848 %4:_(s1) = G_ICMP intpred(ne), %0, %1 849 %5:_(<2 x s32>) = G_SELECT %4, %2, %3 850... 851 852--- 853name: select_v4s16_scc_ss 854legalized: true 855body: | 856 bb.0: 857 liveins: $sgpr0, $sgpr1, $sgpr2_sgpr3, $sgpr4_sgpr5 858 ; FAST-LABEL: name: select_v4s16_scc_ss 859 ; FAST: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 860 ; FAST: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1 861 ; FAST: [[COPY2:%[0-9]+]]:sgpr(<4 x s16>) = COPY $sgpr2_sgpr3 862 ; FAST: [[COPY3:%[0-9]+]]:sgpr(<4 x s16>) = COPY $sgpr4_sgpr5 863 ; FAST: [[ICMP:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(ne), [[COPY]](s32), [[COPY1]] 864 ; FAST: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[ICMP]](s32) 865 ; FAST: [[ZEXT:%[0-9]+]]:sgpr(s32) = G_ZEXT [[TRUNC]](s1) 866 ; FAST: [[SELECT:%[0-9]+]]:sgpr(<4 x s16>) = G_SELECT [[ZEXT]](s32), [[COPY2]], [[COPY3]] 867 ; GREEDY-LABEL: name: select_v4s16_scc_ss 868 ; GREEDY: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 869 ; GREEDY: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1 870 ; GREEDY: [[COPY2:%[0-9]+]]:sgpr(<4 x s16>) = COPY $sgpr2_sgpr3 871 ; GREEDY: [[COPY3:%[0-9]+]]:sgpr(<4 x s16>) = COPY $sgpr4_sgpr5 872 ; GREEDY: [[ICMP:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(ne), [[COPY]](s32), [[COPY1]] 873 ; GREEDY: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[ICMP]](s32) 874 ; GREEDY: [[ZEXT:%[0-9]+]]:sgpr(s32) = G_ZEXT [[TRUNC]](s1) 875 ; GREEDY: [[SELECT:%[0-9]+]]:sgpr(<4 x s16>) = G_SELECT [[ZEXT]](s32), [[COPY2]], [[COPY3]] 876 %0:_(s32) = COPY $sgpr0 877 %1:_(s32) = COPY $sgpr1 878 %2:_(<4 x s16>) = COPY $sgpr2_sgpr3 879 %3:_(<4 x s16>) = COPY $sgpr4_sgpr5 880 %4:_(s1) = G_ICMP intpred(ne), %0, %1 881 %5:_(<4 x s16>) = G_SELECT %4, %2, %3 882... 883 884--- 885name: select_v4s16_scc_sv 886legalized: true 887body: | 888 bb.0: 889 liveins: $sgpr0, $sgpr1, $sgpr2_sgpr3, $vgpr0_vgpr1 890 ; FAST-LABEL: name: select_v4s16_scc_sv 891 ; FAST: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 892 ; FAST: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1 893 ; FAST: [[COPY2:%[0-9]+]]:sgpr(<4 x s16>) = COPY $sgpr2_sgpr3 894 ; FAST: [[COPY3:%[0-9]+]]:vgpr(<4 x s16>) = COPY $vgpr0_vgpr1 895 ; FAST: [[ICMP:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(ne), [[COPY]](s32), [[COPY1]] 896 ; FAST: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[ICMP]](s32) 897 ; FAST: [[COPY4:%[0-9]+]]:vcc(s1) = COPY [[TRUNC]](s1) 898 ; FAST: [[UV:%[0-9]+]]:vgpr(<2 x s16>), [[UV1:%[0-9]+]]:vgpr(<2 x s16>) = G_UNMERGE_VALUES [[COPY2]](<4 x s16>) 899 ; FAST: [[UV2:%[0-9]+]]:vgpr(<2 x s16>), [[UV3:%[0-9]+]]:vgpr(<2 x s16>) = G_UNMERGE_VALUES [[COPY3]](<4 x s16>) 900 ; FAST: [[SELECT:%[0-9]+]]:vgpr(<2 x s16>) = G_SELECT [[COPY4]](s1), [[UV]], [[UV2]] 901 ; FAST: [[SELECT1:%[0-9]+]]:vgpr(<2 x s16>) = G_SELECT [[COPY4]](s1), [[UV1]], [[UV3]] 902 ; FAST: [[CONCAT_VECTORS:%[0-9]+]]:vgpr(<4 x s16>) = G_CONCAT_VECTORS [[SELECT]](<2 x s16>), [[SELECT1]](<2 x s16>) 903 ; GREEDY-LABEL: name: select_v4s16_scc_sv 904 ; GREEDY: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 905 ; GREEDY: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1 906 ; GREEDY: [[COPY2:%[0-9]+]]:sgpr(<4 x s16>) = COPY $sgpr2_sgpr3 907 ; GREEDY: [[COPY3:%[0-9]+]]:vgpr(<4 x s16>) = COPY $vgpr0_vgpr1 908 ; GREEDY: [[ICMP:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(ne), [[COPY]](s32), [[COPY1]] 909 ; GREEDY: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[ICMP]](s32) 910 ; GREEDY: [[COPY4:%[0-9]+]]:vcc(s1) = COPY [[TRUNC]](s1) 911 ; GREEDY: [[UV:%[0-9]+]]:vgpr(<2 x s16>), [[UV1:%[0-9]+]]:vgpr(<2 x s16>) = G_UNMERGE_VALUES [[COPY2]](<4 x s16>) 912 ; GREEDY: [[UV2:%[0-9]+]]:vgpr(<2 x s16>), [[UV3:%[0-9]+]]:vgpr(<2 x s16>) = G_UNMERGE_VALUES [[COPY3]](<4 x s16>) 913 ; GREEDY: [[SELECT:%[0-9]+]]:vgpr(<2 x s16>) = G_SELECT [[COPY4]](s1), [[UV]], [[UV2]] 914 ; GREEDY: [[SELECT1:%[0-9]+]]:vgpr(<2 x s16>) = G_SELECT [[COPY4]](s1), [[UV1]], [[UV3]] 915 ; GREEDY: [[CONCAT_VECTORS:%[0-9]+]]:vgpr(<4 x s16>) = G_CONCAT_VECTORS [[SELECT]](<2 x s16>), [[SELECT1]](<2 x s16>) 916 %0:_(s32) = COPY $sgpr0 917 %1:_(s32) = COPY $sgpr1 918 %2:_(<4 x s16>) = COPY $sgpr2_sgpr3 919 %3:_(<4 x s16>) = COPY $vgpr0_vgpr1 920 %4:_(s1) = G_ICMP intpred(ne), %0, %1 921 %5:_(<4 x s16>) = G_SELECT %4, %2, %3 922 923... 924 925--- 926name: select_v4s16_scc_vs 927legalized: true 928body: | 929 bb.0: 930 liveins: $sgpr0, $sgpr1, $sgpr2_sgpr3, $vgpr0_vgpr1 931 ; FAST-LABEL: name: select_v4s16_scc_vs 932 ; FAST: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 933 ; FAST: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1 934 ; FAST: [[COPY2:%[0-9]+]]:sgpr(<4 x s16>) = COPY $sgpr2_sgpr3 935 ; FAST: [[COPY3:%[0-9]+]]:vgpr(<4 x s16>) = COPY $vgpr0_vgpr1 936 ; FAST: [[ICMP:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(ne), [[COPY]](s32), [[COPY1]] 937 ; FAST: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[ICMP]](s32) 938 ; FAST: [[COPY4:%[0-9]+]]:vcc(s1) = COPY [[TRUNC]](s1) 939 ; FAST: [[UV:%[0-9]+]]:vgpr(<2 x s16>), [[UV1:%[0-9]+]]:vgpr(<2 x s16>) = G_UNMERGE_VALUES [[COPY3]](<4 x s16>) 940 ; FAST: [[UV2:%[0-9]+]]:vgpr(<2 x s16>), [[UV3:%[0-9]+]]:vgpr(<2 x s16>) = G_UNMERGE_VALUES [[COPY2]](<4 x s16>) 941 ; FAST: [[SELECT:%[0-9]+]]:vgpr(<2 x s16>) = G_SELECT [[COPY4]](s1), [[UV]], [[UV2]] 942 ; FAST: [[SELECT1:%[0-9]+]]:vgpr(<2 x s16>) = G_SELECT [[COPY4]](s1), [[UV1]], [[UV3]] 943 ; FAST: [[CONCAT_VECTORS:%[0-9]+]]:vgpr(<4 x s16>) = G_CONCAT_VECTORS [[SELECT]](<2 x s16>), [[SELECT1]](<2 x s16>) 944 ; GREEDY-LABEL: name: select_v4s16_scc_vs 945 ; GREEDY: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 946 ; GREEDY: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1 947 ; GREEDY: [[COPY2:%[0-9]+]]:sgpr(<4 x s16>) = COPY $sgpr2_sgpr3 948 ; GREEDY: [[COPY3:%[0-9]+]]:vgpr(<4 x s16>) = COPY $vgpr0_vgpr1 949 ; GREEDY: [[ICMP:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(ne), [[COPY]](s32), [[COPY1]] 950 ; GREEDY: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[ICMP]](s32) 951 ; GREEDY: [[COPY4:%[0-9]+]]:vcc(s1) = COPY [[TRUNC]](s1) 952 ; GREEDY: [[UV:%[0-9]+]]:vgpr(<2 x s16>), [[UV1:%[0-9]+]]:vgpr(<2 x s16>) = G_UNMERGE_VALUES [[COPY3]](<4 x s16>) 953 ; GREEDY: [[UV2:%[0-9]+]]:vgpr(<2 x s16>), [[UV3:%[0-9]+]]:vgpr(<2 x s16>) = G_UNMERGE_VALUES [[COPY2]](<4 x s16>) 954 ; GREEDY: [[SELECT:%[0-9]+]]:vgpr(<2 x s16>) = G_SELECT [[COPY4]](s1), [[UV]], [[UV2]] 955 ; GREEDY: [[SELECT1:%[0-9]+]]:vgpr(<2 x s16>) = G_SELECT [[COPY4]](s1), [[UV1]], [[UV3]] 956 ; GREEDY: [[CONCAT_VECTORS:%[0-9]+]]:vgpr(<4 x s16>) = G_CONCAT_VECTORS [[SELECT]](<2 x s16>), [[SELECT1]](<2 x s16>) 957 %0:_(s32) = COPY $sgpr0 958 %1:_(s32) = COPY $sgpr1 959 %2:_(<4 x s16>) = COPY $sgpr2_sgpr3 960 %3:_(<4 x s16>) = COPY $vgpr0_vgpr1 961 %4:_(s1) = G_ICMP intpred(ne), %0, %1 962 %5:_(<4 x s16>) = G_SELECT %4, %3, %2 963... 964 965--- 966name: select_v4s16_scc_vv 967legalized: true 968body: | 969 bb.0: 970 liveins: $sgpr0, $sgpr1, $sgpr2_sgpr3, $vgpr0_vgpr1, $vgpr2_vgpr3 971 ; FAST-LABEL: name: select_v4s16_scc_vv 972 ; FAST: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 973 ; FAST: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1 974 ; FAST: [[COPY2:%[0-9]+]]:vgpr(<4 x s16>) = COPY $vgpr0_vgpr1 975 ; FAST: [[COPY3:%[0-9]+]]:vgpr(<4 x s16>) = COPY $vgpr2_vgpr3 976 ; FAST: [[ICMP:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(ne), [[COPY]](s32), [[COPY1]] 977 ; FAST: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[ICMP]](s32) 978 ; FAST: [[COPY4:%[0-9]+]]:vcc(s1) = COPY [[TRUNC]](s1) 979 ; FAST: [[UV:%[0-9]+]]:vgpr(<2 x s16>), [[UV1:%[0-9]+]]:vgpr(<2 x s16>) = G_UNMERGE_VALUES [[COPY2]](<4 x s16>) 980 ; FAST: [[UV2:%[0-9]+]]:vgpr(<2 x s16>), [[UV3:%[0-9]+]]:vgpr(<2 x s16>) = G_UNMERGE_VALUES [[COPY3]](<4 x s16>) 981 ; FAST: [[SELECT:%[0-9]+]]:vgpr(<2 x s16>) = G_SELECT [[COPY4]](s1), [[UV]], [[UV2]] 982 ; FAST: [[SELECT1:%[0-9]+]]:vgpr(<2 x s16>) = G_SELECT [[COPY4]](s1), [[UV1]], [[UV3]] 983 ; FAST: [[CONCAT_VECTORS:%[0-9]+]]:vgpr(<4 x s16>) = G_CONCAT_VECTORS [[SELECT]](<2 x s16>), [[SELECT1]](<2 x s16>) 984 ; GREEDY-LABEL: name: select_v4s16_scc_vv 985 ; GREEDY: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 986 ; GREEDY: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1 987 ; GREEDY: [[COPY2:%[0-9]+]]:vgpr(<4 x s16>) = COPY $vgpr0_vgpr1 988 ; GREEDY: [[COPY3:%[0-9]+]]:vgpr(<4 x s16>) = COPY $vgpr2_vgpr3 989 ; GREEDY: [[ICMP:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(ne), [[COPY]](s32), [[COPY1]] 990 ; GREEDY: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[ICMP]](s32) 991 ; GREEDY: [[COPY4:%[0-9]+]]:vcc(s1) = COPY [[TRUNC]](s1) 992 ; GREEDY: [[UV:%[0-9]+]]:vgpr(<2 x s16>), [[UV1:%[0-9]+]]:vgpr(<2 x s16>) = G_UNMERGE_VALUES [[COPY2]](<4 x s16>) 993 ; GREEDY: [[UV2:%[0-9]+]]:vgpr(<2 x s16>), [[UV3:%[0-9]+]]:vgpr(<2 x s16>) = G_UNMERGE_VALUES [[COPY3]](<4 x s16>) 994 ; GREEDY: [[SELECT:%[0-9]+]]:vgpr(<2 x s16>) = G_SELECT [[COPY4]](s1), [[UV]], [[UV2]] 995 ; GREEDY: [[SELECT1:%[0-9]+]]:vgpr(<2 x s16>) = G_SELECT [[COPY4]](s1), [[UV1]], [[UV3]] 996 ; GREEDY: [[CONCAT_VECTORS:%[0-9]+]]:vgpr(<4 x s16>) = G_CONCAT_VECTORS [[SELECT]](<2 x s16>), [[SELECT1]](<2 x s16>) 997 %0:_(s32) = COPY $sgpr0 998 %1:_(s32) = COPY $sgpr1 999 %2:_(<4 x s16>) = COPY $vgpr0_vgpr1 1000 %3:_(<4 x s16>) = COPY $vgpr2_vgpr3 1001 %4:_(s1) = G_ICMP intpred(ne), %0, %1 1002 %5:_(<4 x s16>) = G_SELECT %4, %2, %3 1003... 1004 1005--- 1006name: select_v4s16_vcc_ss 1007legalized: true 1008body: | 1009 bb.0: 1010 liveins: $sgpr0_sgpr1, $sgpr2_sgpr3, $vgpr0, $vgpr1 1011 ; FAST-LABEL: name: select_v4s16_vcc_ss 1012 ; FAST: [[COPY:%[0-9]+]]:sgpr(<4 x s16>) = COPY $sgpr0_sgpr1 1013 ; FAST: [[COPY1:%[0-9]+]]:sgpr(<4 x s16>) = COPY $sgpr2_sgpr3 1014 ; FAST: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY $vgpr0 1015 ; FAST: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY $vgpr1 1016 ; FAST: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(ne), [[COPY2]](s32), [[COPY3]] 1017 ; FAST: [[UV:%[0-9]+]]:vgpr(<2 x s16>), [[UV1:%[0-9]+]]:vgpr(<2 x s16>) = G_UNMERGE_VALUES [[COPY]](<4 x s16>) 1018 ; FAST: [[UV2:%[0-9]+]]:vgpr(<2 x s16>), [[UV3:%[0-9]+]]:vgpr(<2 x s16>) = G_UNMERGE_VALUES [[COPY1]](<4 x s16>) 1019 ; FAST: [[SELECT:%[0-9]+]]:vgpr(<2 x s16>) = G_SELECT [[ICMP]](s1), [[UV]], [[UV2]] 1020 ; FAST: [[SELECT1:%[0-9]+]]:vgpr(<2 x s16>) = G_SELECT [[ICMP]](s1), [[UV1]], [[UV3]] 1021 ; FAST: [[CONCAT_VECTORS:%[0-9]+]]:vgpr(<4 x s16>) = G_CONCAT_VECTORS [[SELECT]](<2 x s16>), [[SELECT1]](<2 x s16>) 1022 ; GREEDY-LABEL: name: select_v4s16_vcc_ss 1023 ; GREEDY: [[COPY:%[0-9]+]]:sgpr(<4 x s16>) = COPY $sgpr0_sgpr1 1024 ; GREEDY: [[COPY1:%[0-9]+]]:sgpr(<4 x s16>) = COPY $sgpr2_sgpr3 1025 ; GREEDY: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY $vgpr0 1026 ; GREEDY: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY $vgpr1 1027 ; GREEDY: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(ne), [[COPY2]](s32), [[COPY3]] 1028 ; GREEDY: [[UV:%[0-9]+]]:vgpr(<2 x s16>), [[UV1:%[0-9]+]]:vgpr(<2 x s16>) = G_UNMERGE_VALUES [[COPY]](<4 x s16>) 1029 ; GREEDY: [[UV2:%[0-9]+]]:vgpr(<2 x s16>), [[UV3:%[0-9]+]]:vgpr(<2 x s16>) = G_UNMERGE_VALUES [[COPY1]](<4 x s16>) 1030 ; GREEDY: [[SELECT:%[0-9]+]]:vgpr(<2 x s16>) = G_SELECT [[ICMP]](s1), [[UV]], [[UV2]] 1031 ; GREEDY: [[SELECT1:%[0-9]+]]:vgpr(<2 x s16>) = G_SELECT [[ICMP]](s1), [[UV1]], [[UV3]] 1032 ; GREEDY: [[CONCAT_VECTORS:%[0-9]+]]:vgpr(<4 x s16>) = G_CONCAT_VECTORS [[SELECT]](<2 x s16>), [[SELECT1]](<2 x s16>) 1033 %0:_(<4 x s16>) = COPY $sgpr0_sgpr1 1034 %1:_(<4 x s16>) = COPY $sgpr2_sgpr3 1035 %2:_(s32) = COPY $vgpr0 1036 %3:_(s32) = COPY $vgpr1 1037 %4:_(s1) = G_ICMP intpred(ne), %2, %3 1038 %5:_(<4 x s16>) = G_SELECT %4, %0, %1 1039... 1040 1041--- 1042name: select_v4s16_vcc_sv 1043legalized: true 1044body: | 1045 bb.0: 1046 liveins: $sgpr0_sgpr1, $vgpr0, $vgpr1, $vgpr2_vgpr3 1047 ; CHECK-LABEL: name: select_v4s16_vcc_sv 1048 ; FAST-LABEL: name: select_v4s16_vcc_sv 1049 ; FAST: [[COPY:%[0-9]+]]:sgpr(<4 x s16>) = COPY $sgpr0_sgpr1 1050 ; FAST: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr0 1051 ; FAST: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY $vgpr1 1052 ; FAST: [[COPY3:%[0-9]+]]:vgpr(<4 x s16>) = COPY $vgpr2_vgpr3 1053 ; FAST: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(ne), [[COPY1]](s32), [[COPY2]] 1054 ; FAST: [[UV:%[0-9]+]]:vgpr(<2 x s16>), [[UV1:%[0-9]+]]:vgpr(<2 x s16>) = G_UNMERGE_VALUES [[COPY]](<4 x s16>) 1055 ; FAST: [[UV2:%[0-9]+]]:vgpr(<2 x s16>), [[UV3:%[0-9]+]]:vgpr(<2 x s16>) = G_UNMERGE_VALUES [[COPY3]](<4 x s16>) 1056 ; FAST: [[SELECT:%[0-9]+]]:vgpr(<2 x s16>) = G_SELECT [[ICMP]](s1), [[UV]], [[UV2]] 1057 ; FAST: [[SELECT1:%[0-9]+]]:vgpr(<2 x s16>) = G_SELECT [[ICMP]](s1), [[UV1]], [[UV3]] 1058 ; FAST: [[CONCAT_VECTORS:%[0-9]+]]:vgpr(<4 x s16>) = G_CONCAT_VECTORS [[SELECT]](<2 x s16>), [[SELECT1]](<2 x s16>) 1059 ; GREEDY-LABEL: name: select_v4s16_vcc_sv 1060 ; GREEDY: [[COPY:%[0-9]+]]:sgpr(<4 x s16>) = COPY $sgpr0_sgpr1 1061 ; GREEDY: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr0 1062 ; GREEDY: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY $vgpr1 1063 ; GREEDY: [[COPY3:%[0-9]+]]:vgpr(<4 x s16>) = COPY $vgpr2_vgpr3 1064 ; GREEDY: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(ne), [[COPY1]](s32), [[COPY2]] 1065 ; GREEDY: [[UV:%[0-9]+]]:vgpr(<2 x s16>), [[UV1:%[0-9]+]]:vgpr(<2 x s16>) = G_UNMERGE_VALUES [[COPY]](<4 x s16>) 1066 ; GREEDY: [[UV2:%[0-9]+]]:vgpr(<2 x s16>), [[UV3:%[0-9]+]]:vgpr(<2 x s16>) = G_UNMERGE_VALUES [[COPY3]](<4 x s16>) 1067 ; GREEDY: [[SELECT:%[0-9]+]]:vgpr(<2 x s16>) = G_SELECT [[ICMP]](s1), [[UV]], [[UV2]] 1068 ; GREEDY: [[SELECT1:%[0-9]+]]:vgpr(<2 x s16>) = G_SELECT [[ICMP]](s1), [[UV1]], [[UV3]] 1069 ; GREEDY: [[CONCAT_VECTORS:%[0-9]+]]:vgpr(<4 x s16>) = G_CONCAT_VECTORS [[SELECT]](<2 x s16>), [[SELECT1]](<2 x s16>) 1070 %0:_(<4 x s16>) = COPY $sgpr0_sgpr1 1071 %1:_(s32) = COPY $vgpr0 1072 %2:_(s32) = COPY $vgpr1 1073 %3:_(<4 x s16>) = COPY $vgpr2_vgpr3 1074 %4:_(s1) = G_ICMP intpred(ne), %1, %2 1075 %5:_(<4 x s16>) = G_SELECT %4, %0, %3 1076... 1077 1078--- 1079name: select_v4s16_vcc_vs 1080legalized: true 1081body: | 1082 bb.0: 1083 liveins: $sgpr0_sgpr1, $vgpr0, $vgpr1, $vgpr2_vgpr3 1084 ; FAST-LABEL: name: select_v4s16_vcc_vs 1085 ; FAST: [[COPY:%[0-9]+]]:sgpr(<4 x s16>) = COPY $sgpr0_sgpr1 1086 ; FAST: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr0 1087 ; FAST: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY $vgpr1 1088 ; FAST: [[COPY3:%[0-9]+]]:vgpr(<4 x s16>) = COPY $vgpr2_vgpr3 1089 ; FAST: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(ne), [[COPY1]](s32), [[COPY2]] 1090 ; FAST: [[UV:%[0-9]+]]:vgpr(<2 x s16>), [[UV1:%[0-9]+]]:vgpr(<2 x s16>) = G_UNMERGE_VALUES [[COPY3]](<4 x s16>) 1091 ; FAST: [[UV2:%[0-9]+]]:vgpr(<2 x s16>), [[UV3:%[0-9]+]]:vgpr(<2 x s16>) = G_UNMERGE_VALUES [[COPY]](<4 x s16>) 1092 ; FAST: [[SELECT:%[0-9]+]]:vgpr(<2 x s16>) = G_SELECT [[ICMP]](s1), [[UV]], [[UV2]] 1093 ; FAST: [[SELECT1:%[0-9]+]]:vgpr(<2 x s16>) = G_SELECT [[ICMP]](s1), [[UV1]], [[UV3]] 1094 ; FAST: [[CONCAT_VECTORS:%[0-9]+]]:vgpr(<4 x s16>) = G_CONCAT_VECTORS [[SELECT]](<2 x s16>), [[SELECT1]](<2 x s16>) 1095 ; GREEDY-LABEL: name: select_v4s16_vcc_vs 1096 ; GREEDY: [[COPY:%[0-9]+]]:sgpr(<4 x s16>) = COPY $sgpr0_sgpr1 1097 ; GREEDY: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr0 1098 ; GREEDY: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY $vgpr1 1099 ; GREEDY: [[COPY3:%[0-9]+]]:vgpr(<4 x s16>) = COPY $vgpr2_vgpr3 1100 ; GREEDY: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(ne), [[COPY1]](s32), [[COPY2]] 1101 ; GREEDY: [[UV:%[0-9]+]]:vgpr(<2 x s16>), [[UV1:%[0-9]+]]:vgpr(<2 x s16>) = G_UNMERGE_VALUES [[COPY3]](<4 x s16>) 1102 ; GREEDY: [[UV2:%[0-9]+]]:vgpr(<2 x s16>), [[UV3:%[0-9]+]]:vgpr(<2 x s16>) = G_UNMERGE_VALUES [[COPY]](<4 x s16>) 1103 ; GREEDY: [[SELECT:%[0-9]+]]:vgpr(<2 x s16>) = G_SELECT [[ICMP]](s1), [[UV]], [[UV2]] 1104 ; GREEDY: [[SELECT1:%[0-9]+]]:vgpr(<2 x s16>) = G_SELECT [[ICMP]](s1), [[UV1]], [[UV3]] 1105 ; GREEDY: [[CONCAT_VECTORS:%[0-9]+]]:vgpr(<4 x s16>) = G_CONCAT_VECTORS [[SELECT]](<2 x s16>), [[SELECT1]](<2 x s16>) 1106 %0:_(<4 x s16>) = COPY $sgpr0_sgpr1 1107 %1:_(s32) = COPY $vgpr0 1108 %2:_(s32) = COPY $vgpr1 1109 %3:_(<4 x s16>) = COPY $vgpr2_vgpr3 1110 %4:_(s1) = G_ICMP intpred(ne), %1, %2 1111 %5:_(<4 x s16>) = G_SELECT %4, %3, %0 1112... 1113 1114--- 1115name: select_v4s16_vcc_vv 1116legalized: true 1117body: | 1118 bb.0: 1119 liveins: $vgpr0, $vgpr1, $vgpr2_vgpr3, $vgpr4_vgpr5 1120 ; FAST-LABEL: name: select_v4s16_vcc_vv 1121 ; FAST: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0 1122 ; FAST: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr1 1123 ; FAST: [[COPY2:%[0-9]+]]:vgpr(<4 x s16>) = COPY $vgpr2_vgpr3 1124 ; FAST: [[COPY3:%[0-9]+]]:vgpr(<4 x s16>) = COPY $vgpr4_vgpr5 1125 ; FAST: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(ne), [[COPY]](s32), [[COPY1]] 1126 ; FAST: [[UV:%[0-9]+]]:vgpr(<2 x s16>), [[UV1:%[0-9]+]]:vgpr(<2 x s16>) = G_UNMERGE_VALUES [[COPY2]](<4 x s16>) 1127 ; FAST: [[UV2:%[0-9]+]]:vgpr(<2 x s16>), [[UV3:%[0-9]+]]:vgpr(<2 x s16>) = G_UNMERGE_VALUES [[COPY3]](<4 x s16>) 1128 ; FAST: [[SELECT:%[0-9]+]]:vgpr(<2 x s16>) = G_SELECT [[ICMP]](s1), [[UV]], [[UV2]] 1129 ; FAST: [[SELECT1:%[0-9]+]]:vgpr(<2 x s16>) = G_SELECT [[ICMP]](s1), [[UV1]], [[UV3]] 1130 ; FAST: [[CONCAT_VECTORS:%[0-9]+]]:vgpr(<4 x s16>) = G_CONCAT_VECTORS [[SELECT]](<2 x s16>), [[SELECT1]](<2 x s16>) 1131 ; GREEDY-LABEL: name: select_v4s16_vcc_vv 1132 ; GREEDY: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0 1133 ; GREEDY: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr1 1134 ; GREEDY: [[COPY2:%[0-9]+]]:vgpr(<4 x s16>) = COPY $vgpr2_vgpr3 1135 ; GREEDY: [[COPY3:%[0-9]+]]:vgpr(<4 x s16>) = COPY $vgpr4_vgpr5 1136 ; GREEDY: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(ne), [[COPY]](s32), [[COPY1]] 1137 ; GREEDY: [[UV:%[0-9]+]]:vgpr(<2 x s16>), [[UV1:%[0-9]+]]:vgpr(<2 x s16>) = G_UNMERGE_VALUES [[COPY2]](<4 x s16>) 1138 ; GREEDY: [[UV2:%[0-9]+]]:vgpr(<2 x s16>), [[UV3:%[0-9]+]]:vgpr(<2 x s16>) = G_UNMERGE_VALUES [[COPY3]](<4 x s16>) 1139 ; GREEDY: [[SELECT:%[0-9]+]]:vgpr(<2 x s16>) = G_SELECT [[ICMP]](s1), [[UV]], [[UV2]] 1140 ; GREEDY: [[SELECT1:%[0-9]+]]:vgpr(<2 x s16>) = G_SELECT [[ICMP]](s1), [[UV1]], [[UV3]] 1141 ; GREEDY: [[CONCAT_VECTORS:%[0-9]+]]:vgpr(<4 x s16>) = G_CONCAT_VECTORS [[SELECT]](<2 x s16>), [[SELECT1]](<2 x s16>) 1142 %0:_(s32) = COPY $vgpr0 1143 %1:_(s32) = COPY $vgpr1 1144 %2:_(<4 x s16>) = COPY $vgpr2_vgpr3 1145 %3:_(<4 x s16>) = COPY $vgpr4_vgpr5 1146 %4:_(s1) = G_ICMP intpred(ne), %0, %1 1147 %5:_(<4 x s16>) = G_SELECT %4, %2, %3 1148... 1149 1150--- 1151name: select_p1_scc_ss 1152legalized: true 1153body: | 1154 bb.0: 1155 liveins: $sgpr0, $sgpr1, $sgpr2_sgpr3, $sgpr4_sgpr5 1156 ; FAST-LABEL: name: select_p1_scc_ss 1157 ; FAST: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 1158 ; FAST: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1 1159 ; FAST: [[COPY2:%[0-9]+]]:sgpr(p1) = COPY $sgpr2_sgpr3 1160 ; FAST: [[COPY3:%[0-9]+]]:sgpr(p1) = COPY $sgpr4_sgpr5 1161 ; FAST: [[ICMP:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(ne), [[COPY]](s32), [[COPY1]] 1162 ; FAST: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[ICMP]](s32) 1163 ; FAST: [[ZEXT:%[0-9]+]]:sgpr(s32) = G_ZEXT [[TRUNC]](s1) 1164 ; FAST: [[SELECT:%[0-9]+]]:sgpr(p1) = G_SELECT [[ZEXT]](s32), [[COPY2]], [[COPY3]] 1165 ; GREEDY-LABEL: name: select_p1_scc_ss 1166 ; GREEDY: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 1167 ; GREEDY: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1 1168 ; GREEDY: [[COPY2:%[0-9]+]]:sgpr(p1) = COPY $sgpr2_sgpr3 1169 ; GREEDY: [[COPY3:%[0-9]+]]:sgpr(p1) = COPY $sgpr4_sgpr5 1170 ; GREEDY: [[ICMP:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(ne), [[COPY]](s32), [[COPY1]] 1171 ; GREEDY: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[ICMP]](s32) 1172 ; GREEDY: [[ZEXT:%[0-9]+]]:sgpr(s32) = G_ZEXT [[TRUNC]](s1) 1173 ; GREEDY: [[SELECT:%[0-9]+]]:sgpr(p1) = G_SELECT [[ZEXT]](s32), [[COPY2]], [[COPY3]] 1174 %0:_(s32) = COPY $sgpr0 1175 %1:_(s32) = COPY $sgpr1 1176 %2:_(p1) = COPY $sgpr2_sgpr3 1177 %3:_(p1) = COPY $sgpr4_sgpr5 1178 %4:_(s1) = G_ICMP intpred(ne), %0, %1 1179 %5:_(p1) = G_SELECT %4, %2, %3 1180... 1181 1182--- 1183name: select_p999_scc_ss 1184legalized: true 1185body: | 1186 bb.0: 1187 liveins: $sgpr0, $sgpr1, $sgpr2_sgpr3, $sgpr4_sgpr5 1188 ; FAST-LABEL: name: select_p999_scc_ss 1189 ; FAST: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 1190 ; FAST: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1 1191 ; FAST: [[COPY2:%[0-9]+]]:sgpr(p999) = COPY $sgpr2_sgpr3 1192 ; FAST: [[COPY3:%[0-9]+]]:sgpr(p999) = COPY $sgpr4_sgpr5 1193 ; FAST: [[ICMP:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(ne), [[COPY]](s32), [[COPY1]] 1194 ; FAST: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[ICMP]](s32) 1195 ; FAST: [[ZEXT:%[0-9]+]]:sgpr(s32) = G_ZEXT [[TRUNC]](s1) 1196 ; FAST: [[SELECT:%[0-9]+]]:sgpr(p999) = G_SELECT [[ZEXT]](s32), [[COPY2]], [[COPY3]] 1197 ; GREEDY-LABEL: name: select_p999_scc_ss 1198 ; GREEDY: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 1199 ; GREEDY: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1 1200 ; GREEDY: [[COPY2:%[0-9]+]]:sgpr(p999) = COPY $sgpr2_sgpr3 1201 ; GREEDY: [[COPY3:%[0-9]+]]:sgpr(p999) = COPY $sgpr4_sgpr5 1202 ; GREEDY: [[ICMP:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(ne), [[COPY]](s32), [[COPY1]] 1203 ; GREEDY: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[ICMP]](s32) 1204 ; GREEDY: [[ZEXT:%[0-9]+]]:sgpr(s32) = G_ZEXT [[TRUNC]](s1) 1205 ; GREEDY: [[SELECT:%[0-9]+]]:sgpr(p999) = G_SELECT [[ZEXT]](s32), [[COPY2]], [[COPY3]] 1206 %0:_(s32) = COPY $sgpr0 1207 %1:_(s32) = COPY $sgpr1 1208 %2:_(p999) = COPY $sgpr2_sgpr3 1209 %3:_(p999) = COPY $sgpr4_sgpr5 1210 %4:_(s1) = G_ICMP intpred(ne), %0, %1 1211 %5:_(p999) = G_SELECT %4, %2, %3 1212... 1213 1214--- 1215name: select_p1_scc_sv 1216legalized: true 1217body: | 1218 bb.0: 1219 liveins: $sgpr0, $sgpr1, $sgpr2_sgpr3, $vgpr0_vgpr1 1220 ; FAST-LABEL: name: select_p1_scc_sv 1221 ; FAST: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 1222 ; FAST: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1 1223 ; FAST: [[COPY2:%[0-9]+]]:sgpr(p1) = COPY $sgpr2_sgpr3 1224 ; FAST: [[COPY3:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1 1225 ; FAST: [[ICMP:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(ne), [[COPY]](s32), [[COPY1]] 1226 ; FAST: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[ICMP]](s32) 1227 ; FAST: [[COPY4:%[0-9]+]]:vcc(s1) = COPY [[TRUNC]](s1) 1228 ; FAST: [[UV:%[0-9]+]]:vgpr(s32), [[UV1:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY2]](p1) 1229 ; FAST: [[UV2:%[0-9]+]]:vgpr(s32), [[UV3:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY3]](p1) 1230 ; FAST: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[COPY4]](s1), [[UV]], [[UV2]] 1231 ; FAST: [[SELECT1:%[0-9]+]]:vgpr(s32) = G_SELECT [[COPY4]](s1), [[UV1]], [[UV3]] 1232 ; FAST: [[MV:%[0-9]+]]:vgpr(p1) = G_MERGE_VALUES [[SELECT]](s32), [[SELECT1]](s32) 1233 ; GREEDY-LABEL: name: select_p1_scc_sv 1234 ; GREEDY: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 1235 ; GREEDY: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1 1236 ; GREEDY: [[COPY2:%[0-9]+]]:sgpr(p1) = COPY $sgpr2_sgpr3 1237 ; GREEDY: [[COPY3:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1 1238 ; GREEDY: [[ICMP:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(ne), [[COPY]](s32), [[COPY1]] 1239 ; GREEDY: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[ICMP]](s32) 1240 ; GREEDY: [[COPY4:%[0-9]+]]:vcc(s1) = COPY [[TRUNC]](s1) 1241 ; GREEDY: [[UV:%[0-9]+]]:vgpr(s32), [[UV1:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY2]](p1) 1242 ; GREEDY: [[UV2:%[0-9]+]]:vgpr(s32), [[UV3:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY3]](p1) 1243 ; GREEDY: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[COPY4]](s1), [[UV]], [[UV2]] 1244 ; GREEDY: [[SELECT1:%[0-9]+]]:vgpr(s32) = G_SELECT [[COPY4]](s1), [[UV1]], [[UV3]] 1245 ; GREEDY: [[MV:%[0-9]+]]:vgpr(p1) = G_MERGE_VALUES [[SELECT]](s32), [[SELECT1]](s32) 1246 %0:_(s32) = COPY $sgpr0 1247 %1:_(s32) = COPY $sgpr1 1248 %2:_(p1) = COPY $sgpr2_sgpr3 1249 %3:_(p1) = COPY $vgpr0_vgpr1 1250 %4:_(s1) = G_ICMP intpred(ne), %0, %1 1251 %5:_(p1) = G_SELECT %4, %2, %3 1252 1253... 1254 1255--- 1256name: select_p1_scc_vs 1257legalized: true 1258body: | 1259 bb.0: 1260 liveins: $sgpr0, $sgpr1, $sgpr2_sgpr3, $vgpr0_vgpr1 1261 ; FAST-LABEL: name: select_p1_scc_vs 1262 ; FAST: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 1263 ; FAST: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1 1264 ; FAST: [[COPY2:%[0-9]+]]:sgpr(p1) = COPY $sgpr2_sgpr3 1265 ; FAST: [[COPY3:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1 1266 ; FAST: [[ICMP:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(ne), [[COPY]](s32), [[COPY1]] 1267 ; FAST: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[ICMP]](s32) 1268 ; FAST: [[COPY4:%[0-9]+]]:vcc(s1) = COPY [[TRUNC]](s1) 1269 ; FAST: [[UV:%[0-9]+]]:vgpr(s32), [[UV1:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY3]](p1) 1270 ; FAST: [[UV2:%[0-9]+]]:vgpr(s32), [[UV3:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY2]](p1) 1271 ; FAST: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[COPY4]](s1), [[UV]], [[UV2]] 1272 ; FAST: [[SELECT1:%[0-9]+]]:vgpr(s32) = G_SELECT [[COPY4]](s1), [[UV1]], [[UV3]] 1273 ; FAST: [[MV:%[0-9]+]]:vgpr(p1) = G_MERGE_VALUES [[SELECT]](s32), [[SELECT1]](s32) 1274 ; GREEDY-LABEL: name: select_p1_scc_vs 1275 ; GREEDY: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 1276 ; GREEDY: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1 1277 ; GREEDY: [[COPY2:%[0-9]+]]:sgpr(p1) = COPY $sgpr2_sgpr3 1278 ; GREEDY: [[COPY3:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1 1279 ; GREEDY: [[ICMP:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(ne), [[COPY]](s32), [[COPY1]] 1280 ; GREEDY: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[ICMP]](s32) 1281 ; GREEDY: [[COPY4:%[0-9]+]]:vcc(s1) = COPY [[TRUNC]](s1) 1282 ; GREEDY: [[UV:%[0-9]+]]:vgpr(s32), [[UV1:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY3]](p1) 1283 ; GREEDY: [[UV2:%[0-9]+]]:vgpr(s32), [[UV3:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY2]](p1) 1284 ; GREEDY: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[COPY4]](s1), [[UV]], [[UV2]] 1285 ; GREEDY: [[SELECT1:%[0-9]+]]:vgpr(s32) = G_SELECT [[COPY4]](s1), [[UV1]], [[UV3]] 1286 ; GREEDY: [[MV:%[0-9]+]]:vgpr(p1) = G_MERGE_VALUES [[SELECT]](s32), [[SELECT1]](s32) 1287 %0:_(s32) = COPY $sgpr0 1288 %1:_(s32) = COPY $sgpr1 1289 %2:_(p1) = COPY $sgpr2_sgpr3 1290 %3:_(p1) = COPY $vgpr0_vgpr1 1291 %4:_(s1) = G_ICMP intpred(ne), %0, %1 1292 %5:_(p1) = G_SELECT %4, %3, %2 1293... 1294 1295--- 1296name: select_p1_scc_vv 1297legalized: true 1298body: | 1299 bb.0: 1300 liveins: $sgpr0, $sgpr1, $sgpr2_sgpr3, $vgpr0_vgpr1, $vgpr2_vgpr3 1301 ; FAST-LABEL: name: select_p1_scc_vv 1302 ; FAST: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 1303 ; FAST: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1 1304 ; FAST: [[COPY2:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1 1305 ; FAST: [[COPY3:%[0-9]+]]:vgpr(p1) = COPY $vgpr2_vgpr3 1306 ; FAST: [[ICMP:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(ne), [[COPY]](s32), [[COPY1]] 1307 ; FAST: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[ICMP]](s32) 1308 ; FAST: [[COPY4:%[0-9]+]]:vcc(s1) = COPY [[TRUNC]](s1) 1309 ; FAST: [[UV:%[0-9]+]]:vgpr(s32), [[UV1:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY2]](p1) 1310 ; FAST: [[UV2:%[0-9]+]]:vgpr(s32), [[UV3:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY3]](p1) 1311 ; FAST: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[COPY4]](s1), [[UV]], [[UV2]] 1312 ; FAST: [[SELECT1:%[0-9]+]]:vgpr(s32) = G_SELECT [[COPY4]](s1), [[UV1]], [[UV3]] 1313 ; FAST: [[MV:%[0-9]+]]:vgpr(p1) = G_MERGE_VALUES [[SELECT]](s32), [[SELECT1]](s32) 1314 ; GREEDY-LABEL: name: select_p1_scc_vv 1315 ; GREEDY: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 1316 ; GREEDY: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1 1317 ; GREEDY: [[COPY2:%[0-9]+]]:vgpr(p1) = COPY $vgpr0_vgpr1 1318 ; GREEDY: [[COPY3:%[0-9]+]]:vgpr(p1) = COPY $vgpr2_vgpr3 1319 ; GREEDY: [[ICMP:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(ne), [[COPY]](s32), [[COPY1]] 1320 ; GREEDY: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[ICMP]](s32) 1321 ; GREEDY: [[COPY4:%[0-9]+]]:vcc(s1) = COPY [[TRUNC]](s1) 1322 ; GREEDY: [[UV:%[0-9]+]]:vgpr(s32), [[UV1:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY2]](p1) 1323 ; GREEDY: [[UV2:%[0-9]+]]:vgpr(s32), [[UV3:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY3]](p1) 1324 ; GREEDY: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[COPY4]](s1), [[UV]], [[UV2]] 1325 ; GREEDY: [[SELECT1:%[0-9]+]]:vgpr(s32) = G_SELECT [[COPY4]](s1), [[UV1]], [[UV3]] 1326 ; GREEDY: [[MV:%[0-9]+]]:vgpr(p1) = G_MERGE_VALUES [[SELECT]](s32), [[SELECT1]](s32) 1327 %0:_(s32) = COPY $sgpr0 1328 %1:_(s32) = COPY $sgpr1 1329 %2:_(p1) = COPY $vgpr0_vgpr1 1330 %3:_(p1) = COPY $vgpr2_vgpr3 1331 %4:_(s1) = G_ICMP intpred(ne), %0, %1 1332 %5:_(p1) = G_SELECT %4, %2, %3 1333... 1334 1335--- 1336name: select_p1_vcc_ss 1337legalized: true 1338body: | 1339 bb.0: 1340 liveins: $sgpr0_sgpr1, $sgpr2_sgpr3, $vgpr0, $vgpr1 1341 ; FAST-LABEL: name: select_p1_vcc_ss 1342 ; FAST: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1 1343 ; FAST: [[COPY1:%[0-9]+]]:sgpr(p1) = COPY $sgpr2_sgpr3 1344 ; FAST: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY $vgpr0 1345 ; FAST: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY $vgpr1 1346 ; FAST: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(ne), [[COPY2]](s32), [[COPY3]] 1347 ; FAST: [[UV:%[0-9]+]]:vgpr(s32), [[UV1:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY]](p1) 1348 ; FAST: [[UV2:%[0-9]+]]:vgpr(s32), [[UV3:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY1]](p1) 1349 ; FAST: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[UV]], [[UV2]] 1350 ; FAST: [[SELECT1:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[UV1]], [[UV3]] 1351 ; FAST: [[MV:%[0-9]+]]:vgpr(p1) = G_MERGE_VALUES [[SELECT]](s32), [[SELECT1]](s32) 1352 ; GREEDY-LABEL: name: select_p1_vcc_ss 1353 ; GREEDY: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1 1354 ; GREEDY: [[COPY1:%[0-9]+]]:sgpr(p1) = COPY $sgpr2_sgpr3 1355 ; GREEDY: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY $vgpr0 1356 ; GREEDY: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY $vgpr1 1357 ; GREEDY: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(ne), [[COPY2]](s32), [[COPY3]] 1358 ; GREEDY: [[UV:%[0-9]+]]:vgpr(s32), [[UV1:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY]](p1) 1359 ; GREEDY: [[UV2:%[0-9]+]]:vgpr(s32), [[UV3:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY1]](p1) 1360 ; GREEDY: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[UV]], [[UV2]] 1361 ; GREEDY: [[SELECT1:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[UV1]], [[UV3]] 1362 ; GREEDY: [[MV:%[0-9]+]]:vgpr(p1) = G_MERGE_VALUES [[SELECT]](s32), [[SELECT1]](s32) 1363 %0:_(p1) = COPY $sgpr0_sgpr1 1364 %1:_(p1) = COPY $sgpr2_sgpr3 1365 %2:_(s32) = COPY $vgpr0 1366 %3:_(s32) = COPY $vgpr1 1367 %4:_(s1) = G_ICMP intpred(ne), %2, %3 1368 %5:_(p1) = G_SELECT %4, %0, %1 1369... 1370 1371--- 1372name: select_p1_vcc_sv 1373legalized: true 1374body: | 1375 bb.0: 1376 liveins: $sgpr0_sgpr1, $vgpr0, $vgpr1, $vgpr2_vgpr3 1377 ; FAST-LABEL: name: select_p1_vcc_sv 1378 ; FAST: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1 1379 ; FAST: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr0 1380 ; FAST: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY $vgpr1 1381 ; FAST: [[COPY3:%[0-9]+]]:vgpr(p1) = COPY $vgpr2_vgpr3 1382 ; FAST: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(ne), [[COPY1]](s32), [[COPY2]] 1383 ; FAST: [[UV:%[0-9]+]]:vgpr(s32), [[UV1:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY]](p1) 1384 ; FAST: [[UV2:%[0-9]+]]:vgpr(s32), [[UV3:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY3]](p1) 1385 ; FAST: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[UV]], [[UV2]] 1386 ; FAST: [[SELECT1:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[UV1]], [[UV3]] 1387 ; FAST: [[MV:%[0-9]+]]:vgpr(p1) = G_MERGE_VALUES [[SELECT]](s32), [[SELECT1]](s32) 1388 ; GREEDY-LABEL: name: select_p1_vcc_sv 1389 ; GREEDY: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1 1390 ; GREEDY: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr0 1391 ; GREEDY: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY $vgpr1 1392 ; GREEDY: [[COPY3:%[0-9]+]]:vgpr(p1) = COPY $vgpr2_vgpr3 1393 ; GREEDY: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(ne), [[COPY1]](s32), [[COPY2]] 1394 ; GREEDY: [[UV:%[0-9]+]]:vgpr(s32), [[UV1:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY]](p1) 1395 ; GREEDY: [[UV2:%[0-9]+]]:vgpr(s32), [[UV3:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY3]](p1) 1396 ; GREEDY: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[UV]], [[UV2]] 1397 ; GREEDY: [[SELECT1:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[UV1]], [[UV3]] 1398 ; GREEDY: [[MV:%[0-9]+]]:vgpr(p1) = G_MERGE_VALUES [[SELECT]](s32), [[SELECT1]](s32) 1399 %0:_(p1) = COPY $sgpr0_sgpr1 1400 %1:_(s32) = COPY $vgpr0 1401 %2:_(s32) = COPY $vgpr1 1402 %3:_(p1) = COPY $vgpr2_vgpr3 1403 %4:_(s1) = G_ICMP intpred(ne), %1, %2 1404 %5:_(p1) = G_SELECT %4, %0, %3 1405... 1406 1407--- 1408name: select_p1_vcc_vs 1409legalized: true 1410body: | 1411 bb.0: 1412 liveins: $sgpr0_sgpr1, $vgpr0, $vgpr1, $vgpr2_vgpr3 1413 ; FAST-LABEL: name: select_p1_vcc_vs 1414 ; FAST: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1 1415 ; FAST: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr0 1416 ; FAST: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY $vgpr1 1417 ; FAST: [[COPY3:%[0-9]+]]:vgpr(p1) = COPY $vgpr2_vgpr3 1418 ; FAST: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(ne), [[COPY1]](s32), [[COPY2]] 1419 ; FAST: [[UV:%[0-9]+]]:vgpr(s32), [[UV1:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY3]](p1) 1420 ; FAST: [[UV2:%[0-9]+]]:vgpr(s32), [[UV3:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY]](p1) 1421 ; FAST: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[UV]], [[UV2]] 1422 ; FAST: [[SELECT1:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[UV1]], [[UV3]] 1423 ; FAST: [[MV:%[0-9]+]]:vgpr(p1) = G_MERGE_VALUES [[SELECT]](s32), [[SELECT1]](s32) 1424 ; GREEDY-LABEL: name: select_p1_vcc_vs 1425 ; GREEDY: [[COPY:%[0-9]+]]:sgpr(p1) = COPY $sgpr0_sgpr1 1426 ; GREEDY: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr0 1427 ; GREEDY: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY $vgpr1 1428 ; GREEDY: [[COPY3:%[0-9]+]]:vgpr(p1) = COPY $vgpr2_vgpr3 1429 ; GREEDY: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(ne), [[COPY1]](s32), [[COPY2]] 1430 ; GREEDY: [[UV:%[0-9]+]]:vgpr(s32), [[UV1:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY3]](p1) 1431 ; GREEDY: [[UV2:%[0-9]+]]:vgpr(s32), [[UV3:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY]](p1) 1432 ; GREEDY: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[UV]], [[UV2]] 1433 ; GREEDY: [[SELECT1:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[UV1]], [[UV3]] 1434 ; GREEDY: [[MV:%[0-9]+]]:vgpr(p1) = G_MERGE_VALUES [[SELECT]](s32), [[SELECT1]](s32) 1435 %0:_(p1) = COPY $sgpr0_sgpr1 1436 %1:_(s32) = COPY $vgpr0 1437 %2:_(s32) = COPY $vgpr1 1438 %3:_(p1) = COPY $vgpr2_vgpr3 1439 %4:_(s1) = G_ICMP intpred(ne), %1, %2 1440 %5:_(p1) = G_SELECT %4, %3, %0 1441... 1442 1443--- 1444name: select_p1_vcc_vv 1445legalized: true 1446body: | 1447 bb.0: 1448 liveins: $vgpr0, $vgpr1, $vgpr2_vgpr3, $vgpr4_vgpr5 1449 ; FAST-LABEL: name: select_p1_vcc_vv 1450 ; FAST: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0 1451 ; FAST: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr1 1452 ; FAST: [[COPY2:%[0-9]+]]:vgpr(p1) = COPY $vgpr2_vgpr3 1453 ; FAST: [[COPY3:%[0-9]+]]:vgpr(p1) = COPY $vgpr4_vgpr5 1454 ; FAST: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(ne), [[COPY]](s32), [[COPY1]] 1455 ; FAST: [[UV:%[0-9]+]]:vgpr(s32), [[UV1:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY2]](p1) 1456 ; FAST: [[UV2:%[0-9]+]]:vgpr(s32), [[UV3:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY3]](p1) 1457 ; FAST: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[UV]], [[UV2]] 1458 ; FAST: [[SELECT1:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[UV1]], [[UV3]] 1459 ; FAST: [[MV:%[0-9]+]]:vgpr(p1) = G_MERGE_VALUES [[SELECT]](s32), [[SELECT1]](s32) 1460 ; GREEDY-LABEL: name: select_p1_vcc_vv 1461 ; GREEDY: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0 1462 ; GREEDY: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr1 1463 ; GREEDY: [[COPY2:%[0-9]+]]:vgpr(p1) = COPY $vgpr2_vgpr3 1464 ; GREEDY: [[COPY3:%[0-9]+]]:vgpr(p1) = COPY $vgpr4_vgpr5 1465 ; GREEDY: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(ne), [[COPY]](s32), [[COPY1]] 1466 ; GREEDY: [[UV:%[0-9]+]]:vgpr(s32), [[UV1:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY2]](p1) 1467 ; GREEDY: [[UV2:%[0-9]+]]:vgpr(s32), [[UV3:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY3]](p1) 1468 ; GREEDY: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[UV]], [[UV2]] 1469 ; GREEDY: [[SELECT1:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[UV1]], [[UV3]] 1470 ; GREEDY: [[MV:%[0-9]+]]:vgpr(p1) = G_MERGE_VALUES [[SELECT]](s32), [[SELECT1]](s32) 1471 %0:_(s32) = COPY $vgpr0 1472 %1:_(s32) = COPY $vgpr1 1473 %2:_(p1) = COPY $vgpr2_vgpr3 1474 %3:_(p1) = COPY $vgpr4_vgpr5 1475 %4:_(s1) = G_ICMP intpred(ne), %0, %1 1476 %5:_(p1) = G_SELECT %4, %2, %3 1477... 1478 1479--- 1480name: select_p999_vcc_vv 1481legalized: true 1482body: | 1483 bb.0: 1484 liveins: $vgpr0, $vgpr1, $vgpr2_vgpr3, $vgpr4_vgpr5 1485 ; FAST-LABEL: name: select_p999_vcc_vv 1486 ; FAST: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0 1487 ; FAST: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr1 1488 ; FAST: [[COPY2:%[0-9]+]]:vgpr(p999) = COPY $vgpr2_vgpr3 1489 ; FAST: [[COPY3:%[0-9]+]]:vgpr(p999) = COPY $vgpr4_vgpr5 1490 ; FAST: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(ne), [[COPY]](s32), [[COPY1]] 1491 ; FAST: [[UV:%[0-9]+]]:vgpr(s32), [[UV1:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY2]](p999) 1492 ; FAST: [[UV2:%[0-9]+]]:vgpr(s32), [[UV3:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY3]](p999) 1493 ; FAST: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[UV]], [[UV2]] 1494 ; FAST: [[SELECT1:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[UV1]], [[UV3]] 1495 ; FAST: [[MV:%[0-9]+]]:vgpr(p999) = G_MERGE_VALUES [[SELECT]](s32), [[SELECT1]](s32) 1496 ; GREEDY-LABEL: name: select_p999_vcc_vv 1497 ; GREEDY: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0 1498 ; GREEDY: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr1 1499 ; GREEDY: [[COPY2:%[0-9]+]]:vgpr(p999) = COPY $vgpr2_vgpr3 1500 ; GREEDY: [[COPY3:%[0-9]+]]:vgpr(p999) = COPY $vgpr4_vgpr5 1501 ; GREEDY: [[ICMP:%[0-9]+]]:vcc(s1) = G_ICMP intpred(ne), [[COPY]](s32), [[COPY1]] 1502 ; GREEDY: [[UV:%[0-9]+]]:vgpr(s32), [[UV1:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY2]](p999) 1503 ; GREEDY: [[UV2:%[0-9]+]]:vgpr(s32), [[UV3:%[0-9]+]]:vgpr(s32) = G_UNMERGE_VALUES [[COPY3]](p999) 1504 ; GREEDY: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[UV]], [[UV2]] 1505 ; GREEDY: [[SELECT1:%[0-9]+]]:vgpr(s32) = G_SELECT [[ICMP]](s1), [[UV1]], [[UV3]] 1506 ; GREEDY: [[MV:%[0-9]+]]:vgpr(p999) = G_MERGE_VALUES [[SELECT]](s32), [[SELECT1]](s32) 1507 %0:_(s32) = COPY $vgpr0 1508 %1:_(s32) = COPY $vgpr1 1509 %2:_(p999) = COPY $vgpr2_vgpr3 1510 %3:_(p999) = COPY $vgpr4_vgpr5 1511 %4:_(s1) = G_ICMP intpred(ne), %0, %1 1512 %5:_(p999) = G_SELECT %4, %2, %3 1513... 1514 1515--- 1516name: select_s32_vgpr_vv 1517legalized: true 1518body: | 1519 bb.0: 1520 liveins: $vgpr0, $vgpr1, $vgpr2, $vgpr3 1521 ; FAST-LABEL: name: select_s32_vgpr_vv 1522 ; FAST: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0 1523 ; FAST: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr1 1524 ; FAST: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY $vgpr2 1525 ; FAST: [[TRUNC:%[0-9]+]]:vgpr(s1) = G_TRUNC [[COPY]](s32) 1526 ; FAST: [[COPY3:%[0-9]+]]:vcc(s1) = COPY [[TRUNC]](s1) 1527 ; FAST: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[COPY3]](s1), [[COPY1]], [[COPY2]] 1528 ; GREEDY-LABEL: name: select_s32_vgpr_vv 1529 ; GREEDY: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0 1530 ; GREEDY: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr1 1531 ; GREEDY: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY $vgpr2 1532 ; GREEDY: [[TRUNC:%[0-9]+]]:vgpr(s1) = G_TRUNC [[COPY]](s32) 1533 ; GREEDY: [[COPY3:%[0-9]+]]:vcc(s1) = COPY [[TRUNC]](s1) 1534 ; GREEDY: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[COPY3]](s1), [[COPY1]], [[COPY2]] 1535 %0:_(s32) = COPY $vgpr0 1536 %1:_(s32) = COPY $vgpr1 1537 %2:_(s32) = COPY $vgpr2 1538 %3:_(s1) = G_TRUNC %0 1539 %4:_(s32) = G_SELECT %3, %1, %2 1540... 1541 1542--- 1543name: select_s32_vgpr_ss 1544legalized: true 1545body: | 1546 bb.0: 1547 liveins: $vgpr0, $sgpr0, $sgpr1 1548 ; FAST-LABEL: name: select_s32_vgpr_ss 1549 ; FAST: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0 1550 ; FAST: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 1551 ; FAST: [[COPY2:%[0-9]+]]:sgpr(s32) = COPY $sgpr1 1552 ; FAST: [[TRUNC:%[0-9]+]]:vgpr(s1) = G_TRUNC [[COPY]](s32) 1553 ; FAST: [[COPY3:%[0-9]+]]:vcc(s1) = COPY [[TRUNC]](s1) 1554 ; FAST: [[COPY4:%[0-9]+]]:vgpr(s32) = COPY [[COPY1]](s32) 1555 ; FAST: [[COPY5:%[0-9]+]]:vgpr(s32) = COPY [[COPY2]](s32) 1556 ; FAST: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[COPY3]](s1), [[COPY4]], [[COPY5]] 1557 ; GREEDY-LABEL: name: select_s32_vgpr_ss 1558 ; GREEDY: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0 1559 ; GREEDY: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 1560 ; GREEDY: [[COPY2:%[0-9]+]]:sgpr(s32) = COPY $sgpr1 1561 ; GREEDY: [[TRUNC:%[0-9]+]]:vgpr(s1) = G_TRUNC [[COPY]](s32) 1562 ; GREEDY: [[COPY3:%[0-9]+]]:vcc(s1) = COPY [[TRUNC]](s1) 1563 ; GREEDY: [[COPY4:%[0-9]+]]:vgpr(s32) = COPY [[COPY1]](s32) 1564 ; GREEDY: [[COPY5:%[0-9]+]]:vgpr(s32) = COPY [[COPY2]](s32) 1565 ; GREEDY: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[COPY3]](s1), [[COPY4]], [[COPY5]] 1566 %0:_(s32) = COPY $vgpr0 1567 %1:_(s32) = COPY $sgpr0 1568 %2:_(s32) = COPY $sgpr1 1569 %3:_(s1) = G_TRUNC %0 1570 %4:_(s32) = G_SELECT %3, %1, %2 1571... 1572 1573--- 1574name: select_s32_sgpr_vv 1575legalized: true 1576body: | 1577 bb.0: 1578 liveins: $sgpr0, $vgpr0, $vgpr1 1579 ; FAST-LABEL: name: select_s32_sgpr_vv 1580 ; FAST: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 1581 ; FAST: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr0 1582 ; FAST: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY $vgpr1 1583 ; FAST: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[COPY]](s32) 1584 ; FAST: [[COPY3:%[0-9]+]]:vcc(s1) = COPY [[TRUNC]](s1) 1585 ; FAST: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[COPY3]](s1), [[COPY1]], [[COPY2]] 1586 ; GREEDY-LABEL: name: select_s32_sgpr_vv 1587 ; GREEDY: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 1588 ; GREEDY: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr0 1589 ; GREEDY: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY $vgpr1 1590 ; GREEDY: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[COPY]](s32) 1591 ; GREEDY: [[COPY3:%[0-9]+]]:vcc(s1) = COPY [[TRUNC]](s1) 1592 ; GREEDY: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[COPY3]](s1), [[COPY1]], [[COPY2]] 1593 %0:_(s32) = COPY $sgpr0 1594 %1:_(s32) = COPY $vgpr0 1595 %2:_(s32) = COPY $vgpr1 1596 %3:_(s1) = G_TRUNC %0 1597 %4:_(s32) = G_SELECT %3, %1, %2 1598... 1599 1600--- 1601name: select_s32_sgpr_vs 1602legalized: true 1603body: | 1604 bb.0: 1605 liveins: $sgpr0, $vgpr0, $sgpr1 1606 ; FAST-LABEL: name: select_s32_sgpr_vs 1607 ; FAST: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 1608 ; FAST: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr0 1609 ; FAST: [[COPY2:%[0-9]+]]:sgpr(s32) = COPY $sgpr1 1610 ; FAST: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[COPY]](s32) 1611 ; FAST: [[COPY3:%[0-9]+]]:vcc(s1) = COPY [[TRUNC]](s1) 1612 ; FAST: [[COPY4:%[0-9]+]]:vgpr(s32) = COPY [[COPY2]](s32) 1613 ; FAST: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[COPY3]](s1), [[COPY1]], [[COPY4]] 1614 ; GREEDY-LABEL: name: select_s32_sgpr_vs 1615 ; GREEDY: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 1616 ; GREEDY: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr0 1617 ; GREEDY: [[COPY2:%[0-9]+]]:sgpr(s32) = COPY $sgpr1 1618 ; GREEDY: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[COPY]](s32) 1619 ; GREEDY: [[COPY3:%[0-9]+]]:vcc(s1) = COPY [[TRUNC]](s1) 1620 ; GREEDY: [[COPY4:%[0-9]+]]:vgpr(s32) = COPY [[COPY2]](s32) 1621 ; GREEDY: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[COPY3]](s1), [[COPY1]], [[COPY4]] 1622 %0:_(s32) = COPY $sgpr0 1623 %1:_(s32) = COPY $vgpr0 1624 %2:_(s32) = COPY $sgpr1 1625 %3:_(s1) = G_TRUNC %0 1626 %4:_(s32) = G_SELECT %3, %1, %2 1627... 1628 1629--- 1630name: select_s32_sgpr_sv 1631legalized: true 1632body: | 1633 bb.0: 1634 liveins: $sgpr0, $sgpr0, $vgpr0 1635 ; FAST-LABEL: name: select_s32_sgpr_sv 1636 ; FAST: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 1637 ; FAST: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1 1638 ; FAST: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY $vgpr0 1639 ; FAST: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[COPY]](s32) 1640 ; FAST: [[COPY3:%[0-9]+]]:vcc(s1) = COPY [[TRUNC]](s1) 1641 ; FAST: [[COPY4:%[0-9]+]]:vgpr(s32) = COPY [[COPY1]](s32) 1642 ; FAST: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[COPY3]](s1), [[COPY4]], [[COPY2]] 1643 ; GREEDY-LABEL: name: select_s32_sgpr_sv 1644 ; GREEDY: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 1645 ; GREEDY: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1 1646 ; GREEDY: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY $vgpr0 1647 ; GREEDY: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[COPY]](s32) 1648 ; GREEDY: [[COPY3:%[0-9]+]]:vcc(s1) = COPY [[TRUNC]](s1) 1649 ; GREEDY: [[COPY4:%[0-9]+]]:vgpr(s32) = COPY [[COPY1]](s32) 1650 ; GREEDY: [[SELECT:%[0-9]+]]:vgpr(s32) = G_SELECT [[COPY3]](s1), [[COPY4]], [[COPY2]] 1651 %0:_(s32) = COPY $sgpr0 1652 %1:_(s32) = COPY $sgpr1 1653 %2:_(s32) = COPY $vgpr0 1654 %3:_(s1) = G_TRUNC %0 1655 %4:_(s32) = G_SELECT %3, %1, %2 1656... 1657 1658# FIXME: greedy unnecessairly uses vcc/vgpr 1659--- 1660name: select_s32_sgpr_ss 1661legalized: true 1662body: | 1663 bb.0: 1664 liveins: $sgpr0, $sgpr1, $sgpr2 1665 ; FAST-LABEL: name: select_s32_sgpr_ss 1666 ; FAST: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 1667 ; FAST: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1 1668 ; FAST: [[COPY2:%[0-9]+]]:sgpr(s32) = COPY $sgpr2 1669 ; FAST: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[COPY]](s32) 1670 ; FAST: [[ZEXT:%[0-9]+]]:sgpr(s32) = G_ZEXT [[TRUNC]](s1) 1671 ; FAST: [[SELECT:%[0-9]+]]:sgpr(s32) = G_SELECT [[ZEXT]](s32), [[COPY1]], [[COPY2]] 1672 ; GREEDY-LABEL: name: select_s32_sgpr_ss 1673 ; GREEDY: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 1674 ; GREEDY: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1 1675 ; GREEDY: [[COPY2:%[0-9]+]]:sgpr(s32) = COPY $sgpr2 1676 ; GREEDY: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[COPY]](s32) 1677 ; GREEDY: [[ZEXT:%[0-9]+]]:sgpr(s32) = G_ZEXT [[TRUNC]](s1) 1678 ; GREEDY: [[SELECT:%[0-9]+]]:sgpr(s32) = G_SELECT [[ZEXT]](s32), [[COPY1]], [[COPY2]] 1679 %0:_(s32) = COPY $sgpr0 1680 %1:_(s32) = COPY $sgpr1 1681 %2:_(s32) = COPY $sgpr2 1682 %3:_(s1) = G_TRUNC %0 1683 %4:_(s32) = G_SELECT %3, %1, %2 1684... 1685