Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[AArch64][SchedModels] Handle virtual registers in FP/NEON predicates
Current implementation of Check[HSDQ]Form predicates doesn’t handle virtual registers and therefore isn’t useful for pre-RA scheduling. Patch fixes this implementing two function predicates: CheckQForm for checking that instruction writes 128-bit NEON register and CheckFpOrNEON which checks that instruction writes FP register (any width). The latter supersedes Check[HSD]Form predicates which are not used individually. OS Laboratory. Huawei Russian Research Institute. Saint-Petersburg Reviewed By: dmgreen Differential Revision: https://reviews.llvm.org/D114642
- Loading branch information
Pavel Kosov
committed
Feb 17, 2022
1 parent
5065076
commit f3809b2
Showing
7 changed files
with
125 additions
and
142 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,36 @@ | ||
# RUN: llc -mcpu=exynos-m5 -mtriple=aarch64 -enable-misched -run-pass=machine-scheduler -debug-only=machine-scheduler %s -o /dev/null 2>&1 | FileCheck %s | ||
|
||
# CHECK-LABEL: ********** MI Scheduling ********** | ||
# CHECK: SU(0): %0:fpr128 = COPY $q1 | ||
# CHECK-NEXT: # preds left : 0 | ||
# CHECK-NEXT: # succs left : 1 | ||
# CHECK-NEXT: # rdefs left : 0 | ||
# CHECK-NEXT: Latency : 2 | ||
# CHECK-NEXT: Depth : 0 | ||
# CHECK-NEXT: Height : 12 | ||
# CHECK-NEXT: Successors: | ||
# CHECK-NEXT: SU(1): Data Latency=2 Reg=%0 | ||
# CHECK-NEXT: Single Issue : false; | ||
# CHECK-NEXT: SU(1): %1:fpr32 = FMINVv4i32v %0:fpr128 | ||
# CHECK-NEXT: # preds left : 1 | ||
# CHECK-NEXT: # succs left : 1 | ||
# CHECK-NEXT: # rdefs left : 0 | ||
# CHECK-NEXT: Latency : 8 | ||
# CHECK-NEXT: Depth : 2 | ||
# CHECK-NEXT: Height : 10 | ||
# CHECK-NEXT: Predecessors: | ||
# CHECK-NEXT: SU(0): Data Latency=2 Reg=%0 | ||
# CHECK-NEXT: Successors: | ||
# CHECK-NEXT: SU(2): Data Latency=8 Reg=%1 | ||
# CHECK-NEXT: Single Issue : false; | ||
|
||
name: test_qform_virtreg | ||
tracksRegLiveness: true | ||
body: | | ||
bb.0: | ||
liveins: $s0, $q1 | ||
%0:fpr128 = COPY $q1 | ||
%1:fpr32 = FMINVv4i32v %0:fpr128 | ||
$s0 = COPY %1 | ||
RET_ReallyLR implicit $s0 | ||