| # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py |
| # RUN: llc -mtriple=i386-unknown-linux-musl -verify-machineinstrs -run-pass=regallocfast -o - %s | FileCheck %s |
| |
| # Test for correct management of allocatable and non-allocatable |
| # live-ins in fastregalloc |
| |
| --- |
| name: live_through_ecx |
| tracksRegLiveness: true |
| body: | |
| ; CHECK-LABEL: name: live_through_ecx |
| ; CHECK: bb.0: |
| ; CHECK: successors: %bb.1(0x80000000) |
| ; CHECK: liveins: $ecx |
| ; CHECK: NOOP implicit $ecx |
| ; CHECK: bb.1: |
| ; CHECK: liveins: $ecx |
| ; CHECK: RET implicit killed $ecx |
| bb.0: |
| liveins: $ecx |
| NOOP implicit $ecx |
| |
| bb.1: |
| liveins: $ecx |
| |
| RET implicit $ecx |
| |
| ... |
| |
| --- |
| name: live_out_ecx |
| tracksRegLiveness: true |
| body: | |
| ; CHECK-LABEL: name: live_out_ecx |
| ; CHECK: bb.0: |
| ; CHECK: successors: %bb.1(0x80000000) |
| ; CHECK: liveins: $eax, $ebx |
| ; CHECK: renamable $ecx = COPY killed $ebx |
| ; CHECK: bb.1: |
| ; CHECK: liveins: $ecx |
| ; CHECK: RET implicit killed $ecx |
| bb.0: |
| liveins: $eax, $ebx |
| %0:gr32 = COPY $eax |
| %1:gr32 = COPY $ebx |
| $ecx = COPY %1 |
| |
| bb.1: |
| liveins: $ecx |
| |
| RET implicit $ecx |
| |
| ... |
| |
| --- |
| name: live_out_eflags |
| tracksRegLiveness: true |
| body: | |
| ; CHECK-LABEL: name: live_out_eflags |
| ; CHECK: bb.0: |
| ; CHECK: successors: %bb.1(0x80000000) |
| ; CHECK: liveins: $eax, $ebx |
| ; CHECK: TEST32rr killed renamable $eax, killed renamable $ebx, implicit-def $eflags |
| ; CHECK: bb.1: |
| ; CHECK: liveins: $eflags |
| ; CHECK: RET implicit killed $eflags |
| bb.0: |
| liveins: $eax, $ebx |
| %0:gr32 = COPY $eax |
| %1:gr32 = COPY $ebx |
| TEST32rr %0, %1, implicit-def $eflags |
| |
| bb.1: |
| liveins: $eflags |
| |
| RET implicit $eflags |
| |
| ... |