| # RUN: llc -mtriple powerpc64le-unknown-linux-gnu -mcpu=pwr8 -x mir < %s \ |
| # RUN: -verify-machineinstrs -start-before=ppc-mi-peepholes \ |
| # RUN: -ppc-opt-conditional-trap | FileCheck %s |
| |
| --- |
| name: conditional_trap_opt_reg_implicit_def |
| alignment: 16 |
| tracksRegLiveness: true |
| body: | |
| bb.0.entry: |
| %0:gprc = IMPLICIT_DEF |
| %1:gprc = IMPLICIT_DEF |
| %2:g8rc = IMPLICIT_DEF |
| %3:g8rc = IMPLICIT_DEF |
| TW 8, %0, %1 |
| TD 8, %2, %3 |
| TWI 24, %0, 0 |
| TDI 24, %2, 0 |
| BLR8 implicit $lr8, implicit $rm |
| ... |
| # CHECK-LABEL: conditional_trap_opt_reg_implicit_def |
| # CHECK: # %bb.0: # %entry |
| # CHECK-NEXT: twgt 3, 3 |
| # CHECK-NEXT: tdgt 3, 3 |
| # CHECK-NEXT: twnei 3, 0 |
| # CHECK-NEXT: tdnei 3, 0 |
| # CHECK-NEXT: blr |
| |
| --- |
| name: conditional_trap_opt_int_return |
| alignment: 16 |
| tracksRegLiveness: true |
| body: | |
| bb.0.entry: |
| liveins: $x3 |
| %0:g8rc = COPY $x3 |
| %1:g8rc = LI8 3 |
| %2:g8rc = LI8 0 |
| TD 24, %2, %1 |
| $x3 = COPY %0 |
| BLR8 implicit $lr8, implicit $rm, implicit $x3 |
| ... |
| # CHECK-LABEL: conditional_trap_opt_int_return |
| # CHECK: # %bb.0: # %entry |
| # CHECK-NEXT: trap |
| # CHECK-NOT: blr |
| |
| --- |
| name: conditional_trap_opt_TW_31 |
| alignment: 16 |
| tracksRegLiveness: true |
| body: | |
| bb.0.entry: |
| %0:gprc = LI 3 |
| %1:gprc = LI 0 |
| TW 31, %1, %0 |
| BLR8 implicit $lr8, implicit $rm |
| ... |
| # CHECK-LABEL: conditional_trap_opt_TW_31 |
| # CHECK: # %bb.0: # %entry |
| # CHECK-NEXT: trap |
| # CHECK-NOT: blr |
| |
| --- |
| name: conditional_trap_opt_TW_24 |
| alignment: 16 |
| tracksRegLiveness: true |
| body: | |
| bb.0.entry: |
| %0:gprc = LI 3 |
| %1:gprc = LI 0 |
| TW 24, %1, %0 |
| BLR8 implicit $lr8, implicit $rm |
| ... |
| # CHECK-LABEL: conditional_trap_opt_TW_24 |
| # CHECK: # %bb.0: # %entry |
| # CHECK-NEXT: trap |
| # CHECK-NOT: blr |
| |
| --- |
| name: conditional_trap_opt_no_trap_TW_24 |
| alignment: 16 |
| tracksRegLiveness: true |
| body: | |
| bb.0.entry: |
| %0:gprc = LI 3 |
| %1:gprc = LI 3 |
| TW 24, %1, %0 |
| BLR8 implicit $lr8, implicit $rm |
| ... |
| # CHECK-LABEL: conditional_trap_opt_no_trap_TW_24 |
| # CHECK: # %bb.0: # %entry |
| # CHECK-NEXT: blr |
| |
| --- |
| name: conditional_trap_opt_TW_20 |
| alignment: 16 |
| tracksRegLiveness: true |
| body: | |
| bb.0.entry: |
| %0:gprc = LI 3 |
| %1:gprc = LI 3 |
| TW 20, %1, %0 |
| BLR8 implicit $lr8, implicit $rm |
| ... |
| # CHECK-LABEL: conditional_trap_opt_TW_20 |
| # CHECK: # %bb.0: # %entry |
| # CHECK-NEXT: trap |
| # CHECK-NOT: blr |
| |
| --- |
| name: conditional_trap_opt_no_trap_TW_20 |
| alignment: 16 |
| tracksRegLiveness: true |
| body: | |
| bb.0.entry: |
| %0:gprc = LI 3 |
| %1:gprc = LI 5 |
| TW 20, %1, %0 |
| BLR8 implicit $lr8, implicit $rm |
| ... |
| # CHECK-LABEL: conditional_trap_opt_no_trap_TW_20 |
| # CHECK: # %bb.0: # %entry |
| # CHECK-NEXT: blr |
| |
| --- |
| name: conditional_trap_opt_no_trap_TW_16 |
| alignment: 16 |
| tracksRegLiveness: true |
| body: | |
| bb.0.entry: |
| %0:gprc = LI 5 |
| %1:gprc = LI 1 |
| TW 16, %0, %1 |
| BLR8 implicit $lr8, implicit $rm |
| ... |
| # CHECK-LABEL: conditional_trap_opt_no_trap_TW_16 |
| # CHECK: # %bb.0: # %entry |
| # CHECK-NEXT: blr |
| |
| --- |
| name: conditional_trap_opt_TW_16 |
| alignment: 16 |
| tracksRegLiveness: true |
| body: | |
| bb.0.entry: |
| %0:gprc = LI 5 |
| %1:gprc = LI 1 |
| TW 16, %1, %0 |
| TW 16, %0, %1 |
| BLR8 implicit $lr8, implicit $rm |
| ... |
| # CHECK-LABEL: conditional_trap_opt_TW_16 |
| # CHECK: # %bb.0: # %entry |
| # CHECK-NEXT: trap |
| # CHECK-NOT: blr |
| |
| --- |
| name: conditional_trap_opt_TW_8 |
| alignment: 16 |
| tracksRegLiveness: true |
| body: | |
| bb.0.entry: |
| %0:gprc = LI -1 |
| %1:gprc = LI 10 |
| TW 8, %1, %0 |
| TW 8, %0, %1 |
| BLR8 implicit $lr8, implicit $rm |
| ... |
| # CHECK-LABEL: conditional_trap_opt_TW_8 |
| # CHECK: # %bb.0: # %entry |
| # CHECK-NEXT: trap |
| # CHECK-NOT: blr |
| |
| --- |
| name: conditional_trap_opt_TW_2 |
| alignment: 16 |
| tracksRegLiveness: true |
| body: | |
| bb.0.entry: |
| %0:gprc = LI -1 |
| %1:gprc = LI 2 |
| TW 2, %1, %0 |
| TW 2, %0, %1 |
| BLR8 implicit $lr8, implicit $rm |
| ... |
| # CHECK-LABEL: conditional_trap_opt_TW_2 |
| # CHECK: # %bb.0: # %entry |
| # CHECK-NEXT: trap |
| # CHECK-NOT: blr |
| |
| --- |
| name: conditional_trap_opt_TW_1 |
| alignment: 16 |
| tracksRegLiveness: true |
| body: | |
| bb.0.entry: |
| %0:gprc = LI -3 |
| %1:gprc = LI 4 |
| TW 1, %1, %0 |
| TW 1, %0, %1 |
| BLR8 implicit $lr8, implicit $rm |
| ... |
| # CHECK-LABEL: conditional_trap_opt_TW_1 |
| # CHECK: # %bb.0: # %entry |
| # CHECK-NEXT: trap |
| # CHECK-NOT: blr |
| |
| --- |
| name: conditional_trap_opt_TW_4 |
| alignment: 16 |
| tracksRegLiveness: true |
| body: | |
| bb.0.entry: |
| %0:gprc = LI 5 |
| %1:gprc = LI 1 |
| TW 4, %1, %0 |
| TW 4, %1, %1 |
| BLR8 implicit $lr8, implicit $rm |
| ... |
| # CHECK-LABEL: conditional_trap_opt_TW_4 |
| # CHECK: # %bb.0: # %entry |
| # CHECK-NEXT: trap |
| # CHECK-NOT: blr |
| |
| --- |
| name: conditional_trap_opt_TWI_31 |
| alignment: 16 |
| tracksRegLiveness: true |
| body: | |
| bb.0.entry: |
| %0:gprc = LI 3 |
| TWI 31, %0, 0 |
| BLR8 implicit $lr8, implicit $rm |
| ... |
| # CHECK-LABEL: conditional_trap_opt_TWI_31 |
| # CHECK: # %bb.0: # %entry |
| # CHECK-NEXT: trap |
| # CHECK-NOT: blr |
| |
| --- |
| name: conditional_trap_opt_TWI_24 |
| alignment: 16 |
| tracksRegLiveness: true |
| body: | |
| bb.0.entry: |
| %0:gprc = LI 3 |
| TWI 24, %0, 0 |
| BLR8 implicit $lr8, implicit $rm |
| ... |
| # CHECK-LABEL: conditional_trap_opt_TWI_24 |
| # CHECK: # %bb.0: # %entry |
| # CHECK-NEXT: trap |
| # CHECK-NOT: blr |
| |
| --- |
| name: conditional_trap_opt_no_trap_TWI_24 |
| alignment: 16 |
| tracksRegLiveness: true |
| body: | |
| bb.0.entry: |
| %0:gprc = LI 0 |
| TWI 24, %0, 0 |
| BLR8 implicit $lr8, implicit $rm |
| ... |
| # CHECK-LABEL: conditional_trap_opt_no_trap_TWI_24 |
| # CHECK: # %bb.0: # %entry |
| # CHECK-NEXT: blr |
| |
| --- |
| name: conditional_trap_opt_TWI_20 |
| alignment: 16 |
| tracksRegLiveness: true |
| body: | |
| bb.0.entry: |
| %0:gprc = LI 3 |
| TWI 20, %0, 3 |
| BLR8 implicit $lr8, implicit $rm |
| ... |
| # CHECK-LABEL: conditional_trap_opt_TWI_20 |
| # CHECK: # %bb.0: # %entry |
| # CHECK-NEXT: trap |
| # CHECK-NOT: blr |
| |
| --- |
| name: conditional_trap_opt_no_trap_TWI_20 |
| alignment: 16 |
| tracksRegLiveness: true |
| body: | |
| bb.0.entry: |
| %0:gprc = LI 3 |
| TWI 20, %0, 0 |
| BLR8 implicit $lr8, implicit $rm |
| ... |
| # CHECK-LABEL: conditional_trap_opt_no_trap_TWI_20 |
| # CHECK: # %bb.0: # %entry |
| # CHECK-NEXT: blr |
| |
| --- |
| name: conditional_trap_opt_no_trap_TWI_16 |
| alignment: 16 |
| tracksRegLiveness: true |
| body: | |
| bb.0.entry: |
| %0:gprc = LI 5 |
| TWI 16, %0, 1 |
| BLR8 implicit $lr8, implicit $rm |
| ... |
| # CHECK-LABEL: conditional_trap_opt_no_trap_TWI_16 |
| # CHECK: # %bb.0: # %entry |
| # CHECK-NEXT: blr |
| |
| --- |
| name: conditional_trap_opt_TWI_16 |
| alignment: 16 |
| tracksRegLiveness: true |
| body: | |
| bb.0.entry: |
| %0:gprc = LI 5 |
| %1:gprc = LI 1 |
| TWI 16, %1, 5 |
| TWI 16, %0, 1 |
| BLR8 implicit $lr8, implicit $rm |
| ... |
| # CHECK-LABEL: conditional_trap_opt_TWI_16 |
| # CHECK: # %bb.0: # %entry |
| # CHECK-NEXT: trap |
| # CHECK-NOT: blr |
| |
| --- |
| name: conditional_trap_opt_TWI_8 |
| alignment: 16 |
| tracksRegLiveness: true |
| body: | |
| bb.0.entry: |
| %0:gprc = LI -1 |
| %1:gprc = LI 10 |
| TWI 8, %1, -1 |
| TWI 8, %0, 10 |
| BLR8 implicit $lr8, implicit $rm |
| ... |
| # CHECK-LABEL: conditional_trap_opt_TWI_8 |
| # CHECK: # %bb.0: # %entry |
| # CHECK-NEXT: trap |
| # CHECK-NOT: blr |
| |
| --- |
| name: conditional_trap_opt_TWI_2 |
| alignment: 16 |
| tracksRegLiveness: true |
| body: | |
| bb.0.entry: |
| %0:gprc = LI -1 |
| %1:gprc = LI 2 |
| TWI 2, %1, -1 |
| TWI 2, %0, 2 |
| BLR8 implicit $lr8, implicit $rm |
| ... |
| # CHECK-LABEL: conditional_trap_opt_TWI_2 |
| # CHECK: # %bb.0: # %entry |
| # CHECK-NEXT: trap |
| # CHECK-NOT: blr |
| |
| --- |
| name: conditional_trap_opt_TWI_1 |
| alignment: 16 |
| tracksRegLiveness: true |
| body: | |
| bb.0.entry: |
| %0:gprc = LI -3 |
| %1:gprc = LI 4 |
| TWI 1, %1, -3 |
| TWI 1, %0, 4 |
| BLR8 implicit $lr8, implicit $rm |
| ... |
| # CHECK-LABEL: conditional_trap_opt_TWI_1 |
| # CHECK: # %bb.0: # %entry |
| # CHECK-NEXT: trap |
| # CHECK-NOT: blr |
| |
| --- |
| name: conditional_trap_opt_TWI_4 |
| alignment: 16 |
| tracksRegLiveness: true |
| body: | |
| bb.0.entry: |
| %0:gprc = LI 5 |
| %1:gprc = LI 1 |
| TWI 4, %1, 5 |
| TWI 4, %1, 1 |
| BLR8 implicit $lr8, implicit $rm |
| ... |
| # CHECK-LABEL: conditional_trap_opt_TWI_4 |
| # CHECK: # %bb.0: # %entry |
| # CHECK-NEXT: trap |
| # CHECK-NOT: blr |
| |
| --- |
| name: conditional_trap_opt_TD_31 |
| alignment: 16 |
| tracksRegLiveness: true |
| body: | |
| bb.0.entry: |
| %0:g8rc = LI8 3 |
| %1:g8rc = LI8 0 |
| TD 31, %1, %0 |
| BLR8 implicit $lr8, implicit $rm |
| ... |
| # CHECK-LABEL: conditional_trap_opt_TD_31 |
| # CHECK: # %bb.0: # %entry |
| # CHECK-NEXT: trap |
| # CHECK-NOT: blr |
| |
| --- |
| name: conditional_trap_opt_TD_24 |
| alignment: 16 |
| tracksRegLiveness: true |
| body: | |
| bb.0.entry: |
| %0:g8rc = LI8 3 |
| %1:g8rc = LI8 0 |
| TD 24, %1, %0 |
| BLR8 implicit $lr8, implicit $rm |
| ... |
| # CHECK-LABEL: conditional_trap_opt_TD_24 |
| # CHECK: # %bb.0: # %entry |
| # CHECK-NEXT: trap |
| # CHECK-NOT: blr |
| |
| --- |
| name: conditional_trap_opt_no_trap_TD_24 |
| alignment: 16 |
| tracksRegLiveness: true |
| body: | |
| bb.0.entry: |
| %0:g8rc = LI8 3 |
| %1:g8rc = LI8 3 |
| TD 24, %1, %0 |
| BLR8 implicit $lr8, implicit $rm |
| ... |
| # CHECK-LABEL: conditional_trap_opt_no_trap_TD_24 |
| # CHECK: # %bb.0: # %entry |
| # CHECK-NEXT: blr |
| |
| --- |
| name: conditional_trap_opt_TD_20 |
| alignment: 16 |
| tracksRegLiveness: true |
| body: | |
| bb.0.entry: |
| %0:g8rc = LI8 3 |
| %1:g8rc = LI8 3 |
| TD 20, %1, %0 |
| BLR8 implicit $lr8, implicit $rm |
| ... |
| # CHECK-LABEL: conditional_trap_opt_TD_20 |
| # CHECK: # %bb.0: # %entry |
| # CHECK-NEXT: trap |
| # CHECK-NOT: blr |
| |
| --- |
| name: conditional_trap_opt_no_trap_TD_20 |
| alignment: 16 |
| tracksRegLiveness: true |
| body: | |
| bb.0.entry: |
| %0:g8rc = LI8 3 |
| %1:g8rc = LI8 5 |
| TD 20, %1, %0 |
| BLR8 implicit $lr8, implicit $rm |
| ... |
| # CHECK-LABEL: conditional_trap_opt_no_trap_TD_20 |
| # CHECK: # %bb.0: # %entry |
| # CHECK-NEXT: blr |
| |
| --- |
| name: conditional_trap_opt_no_trap_TD_16 |
| alignment: 16 |
| tracksRegLiveness: true |
| body: | |
| bb.0.entry: |
| %0:g8rc = LI8 5 |
| %1:g8rc = LI8 1 |
| TD 16, %0, %1 |
| BLR8 implicit $lr8, implicit $rm |
| ... |
| # CHECK-LABEL: conditional_trap_opt_no_trap_TD_16 |
| # CHECK: # %bb.0: # %entry |
| # CHECK-NEXT: blr |
| |
| --- |
| name: conditional_trap_opt_TD_16 |
| alignment: 16 |
| tracksRegLiveness: true |
| body: | |
| bb.0.entry: |
| %0:g8rc = LI8 5 |
| %1:g8rc = LI8 1 |
| TD 16, %1, %0 |
| TD 16, %0, %1 |
| BLR8 implicit $lr8, implicit $rm |
| ... |
| # CHECK-LABEL: conditional_trap_opt_TD_16 |
| # CHECK: # %bb.0: # %entry |
| # CHECK-NEXT: trap |
| # CHECK-NOT: blr |
| |
| --- |
| name: conditional_trap_opt_TD_8 |
| alignment: 16 |
| tracksRegLiveness: true |
| body: | |
| bb.0.entry: |
| %0:g8rc = LI8 -1 |
| %1:g8rc = LI8 10 |
| TD 8, %1, %0 |
| TD 8, %0, %1 |
| BLR8 implicit $lr8, implicit $rm |
| ... |
| # CHECK-LABEL: conditional_trap_opt_TD_8 |
| # CHECK: # %bb.0: # %entry |
| # CHECK-NEXT: trap |
| # CHECK-NOT: blr |
| |
| --- |
| name: conditional_trap_opt_TD_2 |
| alignment: 16 |
| tracksRegLiveness: true |
| body: | |
| bb.0.entry: |
| %0:g8rc = LI8 -1 |
| %1:g8rc = LI8 2 |
| TD 2, %1, %0 |
| TD 2, %0, %1 |
| BLR8 implicit $lr8, implicit $rm |
| ... |
| # CHECK-LABEL: conditional_trap_opt_TD_2 |
| # CHECK: # %bb.0: # %entry |
| # CHECK-NEXT: trap |
| # CHECK-NOT: blr |
| |
| --- |
| name: conditional_trap_opt_TD_1 |
| alignment: 16 |
| tracksRegLiveness: true |
| body: | |
| bb.0.entry: |
| %0:g8rc = LI8 -3 |
| %1:g8rc = LI8 4 |
| TD 1, %1, %0 |
| TD 1, %0, %1 |
| BLR8 implicit $lr8, implicit $rm |
| ... |
| # CHECK-LABEL: conditional_trap_opt_TD_1 |
| # CHECK: # %bb.0: # %entry |
| # CHECK-NEXT: trap |
| # CHECK-NOT: blr |
| |
| --- |
| name: conditional_trap_opt_TD_4 |
| alignment: 16 |
| tracksRegLiveness: true |
| body: | |
| bb.0.entry: |
| %0:g8rc = LI8 5 |
| %1:g8rc = LI8 1 |
| TD 4, %1, %0 |
| TD 4, %1, %1 |
| BLR8 implicit $lr8, implicit $rm |
| ... |
| # CHECK-LABEL: conditional_trap_opt_TD_4 |
| # CHECK: # %bb.0: # %entry |
| # CHECK-NEXT: trap |
| # CHECK-NOT: blr |
| |
| --- |
| name: conditional_trap_opt_TDI_31 |
| alignment: 16 |
| tracksRegLiveness: true |
| body: | |
| bb.0.entry: |
| %0:g8rc = LI8 3 |
| TDI 31, %0, 0 |
| BLR8 implicit $lr8, implicit $rm |
| ... |
| # CHECK-LABEL: conditional_trap_opt_TDI_31 |
| # CHECK: # %bb.0: # %entry |
| # CHECK-NEXT: trap |
| # CHECK-NOT: blr |
| |
| --- |
| name: conditional_trap_opt_TDI_24 |
| alignment: 16 |
| tracksRegLiveness: true |
| body: | |
| bb.0.entry: |
| %0:g8rc = LI8 3 |
| TDI 24, %0, 0 |
| BLR8 implicit $lr8, implicit $rm |
| ... |
| # CHECK-LABEL: conditional_trap_opt_TDI_24 |
| # CHECK: # %bb.0: # %entry |
| # CHECK-NEXT: trap |
| # CHECK-NOT: blr |
| |
| --- |
| name: conditional_trap_opt_no_trap_TDI_24 |
| alignment: 16 |
| tracksRegLiveness: true |
| body: | |
| bb.0.entry: |
| %0:g8rc = LI8 0 |
| TDI 24, %0, 0 |
| BLR8 implicit $lr8, implicit $rm |
| ... |
| # CHECK-LABEL: conditional_trap_opt_no_trap_TDI_24 |
| # CHECK: # %bb.0: # %entry |
| # CHECK-NEXT: blr |
| |
| --- |
| name: conditional_trap_opt_TDI_20 |
| alignment: 16 |
| tracksRegLiveness: true |
| body: | |
| bb.0.entry: |
| %0:g8rc = LI8 3 |
| TDI 20, %0, 3 |
| BLR8 implicit $lr8, implicit $rm |
| ... |
| # CHECK-LABEL: conditional_trap_opt_TDI_20 |
| # CHECK: # %bb.0: # %entry |
| # CHECK-NEXT: trap |
| # CHECK-NOT: blr |
| |
| --- |
| name: conditional_trap_opt_no_trap_TDI_20 |
| alignment: 16 |
| tracksRegLiveness: true |
| body: | |
| bb.0.entry: |
| %0:g8rc = LI8 5 |
| TDI 20, %0, 3 |
| BLR8 implicit $lr8, implicit $rm |
| ... |
| # CHECK-LABEL: conditional_trap_opt_no_trap_TDI_20 |
| # CHECK: # %bb.0: # %entry |
| # CHECK-NEXT: blr |
| |
| --- |
| name: conditional_trap_opt_no_trap_TDI_16 |
| alignment: 16 |
| tracksRegLiveness: true |
| body: | |
| bb.0.entry: |
| %0:g8rc = LI8 5 |
| TDI 16, %0, 1 |
| BLR8 implicit $lr8, implicit $rm |
| ... |
| # CHECK-LABEL: conditional_trap_opt_no_trap_TDI_16 |
| # CHECK: # %bb.0: # %entry |
| # CHECK-NEXT: blr |
| |
| --- |
| name: conditional_trap_opt_TDI_16 |
| alignment: 16 |
| tracksRegLiveness: true |
| body: | |
| bb.0.entry: |
| %0:g8rc = LI8 5 |
| %1:g8rc = LI8 1 |
| TDI 16, %1, 5 |
| TDI 16, %0, 1 |
| BLR8 implicit $lr8, implicit $rm |
| ... |
| # CHECK-LABEL: conditional_trap_opt_TDI_16 |
| # CHECK: # %bb.0: # %entry |
| # CHECK-NEXT: trap |
| # CHECK-NOT: blr |
| |
| --- |
| name: conditional_trap_opt_TDI_8 |
| alignment: 16 |
| tracksRegLiveness: true |
| body: | |
| bb.0.entry: |
| %0:g8rc = LI8 -1 |
| %1:g8rc = LI8 10 |
| TDI 8, %1, -1 |
| TDI 8, %0, 10 |
| BLR8 implicit $lr8, implicit $rm |
| ... |
| # CHECK-LABEL: conditional_trap_opt_TDI_8 |
| # CHECK: # %bb.0: # %entry |
| # CHECK-NEXT: trap |
| # CHECK-NOT: blr |
| |
| --- |
| name: conditional_trap_opt_TDI_2 |
| alignment: 16 |
| tracksRegLiveness: true |
| body: | |
| bb.0.entry: |
| %0:g8rc = LI8 -1 |
| %1:g8rc = LI8 2 |
| TDI 2, %1, -1 |
| TDI 2, %0, 2 |
| BLR8 implicit $lr8, implicit $rm |
| ... |
| # CHECK-LABEL: conditional_trap_opt_TDI_2 |
| # CHECK: # %bb.0: # %entry |
| # CHECK-NEXT: trap |
| # CHECK-NOT: blr |
| |
| --- |
| name: conditional_trap_opt_TDI_1 |
| alignment: 16 |
| tracksRegLiveness: true |
| body: | |
| bb.0.entry: |
| %0:g8rc = LI8 -3 |
| %1:g8rc = LI8 4 |
| TDI 1, %1, -3 |
| TDI 1, %0, 4 |
| BLR8 implicit $lr8, implicit $rm |
| ... |
| # CHECK-LABEL: conditional_trap_opt_TDI_1 |
| # CHECK: # %bb.0: # %entry |
| # CHECK-NEXT: trap |
| # CHECK-NOT: blr |
| |
| --- |
| name: conditional_trap_opt_TDI_4 |
| alignment: 16 |
| tracksRegLiveness: true |
| body: | |
| bb.0.entry: |
| %0:g8rc = LI8 5 |
| %1:g8rc = LI8 1 |
| TDI 4, %1, 5 |
| TDI 4, %1, 1 |
| BLR8 implicit $lr8, implicit $rm |
| ... |
| # CHECK-LABEL: conditional_trap_opt_TDI_4 |
| # CHECK: # %bb.0: # %entry |
| # CHECK-NEXT: trap |
| # CHECK-NOT: blr |
| |
| --- |
| name: conditional_trap_opt_multiple_traps |
| alignment: 16 |
| tracksRegLiveness: true |
| body: | |
| bb.0.entry: |
| %0:gprc = LI 5 |
| %1:gprc = LI 1 |
| %2:g8rc = LI8 -1 |
| %3:g8rc = LI8 0 |
| TWI 31, %1, 5 |
| TDI 31, %3, 0 |
| TW 31, %0, %1 |
| TD 31, %2, %2 |
| BLR8 implicit $lr8, implicit $rm |
| ... |
| # CHECK-LABEL: conditional_trap_opt_multiple_traps |
| # CHECK: # %bb.0: # %entry |
| # CHECK-NEXT: trap |
| # CHECK-NOT: blr |