1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-23 11:13:28 +01:00
llvm-mirror/utils
Amara Emerson a5ff88d2db [AArch64][GlobalISel] Introduce a new post-isel optimization pass.
There are two optimizations here:

1. Consider the following code:
 FCMPSrr %0, %1, implicit-def $nzcv
 %sel1:gpr32 = CSELWr %_, %_, 12, implicit $nzcv
 %sub:gpr32 = SUBSWrr %_, %_, implicit-def $nzcv
 FCMPSrr %0, %1, implicit-def $nzcv
 %sel2:gpr32 = CSELWr %_, %_, 12, implicit $nzcv
This kind of code where we have 2 FCMPs each feeding a CSEL can happen
when we have a single IR fcmp being used by two selects. During selection,
to ensure that there can be no clobbering of nzcv between the fcmp and the
csel, we have to generate an fcmp immediately before each csel is
selected.

However, often we can essentially CSE these together later in MachineCSE.
This doesn't work though if there are unrelated flag-setting instructions
in between the two FCMPs. In this case, the SUBS defines NZCV
but it doesn't have any users, being overwritten by the second FCMP.

Our solution here is to try to convert flag setting operations between
a interval of identical FCMPs, so that CSE will be able to eliminate one.

2. SelectionDAG imported patterns for arithmetic ops currently select the
flag-setting ops for CSE reasons, and add the implicit-def $nzcv operand
to those instructions. However if those impdef operands are not marked as
dead, the peephole optimizations are not able to optimize them into non-flag
setting variants. The optimization here is to find these dead imp-defs and
mark them as such.

This pass is only enabled when optimizations are enabled.

Differential Revision: https://reviews.llvm.org/D89415
2020-10-23 10:18:36 -07:00
..
benchmark [M680x0] Add google/benchmark's CycleTimer support for M68K 2020-10-07 14:58:36 -07:00
bugpoint
count
crosstool
docker
emacs [LangRef] Define mustprogress attribute 2020-10-19 13:34:27 -04:00
FileCheck Internalize functions from various tools. NFC 2020-09-26 15:57:13 -07:00
fpcmp
gdb-scripts
git
gn [AArch64][GlobalISel] Introduce a new post-isel optimization pass. 2020-10-23 10:18:36 -07:00
jedit
kate [LangRef] Define mustprogress attribute 2020-10-19 13:34:27 -04:00
KillTheDoctor [KillTheDoctor/CMake] Add missing keyword PRIVATE in target_link_libraries 2020-09-07 16:08:55 +03:00
lint
lit [LIT] fixed up accidentally committed EOF problems. 2020-10-21 13:29:58 +01:00
llvm-build
llvm-lit
llvm-locstats
LLVMVisualizers
Misc
not PrintStackTrace: don't symbolize if LLVM_DISABLE_SYMBOLIZATION is set 2020-08-21 11:27:13 -07:00
PerfectShuffle
release
Reviewing
sanitizers
TableGen [WebAssembly] Implementation of (most) table instructions 2020-10-23 08:42:54 -07:00
Target/ARM
testgen
textmate
unittest [cmake] Make gtest include directories a part of the library interface 2020-08-27 15:35:57 +02:00
UpdateTestChecks clang: Make changes in 7c8bb409f31e py2.7-compatible 2020-09-18 16:15:37 -04:00
valgrind
vim [LangRef] Define mustprogress attribute 2020-10-19 13:34:27 -04:00
vscode [LangRef] Define mustprogress attribute 2020-10-19 13:34:27 -04:00
yaml-bench
abtest.py
add_argument_names.py
bisect
bisect-skip-count
bugpoint_gisel_reducer.py
check_ninja_deps.py
check-each-file
chunk-print-before-all.py
clang-parse-diagnostics-file
codegen-diff
collect_and_build_with_pgo.py
convert-constraint-log-to-z3.py Recommit "[ConstraintSystem] Add helpers to deal with linear constraints." 2020-09-15 12:07:26 +01:00
countloc.sh
create_ladder_graph.py
demangle_tree.py
DSAclean.py
DSAextract.py
extract_symbols.py
extract_vplan.py [utils] Fix regexp in llvm/utils/extract_vplan.py to extract VPlans. 2020-08-19 08:57:12 +01:00
findmisopt
findoptdiff
findsym.pl
GenLibDeps.pl
GetSourceVersion
getsrcs.sh
indirect_calls.py
lldbDataFormatters.py Bring llvm::Optional data formatter back in sync with the implementation. 2020-08-26 15:10:39 -07:00
llvm-compilers-check
llvm-gisel-cov.py
llvm-native-gxx
llvm.grm [LangRef] Define mustprogress attribute 2020-10-19 13:34:27 -04:00
LLVMBuild.txt
llvmdo
llvmgrep
merge-stats.py
prepare-code-coverage-artifact.py
remote-exec.py Added utility to launch tests on a target remotely. 2020-10-23 20:52:30 +04:00
schedcover.py
shuffle_fuzz.py
shuffle_select_fuzz_tester.py
sort_includes.py
unicode-case-fold.py
update_analyze_test_checks.py Update update_analyze_test_checks.py to support API changes from D83004 2020-09-21 16:09:05 +01:00
update_cc_test_checks.py [UpdateCCTestChecks] Include generated functions if asked 2020-09-18 06:34:59 -05:00
update_llc_test_checks.py [UpdateCCTestChecks] Include generated functions if asked 2020-09-18 06:34:59 -05:00
update_mca_test_checks.py
update_mir_test_checks.py
update_test_checks.py [UpdateCCTestChecks] Include generated functions if asked 2020-09-18 06:34:59 -05:00
UpdateCMakeLists.pl
wciia.py