1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 4 2# RUN: llc %s -mtriple=riscv64 -run-pass=riscv-opt-w-instrs -verify-machineinstrs \ 3# RUN: -mattr=+m -o - | FileCheck %s -check-prefixes=NO-PREFER-W-INST 4# RUN: llc %s -mtriple=riscv64 -run-pass=riscv-opt-w-instrs -verify-machineinstrs \ 5# RUN: -mattr=+m,+prefer-w-inst -o - | FileCheck %s -check-prefixes=PREFER-W-INST 6 7--- 8name: addi 9body: | 10 bb.0.entry: 11 liveins: $x10, $x11 12 ; NO-PREFER-W-INST-LABEL: name: addi 13 ; NO-PREFER-W-INST: liveins: $x10, $x11 14 ; NO-PREFER-W-INST-NEXT: {{ $}} 15 ; NO-PREFER-W-INST-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x10 16 ; NO-PREFER-W-INST-NEXT: [[COPY1:%[0-9]+]]:gpr = COPY $x11 17 ; NO-PREFER-W-INST-NEXT: [[ADDI:%[0-9]+]]:gpr = ADDI [[COPY]], 1 18 ; NO-PREFER-W-INST-NEXT: [[ADDIW:%[0-9]+]]:gpr = ADDIW [[ADDI]], 1 19 ; NO-PREFER-W-INST-NEXT: $x10 = COPY [[ADDIW]] 20 ; NO-PREFER-W-INST-NEXT: PseudoRET 21 ; 22 ; PREFER-W-INST-LABEL: name: addi 23 ; PREFER-W-INST: liveins: $x10, $x11 24 ; PREFER-W-INST-NEXT: {{ $}} 25 ; PREFER-W-INST-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x10 26 ; PREFER-W-INST-NEXT: [[COPY1:%[0-9]+]]:gpr = COPY $x11 27 ; PREFER-W-INST-NEXT: [[ADDIW:%[0-9]+]]:gpr = ADDIW [[COPY]], 1 28 ; PREFER-W-INST-NEXT: [[ADDIW1:%[0-9]+]]:gpr = ADDIW [[ADDIW]], 1 29 ; PREFER-W-INST-NEXT: $x10 = COPY [[ADDIW1]] 30 ; PREFER-W-INST-NEXT: PseudoRET 31 %1:gpr = COPY $x10 32 %2:gpr = COPY $x11 33 %3:gpr = ADDI %1, 1 34 %4:gpr = ADDIW %3, 1 35 $x10 = COPY %4 36 PseudoRET 37... 38 39--- 40name: add 41body: | 42 bb.0.entry: 43 liveins: $x10, $x11 44 ; NO-PREFER-W-INST-LABEL: name: add 45 ; NO-PREFER-W-INST: liveins: $x10, $x11 46 ; NO-PREFER-W-INST-NEXT: {{ $}} 47 ; NO-PREFER-W-INST-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x10 48 ; NO-PREFER-W-INST-NEXT: [[COPY1:%[0-9]+]]:gpr = COPY $x11 49 ; NO-PREFER-W-INST-NEXT: [[ADD:%[0-9]+]]:gpr = ADD [[COPY]], [[COPY1]] 50 ; NO-PREFER-W-INST-NEXT: [[ADDIW:%[0-9]+]]:gpr = ADDIW [[ADD]], 1 51 ; NO-PREFER-W-INST-NEXT: $x10 = COPY [[ADDIW]] 52 ; NO-PREFER-W-INST-NEXT: PseudoRET 53 ; 54 ; PREFER-W-INST-LABEL: name: add 55 ; PREFER-W-INST: liveins: $x10, $x11 56 ; PREFER-W-INST-NEXT: {{ $}} 57 ; PREFER-W-INST-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x10 58 ; PREFER-W-INST-NEXT: [[COPY1:%[0-9]+]]:gpr = COPY $x11 59 ; PREFER-W-INST-NEXT: [[ADDW:%[0-9]+]]:gpr = ADDW [[COPY]], [[COPY1]] 60 ; PREFER-W-INST-NEXT: [[ADDIW:%[0-9]+]]:gpr = ADDIW [[ADDW]], 1 61 ; PREFER-W-INST-NEXT: $x10 = COPY [[ADDIW]] 62 ; PREFER-W-INST-NEXT: PseudoRET 63 %1:gpr = COPY $x10 64 %2:gpr = COPY $x11 65 %3:gpr = ADD %1, %2 66 %4:gpr = ADDIW %3, 1 67 $x10 = COPY %4 68 PseudoRET 69... 70 71--- 72name: sub 73body: | 74 bb.0.entry: 75 liveins: $x10, $x11 76 ; NO-PREFER-W-INST-LABEL: name: sub 77 ; NO-PREFER-W-INST: liveins: $x10, $x11 78 ; NO-PREFER-W-INST-NEXT: {{ $}} 79 ; NO-PREFER-W-INST-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x10 80 ; NO-PREFER-W-INST-NEXT: [[COPY1:%[0-9]+]]:gpr = COPY $x11 81 ; NO-PREFER-W-INST-NEXT: [[SUB:%[0-9]+]]:gpr = SUB [[COPY]], [[COPY1]] 82 ; NO-PREFER-W-INST-NEXT: [[ADDIW:%[0-9]+]]:gpr = ADDIW [[SUB]], 1 83 ; NO-PREFER-W-INST-NEXT: $x10 = COPY [[ADDIW]] 84 ; NO-PREFER-W-INST-NEXT: PseudoRET 85 ; 86 ; PREFER-W-INST-LABEL: name: sub 87 ; PREFER-W-INST: liveins: $x10, $x11 88 ; PREFER-W-INST-NEXT: {{ $}} 89 ; PREFER-W-INST-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x10 90 ; PREFER-W-INST-NEXT: [[COPY1:%[0-9]+]]:gpr = COPY $x11 91 ; PREFER-W-INST-NEXT: [[SUBW:%[0-9]+]]:gpr = SUBW [[COPY]], [[COPY1]] 92 ; PREFER-W-INST-NEXT: [[ADDIW:%[0-9]+]]:gpr = ADDIW [[SUBW]], 1 93 ; PREFER-W-INST-NEXT: $x10 = COPY [[ADDIW]] 94 ; PREFER-W-INST-NEXT: PseudoRET 95 %1:gpr = COPY $x10 96 %2:gpr = COPY $x11 97 %3:gpr = SUB %1, %2 98 %4:gpr = ADDIW %3, 1 99 $x10 = COPY %4 100 PseudoRET 101... 102 103--- 104name: mul 105body: | 106 bb.0.entry: 107 liveins: $x10, $x11 108 ; NO-PREFER-W-INST-LABEL: name: mul 109 ; NO-PREFER-W-INST: liveins: $x10, $x11 110 ; NO-PREFER-W-INST-NEXT: {{ $}} 111 ; NO-PREFER-W-INST-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x10 112 ; NO-PREFER-W-INST-NEXT: [[COPY1:%[0-9]+]]:gpr = COPY $x11 113 ; NO-PREFER-W-INST-NEXT: [[MUL:%[0-9]+]]:gpr = MUL [[COPY]], [[COPY1]] 114 ; NO-PREFER-W-INST-NEXT: [[ADDIW:%[0-9]+]]:gpr = ADDIW [[MUL]], 1 115 ; NO-PREFER-W-INST-NEXT: $x10 = COPY [[ADDIW]] 116 ; NO-PREFER-W-INST-NEXT: PseudoRET 117 ; 118 ; PREFER-W-INST-LABEL: name: mul 119 ; PREFER-W-INST: liveins: $x10, $x11 120 ; PREFER-W-INST-NEXT: {{ $}} 121 ; PREFER-W-INST-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x10 122 ; PREFER-W-INST-NEXT: [[COPY1:%[0-9]+]]:gpr = COPY $x11 123 ; PREFER-W-INST-NEXT: [[MULW:%[0-9]+]]:gpr = MULW [[COPY]], [[COPY1]] 124 ; PREFER-W-INST-NEXT: [[ADDIW:%[0-9]+]]:gpr = ADDIW [[MULW]], 1 125 ; PREFER-W-INST-NEXT: $x10 = COPY [[ADDIW]] 126 ; PREFER-W-INST-NEXT: PseudoRET 127 %1:gpr = COPY $x10 128 %2:gpr = COPY $x11 129 %3:gpr = MUL %1, %2 130 %4:gpr = ADDIW %3, 1 131 $x10 = COPY %4 132 PseudoRET 133... 134 135 136--- 137name: slli_31 138body: | 139 bb.0.entry: 140 liveins: $x10, $x11 141 ; NO-PREFER-W-INST-LABEL: name: slli_31 142 ; NO-PREFER-W-INST: liveins: $x10, $x11 143 ; NO-PREFER-W-INST-NEXT: {{ $}} 144 ; NO-PREFER-W-INST-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x10 145 ; NO-PREFER-W-INST-NEXT: [[COPY1:%[0-9]+]]:gpr = COPY $x11 146 ; NO-PREFER-W-INST-NEXT: [[SLLI:%[0-9]+]]:gpr = SLLI [[COPY]], 31 147 ; NO-PREFER-W-INST-NEXT: [[ADDIW:%[0-9]+]]:gpr = ADDIW [[SLLI]], 1 148 ; NO-PREFER-W-INST-NEXT: $x10 = COPY [[ADDIW]] 149 ; NO-PREFER-W-INST-NEXT: PseudoRET 150 ; 151 ; PREFER-W-INST-LABEL: name: slli_31 152 ; PREFER-W-INST: liveins: $x10, $x11 153 ; PREFER-W-INST-NEXT: {{ $}} 154 ; PREFER-W-INST-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x10 155 ; PREFER-W-INST-NEXT: [[COPY1:%[0-9]+]]:gpr = COPY $x11 156 ; PREFER-W-INST-NEXT: [[SLLIW:%[0-9]+]]:gpr = SLLIW [[COPY]], 31 157 ; PREFER-W-INST-NEXT: [[ADDIW:%[0-9]+]]:gpr = ADDIW [[SLLIW]], 1 158 ; PREFER-W-INST-NEXT: $x10 = COPY [[ADDIW]] 159 ; PREFER-W-INST-NEXT: PseudoRET 160 %1:gpr = COPY $x10 161 %2:gpr = COPY $x11 162 %3:gpr = SLLI %1, 31 163 %4:gpr = ADDIW %3, 1 164 $x10 = COPY %4 165 PseudoRET 166... 167 168--- 169name: slli_32 170body: | 171 bb.0.entry: 172 liveins: $x10, $x11 173 ; NO-PREFER-W-INST-LABEL: name: slli_32 174 ; NO-PREFER-W-INST: liveins: $x10, $x11 175 ; NO-PREFER-W-INST-NEXT: {{ $}} 176 ; NO-PREFER-W-INST-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x10 177 ; NO-PREFER-W-INST-NEXT: [[COPY1:%[0-9]+]]:gpr = COPY $x11 178 ; NO-PREFER-W-INST-NEXT: [[SLLI:%[0-9]+]]:gpr = SLLI [[COPY]], 32 179 ; NO-PREFER-W-INST-NEXT: [[ADDIW:%[0-9]+]]:gpr = ADDIW [[SLLI]], 1 180 ; NO-PREFER-W-INST-NEXT: $x10 = COPY [[ADDIW]] 181 ; NO-PREFER-W-INST-NEXT: PseudoRET 182 ; 183 ; PREFER-W-INST-LABEL: name: slli_32 184 ; PREFER-W-INST: liveins: $x10, $x11 185 ; PREFER-W-INST-NEXT: {{ $}} 186 ; PREFER-W-INST-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x10 187 ; PREFER-W-INST-NEXT: [[COPY1:%[0-9]+]]:gpr = COPY $x11 188 ; PREFER-W-INST-NEXT: [[SLLI:%[0-9]+]]:gpr = SLLI [[COPY]], 32 189 ; PREFER-W-INST-NEXT: [[ADDIW:%[0-9]+]]:gpr = ADDIW [[SLLI]], 1 190 ; PREFER-W-INST-NEXT: $x10 = COPY [[ADDIW]] 191 ; PREFER-W-INST-NEXT: PseudoRET 192 %1:gpr = COPY $x10 193 %2:gpr = COPY $x11 194 %3:gpr = SLLI %1, 32 195 %4:gpr = ADDIW %3, 1 196 $x10 = COPY %4 197 PseudoRET 198... 199 200--- 201name: ld 202body: | 203 bb.0.entry: 204 liveins: $x10, $x11 205 ; NO-PREFER-W-INST-LABEL: name: ld 206 ; NO-PREFER-W-INST: liveins: $x10, $x11 207 ; NO-PREFER-W-INST-NEXT: {{ $}} 208 ; NO-PREFER-W-INST-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x10 209 ; NO-PREFER-W-INST-NEXT: [[COPY1:%[0-9]+]]:gpr = COPY $x11 210 ; NO-PREFER-W-INST-NEXT: [[LD:%[0-9]+]]:gpr = LD [[COPY]], 0 211 ; NO-PREFER-W-INST-NEXT: [[ADDIW:%[0-9]+]]:gpr = ADDIW [[LD]], 1 212 ; NO-PREFER-W-INST-NEXT: $x10 = COPY [[ADDIW]] 213 ; NO-PREFER-W-INST-NEXT: PseudoRET 214 ; 215 ; PREFER-W-INST-LABEL: name: ld 216 ; PREFER-W-INST: liveins: $x10, $x11 217 ; PREFER-W-INST-NEXT: {{ $}} 218 ; PREFER-W-INST-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x10 219 ; PREFER-W-INST-NEXT: [[COPY1:%[0-9]+]]:gpr = COPY $x11 220 ; PREFER-W-INST-NEXT: [[LW:%[0-9]+]]:gpr = LW [[COPY]], 0 221 ; PREFER-W-INST-NEXT: [[ADDIW:%[0-9]+]]:gpr = ADDIW [[LW]], 1 222 ; PREFER-W-INST-NEXT: $x10 = COPY [[ADDIW]] 223 ; PREFER-W-INST-NEXT: PseudoRET 224 %1:gpr = COPY $x10 225 %2:gpr = COPY $x11 226 %3:gpr = LD %1, 0 227 %4:gpr = ADDIW %3, 1 228 $x10 = COPY %4 229 PseudoRET 230... 231 232--- 233name: lwu 234body: | 235 bb.0.entry: 236 liveins: $x10, $x11 237 ; NO-PREFER-W-INST-LABEL: name: lwu 238 ; NO-PREFER-W-INST: liveins: $x10, $x11 239 ; NO-PREFER-W-INST-NEXT: {{ $}} 240 ; NO-PREFER-W-INST-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x10 241 ; NO-PREFER-W-INST-NEXT: [[COPY1:%[0-9]+]]:gpr = COPY $x11 242 ; NO-PREFER-W-INST-NEXT: [[LWU:%[0-9]+]]:gpr = LWU [[COPY]], 0 243 ; NO-PREFER-W-INST-NEXT: [[ADDIW:%[0-9]+]]:gpr = ADDIW [[LWU]], 1 244 ; NO-PREFER-W-INST-NEXT: $x10 = COPY [[ADDIW]] 245 ; NO-PREFER-W-INST-NEXT: PseudoRET 246 ; 247 ; PREFER-W-INST-LABEL: name: lwu 248 ; PREFER-W-INST: liveins: $x10, $x11 249 ; PREFER-W-INST-NEXT: {{ $}} 250 ; PREFER-W-INST-NEXT: [[COPY:%[0-9]+]]:gpr = COPY $x10 251 ; PREFER-W-INST-NEXT: [[COPY1:%[0-9]+]]:gpr = COPY $x11 252 ; PREFER-W-INST-NEXT: [[LW:%[0-9]+]]:gpr = LW [[COPY]], 0 253 ; PREFER-W-INST-NEXT: [[ADDIW:%[0-9]+]]:gpr = ADDIW [[LW]], 1 254 ; PREFER-W-INST-NEXT: $x10 = COPY [[ADDIW]] 255 ; PREFER-W-INST-NEXT: PseudoRET 256 %1:gpr = COPY $x10 257 %2:gpr = COPY $x11 258 %3:gpr = LWU %1, 0 259 %4:gpr = ADDIW %3, 1 260 $x10 = COPY %4 261 PseudoRET 262... 263