Skip to content

Commit

Permalink
[PowerPC] Remove the redundant terminator instruction when optimizing…
Browse files Browse the repository at this point in the history
… conditional trap

This patch is a follow up patch for ae27ca9 to
the remove redundant terminator when optimizing conditional trap.

Peer reviewed by: nemanjai
  • Loading branch information
VictorHuangIBM committed Nov 18, 2021
1 parent 24cc79b commit 40c6565
Show file tree
Hide file tree
Showing 2 changed files with 55 additions and 36 deletions.
6 changes: 3 additions & 3 deletions llvm/lib/Target/PowerPC/PPCMIPeephole.cpp
Expand Up @@ -421,9 +421,9 @@ bool PPCMIPeephole::simplifyCode(void) {
ToErase = nullptr;
}
// If a conditional trap instruction got optimized to an
// unconditional trap, eliminate all the instructions between
// the trap and the terminator of the MBB.
if (TrapOpt && !MI.isTerminator()) {
// unconditional trap, eliminate all the instructions after
// the trap.
if (TrapOpt) {
ToErase = &MI;
continue;
}
Expand Down
85 changes: 52 additions & 33 deletions llvm/test/CodeGen/PowerPC/mi-peepholes-trap-opt.mir
Expand Up @@ -25,6 +25,25 @@ body: |
# 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
Expand All @@ -39,7 +58,7 @@ body: |
# CHECK-LABEL: conditional_trap_opt_TW_31
# CHECK: # %bb.0: # %entry
# CHECK-NEXT: trap
# CHECK-NEXT: blr
# CHECK-NOT: blr

---
name: conditional_trap_opt_TW_24
Expand All @@ -55,7 +74,7 @@ body: |
# CHECK-LABEL: conditional_trap_opt_TW_24
# CHECK: # %bb.0: # %entry
# CHECK-NEXT: trap
# CHECK-NEXT: blr
# CHECK-NOT: blr

---
name: conditional_trap_opt_no_trap_TW_24
Expand Down Expand Up @@ -86,7 +105,7 @@ body: |
# CHECK-LABEL: conditional_trap_opt_TW_20
# CHECK: # %bb.0: # %entry
# CHECK-NEXT: trap
# CHECK-NEXT: blr
# CHECK-NOT: blr

---
name: conditional_trap_opt_no_trap_TW_20
Expand Down Expand Up @@ -133,7 +152,7 @@ body: |
# CHECK-LABEL: conditional_trap_opt_TW_16
# CHECK: # %bb.0: # %entry
# CHECK-NEXT: trap
# CHECK-NEXT: blr
# CHECK-NOT: blr

---
name: conditional_trap_opt_TW_8
Expand All @@ -150,7 +169,7 @@ body: |
# CHECK-LABEL: conditional_trap_opt_TW_8
# CHECK: # %bb.0: # %entry
# CHECK-NEXT: trap
# CHECK-NEXT: blr
# CHECK-NOT: blr

---
name: conditional_trap_opt_TW_2
Expand All @@ -167,7 +186,7 @@ body: |
# CHECK-LABEL: conditional_trap_opt_TW_2
# CHECK: # %bb.0: # %entry
# CHECK-NEXT: trap
# CHECK-NEXT: blr
# CHECK-NOT: blr

---
name: conditional_trap_opt_TW_1
Expand All @@ -184,7 +203,7 @@ body: |
# CHECK-LABEL: conditional_trap_opt_TW_1
# CHECK: # %bb.0: # %entry
# CHECK-NEXT: trap
# CHECK-NEXT: blr
# CHECK-NOT: blr

---
name: conditional_trap_opt_TW_4
Expand All @@ -201,7 +220,7 @@ body: |
# CHECK-LABEL: conditional_trap_opt_TW_4
# CHECK: # %bb.0: # %entry
# CHECK-NEXT: trap
# CHECK-NEXT: blr
# CHECK-NOT: blr

---
name: conditional_trap_opt_TWI_31
Expand All @@ -216,7 +235,7 @@ body: |
# CHECK-LABEL: conditional_trap_opt_TWI_31
# CHECK: # %bb.0: # %entry
# CHECK-NEXT: trap
# CHECK-NEXT: blr
# CHECK-NOT: blr

---
name: conditional_trap_opt_TWI_24
Expand All @@ -231,7 +250,7 @@ body: |
# CHECK-LABEL: conditional_trap_opt_TWI_24
# CHECK: # %bb.0: # %entry
# CHECK-NEXT: trap
# CHECK-NEXT: blr
# CHECK-NOT: blr

---
name: conditional_trap_opt_no_trap_TWI_24
Expand Down Expand Up @@ -260,7 +279,7 @@ body: |
# CHECK-LABEL: conditional_trap_opt_TWI_20
# CHECK: # %bb.0: # %entry
# CHECK-NEXT: trap
# CHECK-NEXT: blr
# CHECK-NOT: blr

---
name: conditional_trap_opt_no_trap_TWI_20
Expand Down Expand Up @@ -305,7 +324,7 @@ body: |
# CHECK-LABEL: conditional_trap_opt_TWI_16
# CHECK: # %bb.0: # %entry
# CHECK-NEXT: trap
# CHECK-NEXT: blr
# CHECK-NOT: blr

---
name: conditional_trap_opt_TWI_8
Expand All @@ -322,7 +341,7 @@ body: |
# CHECK-LABEL: conditional_trap_opt_TWI_8
# CHECK: # %bb.0: # %entry
# CHECK-NEXT: trap
# CHECK-NEXT: blr
# CHECK-NOT: blr

---
name: conditional_trap_opt_TWI_2
Expand All @@ -339,7 +358,7 @@ body: |
# CHECK-LABEL: conditional_trap_opt_TWI_2
# CHECK: # %bb.0: # %entry
# CHECK-NEXT: trap
# CHECK-NEXT: blr
# CHECK-NOT: blr

---
name: conditional_trap_opt_TWI_1
Expand All @@ -356,7 +375,7 @@ body: |
# CHECK-LABEL: conditional_trap_opt_TWI_1
# CHECK: # %bb.0: # %entry
# CHECK-NEXT: trap
# CHECK-NEXT: blr
# CHECK-NOT: blr

---
name: conditional_trap_opt_TWI_4
Expand All @@ -373,7 +392,7 @@ body: |
# CHECK-LABEL: conditional_trap_opt_TWI_4
# CHECK: # %bb.0: # %entry
# CHECK-NEXT: trap
# CHECK-NEXT: blr
# CHECK-NOT: blr

---
name: conditional_trap_opt_TD_31
Expand All @@ -389,7 +408,7 @@ body: |
# CHECK-LABEL: conditional_trap_opt_TD_31
# CHECK: # %bb.0: # %entry
# CHECK-NEXT: trap
# CHECK-NEXT: blr
# CHECK-NOT: blr

---
name: conditional_trap_opt_TD_24
Expand All @@ -405,7 +424,7 @@ body: |
# CHECK-LABEL: conditional_trap_opt_TD_24
# CHECK: # %bb.0: # %entry
# CHECK-NEXT: trap
# CHECK-NEXT: blr
# CHECK-NOT: blr

---
name: conditional_trap_opt_no_trap_TD_24
Expand Down Expand Up @@ -436,7 +455,7 @@ body: |
# CHECK-LABEL: conditional_trap_opt_TD_20
# CHECK: # %bb.0: # %entry
# CHECK-NEXT: trap
# CHECK-NEXT: blr
# CHECK-NOT: blr

---
name: conditional_trap_opt_no_trap_TD_20
Expand Down Expand Up @@ -483,7 +502,7 @@ body: |
# CHECK-LABEL: conditional_trap_opt_TD_16
# CHECK: # %bb.0: # %entry
# CHECK-NEXT: trap
# CHECK-NEXT: blr
# CHECK-NOT: blr

---
name: conditional_trap_opt_TD_8
Expand All @@ -500,7 +519,7 @@ body: |
# CHECK-LABEL: conditional_trap_opt_TD_8
# CHECK: # %bb.0: # %entry
# CHECK-NEXT: trap
# CHECK-NEXT: blr
# CHECK-NOT: blr

---
name: conditional_trap_opt_TD_2
Expand All @@ -517,7 +536,7 @@ body: |
# CHECK-LABEL: conditional_trap_opt_TD_2
# CHECK: # %bb.0: # %entry
# CHECK-NEXT: trap
# CHECK-NEXT: blr
# CHECK-NOT: blr

---
name: conditional_trap_opt_TD_1
Expand All @@ -534,7 +553,7 @@ body: |
# CHECK-LABEL: conditional_trap_opt_TD_1
# CHECK: # %bb.0: # %entry
# CHECK-NEXT: trap
# CHECK-NEXT: blr
# CHECK-NOT: blr

---
name: conditional_trap_opt_TD_4
Expand All @@ -551,7 +570,7 @@ body: |
# CHECK-LABEL: conditional_trap_opt_TD_4
# CHECK: # %bb.0: # %entry
# CHECK-NEXT: trap
# CHECK-NEXT: blr
# CHECK-NOT: blr

---
name: conditional_trap_opt_TDI_31
Expand All @@ -566,7 +585,7 @@ body: |
# CHECK-LABEL: conditional_trap_opt_TDI_31
# CHECK: # %bb.0: # %entry
# CHECK-NEXT: trap
# CHECK-NEXT: blr
# CHECK-NOT: blr

---
name: conditional_trap_opt_TDI_24
Expand All @@ -581,7 +600,7 @@ body: |
# CHECK-LABEL: conditional_trap_opt_TDI_24
# CHECK: # %bb.0: # %entry
# CHECK-NEXT: trap
# CHECK-NEXT: blr
# CHECK-NOT: blr

---
name: conditional_trap_opt_no_trap_TDI_24
Expand Down Expand Up @@ -610,7 +629,7 @@ body: |
# CHECK-LABEL: conditional_trap_opt_TDI_20
# CHECK: # %bb.0: # %entry
# CHECK-NEXT: trap
# CHECK-NEXT: blr
# CHECK-NOT: blr

---
name: conditional_trap_opt_no_trap_TDI_20
Expand Down Expand Up @@ -655,7 +674,7 @@ body: |
# CHECK-LABEL: conditional_trap_opt_TDI_16
# CHECK: # %bb.0: # %entry
# CHECK-NEXT: trap
# CHECK-NEXT: blr
# CHECK-NOT: blr

---
name: conditional_trap_opt_TDI_8
Expand All @@ -672,7 +691,7 @@ body: |
# CHECK-LABEL: conditional_trap_opt_TDI_8
# CHECK: # %bb.0: # %entry
# CHECK-NEXT: trap
# CHECK-NEXT: blr
# CHECK-NOT: blr

---
name: conditional_trap_opt_TDI_2
Expand All @@ -689,7 +708,7 @@ body: |
# CHECK-LABEL: conditional_trap_opt_TDI_2
# CHECK: # %bb.0: # %entry
# CHECK-NEXT: trap
# CHECK-NEXT: blr
# CHECK-NOT: blr

---
name: conditional_trap_opt_TDI_1
Expand All @@ -706,7 +725,7 @@ body: |
# CHECK-LABEL: conditional_trap_opt_TDI_1
# CHECK: # %bb.0: # %entry
# CHECK-NEXT: trap
# CHECK-NEXT: blr
# CHECK-NOT: blr

---
name: conditional_trap_opt_TDI_4
Expand All @@ -723,7 +742,7 @@ body: |
# CHECK-LABEL: conditional_trap_opt_TDI_4
# CHECK: # %bb.0: # %entry
# CHECK-NEXT: trap
# CHECK-NEXT: blr
# CHECK-NOT: blr

---
name: conditional_trap_opt_multiple_traps
Expand All @@ -744,4 +763,4 @@ body: |
# CHECK-LABEL: conditional_trap_opt_multiple_traps
# CHECK: # %bb.0: # %entry
# CHECK-NEXT: trap
# CHECK-NEXT: blr
# CHECK-NOT: blr

0 comments on commit 40c6565

Please sign in to comment.