1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py 2# RUN: llc -march=amdgcn -mcpu=fiji -run-pass=instruction-select -verify-machineinstrs -global-isel-abort=0 -o - %s | FileCheck -check-prefix=WAVE64 %s 3# RUN: llc -march=amdgcn -mcpu=gfx1010 -run-pass=instruction-select -verify-machineinstrs -global-isel-abort=0 -o - %s | FileCheck -check-prefix=WAVE32 %s 4 5--- 6name: fcmp_false_s16_vv 7legalized: true 8regBankSelected: true 9 10body: | 11 bb.0: 12 liveins: $vgpr0, $vgpr1 13 ; WAVE64-LABEL: name: fcmp_false_s16_vv 14 ; WAVE64: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0 15 ; WAVE64: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr1 16 ; WAVE64: [[TRUNC:%[0-9]+]]:vgpr(s16) = G_TRUNC [[COPY]](s32) 17 ; WAVE64: [[TRUNC1:%[0-9]+]]:vgpr(s16) = G_TRUNC [[COPY1]](s32) 18 ; WAVE64: [[FCMP:%[0-9]+]]:vcc(s1) = G_FCMP floatpred(false), [[TRUNC]](s16), [[TRUNC1]] 19 ; WAVE64: S_ENDPGM 0, implicit [[FCMP]](s1) 20 ; WAVE32-LABEL: name: fcmp_false_s16_vv 21 ; WAVE32: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0 22 ; WAVE32: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr1 23 ; WAVE32: [[TRUNC:%[0-9]+]]:vgpr(s16) = G_TRUNC [[COPY]](s32) 24 ; WAVE32: [[TRUNC1:%[0-9]+]]:vgpr(s16) = G_TRUNC [[COPY1]](s32) 25 ; WAVE32: [[FCMP:%[0-9]+]]:vcc(s1) = G_FCMP floatpred(false), [[TRUNC]](s16), [[TRUNC1]] 26 ; WAVE32: S_ENDPGM 0, implicit [[FCMP]](s1) 27 %0:vgpr(s32) = COPY $vgpr0 28 %1:vgpr(s32) = COPY $vgpr1 29 %2:vgpr(s16) = G_TRUNC %0 30 %3:vgpr(s16) = G_TRUNC %1 31 %4:vcc(s1) = G_FCMP floatpred(false), %2, %3 32 S_ENDPGM 0, implicit %4 33... 34 35--- 36name: fcmp_oeq_s16_vv 37legalized: true 38regBankSelected: true 39 40body: | 41 bb.0: 42 liveins: $vgpr0, $vgpr1 43 ; WAVE64-LABEL: name: fcmp_oeq_s16_vv 44 ; WAVE64: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 45 ; WAVE64: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1 46 ; WAVE64: %4:sreg_64 = nofpexcept V_CMP_EQ_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, implicit $mode, implicit $exec 47 ; WAVE64: S_ENDPGM 0, implicit %4 48 ; WAVE32-LABEL: name: fcmp_oeq_s16_vv 49 ; WAVE32: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 50 ; WAVE32: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1 51 ; WAVE32: %4:sreg_32 = nofpexcept V_CMP_EQ_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, implicit $mode, implicit $exec 52 ; WAVE32: S_ENDPGM 0, implicit %4 53 %0:vgpr(s32) = COPY $vgpr0 54 %1:vgpr(s32) = COPY $vgpr1 55 %2:vgpr(s16) = G_TRUNC %0 56 %3:vgpr(s16) = G_TRUNC %1 57 %4:vcc(s1) = G_FCMP floatpred(oeq), %2, %3 58 S_ENDPGM 0, implicit %4 59... 60 61--- 62name: fcmp_ogt_s16_vv 63legalized: true 64regBankSelected: true 65 66body: | 67 bb.0: 68 liveins: $vgpr0, $vgpr1 69 ; WAVE64-LABEL: name: fcmp_ogt_s16_vv 70 ; WAVE64: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 71 ; WAVE64: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1 72 ; WAVE64: %4:sreg_64 = nofpexcept V_CMP_GT_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, implicit $mode, implicit $exec 73 ; WAVE64: S_ENDPGM 0, implicit %4 74 ; WAVE32-LABEL: name: fcmp_ogt_s16_vv 75 ; WAVE32: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 76 ; WAVE32: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1 77 ; WAVE32: %4:sreg_32 = nofpexcept V_CMP_GT_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, implicit $mode, implicit $exec 78 ; WAVE32: S_ENDPGM 0, implicit %4 79 %0:vgpr(s32) = COPY $vgpr0 80 %1:vgpr(s32) = COPY $vgpr1 81 %2:vgpr(s16) = G_TRUNC %0 82 %3:vgpr(s16) = G_TRUNC %1 83 %4:vcc(s1) = G_FCMP floatpred(ogt), %2, %3 84 S_ENDPGM 0, implicit %4 85... 86 87--- 88name: fcmp_oge_s16_vv 89legalized: true 90regBankSelected: true 91 92body: | 93 bb.0: 94 liveins: $vgpr0, $vgpr1 95 ; WAVE64-LABEL: name: fcmp_oge_s16_vv 96 ; WAVE64: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 97 ; WAVE64: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1 98 ; WAVE64: %4:sreg_64 = nofpexcept V_CMP_GE_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, implicit $mode, implicit $exec 99 ; WAVE64: S_ENDPGM 0, implicit %4 100 ; WAVE32-LABEL: name: fcmp_oge_s16_vv 101 ; WAVE32: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 102 ; WAVE32: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1 103 ; WAVE32: %4:sreg_32 = nofpexcept V_CMP_GE_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, implicit $mode, implicit $exec 104 ; WAVE32: S_ENDPGM 0, implicit %4 105 %0:vgpr(s32) = COPY $vgpr0 106 %1:vgpr(s32) = COPY $vgpr1 107 %2:vgpr(s16) = G_TRUNC %0 108 %3:vgpr(s16) = G_TRUNC %1 109 %4:vcc(s1) = G_FCMP floatpred(oge), %2, %3 110 S_ENDPGM 0, implicit %4 111... 112 113--- 114name: fcmp_olt_s16_vv 115legalized: true 116regBankSelected: true 117 118body: | 119 bb.0: 120 liveins: $vgpr0, $vgpr1 121 ; WAVE64-LABEL: name: fcmp_olt_s16_vv 122 ; WAVE64: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 123 ; WAVE64: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1 124 ; WAVE64: %4:sreg_64 = nofpexcept V_CMP_LT_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, implicit $mode, implicit $exec 125 ; WAVE64: S_ENDPGM 0, implicit %4 126 ; WAVE32-LABEL: name: fcmp_olt_s16_vv 127 ; WAVE32: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 128 ; WAVE32: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1 129 ; WAVE32: %4:sreg_32 = nofpexcept V_CMP_LT_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, implicit $mode, implicit $exec 130 ; WAVE32: S_ENDPGM 0, implicit %4 131 %0:vgpr(s32) = COPY $vgpr0 132 %1:vgpr(s32) = COPY $vgpr1 133 %2:vgpr(s16) = G_TRUNC %0 134 %3:vgpr(s16) = G_TRUNC %1 135 %4:vcc(s1) = G_FCMP floatpred(olt), %2, %3 136 S_ENDPGM 0, implicit %4 137... 138 139--- 140name: fcmp_ole_s16_vv 141legalized: true 142regBankSelected: true 143 144body: | 145 bb.0: 146 liveins: $vgpr0, $vgpr1 147 ; WAVE64-LABEL: name: fcmp_ole_s16_vv 148 ; WAVE64: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 149 ; WAVE64: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1 150 ; WAVE64: %4:sreg_64 = nofpexcept V_CMP_LE_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, implicit $mode, implicit $exec 151 ; WAVE64: S_ENDPGM 0, implicit %4 152 ; WAVE32-LABEL: name: fcmp_ole_s16_vv 153 ; WAVE32: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 154 ; WAVE32: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1 155 ; WAVE32: %4:sreg_32 = nofpexcept V_CMP_LE_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, implicit $mode, implicit $exec 156 ; WAVE32: S_ENDPGM 0, implicit %4 157 %0:vgpr(s32) = COPY $vgpr0 158 %1:vgpr(s32) = COPY $vgpr1 159 %2:vgpr(s16) = G_TRUNC %0 160 %3:vgpr(s16) = G_TRUNC %1 161 %4:vcc(s1) = G_FCMP floatpred(ole), %2, %3 162 S_ENDPGM 0, implicit %4 163... 164--- 165name: fcmp_one_s16_vv 166legalized: true 167regBankSelected: true 168 169body: | 170 bb.0: 171 liveins: $vgpr0, $vgpr1 172 ; WAVE64-LABEL: name: fcmp_one_s16_vv 173 ; WAVE64: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 174 ; WAVE64: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1 175 ; WAVE64: %4:sreg_64 = nofpexcept V_CMP_LG_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, implicit $mode, implicit $exec 176 ; WAVE64: S_ENDPGM 0, implicit %4 177 ; WAVE32-LABEL: name: fcmp_one_s16_vv 178 ; WAVE32: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 179 ; WAVE32: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1 180 ; WAVE32: %4:sreg_32 = nofpexcept V_CMP_LG_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, implicit $mode, implicit $exec 181 ; WAVE32: S_ENDPGM 0, implicit %4 182 %0:vgpr(s32) = COPY $vgpr0 183 %1:vgpr(s32) = COPY $vgpr1 184 %2:vgpr(s16) = G_TRUNC %0 185 %3:vgpr(s16) = G_TRUNC %1 186 %4:vcc(s1) = G_FCMP floatpred(one), %2, %3 187 S_ENDPGM 0, implicit %4 188... 189 190--- 191name: fcmp_ord_s16_vv 192legalized: true 193regBankSelected: true 194 195body: | 196 bb.0: 197 liveins: $vgpr0, $vgpr1 198 ; WAVE64-LABEL: name: fcmp_ord_s16_vv 199 ; WAVE64: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 200 ; WAVE64: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1 201 ; WAVE64: %4:sreg_64 = nofpexcept V_CMP_LG_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, implicit $mode, implicit $exec 202 ; WAVE64: S_ENDPGM 0, implicit %4 203 ; WAVE32-LABEL: name: fcmp_ord_s16_vv 204 ; WAVE32: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 205 ; WAVE32: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1 206 ; WAVE32: %4:sreg_32 = nofpexcept V_CMP_LG_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, implicit $mode, implicit $exec 207 ; WAVE32: S_ENDPGM 0, implicit %4 208 %0:vgpr(s32) = COPY $vgpr0 209 %1:vgpr(s32) = COPY $vgpr1 210 %2:vgpr(s16) = G_TRUNC %0 211 %3:vgpr(s16) = G_TRUNC %1 212 %4:vcc(s1) = G_FCMP floatpred(one), %2, %3 213 S_ENDPGM 0, implicit %4 214... 215 216--- 217name: fcmp_uno_s16_vv 218legalized: true 219regBankSelected: true 220 221body: | 222 bb.0: 223 liveins: $vgpr0, $vgpr1 224 ; WAVE64-LABEL: name: fcmp_uno_s16_vv 225 ; WAVE64: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 226 ; WAVE64: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1 227 ; WAVE64: %4:sreg_64 = nofpexcept V_CMP_U_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, implicit $mode, implicit $exec 228 ; WAVE64: S_ENDPGM 0, implicit %4 229 ; WAVE32-LABEL: name: fcmp_uno_s16_vv 230 ; WAVE32: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 231 ; WAVE32: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1 232 ; WAVE32: %4:sreg_32 = nofpexcept V_CMP_U_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, implicit $mode, implicit $exec 233 ; WAVE32: S_ENDPGM 0, implicit %4 234 %0:vgpr(s32) = COPY $vgpr0 235 %1:vgpr(s32) = COPY $vgpr1 236 %2:vgpr(s16) = G_TRUNC %0 237 %3:vgpr(s16) = G_TRUNC %1 238 %4:vcc(s1) = G_FCMP floatpred(uno), %2, %3 239 S_ENDPGM 0, implicit %4 240... 241 242--- 243name: fcmp_ueq_s16_vv 244legalized: true 245regBankSelected: true 246 247body: | 248 bb.0: 249 liveins: $vgpr0, $vgpr1 250 ; WAVE64-LABEL: name: fcmp_ueq_s16_vv 251 ; WAVE64: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 252 ; WAVE64: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1 253 ; WAVE64: %4:sreg_64 = nofpexcept V_CMP_NLG_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, implicit $mode, implicit $exec 254 ; WAVE64: S_ENDPGM 0, implicit %4 255 ; WAVE32-LABEL: name: fcmp_ueq_s16_vv 256 ; WAVE32: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 257 ; WAVE32: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1 258 ; WAVE32: %4:sreg_32 = nofpexcept V_CMP_NLG_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, implicit $mode, implicit $exec 259 ; WAVE32: S_ENDPGM 0, implicit %4 260 %0:vgpr(s32) = COPY $vgpr0 261 %1:vgpr(s32) = COPY $vgpr1 262 %2:vgpr(s16) = G_TRUNC %0 263 %3:vgpr(s16) = G_TRUNC %1 264 %4:vcc(s1) = G_FCMP floatpred(ueq), %2, %3 265 S_ENDPGM 0, implicit %4 266... 267 268--- 269name: fcmp_ugt_s16_vv 270legalized: true 271regBankSelected: true 272 273body: | 274 bb.0: 275 liveins: $vgpr0, $vgpr1 276 ; WAVE64-LABEL: name: fcmp_ugt_s16_vv 277 ; WAVE64: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 278 ; WAVE64: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1 279 ; WAVE64: %4:sreg_64 = nofpexcept V_CMP_NLE_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, implicit $mode, implicit $exec 280 ; WAVE64: S_ENDPGM 0, implicit %4 281 ; WAVE32-LABEL: name: fcmp_ugt_s16_vv 282 ; WAVE32: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 283 ; WAVE32: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1 284 ; WAVE32: %4:sreg_32 = nofpexcept V_CMP_NLE_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, implicit $mode, implicit $exec 285 ; WAVE32: S_ENDPGM 0, implicit %4 286 %0:vgpr(s32) = COPY $vgpr0 287 %1:vgpr(s32) = COPY $vgpr1 288 %2:vgpr(s16) = G_TRUNC %0 289 %3:vgpr(s16) = G_TRUNC %1 290 %4:vcc(s1) = G_FCMP floatpred(ugt), %2, %3 291 S_ENDPGM 0, implicit %4 292... 293 294--- 295name: fcmp_uge_s16_vv 296legalized: true 297regBankSelected: true 298 299body: | 300 bb.0: 301 liveins: $vgpr0, $vgpr1 302 ; WAVE64-LABEL: name: fcmp_uge_s16_vv 303 ; WAVE64: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 304 ; WAVE64: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1 305 ; WAVE64: %4:sreg_64 = nofpexcept V_CMP_NLT_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, implicit $mode, implicit $exec 306 ; WAVE64: S_ENDPGM 0, implicit %4 307 ; WAVE32-LABEL: name: fcmp_uge_s16_vv 308 ; WAVE32: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 309 ; WAVE32: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1 310 ; WAVE32: %4:sreg_32 = nofpexcept V_CMP_NLT_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, implicit $mode, implicit $exec 311 ; WAVE32: S_ENDPGM 0, implicit %4 312 %0:vgpr(s32) = COPY $vgpr0 313 %1:vgpr(s32) = COPY $vgpr1 314 %2:vgpr(s16) = G_TRUNC %0 315 %3:vgpr(s16) = G_TRUNC %1 316 %4:vcc(s1) = G_FCMP floatpred(uge), %2, %3 317 S_ENDPGM 0, implicit %4 318... 319 320--- 321name: fcmp_ult_s16_vv 322legalized: true 323regBankSelected: true 324 325body: | 326 bb.0: 327 liveins: $vgpr0, $vgpr1 328 ; WAVE64-LABEL: name: fcmp_ult_s16_vv 329 ; WAVE64: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 330 ; WAVE64: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1 331 ; WAVE64: %4:sreg_64 = nofpexcept V_CMP_NGE_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, implicit $mode, implicit $exec 332 ; WAVE64: S_ENDPGM 0, implicit %4 333 ; WAVE32-LABEL: name: fcmp_ult_s16_vv 334 ; WAVE32: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 335 ; WAVE32: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1 336 ; WAVE32: %4:sreg_32 = nofpexcept V_CMP_NGE_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, implicit $mode, implicit $exec 337 ; WAVE32: S_ENDPGM 0, implicit %4 338 %0:vgpr(s32) = COPY $vgpr0 339 %1:vgpr(s32) = COPY $vgpr1 340 %2:vgpr(s16) = G_TRUNC %0 341 %3:vgpr(s16) = G_TRUNC %1 342 %4:vcc(s1) = G_FCMP floatpred(ult), %2, %3 343 S_ENDPGM 0, implicit %4 344... 345 346--- 347name: fcmp_ule_s16_vv 348legalized: true 349regBankSelected: true 350 351body: | 352 bb.0: 353 liveins: $vgpr0, $vgpr1 354 ; WAVE64-LABEL: name: fcmp_ule_s16_vv 355 ; WAVE64: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 356 ; WAVE64: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1 357 ; WAVE64: %4:sreg_64 = nofpexcept V_CMP_NGT_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, implicit $mode, implicit $exec 358 ; WAVE64: S_ENDPGM 0, implicit %4 359 ; WAVE32-LABEL: name: fcmp_ule_s16_vv 360 ; WAVE32: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 361 ; WAVE32: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1 362 ; WAVE32: %4:sreg_32 = nofpexcept V_CMP_NGT_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, implicit $mode, implicit $exec 363 ; WAVE32: S_ENDPGM 0, implicit %4 364 %0:vgpr(s32) = COPY $vgpr0 365 %1:vgpr(s32) = COPY $vgpr1 366 %2:vgpr(s16) = G_TRUNC %0 367 %3:vgpr(s16) = G_TRUNC %1 368 %4:vcc(s1) = G_FCMP floatpred(ule), %2, %3 369 S_ENDPGM 0, implicit %4 370... 371 372--- 373name: fcmp_une_s16_vv 374legalized: true 375regBankSelected: true 376 377body: | 378 bb.0: 379 liveins: $vgpr0, $vgpr1 380 ; WAVE64-LABEL: name: fcmp_une_s16_vv 381 ; WAVE64: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 382 ; WAVE64: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1 383 ; WAVE64: %4:sreg_64 = nofpexcept V_CMP_NEQ_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, implicit $mode, implicit $exec 384 ; WAVE64: S_ENDPGM 0, implicit %4 385 ; WAVE32-LABEL: name: fcmp_une_s16_vv 386 ; WAVE32: [[COPY:%[0-9]+]]:vgpr_32 = COPY $vgpr0 387 ; WAVE32: [[COPY1:%[0-9]+]]:vgpr_32 = COPY $vgpr1 388 ; WAVE32: %4:sreg_32 = nofpexcept V_CMP_NEQ_F16_e64 0, [[COPY]], 0, [[COPY1]], 0, implicit $mode, implicit $exec 389 ; WAVE32: S_ENDPGM 0, implicit %4 390 %0:vgpr(s32) = COPY $vgpr0 391 %1:vgpr(s32) = COPY $vgpr1 392 %2:vgpr(s16) = G_TRUNC %0 393 %3:vgpr(s16) = G_TRUNC %1 394 %4:vcc(s1) = G_FCMP floatpred(une), %2, %3 395 S_ENDPGM 0, implicit %4 396... 397 398--- 399name: fcmp_true_s16_vv 400legalized: true 401regBankSelected: true 402 403body: | 404 bb.0: 405 liveins: $vgpr0, $vgpr1 406 ; WAVE64-LABEL: name: fcmp_true_s16_vv 407 ; WAVE64: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0 408 ; WAVE64: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr1 409 ; WAVE64: [[TRUNC:%[0-9]+]]:vgpr(s16) = G_TRUNC [[COPY]](s32) 410 ; WAVE64: [[TRUNC1:%[0-9]+]]:vgpr(s16) = G_TRUNC [[COPY1]](s32) 411 ; WAVE64: [[FCMP:%[0-9]+]]:vcc(s1) = G_FCMP floatpred(true), [[TRUNC]](s16), [[TRUNC1]] 412 ; WAVE64: S_ENDPGM 0, implicit [[FCMP]](s1) 413 ; WAVE32-LABEL: name: fcmp_true_s16_vv 414 ; WAVE32: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0 415 ; WAVE32: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr1 416 ; WAVE32: [[TRUNC:%[0-9]+]]:vgpr(s16) = G_TRUNC [[COPY]](s32) 417 ; WAVE32: [[TRUNC1:%[0-9]+]]:vgpr(s16) = G_TRUNC [[COPY1]](s32) 418 ; WAVE32: [[FCMP:%[0-9]+]]:vcc(s1) = G_FCMP floatpred(true), [[TRUNC]](s16), [[TRUNC1]] 419 ; WAVE32: S_ENDPGM 0, implicit [[FCMP]](s1) 420 %0:vgpr(s32) = COPY $vgpr0 421 %1:vgpr(s32) = COPY $vgpr1 422 %2:vgpr(s16) = G_TRUNC %0 423 %3:vgpr(s16) = G_TRUNC %1 424 %4:vcc(s1) = G_FCMP floatpred(true), %2, %3 425 S_ENDPGM 0, implicit %4 426... 427 428