| # RUN: llc -o - %s -mtriple=s390x-linux-gnu -mcpu=z16 -verify-machineinstrs \ |
| # RUN: -run-pass=machine-scheduler -debug-only=machine-scheduler 2>&1\ |
| # RUN: | FileCheck %s |
| # REQUIRES: asserts |
| |
| # Schedule the NRK that defines the compare source low to help comparison |
| # elimination. |
| # CHECK: ********** MI Scheduling ********** |
| # CHECK-NEXT: fun0:%bb.0 |
| # CHECK: ********** MI Scheduling ********** |
| # CHECK-NEXT: fun0:%bb.1 |
| # CHECK: Queue BotQ.A: 6 4 |
| # CHECK-NEXT: Cand SU(6) FIRST |
| # CHECK-NEXT: Cand SU(4) WEAK |
| # CHECK-NEXT: Pick Bot WEAK [pre-RA] |
| # CHECK-NEXT: Scheduling SU(4) %7:gr32bit = NRK %6:gr32bit, %0:gr32bit, implicit-def dead $cc |
| # CHECK: *** Final schedule for %bb.1 *** |
| # CHECK-NEXT: SU(0): %5:gr32bit = NRK %2:gr32bit, %0:gr32bit, implicit-def dead $cc |
| # CHECK-NEXT: SU(1): CHIMux %5:gr32bit, 0, implicit-def $cc |
| # CHECK-NEXT: SU(2): %6:gr32bit = LHIMux 0 |
| # CHECK-NEXT: SU(3): %6:gr32bit = LOCHIMux %6:gr32bit(tied-def 0), 1, 14, 8, implicit $cc |
| # CHECK-NEXT: SU(5): %3:addr32bit = OILMux %3:addr32bit(tied-def 0), 1, implicit-def dead $cc |
| # CHECK-NEXT: SU(6): %8:gr32bit = SLLK %1:gr32bit, %3:addr32bit, 0 |
| # CHECK-NEXT: SU(4): %7:gr32bit = NRK %6:gr32bit, %0:gr32bit, implicit-def dead $cc |
| # CHECK-NEXT: SU(7): CHIMux %7:gr32bit, 0, implicit-def $cc |
| # CHECK-NEXT: SU(8): %8:gr32bit = LOCHIMux %8:gr32bit(tied-def 0), 0, 14, 8, implicit $cc |
| # CHECK-NEXT: SU(9): %4:gr32bit = ORK %8:gr32bit, %4:gr32bit, implicit-def dead $cc |
| # CHECK-NEXT: SU(10): %2:gr32bit = LHIMux 1 |
| # CHECK-NEXT: SU(11): %3:addr32bit = LHIMux 0 |
| --- |
| name: fun0 |
| tracksRegLiveness: true |
| body: | |
| bb.0: |
| liveins: $r2l |
| |
| %0:gr32bit = COPY $r2l |
| %1:gr32bit = LHIMux 1 |
| %2:gr32bit = LHIMux 0 |
| %3:addr32bit = LHIMux 1 |
| %4:gr32bit = LHIMux 0 |
| |
| bb.1: |
| %5:gr32bit = NRK %2, %0, implicit-def dead $cc |
| CHIMux %5, 0, implicit-def $cc |
| %6:gr32bit = LHIMux 0 |
| %6:gr32bit = LOCHIMux %6, 1, 14, 8, implicit killed $cc |
| %7:gr32bit = NRK %6, %0, implicit-def dead $cc |
| %3:addr32bit = OILMux %3, 1, implicit-def dead $cc |
| %8:gr32bit = SLLK %1, %3, 0 |
| CHIMux %7, 0, implicit-def $cc |
| %8:gr32bit = LOCHIMux %8, 0, 14, 8, implicit killed $cc |
| %4:gr32bit = ORK %8, %4, implicit-def dead $cc |
| %2:gr32bit = LHIMux 1 |
| %3:addr32bit = LHIMux 0 |
| J %bb.1 |
| ... |