| ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 5 | |
| ; RUN: llc -mtriple=x86_64 < %s | FileCheck %s | |
| ; An inline asm with an "=a" output tied to an input leaves the scheduler with | |
| ; overlapping dead and live physreg defs. The register pressure tracker must | |
| ; not count the shared units as live, or it hits a "PSet overflow/underflow" | |
| ; assertion. | |
| define i32 @pr149144(i8 %how, ptr %set, ptr %oset) { | |
| ; CHECK-LABEL: pr149144: | |
| ; CHECK: # %bb.0: # %entry | |
| ; CHECK-NEXT: pushq %rbx | |
| ; CHECK-NEXT: .cfi_def_cfa_offset 16 | |
| ; CHECK-NEXT: .cfi_offset %rbx, -16 | |
| ; CHECK-NEXT: movq %rsi, %rcx | |
| ; CHECK-NEXT: movl $14, %ebx | |
| ; CHECK-NEXT: movb %dil, %bl | |
| ; CHECK-NEXT: movl $8, %esi | |
| ; CHECK-NEXT: #APP | |
| ; CHECK-NEXT: #NO_APP | |
| ; CHECK-NEXT: popq %rbx | |
| ; CHECK-NEXT: .cfi_def_cfa_offset 8 | |
| ; CHECK-NEXT: retq | |
| entry: | |
| %0 = tail call i32 asm sideeffect "", "={ax},0{bx}0,{bx},{cx},{dx},{si},~{memory},~{cc},~{dirflag},~{fpsr},~{flags}"(i32 14, i8 %how, ptr %set, ptr %oset, i32 8) | |
| ret i32 %0 | |
| } |