1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-22 18:54:02 +01:00
llvm-mirror/test/CodeGen/PowerPC/subreg-killed.mir
Baptiste Saleil 8c45c9b8dd [VirtRegRewriter] Insert missing killed flags when tracking subregister liveness
VirtRegRewriter may sometimes fail to correctly apply the kill flag where necessary,
which causes unecessary code gen on PowerPC. This patch fixes the way masks for
defined lanes are computed and the way mask for used lanes is computed.

Contact albion.fung@ibm.com instead of author for problems related to this commit.

Differential Revision: https://reviews.llvm.org/D92405
2021-03-03 12:02:04 -05:00

41 lines
1.2 KiB
YAML

# RUN: llc -mcpu=pwr10 -O3 -ppc-track-subreg-liveness -verify-machineinstrs \
# RUN: -mtriple=powerpc64le-unknown-linux-gnu -run-pass=greedy,virtregrewriter \
# RUN: -o - %s | FileCheck %s
# This test case checks that the 'killed' flag is properly added when using
# subregisters.
# CHECK-LABEL: test
# CHECK: KILL_PAIR killed
# CHECK-NEXT: COPY killed
# CHECK-NEXT: KILL_PAIR killed
# CHECK-NEXT: COPY killed
# CHECK-NEXT: BUILD_UACC killed
# CHECK-NEXT: XXMTACC killed
# CHECK-NEXT: SPILL_ACC killed
---
name: test
tracksRegLiveness: true
fixedStack:
- { id: 0, size: 8 }
stack:
- { id: 0, size: 64 }
body: |
bb.0:
liveins: $v2, $v3, $v4, $v5
undef %4.sub_vsx1:vsrprc_with_sub_64_in_vfrc = COPY $v5
%4.sub_vsx0:vsrprc_with_sub_64_in_vfrc = COPY $v4
undef %5.sub_vsx1:vsrprc_with_sub_64_in_vfrc = COPY $v3
%5.sub_vsx0:vsrprc_with_sub_64_in_vfrc = COPY $v2
%6:g8rc_and_g8rc_nox0 = LD 0, %fixed-stack.0
%5:vsrprc_with_sub_64_in_vfrc = KILL_PAIR %5
undef %7.sub_pair0:uaccrc = COPY %5
%4:vsrprc_with_sub_64_in_vfrc = KILL_PAIR %4
%7.sub_pair1:uaccrc = COPY %4
%8:accrc = BUILD_UACC %7
%8:accrc = XXMTACC %8
SPILL_ACC %8, 0, %stack.0
...