767 lines
16 KiB
YAML
767 lines
16 KiB
YAML
# 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
|