1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py 2# RUN: llc -march=amdgcn -mcpu=fiji -run-pass=regbankselect %s -verify-machineinstrs -o - -regbankselect-fast | FileCheck -check-prefix=FAST %s 3# RUN: llc -march=amdgcn -mcpu=fiji -run-pass=regbankselect %s -verify-machineinstrs -o - -regbankselect-greedy | FileCheck -check-prefix=GREEDY %s 4--- 5name: uadde_s32_sss 6legalized: true 7 8body: | 9 bb.0: 10 liveins: $sgpr0, $sgpr1, $sgpr2 11 ; FAST-LABEL: name: uadde_s32_sss 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: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 0 16 ; FAST: [[ICMP:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(eq), [[COPY2]](s32), [[C]] 17 ; FAST: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[ICMP]](s32) 18 ; FAST: [[ZEXT:%[0-9]+]]:sgpr(s32) = G_ZEXT [[TRUNC]](s1) 19 ; FAST: [[UADDE:%[0-9]+]]:sgpr(s32), [[UADDE1:%[0-9]+]]:sgpr(s32) = G_UADDE [[COPY]], [[COPY1]], [[ZEXT]] 20 ; FAST: [[TRUNC1:%[0-9]+]]:sgpr(s1) = G_TRUNC [[UADDE1]](s32) 21 ; GREEDY-LABEL: name: uadde_s32_sss 22 ; GREEDY: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 23 ; GREEDY: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1 24 ; GREEDY: [[COPY2:%[0-9]+]]:sgpr(s32) = COPY $sgpr2 25 ; GREEDY: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 0 26 ; GREEDY: [[ICMP:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(eq), [[COPY2]](s32), [[C]] 27 ; GREEDY: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[ICMP]](s32) 28 ; GREEDY: [[ZEXT:%[0-9]+]]:sgpr(s32) = G_ZEXT [[TRUNC]](s1) 29 ; GREEDY: [[UADDE:%[0-9]+]]:sgpr(s32), [[UADDE1:%[0-9]+]]:sgpr(s32) = G_UADDE [[COPY]], [[COPY1]], [[ZEXT]] 30 ; GREEDY: [[TRUNC1:%[0-9]+]]:sgpr(s1) = G_TRUNC [[UADDE1]](s32) 31 %0:_(s32) = COPY $sgpr0 32 %1:_(s32) = COPY $sgpr1 33 %2:_(s32) = COPY $sgpr2 34 %3:_(s32) = G_CONSTANT i32 0 35 %4:_(s1) = G_ICMP intpred(eq), %2, %3 36 %5:_(s32), %6:_(s1) = G_UADDE %0, %1, %4 37... 38 39--- 40name: uadde_s32_vss 41legalized: true 42 43body: | 44 bb.0: 45 liveins: $vgpr0, $sgpr0, $sgpr1 46 ; FAST-LABEL: name: uadde_s32_vss 47 ; FAST: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0 48 ; FAST: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 49 ; FAST: [[COPY2:%[0-9]+]]:sgpr(s32) = COPY $sgpr1 50 ; FAST: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 0 51 ; FAST: [[ICMP:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(eq), [[COPY2]](s32), [[C]] 52 ; FAST: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[ICMP]](s32) 53 ; FAST: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY [[COPY1]](s32) 54 ; FAST: [[COPY4:%[0-9]+]]:vcc(s1) = COPY [[TRUNC]](s1) 55 ; FAST: [[UADDE:%[0-9]+]]:vgpr(s32), [[UADDE1:%[0-9]+]]:vcc(s1) = G_UADDE [[COPY]], [[COPY3]], [[COPY4]] 56 ; GREEDY-LABEL: name: uadde_s32_vss 57 ; GREEDY: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0 58 ; GREEDY: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 59 ; GREEDY: [[COPY2:%[0-9]+]]:sgpr(s32) = COPY $sgpr1 60 ; GREEDY: [[C:%[0-9]+]]:sgpr(s32) = G_CONSTANT i32 0 61 ; GREEDY: [[ICMP:%[0-9]+]]:sgpr(s32) = G_ICMP intpred(eq), [[COPY2]](s32), [[C]] 62 ; GREEDY: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[ICMP]](s32) 63 ; GREEDY: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY [[COPY1]](s32) 64 ; GREEDY: [[COPY4:%[0-9]+]]:vcc(s1) = COPY [[TRUNC]](s1) 65 ; GREEDY: [[UADDE:%[0-9]+]]:vgpr(s32), [[UADDE1:%[0-9]+]]:vcc(s1) = G_UADDE [[COPY]], [[COPY3]], [[COPY4]] 66 %0:_(s32) = COPY $vgpr0 67 %1:_(s32) = COPY $sgpr0 68 %2:_(s32) = COPY $sgpr1 69 %3:_(s32) = G_CONSTANT i32 0 70 %4:_(s1) = G_ICMP intpred(eq), %2, %3 71 %5:_(s32), %6:_(s1) = G_UADDE %0, %1, %4 72... 73--- 74name: uadde_s32_ssv 75legalized: true 76 77body: | 78 bb.0: 79 liveins: $sgpr0, $sgpr1, $vgpr0 80 ; FAST-LABEL: name: uadde_s32_ssv 81 ; FAST: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 82 ; FAST: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1 83 ; FAST: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY $vgpr0 84 ; FAST: [[TRUNC:%[0-9]+]]:vgpr(s1) = G_TRUNC [[COPY2]](s32) 85 ; FAST: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY [[COPY]](s32) 86 ; FAST: [[COPY4:%[0-9]+]]:vgpr(s32) = COPY [[COPY1]](s32) 87 ; FAST: [[COPY5:%[0-9]+]]:vcc(s1) = COPY [[TRUNC]](s1) 88 ; FAST: [[UADDE:%[0-9]+]]:vgpr(s32), [[UADDE1:%[0-9]+]]:vcc(s1) = G_UADDE [[COPY3]], [[COPY4]], [[COPY5]] 89 ; GREEDY-LABEL: name: uadde_s32_ssv 90 ; GREEDY: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 91 ; GREEDY: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1 92 ; GREEDY: [[COPY2:%[0-9]+]]:vgpr(s32) = COPY $vgpr0 93 ; GREEDY: [[TRUNC:%[0-9]+]]:vgpr(s1) = G_TRUNC [[COPY2]](s32) 94 ; GREEDY: [[COPY3:%[0-9]+]]:vgpr(s32) = COPY [[COPY]](s32) 95 ; GREEDY: [[COPY4:%[0-9]+]]:vgpr(s32) = COPY [[COPY1]](s32) 96 ; GREEDY: [[COPY5:%[0-9]+]]:vcc(s1) = COPY [[TRUNC]](s1) 97 ; GREEDY: [[UADDE:%[0-9]+]]:vgpr(s32), [[UADDE1:%[0-9]+]]:vcc(s1) = G_UADDE [[COPY3]], [[COPY4]], [[COPY5]] 98 %0:_(s32) = COPY $sgpr0 99 %1:_(s32) = COPY $sgpr1 100 %2:_(s32) = COPY $vgpr0 101 %3:_(s1) = G_TRUNC %2 102 %4:_(s32), %5:_(s1) = G_UADDE %0, %1, %3 103... 104 105--- 106name: uadde_s32_vvs 107legalized: true 108 109body: | 110 bb.0: 111 liveins: $vgpr0, $vgpr1, $sgpr0 112 ; FAST-LABEL: name: uadde_s32_vvs 113 ; FAST: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0 114 ; FAST: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr1 115 ; FAST: [[COPY2:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 116 ; FAST: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[COPY2]](s32) 117 ; FAST: [[COPY3:%[0-9]+]]:vcc(s1) = COPY [[TRUNC]](s1) 118 ; FAST: [[UADDE:%[0-9]+]]:vgpr(s32), [[UADDE1:%[0-9]+]]:vcc(s1) = G_UADDE [[COPY]], [[COPY1]], [[COPY3]] 119 ; GREEDY-LABEL: name: uadde_s32_vvs 120 ; GREEDY: [[COPY:%[0-9]+]]:vgpr(s32) = COPY $vgpr0 121 ; GREEDY: [[COPY1:%[0-9]+]]:vgpr(s32) = COPY $vgpr1 122 ; GREEDY: [[COPY2:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 123 ; GREEDY: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[COPY2]](s32) 124 ; GREEDY: [[COPY3:%[0-9]+]]:vcc(s1) = COPY [[TRUNC]](s1) 125 ; GREEDY: [[UADDE:%[0-9]+]]:vgpr(s32), [[UADDE1:%[0-9]+]]:vcc(s1) = G_UADDE [[COPY]], [[COPY1]], [[COPY3]] 126 %0:_(s32) = COPY $vgpr0 127 %1:_(s32) = COPY $vgpr1 128 %2:_(s32) = COPY $sgpr0 129 %3:_(s1) = G_TRUNC %2 130 %4:_(s32), %5:_(s1) = G_UADDE %0, %1, %3 131... 132 133--- 134name: uadde_s32_sss_noscc 135legalized: true 136 137body: | 138 bb.0: 139 liveins: $sgpr0, $sgpr1, $sgpr2 140 ; FAST-LABEL: name: uadde_s32_sss_noscc 141 ; FAST: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 142 ; FAST: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1 143 ; FAST: [[COPY2:%[0-9]+]]:sgpr(s32) = COPY $sgpr2 144 ; FAST: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[COPY2]](s32) 145 ; FAST: [[ZEXT:%[0-9]+]]:sgpr(s32) = G_ZEXT [[TRUNC]](s1) 146 ; FAST: [[UADDE:%[0-9]+]]:sgpr(s32), [[UADDE1:%[0-9]+]]:sgpr(s32) = G_UADDE [[COPY]], [[COPY1]], [[ZEXT]] 147 ; FAST: [[TRUNC1:%[0-9]+]]:sgpr(s1) = G_TRUNC [[UADDE1]](s32) 148 ; GREEDY-LABEL: name: uadde_s32_sss_noscc 149 ; GREEDY: [[COPY:%[0-9]+]]:sgpr(s32) = COPY $sgpr0 150 ; GREEDY: [[COPY1:%[0-9]+]]:sgpr(s32) = COPY $sgpr1 151 ; GREEDY: [[COPY2:%[0-9]+]]:sgpr(s32) = COPY $sgpr2 152 ; GREEDY: [[TRUNC:%[0-9]+]]:sgpr(s1) = G_TRUNC [[COPY2]](s32) 153 ; GREEDY: [[ZEXT:%[0-9]+]]:sgpr(s32) = G_ZEXT [[TRUNC]](s1) 154 ; GREEDY: [[UADDE:%[0-9]+]]:sgpr(s32), [[UADDE1:%[0-9]+]]:sgpr(s32) = G_UADDE [[COPY]], [[COPY1]], [[ZEXT]] 155 ; GREEDY: [[TRUNC1:%[0-9]+]]:sgpr(s1) = G_TRUNC [[UADDE1]](s32) 156 %0:_(s32) = COPY $sgpr0 157 %1:_(s32) = COPY $sgpr1 158 %2:_(s32) = COPY $sgpr2 159 %3:_(s1) = G_TRUNC %2 160 %4:_(s32), %5:_(s1) = G_UADDE %0, %1, %3 161... 162