llvm-project/llvm/utils
Simon Cook a26bd4ec16 [TableGen] Support combining AssemblerPredicates with ORs
For context, the proposed RISC-V bit manipulation extension has a subset
of instructions which require one of two SubtargetFeatures to be
enabled, 'zbb' or 'zbp', and there is no defined feature which both of
these can imply to use as a constraint either (see comments in D65649).

AssemblerPredicates allow multiple SubtargetFeatures to be declared in
the "AssemblerCondString" field, separated by commas, and this means
that the two features must both be enabled. There is no equivalent to
say that _either_ feature X or feature Y must be enabled, short of
creating a dummy SubtargetFeature for this purpose and having features X
and Y imply the new feature.

To solve the case where X or Y is needed without adding a new feature,
and to better match a typical TableGen style, this replaces the existing
"AssemblerCondString" with a dag "AssemblerCondDag" which represents the
same information. Two operators are defined for use with
AssemblerCondDag, "all_of", which matches the current behaviour, and
"any_of", which adds the new proposed ORing features functionality.

This was originally proposed in the RFC at
http://lists.llvm.org/pipermail/llvm-dev/2020-February/139138.html

Changes to all current backends are mechanical to support the replaced
functionality, and are NFCI.

At this stage, it is illegal to combine features with ands and ors in a
single AssemblerCondDag. I suspect this case is sufficiently rare that
adding more complex changes to support it are unnecessary.

Differential Revision: https://reviews.llvm.org/D74338
2020-03-13 17:13:51 +00:00
..
FileCheck Improve error message of FileCheck when stdin is empty 2020-02-04 11:14:55 +00:00
KillTheDoctor Revert "Use InitLLVM to setup a pretty stack printer" 2019-11-25 21:06:56 -05:00
LLVMVisualizers
Misc
PerfectShuffle
Reviewing [find_interesting_reviews.py] Add git blame output cache 2019-12-23 12:08:16 +00:00
TableGen [TableGen] Support combining AssemblerPredicates with ORs 2020-03-13 17:13:51 +00:00
Target/ARM
UpdateTestChecks [Utils][x86] add an option to reduce scrubbing of shuffles with memops 2020-02-20 09:33:05 -05:00
benchmark Use std::foo_t rather than std::foo in LLVM. 2020-02-11 15:12:51 -08:00
bugpoint [NFC] Fix trivial typos in comments 2020-01-06 10:50:26 +00:00
count
crosstool
docker Continue removing llgo. 2020-02-10 10:33:58 -08:00
emacs [TableGen] Update editor modes for new keywords. 2020-01-14 13:39:00 +00:00
fpcmp
gdb-scripts Change to individual pretty printer classes, remove generic `make_printer`. 2020-03-11 15:04:03 +01:00
git-svn Continue removing llgo. 2020-02-10 10:33:58 -08:00
gn [gn build] Port 512767eb3f 2020-03-13 14:09:37 +00:00
jedit
kate [TableGen] Update editor modes for new keywords. 2020-01-14 13:39:00 +00:00
lint
lit Revert "Rework go bindings so that validation works fine" 2020-02-24 09:20:08 -08: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
llvm-locstats [llvm-locstats] Add the --compare option 2020-01-15 14:35:29 +01:00
not
release build_llvm_package.bat: Produce zip files in addition to the installers 2020-02-25 12:14:07 +01:00
sanitizers
testgen
textmate
unittest Use std::foo_t rather than std::foo in LLVM. 2020-02-11 15:12:51 -08:00
valgrind
vim [TableGen] Update editor modes for new keywords. 2020-01-14 13:39:00 +00:00
vscode Add some more vscode files 2020-03-05 19:31:28 -08:00
yaml-bench
DSAclean.py
DSAextract.py [Utils] Make some scripts directly executable 2020-02-28 13:39:54 +00:00
GenLibDeps.pl
GetSourceVersion
LLVMBuild.txt
UpdateCMakeLists.pl
abtest.py
add_argument_names.py IR: print value numbers for unnamed function arguments 2019-08-03 14:28:34 +00:00
bisect [utils] Fix incompatibility of bisect[-skip-count] with Python 3 2019-10-04 16:44:18 +00:00
bisect-skip-count [utils] Fix incompatibility of bisect[-skip-count] with Python 3 2019-10-04 16:44:18 +00:00
bugpoint_gisel_reducer.py
check-each-file
chunk-print-before-all.py [NFC] Fix minor python issues. 2020-02-28 14:17:43 -08:00
clang-parse-diagnostics-file
codegen-diff
collect_and_build_with_pgo.py
countloc.sh
create_ladder_graph.py [Utils] Make some scripts directly executable 2020-02-28 13:39:54 +00:00
demangle_tree.py
extract_symbols.py Use portable flag with nm in extract_symbols.py 2019-10-23 16:48:22 -04:00
extract_vplan.py
findmisopt
findoptdiff
findsym.pl
getsrcs.sh
indirect_calls.py
lldbDataFormatters.py Fix a null dereference in the LLDB data formatters. 2020-02-25 16:43:55 -08:00
llvm-compilers-check
llvm-gisel-cov.py [NFC] Fix minor python issues. 2020-02-28 14:17:43 -08:00
llvm-native-gxx
llvm.grm
llvmdo
llvmgrep
prepare-code-coverage-artifact.py
schedcover.py [Utils] Make some scripts directly executable 2020-02-28 13:39:54 +00:00
shuffle_fuzz.py
shuffle_select_fuzz_tester.py [Utils] Make some scripts directly executable 2020-02-28 13:39:54 +00:00
sort_includes.py
unicode-case-fold.py
update_analyze_test_checks.py [UpdateTestChecks] Change shebang from python to python3 2019-12-03 13:50:07 -08:00
update_cc_test_checks.py Fix line endings produced by update_cc_test_checks.py 2020-02-14 15:17:27 +00:00
update_llc_test_checks.py [Utils][x86] add an option to reduce scrubbing of shuffles with memops 2020-02-20 09:33:05 -05:00
update_mca_test_checks.py [UpdateTestChecks] Change shebang from python to python3 2019-12-03 13:50:07 -08:00
update_mir_test_checks.py [UpdateTestChecks] Change shebang from python to python3 2019-12-03 13:50:07 -08:00
update_test_checks.py [NFC] Fix spelling 2020-02-11 16:44:04 -06:00
wciia.py