llvm-6502/utils
Jakob Stoklund Olesen 4ce25d5d69 Add a RegisterTuples class to Target.td and TableGen.
A RegisterTuples instance is used to synthesize super-registers by
zipping together lists of sub-registers. This is useful for generating
pseudo-registers representing register sequence constraints like 'two
consecutive GPRs', or 'an even-odd pair of floating point registers'.

The RegisterTuples def can be used in register set operations when
building register classes. That is the only way of accessing the
synthesized super-registers.

For example, the ARM QQ register class of pseudo-registers could have
been formed like this:

  // Form pairs Q0_Q1, Q2_Q3, ...
  def QQPairs : RegisterTuples<[qsub_0, qsub_1],
                               [(decimate QPR, 2),
                                (decimate (shl QPR, 1), 2)]>;

  def QQ : RegisterClass<..., (add QQPairs)>;

Similarly, pseudo-registers representing '3 consecutive D-regs with
wraparound' look like:

  // Form D0_D1_D2, D1_D2_D3, ..., D30_D31_D0, D31_D0_D1.
  def DSeqTriples : RegisterTuples<[dsub_0, dsub_1, dsub_2],
                                   [(rotl DPR, 0),
                                    (rotl DPR, 1),
                                    (rotl DPR, 2)]>;

TableGen automatically computes aliasing information for the synthesized
registers.

Register tuples are still somewhat experimental. We still need to see
how they interact with MC.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133407 91177308-0d34-0410-b5e6-96231b3b80d8
2011-06-20 02:50:54 +00:00
..
bugpoint
buildit
count
crosstool
emacs
FileCheck
FileUpdate
fpcmp
git
jedit
kate
KillTheDoctor
lint
lit Add support to lit for build mode requirements. e.g. 2011-06-16 01:33:35 +00:00
llvm-lit
Misc
not
PerfectShuffle In r131488 I misunderstood how VREV works. It splits the vector in half and splits each half. Therefore, the real problem was that we were using a VREV64 for a 4xi16, when we should have been using a VREV32. 2011-05-18 06:42:21 +00:00
release
TableGen Add a RegisterTuples class to Target.td and TableGen. 2011-06-20 02:50:54 +00:00
Target/ARM
unittest
valgrind The system suppression file should catch these, but since they *once again* are 2011-05-04 01:03:02 +00:00
vim
cgiplotNLT.pl
check-each-file
codegen-diff
countloc.sh
DSAclean.py
DSAextract.py
findmisopt
findoptdiff
findsym.pl
GenLibDeps.pl
GetRepositoryPath
GetSourceVersion
getsrcs.sh
importNLT.pl
llvm-native-gcc
llvm-native-gxx
llvm.grm Add a new function attribute, nonlazybind, which inhibits lazy-loading 2011-06-15 20:36:13 +00:00
llvmbuild
llvmdo
llvmgrep
Makefile
makellvm
NewNightlyTest.pl
NightlyTest.gnuplot
NightlyTestTemplate.html
NLT.schema
parseNLT.pl
plotNLT.pl
profile.pl Rename profile_rt.so to libprofile_rt.so under configure+make (it already was 2011-04-29 02:12:06 +00:00
show-diagnostics
test_debuginfo.pl
UpdateCMakeLists.pl
webNLT.pl