llvm/test/CodeGen/AArch64/machine-sink-zr.mir
Matthias Braun 0cb25a2a10 MIParser/MIRPrinter: Compute block successors if not explicitely specified
- MIParser: If the successor list is not specified successors will be
  added based on basic block operands in the block and possible
  fallthrough.

- MIRPrinter: Adds a new `simplify-mir` option, with that option set:
  Skip printing of block successor lists in cases where the
  parser is guaranteed to reconstruct it. This means we still print the
  list if some successor cannot be determined (happens for example for
  jump tables), if the successor order changes or branch probabilities
  being unequal.

Differential Revision: https://reviews.llvm.org/D31262

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@302289 91177308-0d34-0410-b5e6-96231b3b80d8
2017-05-05 21:09:30 +00:00

44 lines
838 B
YAML

# RUN: llc -mtriple=aarch64-none-linux-gnu -run-pass machine-sink -o - %s | FileCheck %s
--- |
define void @sinkwzr() { ret void }
...
---
name: sinkwzr
tracksRegLiveness: true
registers:
- { id: 0, class: gpr32 }
- { id: 1, class: gpr32 }
- { id: 2, class: gpr32sp }
- { id: 3, class: gpr32 }
- { id: 4, class: gpr32 }
body: |
; Check that WZR copy is sunk into the loop preheader.
; CHECK-LABEL: name: sinkwzr
; CHECK-LABEL: bb.0:
; CHECK-NOT: COPY %wzr
bb.0:
liveins: %w0
%0 = COPY %w0
%1 = COPY %wzr
CBZW %0, %bb.3
; CHECK-LABEL: bb.1:
; CHECK: COPY %wzr
bb.1:
B %bb.2
bb.2:
%2 = PHI %0, %bb.1, %4, %bb.2
%w0 = COPY %1
%3 = SUBSWri %2, 1, 0, implicit-def dead %nzcv
%4 = COPY %3
CBZW %3, %bb.3
B %bb.2
bb.3:
RET_ReallyLR
...