1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-24 19:52:54 +01:00
llvm-mirror/utils
Jessica Paquette 131412fdfc [GlobalISel] Import patterns containing INSERT_SUBREG
This teaches the importer to handle INSERT_SUBREG instructions.

We were missing patterns involving INSERT_SUBREG in AArch64. It appears in
AArch64InstrInfo.td 107 times, and 14 times in AArch64InstrFormats.td.

To meaningfully import it, the GlobalISelEmitter needs to know how to infer a
super register class for a given register class.

This patch introduces the following:

- `getSuperRegForSubReg`, a function which finds the largest register class
which supports a value type and subregister index

- `inferSuperRegisterClass`, a function which finds the appropriate super
register class for an INSERT_SUBREG'

- `inferRegClassFromPattern`, a function which allows for some trivial
lookthrough into instructions

- `getRegClassFromLeaf`, a helper function which returns the register class for
a leaf `TreePatternNode`

- Support for subregister index operands in `importExplicitUseRenderer`

It also

- Updates tests in each backend which are impacted by the change

- Adds GlobalISelEmitterSubreg.td to test that we import and skip the expected
patterns

As a result of this patch, INSERT_SUBREG patterns in X86 may use the
LOW32_ADDR_ACCESS_RBP register class instead of GR32. This is correct, since the
register class contains the same registers as GR32 (except with the addition of
RBP). So, this also teaches X86 to handle that register class. This is in line
with X86ISelLowering, which treats this as a GR class.

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

llvm-svn: 369973
2019-08-26 21:38:57 +00:00
..
benchmark [benchmark] Fix win32 link on case-sensitive fs 2019-07-30 20:47:59 +00:00
bugpoint
count
crosstool
docker
emacs ARM MTE stack sanitizer. 2019-07-15 20:02:23 +00:00
FileCheck [FileCheck] Document FILECHECK_OPTS in -help 2019-08-14 02:56:20 +00:00
fpcmp
gdb-scripts Fix GDB pretty printer for Optional after r354246 2019-05-28 20:22:16 +00:00
git-svn git-llvm: Make push --force suppress error on nothing to commit as well 2019-08-21 16:03:34 +00:00
gn gn build: Merge r369918 2019-08-26 19:27:26 +00:00
jedit
kate [TableGen] Introduce !listsplat 'binary' operator 2019-04-10 18:26:36 +00:00
KillTheDoctor
lint
lit [lit] Diagnose insufficient args to internal env 2019-08-22 03:42:01 +00:00
llvm-build Write the RequiredLibraries for 'all' in LibraryDependencies.inc in a deterministic order (PR42739) 2019-08-05 13:04:07 +00:00
llvm-lit
LLVMVisualizers Clean up MSVC visualization of LLVM pointer types 2019-06-30 21:54:34 +00:00
Misc
not
PerfectShuffle
release [utils] Update shebang to use the environment. 2019-08-22 23:42:31 +00:00
Reviewing
sanitizers
TableGen [GlobalISel] Import patterns containing INSERT_SUBREG 2019-08-26 21:38:57 +00:00
Target/ARM
testgen
textmate
unittest reland [gtest] Fix printing of StringRef and SmallString in assert messages. 2019-08-21 13:56:29 +00:00
UpdateTestChecks [UpdateTestChecks] Update tests option 2019-08-07 14:44:50 +00:00
valgrind
vim
vscode
yaml-bench
abtest.py
add_argument_names.py IR: print value numbers for unnamed function arguments 2019-08-03 14:28:34 +00:00
bisect [Utils][NFC] Copy bisect usage documents from commit msg into script. 2019-08-15 22:07:59 +00:00
bisect-skip-count
bugpoint_gisel_reducer.py
check-each-file
chunk-print-before-all.py [Util] Add a helper script for converting -print-before-all output into a file based equivelent 2019-06-19 22:05:47 +00:00
clang-parse-diagnostics-file
codegen-diff
collect_and_build_with_pgo.py
countloc.sh
create_ladder_graph.py
demangle_tree.py
DSAclean.py
DSAextract.py
extract_symbols.py
extract_vplan.py
findmisopt
findoptdiff
findsym.pl
GenLibDeps.pl [Bitcode] Move Bitstream to a separate library 2019-07-03 22:40:07 +00:00
GetRepositoryPath
GetSourceVersion
getsrcs.sh
indirect_calls.py
lldbDataFormatters.py Add LLDB dataformatters for llvm::StringRef and lldb_private::ConstString 2019-08-16 23:47:57 +00:00
llvm-compilers-check
llvm-gisel-cov.py
llvm-native-gxx
llvm.grm
LLVMBuild.txt
llvmdo
llvmgrep
prepare-code-coverage-artifact.py svn propset svn:executable on utils/prepare-code-coverage-artifact.py 2019-06-04 23:35:07 +00:00
schedcover.py
shuffle_fuzz.py
shuffle_select_fuzz_tester.py
sort_includes.py
unicode-case-fold.py
update_analyze_test_checks.py [UpdateTestChecks] Update tests option 2019-08-07 14:44:50 +00:00
update_cc_test_checks.py [UpdateTestChecks] Update tests option 2019-08-07 14:44:50 +00:00
update_llc_test_checks.py [UpdateTestChecks] Update tests option 2019-08-07 14:44:50 +00:00
update_mca_test_checks.py [UpdateTestChecks] Emit warning when invalid value for -check-prefix(es) option 2019-07-29 17:41:00 +00:00
update_mir_test_checks.py [UpdateTestChecks] Update tests option 2019-08-07 14:44:50 +00:00
update_test_checks.py [UpdateTestChecks] Update tests option 2019-08-07 14:44:50 +00:00
UpdateCMakeLists.pl
wciia.py