| # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 5 |
| # RUN: llc -mtriple=arm64-apple-ios -mattr +cmpbr -run-pass=early-ifcvt -simplify-mir -o - %s | FileCheck %s |
| # CHECK: cb_diamond |
| --- |
| name: cb_diamond |
| alignment: 4 |
| tracksRegLiveness: true |
| noPhis: false |
| isSSA: true |
| noVRegs: false |
| hasFakeUses: false |
| registers: |
| - { id: 0, class: gpr64 } |
| - { id: 1, class: gpr64 } |
| - { id: 2, class: gpr64 } |
| - { id: 3, class: gpr64 } |
| - { id: 4, class: gpr64 } |
| - { id: 5, class: gpr64 } |
| liveins: |
| - { reg: '$x0', virtual-reg: '%0' } |
| - { reg: '$x1', virtual-reg: '%1' } |
| frameInfo: |
| maxAlignment: 1 |
| maxCallFrameSize: 0 |
| machineFunctionInfo: {} |
| body: | |
| ; CHECK-LABEL: name: cb_diamond |
| ; CHECK: bb.0: |
| ; CHECK-NEXT: liveins: $x0, $x1 |
| ; CHECK-NEXT: {{ $}} |
| ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr64 = COPY $x0 |
| ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr64 = COPY $x1 |
| ; CHECK-NEXT: [[ADDXrr:%[0-9]+]]:gpr64 = ADDXrr [[COPY]], [[COPY1]] |
| ; CHECK-NEXT: [[MADDXrrr:%[0-9]+]]:gpr64 = MADDXrrr [[COPY]], [[COPY1]], $xzr |
| ; CHECK-NEXT: $xzr = SUBSXrr [[COPY]], [[COPY1]], implicit-def $nzcv |
| ; CHECK-NEXT: [[CSELXr:%[0-9]+]]:gpr64 = CSELXr [[ADDXrr]], [[MADDXrrr]], 11, implicit $nzcv |
| ; CHECK-NEXT: [[ADDXrr1:%[0-9]+]]:gpr64 = ADDXrr killed [[CSELXr]], [[COPY]] |
| ; CHECK-NEXT: $x0 = COPY [[ADDXrr1]] |
| ; CHECK-NEXT: RET_ReallyLR implicit $x0 |
| bb.0: |
| successors: %bb.1, %bb.2 |
| liveins: $x0, $x1 |
| |
| %0:gpr64 = COPY $x0 |
| %1:gpr64 = COPY $x1 |
| CBXPrr 11, %0, %1, %bb.1 |
| B %bb.2 |
| |
| bb.1: |
| successors: %bb.3 |
| %2:gpr64 = ADDXrr %0, %1 |
| B %bb.3 |
| |
| bb.2: |
| successors: %bb.3 |
| %3:gpr64 = MADDXrrr %0, %1, $xzr |
| B %bb.3 |
| |
| bb.3: |
| %4:gpr64 = PHI %2, %bb.1, %3, %bb.2 |
| %5:gpr64 = ADDXrr killed %4, %0 |
| $x0 = COPY %5 |
| RET_ReallyLR implicit $x0 |
| ... |
| --- |
| name: cb_triangle |
| alignment: 4 |
| tracksRegLiveness: true |
| noPhis: false |
| isSSA: true |
| noVRegs: false |
| hasFakeUses: false |
| registers: |
| - { id: 0, class: gpr64 } |
| - { id: 1, class: gpr64 } |
| - { id: 2, class: gpr64 } |
| - { id: 3, class: gpr64 } |
| - { id: 4, class: gpr64 } |
| liveins: |
| - { reg: '$x0', virtual-reg: '%0' } |
| - { reg: '$x1', virtual-reg: '%1' } |
| frameInfo: |
| maxAlignment: 1 |
| maxCallFrameSize: 0 |
| machineFunctionInfo: {} |
| body: | |
| ; CHECK-LABEL: name: cb_triangle |
| ; CHECK: bb.0: |
| ; CHECK-NEXT: liveins: $x0, $x1 |
| ; CHECK-NEXT: {{ $}} |
| ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr64 = COPY $x0 |
| ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr64 = COPY $x1 |
| ; CHECK-NEXT: [[ADDXrr:%[0-9]+]]:gpr64 = ADDXrr [[COPY]], [[COPY1]] |
| ; CHECK-NEXT: $xzr = SUBSXrr [[COPY]], [[COPY1]], implicit-def $nzcv |
| ; CHECK-NEXT: [[CSELXr:%[0-9]+]]:gpr64 = CSELXr [[COPY1]], [[ADDXrr]], 10, implicit $nzcv |
| ; CHECK-NEXT: [[ADDXrr1:%[0-9]+]]:gpr64 = ADDXrr killed [[CSELXr]], [[COPY]] |
| ; CHECK-NEXT: $x0 = COPY [[ADDXrr1]] |
| ; CHECK-NEXT: RET_ReallyLR implicit $x0 |
| bb.0: |
| successors: %bb.1, %bb.2 |
| liveins: $x0, $x1 |
| |
| %0:gpr64 = COPY $x0 |
| %1:gpr64 = COPY $x1 |
| CBXPrr 10, %0, %1, %bb.2 |
| |
| bb.1: |
| successors: %bb.2 |
| %2:gpr64 = ADDXrr %0, %1 |
| |
| bb.2: |
| %3:gpr64 = PHI %1, %bb.0, %2, %bb.1 |
| %4:gpr64 = ADDXrr killed %3, %0 |
| $x0 = COPY %4 |
| RET_ReallyLR implicit $x0 |
| ... |