1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py 2# RUN: llc -o - %s -mtriple=riscv32 -mattr=+zcb -simplify-mir \ 3# RUN: -run-pass=riscv-make-compressible | FileCheck --check-prefixes=CHECK %s 4# RUN: llc -o - %s -mtriple=riscv64 -mattr=+zcb -simplify-mir \ 5# RUN: -run-pass=riscv-make-compressible | FileCheck --check-prefixes=CHECK %s 6 7--- | 8 define void @store_common_value_i8(ptr %a, ptr %b, ptr %c) #0 { 9 entry: 10 store i8 0, ptr %a, align 1 11 store i8 0, ptr %b, align 1 12 store i8 0, ptr %c, align 1 13 ret void 14 } 15 16 define void @store_common_value_i16(ptr %a, ptr %b, ptr %c) #0 { 17 entry: 18 store i16 0, ptr %a, align 2 19 store i16 0, ptr %b, align 2 20 store i16 0, ptr %c, align 2 21 ret void 22 } 23 24 define void @store_common_ptr_i8(ptr %p) #0 { 25 entry: 26 store volatile i8 1, ptr %p, align 1 27 store volatile i8 3, ptr %p, align 1 28 store volatile i8 5, ptr %p, align 1 29 ret void 30 } 31 32 define void @store_common_ptr_i16(ptr %p) #0 { 33 entry: 34 store volatile i16 1, ptr %p, align 2 35 store volatile i16 3, ptr %p, align 2 36 store volatile i16 5, ptr %p, align 2 37 ret void 38 } 39 40 define void @load_common_ptr_i8(ptr %p) #0 { 41 entry: 42 %0 = load volatile i8, ptr %p, align 1 43 %a = sext i8 %0 to i32 44 %1 = load volatile i8, ptr %p, align 1 45 %2 = load volatile i8, ptr %p, align 1 46 ret void 47 } 48 49 define void @load_common_ptr_s16(ptr %p) #0 { 50 entry: 51 %0 = load volatile i16, ptr %p, align 2 52 %1 = load volatile i16, ptr %p, align 2 53 %2 = load volatile i16, ptr %p, align 2 54 ret void 55 } 56 57 define void @load_common_ptr_u16(ptr %p) #0 { 58 entry: 59 %0 = load volatile i16, ptr %p, align 2 60 %1 = load volatile i16, ptr %p, align 2 61 %2 = load volatile i16, ptr %p, align 2 62 ret void 63 } 64 65 define void @store_large_offset_i8(ptr %p) #0 { 66 entry: 67 %0 = getelementptr inbounds i8, ptr %p, i8 100 68 store volatile i8 1, ptr %0, align 1 69 %1 = getelementptr inbounds i8, ptr %p, i8 101 70 store volatile i8 3, ptr %1, align 1 71 %2 = getelementptr inbounds i8, ptr %p, i8 102 72 store volatile i8 5, ptr %2, align 1 73 %3 = getelementptr inbounds i8, ptr %p, i8 103 74 store volatile i8 7, ptr %3, align 1 75 ret void 76 } 77 78 define void @store_large_offset_i16(ptr %p) #0 { 79 entry: 80 %0 = getelementptr inbounds i16, ptr %p, i16 100 81 store volatile i16 1, ptr %0, align 2 82 %1 = getelementptr inbounds i16, ptr %p, i16 100 83 store volatile i16 3, ptr %1, align 2 84 %2 = getelementptr inbounds i16, ptr %p, i16 101 85 store volatile i16 3, ptr %1, align 2 86 %3 = getelementptr inbounds i16, ptr %p, i16 101 87 store volatile i16 7, ptr %3, align 2 88 ret void 89 } 90 91 define void @load_large_offset_i8(ptr %p) #0 { 92 entry: 93 %0 = getelementptr inbounds i8, ptr %p, i8 100 94 %a = load volatile i8, ptr %0 95 %1 = getelementptr inbounds i8, ptr %p, i8 101 96 %b = load volatile i8, ptr %1 97 %2 = getelementptr inbounds i8, ptr %p, i8 102 98 %c = load volatile i8, ptr %2 99 %3 = getelementptr inbounds i8, ptr %p, i8 103 100 %d = load volatile i8, ptr %3 101 ret void 102 } 103 104 define void @load_large_offset_s16(ptr %p) #0 { 105 entry: 106 %0 = getelementptr inbounds i16, ptr %p, i16 100 107 %a = load volatile i16, ptr %0, align 2 108 %1 = getelementptr inbounds i16, ptr %p, i16 100 109 %b = load volatile i16, ptr %1, align 2 110 %2 = getelementptr inbounds i16, ptr %p, i16 101 111 %c = load volatile i16, ptr %2, align 2 112 %3 = getelementptr inbounds i16, ptr %p, i16 101 113 %d = load volatile i16, ptr %3, align 2 114 ret void 115 } 116 117 define void @load_large_offset_u16(ptr %p) #0 { 118 entry: 119 %0 = getelementptr inbounds i16, ptr %p, i16 100 120 %a = load volatile i16, ptr %0, align 2 121 %1 = getelementptr inbounds i16, ptr %p, i16 100 122 %b = load volatile i16, ptr %1, align 2 123 %2 = getelementptr inbounds i16, ptr %p, i16 101 124 %c = load volatile i16, ptr %2, align 2 125 %3 = getelementptr inbounds i16, ptr %p, i16 101 126 %d = load volatile i16, ptr %3, align 2 127 ret void 128 } 129 130 define void @store_large_offset_no_opt_i8(ptr %p) #0 { 131 entry: 132 %0 = getelementptr inbounds i8, ptr %p, i8 100 133 store volatile i8 1, ptr %0, align 1 134 %1 = getelementptr inbounds i8, ptr %p, i8 101 135 store volatile i8 3, ptr %1, align 1 136 %2 = getelementptr inbounds i8, ptr %p, i8 104 137 store volatile i8 5, ptr %2, align 1 138 ret void 139 } 140 141 define void @store_large_offset_no_opt_i16(ptr %p) #0 { 142 entry: 143 %0 = getelementptr inbounds i16, ptr %p, i16 100 144 store volatile i8 1, ptr %0, align 2 145 %1 = getelementptr inbounds i16, ptr %p, i16 100 146 store volatile i8 3, ptr %1, align 2 147 %2 = getelementptr inbounds i16, ptr %p, i16 101 148 store volatile i8 5, ptr %2, align 2 149 ret void 150 } 151 152 define void @load_large_offset_no_opt_i8(ptr %p) #0 { 153 entry: 154 %0 = getelementptr inbounds i8, ptr %p, i8 100 155 %a = load volatile i8, ptr %0 156 %1 = getelementptr inbounds i8, ptr %p, i8 101 157 %b = load volatile i8, ptr %1 158 %2 = getelementptr inbounds i8, ptr %p, i8 103 159 %c = load volatile i8, ptr %2 160 ret void 161 } 162 163 define void @load_large_offset_no_opt_s16(ptr %p) #0 { 164 entry: 165 %0 = getelementptr inbounds i16, ptr %p, i16 100 166 %a = load volatile i16, ptr %0, align 2 167 %1 = getelementptr inbounds i16, ptr %p, i16 101 168 %c = load volatile i16, ptr %1, align 2 169 %2 = getelementptr inbounds i16, ptr %p, i16 102 170 %d = load volatile i16, ptr %2, align 2 171 ret void 172 } 173 174 define void @load_large_offset_no_opt_u16(ptr %p) #0 { 175 entry: 176 %0 = getelementptr inbounds i16, ptr %p, i16 100 177 %a = load volatile i16, ptr %0, align 2 178 %1 = getelementptr inbounds i16, ptr %p, i16 101 179 %c = load volatile i16, ptr %1, align 2 180 %2 = getelementptr inbounds i16, ptr %p, i16 102 181 %d = load volatile i16, ptr %2, align 2 182 ret void 183 } 184 attributes #0 = { minsize } 185 186... 187--- 188name: store_common_value_i8 189tracksRegLiveness: true 190body: | 191 bb.0.entry: 192 liveins: $x10, $x11, $x12 193 194 ; CHECK-LABEL: name: store_common_value_i8 195 ; CHECK: liveins: $x10, $x11, $x12 196 ; CHECK-NEXT: {{ $}} 197 ; CHECK-NEXT: $x13 = ADDI $x0, 0 198 ; CHECK-NEXT: SB $x13, killed renamable $x10, 0 :: (store (s8) into %ir.a) 199 ; CHECK-NEXT: SB $x13, killed renamable $x11, 0 :: (store (s8) into %ir.b) 200 ; CHECK-NEXT: SB $x13, killed renamable $x12, 0 :: (store (s8) into %ir.c) 201 ; CHECK-NEXT: PseudoRET 202 SB $x0, killed renamable $x10, 0 :: (store (s8) into %ir.a) 203 SB $x0, killed renamable $x11, 0 :: (store (s8) into %ir.b) 204 SB $x0, killed renamable $x12, 0 :: (store (s8) into %ir.c) 205 PseudoRET 206 207... 208--- 209name: store_common_value_i16 210tracksRegLiveness: true 211body: | 212 bb.0.entry: 213 liveins: $x10, $x11, $x12 214 215 ; CHECK-LABEL: name: store_common_value_i16 216 ; CHECK: liveins: $x10, $x11, $x12 217 ; CHECK-NEXT: {{ $}} 218 ; CHECK-NEXT: $x13 = ADDI $x0, 0 219 ; CHECK-NEXT: SH $x13, killed renamable $x10, 0 :: (store (s16) into %ir.a) 220 ; CHECK-NEXT: SH $x13, killed renamable $x11, 0 :: (store (s16) into %ir.b) 221 ; CHECK-NEXT: SH $x13, killed renamable $x12, 0 :: (store (s16) into %ir.c) 222 ; CHECK-NEXT: PseudoRET 223 SH $x0, killed renamable $x10, 0 :: (store (s16) into %ir.a) 224 SH $x0, killed renamable $x11, 0 :: (store (s16) into %ir.b) 225 SH $x0, killed renamable $x12, 0 :: (store (s16) into %ir.c) 226 PseudoRET 227 228... 229--- 230name: store_common_ptr_i8 231tracksRegLiveness: true 232body: | 233 bb.0.entry: 234 liveins: $x16 235 236 ; CHECK-LABEL: name: store_common_ptr_i8 237 ; CHECK: liveins: $x16 238 ; CHECK-NEXT: {{ $}} 239 ; CHECK-NEXT: renamable $x10 = ADDI $x0, 1 240 ; CHECK-NEXT: $x11 = ADDI $x16, 0 241 ; CHECK-NEXT: SB killed renamable $x10, $x11, 0 :: (volatile store (s8) into %ir.p) 242 ; CHECK-NEXT: renamable $x10 = ADDI $x0, 3 243 ; CHECK-NEXT: SB killed renamable $x10, $x11, 0 :: (volatile store (s8) into %ir.p) 244 ; CHECK-NEXT: renamable $x10 = ADDI $x0, 5 245 ; CHECK-NEXT: SB killed renamable $x10, killed $x11, 0 :: (volatile store (s8) into %ir.p) 246 ; CHECK-NEXT: PseudoRET 247 renamable $x10 = ADDI $x0, 1 248 SB killed renamable $x10, renamable $x16, 0 :: (volatile store (s8) into %ir.p) 249 renamable $x10 = ADDI $x0, 3 250 SB killed renamable $x10, renamable $x16, 0 :: (volatile store (s8) into %ir.p) 251 renamable $x10 = ADDI $x0, 5 252 SB killed renamable $x10, killed renamable $x16, 0 :: (volatile store (s8) into %ir.p) 253 PseudoRET 254 255... 256--- 257name: store_common_ptr_i16 258tracksRegLiveness: true 259body: | 260 bb.0.entry: 261 liveins: $x16 262 263 ; CHECK-LABEL: name: store_common_ptr_i16 264 ; CHECK: liveins: $x16 265 ; CHECK-NEXT: {{ $}} 266 ; CHECK-NEXT: renamable $x10 = ADDI $x0, 1 267 ; CHECK-NEXT: $x11 = ADDI $x16, 0 268 ; CHECK-NEXT: SH killed renamable $x10, $x11, 0 :: (volatile store (s16) into %ir.p) 269 ; CHECK-NEXT: renamable $x10 = ADDI $x0, 3 270 ; CHECK-NEXT: SH killed renamable $x10, $x11, 0 :: (volatile store (s16) into %ir.p) 271 ; CHECK-NEXT: renamable $x10 = ADDI $x0, 5 272 ; CHECK-NEXT: SH killed renamable $x10, killed $x11, 0 :: (volatile store (s16) into %ir.p) 273 ; CHECK-NEXT: PseudoRET 274 renamable $x10 = ADDI $x0, 1 275 SH killed renamable $x10, renamable $x16, 0 :: (volatile store (s16) into %ir.p) 276 renamable $x10 = ADDI $x0, 3 277 SH killed renamable $x10, renamable $x16, 0 :: (volatile store (s16) into %ir.p) 278 renamable $x10 = ADDI $x0, 5 279 SH killed renamable $x10, killed renamable $x16, 0 :: (volatile store (s16) into %ir.p) 280 PseudoRET 281 282... 283--- 284name: load_common_ptr_i8 285body: | 286 bb.0.entry: 287 liveins: $x16 288 289 ; CHECK-LABEL: name: load_common_ptr_i8 290 ; CHECK: liveins: $x16 291 ; CHECK-NEXT: {{ $}} 292 ; CHECK-NEXT: $x11 = ADDI $x16, 0 293 ; CHECK-NEXT: dead $x10 = LBU $x11, 0 :: (volatile load (s8) from %ir.p) 294 ; CHECK-NEXT: dead $x10 = LBU $x11, 0 :: (volatile load (s8) from %ir.p) 295 ; CHECK-NEXT: dead $x10 = LBU killed $x11, 0 :: (volatile load (s8) from %ir.p) 296 ; CHECK-NEXT: PseudoRET 297 dead $x10 = LBU renamable $x16, 0 :: (volatile load (s8) from %ir.p) 298 dead $x10 = LBU renamable $x16, 0 :: (volatile load (s8) from %ir.p) 299 dead $x10 = LBU killed renamable $x16, 0 :: (volatile load (s8) from %ir.p) 300 PseudoRET 301 302... 303--- 304name: load_common_ptr_s16 305body: | 306 bb.0.entry: 307 liveins: $x16 308 309 ; CHECK-LABEL: name: load_common_ptr_s16 310 ; CHECK: liveins: $x16 311 ; CHECK-NEXT: {{ $}} 312 ; CHECK-NEXT: $x11 = ADDI $x16, 0 313 ; CHECK-NEXT: dead $x10 = LH $x11, 0 :: (volatile load (s16) from %ir.p) 314 ; CHECK-NEXT: dead $x10 = LH $x11, 0 :: (volatile load (s16) from %ir.p) 315 ; CHECK-NEXT: dead $x10 = LH killed $x11, 0 :: (volatile load (s16) from %ir.p) 316 ; CHECK-NEXT: PseudoRET 317 dead $x10 = LH renamable $x16, 0 :: (volatile load (s16) from %ir.p) 318 dead $x10 = LH renamable $x16, 0 :: (volatile load (s16) from %ir.p) 319 dead $x10 = LH killed renamable $x16, 0 :: (volatile load (s16) from %ir.p) 320 PseudoRET 321 322... 323--- 324name: load_common_ptr_u16 325body: | 326 bb.0.entry: 327 liveins: $x16 328 329 ; CHECK-LABEL: name: load_common_ptr_u16 330 ; CHECK: liveins: $x16 331 ; CHECK-NEXT: {{ $}} 332 ; CHECK-NEXT: $x11 = ADDI $x16, 0 333 ; CHECK-NEXT: dead $x10 = LHU $x11, 0 :: (volatile load (s16) from %ir.p) 334 ; CHECK-NEXT: dead $x10 = LHU $x11, 0 :: (volatile load (s16) from %ir.p) 335 ; CHECK-NEXT: dead $x10 = LHU killed $x11, 0 :: (volatile load (s16) from %ir.p) 336 ; CHECK-NEXT: PseudoRET 337 dead $x10 = LHU renamable $x16, 0 :: (volatile load (s16) from %ir.p) 338 dead $x10 = LHU renamable $x16, 0 :: (volatile load (s16) from %ir.p) 339 dead $x10 = LHU killed renamable $x16, 0 :: (volatile load (s16) from %ir.p) 340 PseudoRET 341 342... 343--- 344name: store_large_offset_i8 345tracksRegLiveness: true 346body: | 347 bb.0.entry: 348 liveins: $x10 349 350 ; CHECK-LABEL: name: store_large_offset_i8 351 ; CHECK: liveins: $x10 352 ; CHECK-NEXT: {{ $}} 353 ; CHECK-NEXT: renamable $x11 = ADDI $x0, 1 354 ; CHECK-NEXT: $x12 = ADDI $x10, 100 355 ; CHECK-NEXT: SB killed renamable $x11, $x12, 0 :: (volatile store (s8) into %ir.0) 356 ; CHECK-NEXT: renamable $x11 = ADDI $x0, 3 357 ; CHECK-NEXT: SB killed renamable $x11, $x12, 1 :: (volatile store (s8) into %ir.1) 358 ; CHECK-NEXT: renamable $x11 = ADDI $x0, 5 359 ; CHECK-NEXT: SB killed renamable $x11, $x12, 2 :: (volatile store (s8) into %ir.2) 360 ; CHECK-NEXT: renamable $x11 = ADDI $x0, 7 361 ; CHECK-NEXT: SB killed renamable $x11, killed $x12, 3 :: (volatile store (s8) into %ir.3) 362 ; CHECK-NEXT: PseudoRET 363 renamable $x11 = ADDI $x0, 1 364 SB killed renamable $x11, renamable $x10, 100 :: (volatile store (s8) into %ir.0) 365 renamable $x11 = ADDI $x0, 3 366 SB killed renamable $x11, renamable $x10, 101 :: (volatile store (s8) into %ir.1) 367 renamable $x11 = ADDI $x0, 5 368 SB killed renamable $x11, renamable $x10, 102 :: (volatile store (s8) into %ir.2) 369 renamable $x11 = ADDI $x0, 7 370 SB killed renamable $x11, killed renamable $x10, 103 :: (volatile store (s8) into %ir.3) 371 PseudoRET 372 373... 374--- 375name: store_large_offset_i16 376tracksRegLiveness: true 377body: | 378 bb.0.entry: 379 liveins: $x10 380 ; CHECK-LABEL: name: store_large_offset_i16 381 ; CHECK: liveins: $x10 382 ; CHECK-NEXT: {{ $}} 383 ; CHECK-NEXT: renamable $x11 = ADDI $x0, 1 384 ; CHECK-NEXT: $x12 = ADDI $x10, 200 385 ; CHECK-NEXT: SH killed renamable $x11, $x12, 0 :: (volatile store (s16) into %ir.0) 386 ; CHECK-NEXT: renamable $x11 = ADDI $x0, 3 387 ; CHECK-NEXT: SH killed renamable $x11, $x12, 0 :: (volatile store (s16) into %ir.1) 388 ; CHECK-NEXT: renamable $x11 = ADDI $x0, 5 389 ; CHECK-NEXT: SH killed renamable $x11, $x12, 2 :: (volatile store (s16) into %ir.2) 390 ; CHECK-NEXT: renamable $x11 = ADDI $x0, 7 391 ; CHECK-NEXT: SH killed renamable $x11, killed $x12, 2 :: (volatile store (s16) into %ir.3) 392 ; CHECK-NEXT: PseudoRET 393 renamable $x11 = ADDI $x0, 1 394 SH killed renamable $x11, renamable $x10, 200 :: (volatile store (s16) into %ir.0) 395 renamable $x11 = ADDI $x0, 3 396 SH killed renamable $x11, renamable $x10, 200 :: (volatile store (s16) into %ir.1) 397 renamable $x11 = ADDI $x0, 5 398 SH killed renamable $x11, renamable $x10, 202 :: (volatile store (s16) into %ir.2) 399 renamable $x11 = ADDI $x0, 7 400 SH killed renamable $x11, killed renamable $x10, 202 :: (volatile store (s16) into %ir.3) 401 PseudoRET 402 403... 404--- 405name: load_large_offset_i8 406tracksRegLiveness: true 407body: | 408 bb.0.entry: 409 liveins: $x16 410 411 ; CHECK-LABEL: name: load_large_offset_i8 412 ; CHECK: liveins: $x16 413 ; CHECK-NEXT: {{ $}} 414 ; CHECK-NEXT: $x11 = ADDI $x16, 100 415 ; CHECK-NEXT: dead $x10 = LBU $x11, 0 :: (volatile load (s8) from %ir.0) 416 ; CHECK-NEXT: dead $x10 = LBU $x11, 1 :: (volatile load (s8) from %ir.1) 417 ; CHECK-NEXT: dead $x10 = LBU $x11, 2 :: (volatile load (s8) from %ir.2) 418 ; CHECK-NEXT: dead $x10 = LBU killed $x11, 3 :: (volatile load (s8) from %ir.3) 419 ; CHECK-NEXT: PseudoRET 420 dead $x10 = LBU renamable $x16, 100 :: (volatile load (s8) from %ir.0) 421 dead $x10 = LBU renamable $x16, 101 :: (volatile load (s8) from %ir.1) 422 dead $x10 = LBU renamable $x16, 102 :: (volatile load (s8) from %ir.2) 423 dead $x10 = LBU killed renamable $x16, 103 :: (volatile load (s8) from %ir.3) 424 PseudoRET 425 426... 427--- 428name: load_large_offset_s16 429tracksRegLiveness: true 430body: | 431 bb.0.entry: 432 liveins: $x16 433 434 ; CHECK-LABEL: name: load_large_offset_s16 435 ; CHECK: liveins: $x16 436 ; CHECK-NEXT: {{ $}} 437 ; CHECK-NEXT: $x11 = ADDI $x16, 100 438 ; CHECK-NEXT: dead $x10 = LH $x11, 0 :: (volatile load (s16) from %ir.0) 439 ; CHECK-NEXT: dead $x10 = LH $x11, 0 :: (volatile load (s16) from %ir.1) 440 ; CHECK-NEXT: dead $x10 = LH $x11, 2 :: (volatile load (s16) from %ir.2) 441 ; CHECK-NEXT: dead $x10 = LH killed $x11, 2 :: (volatile load (s16) from %ir.3) 442 ; CHECK-NEXT: PseudoRET 443 dead $x10 = LH renamable $x16, 100 :: (volatile load (s16) from %ir.0) 444 dead $x10 = LH renamable $x16, 100 :: (volatile load (s16) from %ir.1) 445 dead $x10 = LH renamable $x16, 102 :: (volatile load (s16) from %ir.2) 446 dead $x10 = LH killed renamable $x16, 102 :: (volatile load (s16) from %ir.3) 447 PseudoRET 448 449... 450--- 451name: load_large_offset_u16 452tracksRegLiveness: true 453body: | 454 bb.0.entry: 455 liveins: $x16 456 457 ; CHECK-LABEL: name: load_large_offset_u16 458 ; CHECK: liveins: $x16 459 ; CHECK-NEXT: {{ $}} 460 ; CHECK-NEXT: $x11 = ADDI $x16, 100 461 ; CHECK-NEXT: dead $x10 = LHU $x11, 0 :: (volatile load (s16) from %ir.0) 462 ; CHECK-NEXT: dead $x10 = LHU $x11, 0 :: (volatile load (s16) from %ir.1) 463 ; CHECK-NEXT: dead $x10 = LHU $x11, 2 :: (volatile load (s16) from %ir.2) 464 ; CHECK-NEXT: dead $x10 = LHU killed $x11, 2 :: (volatile load (s16) from %ir.3) 465 ; CHECK-NEXT: PseudoRET 466 dead $x10 = LHU renamable $x16, 100 :: (volatile load (s16) from %ir.0) 467 dead $x10 = LHU renamable $x16, 100 :: (volatile load (s16) from %ir.1) 468 dead $x10 = LHU renamable $x16, 102 :: (volatile load (s16) from %ir.2) 469 dead $x10 = LHU killed renamable $x16, 102 :: (volatile load (s16) from %ir.3) 470 PseudoRET 471 472... 473--- 474name: store_large_offset_no_opt_i8 475tracksRegLiveness: true 476body: | 477 bb.0.entry: 478 liveins: $x16 479 480 ; CHECK-LABEL: name: store_large_offset_no_opt_i8 481 ; CHECK: liveins: $x16 482 ; CHECK-NEXT: {{ $}} 483 ; CHECK-NEXT: renamable $x11 = ADDI $x0, 1 484 ; CHECK-NEXT: SB killed renamable $x11, renamable $x16, 100 :: (volatile store (s8) into %ir.0) 485 ; CHECK-NEXT: renamable $x11 = ADDI $x0, 3 486 ; CHECK-NEXT: SB killed renamable $x11, renamable $x16, 101 :: (volatile store (s8) into %ir.1) 487 ; CHECK-NEXT: renamable $x11 = ADDI $x0, 5 488 ; CHECK-NEXT: SB killed renamable $x11, renamable $x16, 104 :: (volatile store (s8) into %ir.2) 489 ; CHECK-NEXT: PseudoRET 490 renamable $x11 = ADDI $x0, 1 491 SB killed renamable $x11, renamable $x16, 100 :: (volatile store (s8) into %ir.0) 492 renamable $x11 = ADDI $x0, 3 493 SB killed renamable $x11, renamable $x16, 101 :: (volatile store (s8) into %ir.1) 494 renamable $x11 = ADDI $x0, 5 495 SB killed renamable $x11, renamable $x16, 104 :: (volatile store (s8) into %ir.2) 496 PseudoRET 497 498... 499--- 500name: store_large_offset_no_opt_i16 501tracksRegLiveness: true 502body: | 503 bb.0.entry: 504 liveins: $x16 505 506 ; CHECK-LABEL: name: store_large_offset_no_opt_i16 507 ; CHECK: liveins: $x16 508 ; CHECK-NEXT: {{ $}} 509 ; CHECK-NEXT: renamable $x11 = ADDI $x0, 1 510 ; CHECK-NEXT: SH killed renamable $x11, renamable $x16, 200 :: (volatile store (s16) into %ir.0) 511 ; CHECK-NEXT: renamable $x11 = ADDI $x0, 3 512 ; CHECK-NEXT: SH killed renamable $x11, renamable $x16, 202 :: (volatile store (s16) into %ir.1) 513 ; CHECK-NEXT: renamable $x11 = ADDI $x0, 5 514 ; CHECK-NEXT: SH killed renamable $x11, renamable $x16, 204 :: (volatile store (s16) into %ir.2) 515 ; CHECK-NEXT: PseudoRET 516 renamable $x11 = ADDI $x0, 1 517 SH killed renamable $x11, renamable $x16, 200 :: (volatile store (s16) into %ir.0) 518 renamable $x11 = ADDI $x0, 3 519 SH killed renamable $x11, renamable $x16, 202 :: (volatile store (s16) into %ir.1) 520 renamable $x11 = ADDI $x0, 5 521 SH killed renamable $x11, renamable $x16, 204 :: (volatile store (s16) into %ir.2) 522 PseudoRET 523 524... 525--- 526name: load_large_offset_no_opt_i8 527tracksRegLiveness: true 528body: | 529 bb.0.entry: 530 liveins: $x16 531 532 ; CHECK-LABEL: name: load_large_offset_no_opt_i8 533 ; CHECK: liveins: $x16 534 ; CHECK-NEXT: {{ $}} 535 ; CHECK-NEXT: dead $x10 = LBU renamable $x16, 100 :: (volatile load (s8) from %ir.0) 536 ; CHECK-NEXT: dead $x10 = LBU renamable $x16, 101 :: (volatile load (s8) from %ir.1) 537 ; CHECK-NEXT: dead $x10 = LBU killed renamable $x16, 104 :: (volatile load (s8) from %ir.2) 538 ; CHECK-NEXT: PseudoRET 539 dead $x10 = LBU renamable $x16, 100 :: (volatile load (s8) from %ir.0) 540 dead $x10 = LBU renamable $x16, 101 :: (volatile load (s8) from %ir.1) 541 dead $x10 = LBU killed renamable $x16, 104 :: (volatile load (s8) from %ir.2) 542 PseudoRET 543 544... 545--- 546name: load_large_offset_no_opt_s16 547tracksRegLiveness: true 548body: | 549 bb.0.entry: 550 liveins: $x16 551 552 ; CHECK-LABEL: name: load_large_offset_no_opt_s16 553 ; CHECK: liveins: $x16 554 ; CHECK-NEXT: {{ $}} 555 ; CHECK-NEXT: dead $x10 = LH renamable $x16, 100 :: (volatile load (s8) from %ir.0) 556 ; CHECK-NEXT: dead $x10 = LH renamable $x16, 102 :: (volatile load (s8) from %ir.1) 557 ; CHECK-NEXT: dead $x10 = LH killed renamable $x16, 104 :: (volatile load (s8) from %ir.2) 558 ; CHECK-NEXT: PseudoRET 559 dead $x10 = LH renamable $x16, 100 :: (volatile load (s8) from %ir.0) 560 dead $x10 = LH renamable $x16, 102 :: (volatile load (s8) from %ir.1) 561 dead $x10 = LH killed renamable $x16, 104 :: (volatile load (s8) from %ir.2) 562 PseudoRET 563 564... 565--- 566name: load_large_offset_no_opt_u16 567tracksRegLiveness: true 568body: | 569 bb.0.entry: 570 liveins: $x16 571 572 ; CHECK-LABEL: name: load_large_offset_no_opt_u16 573 ; CHECK: liveins: $x16 574 ; CHECK-NEXT: {{ $}} 575 ; CHECK-NEXT: dead $x10 = LHU renamable $x16, 100 :: (volatile load (s8) from %ir.0) 576 ; CHECK-NEXT: dead $x10 = LHU renamable $x16, 102 :: (volatile load (s8) from %ir.1) 577 ; CHECK-NEXT: dead $x10 = LHU killed renamable $x16, 104 :: (volatile load (s8) from %ir.2) 578 ; CHECK-NEXT: PseudoRET 579 dead $x10 = LHU renamable $x16, 100 :: (volatile load (s8) from %ir.0) 580 dead $x10 = LHU renamable $x16, 102 :: (volatile load (s8) from %ir.1) 581 dead $x10 = LHU killed renamable $x16, 104 :: (volatile load (s8) from %ir.2) 582 PseudoRET 583 584... 585