- Oct 06, 2011
-
-
Evan Cheng authored
llvm-svn: 141269
-
Peter Collingbourne authored
llvm-svn: 141266
-
Bill Wendling authored
to an infinite loop because of the def-use chains. Also use a frame load instead of store for the LD instruction. llvm-svn: 141263
-
Jakob Stoklund Olesen authored
This restores my karma after I added TRI::getSubClassWithSubReg(). Register constraints are applied 'backwards'. Starting from the register class required by an instruction operand, the correct question is: 'How can I constrain the super-register register class so all its sub-registers satisfy the instruction constraint?' The getMatchingSuperRegClass() hook answers that. We never need to go 'forwards': Starting from a super-register register class, what register class are the sub-registers in? The getSubRegisterRegClass() hook did that. llvm-svn: 141258
-
Cameron Zwarich authored
llvm-svn: 141248
-
Cameron Zwarich authored
merging an lsl #2 that has multiple uses on A9. This shift is free, so there is no problem merging it in multiple places. Other unprofitable shifts will not be merged. llvm-svn: 141247
-
Bill Wendling authored
number (18) for the proper addressing mode. llvm-svn: 141245
-
Bill Wendling authored
llvm-svn: 141244
-
David Greene authored
Fix the argument passed in the multidef example. llvm-svn: 141243
-
David Greene authored
For consistency, prefix multiclass template arg names with the multiclass name followed by "::" to avoid name clashes among multiclass arguments and other entities in the multiclass. llvm-svn: 141239
-
David Greene authored
Add vim highlighting support for multidefs. llvm-svn: 141238
-
David Greene authored
Add Emacs font-lock keyword support for multidefs. llvm-svn: 141237
-
David Greene authored
Provide documentation for multidefs, explaining in detail how they work. llvm-svn: 141236
-
David Greene authored
Update the MultiPat.td test to create some defs via multidefs. llvm-svn: 141235
-
David Greene authored
Add a simple test for multidefs. llvm-svn: 141234
-
David Greene authored
Process each multidef declared in a multiclass. Iterate through the list and instantiate a def in the multiclass for each item, resolving the list item to the temporary iterator (possibly) used in the multidef ObjectBody. We then process each generated def in the normal way. llvm-svn: 141233
-
David Greene authored
Add parser support to recognize multidefs. No processing on the multidef is done at this point. The grammar is: MultiDef = MULTIDEF ObjectName < Value, Declaration, Value > ObjectBody The first Value must be resolveable to a list and the second Value must be resolveable to an integer. The Declaration is a temporary value used as an iterator to refer to list items during processing. It may be passed into the ObjectBody where it will be substituted with the list value used to instantiate each def. llvm-svn: 141232
-
David Greene authored
Add keyword support for multidefs. llvm-svn: 141231
-
David Greene authored
Add a set of data structures and members analogous to those used for multiclass defs. These will represent a new kind of multiclass def: a multidef. The idea behind the multidef is to process a list of items and create a def record for each one inside the enclosing multiclass. This allows the user to dynamically create a set of defs based on the contents of a list. llvm-svn: 141230
-
David Greene authored
Move the code to instantiate a multiclass def, bind its arguments and resolve its members into three helper functions. These will be reused to support a new kind of multiclass def: a multidef. llvm-svn: 141229
-
Eli Friedman authored
While I'm here, fix the related issue with strncmp, add some actual tests for strcmp and strncmp, and start using StringRef::compare for constant folding instead of using strcmp/strncmp so that the optimized IR isn't dependent on the host's implementation of strcmp. llvm-svn: 141227
-
Bill Wendling authored
site. llvm-svn: 141226
-
Bill Wendling authored
to the landing pad. This will be used by the back-end to generate the jump tables for dispatching the arriving longjmp in sjlj eh. llvm-svn: 141224
-
Bill Wendling authored
llvm-svn: 141221
-
Jakob Stoklund Olesen authored
PhysReg operands are not allowed to have sub-register indices at all. For virtual registers with sub-reg indices, check that all registers in the register class support the sub-reg index. llvm-svn: 141220
-
Andrew Trick authored
llvm-svn: 141219
-
Bill Wendling authored
llvm-svn: 141218
-
- Oct 05, 2011
-
-
Jakob Stoklund Olesen authored
llvm-svn: 141214
-
Jim Grosbach authored
Just pull the instruction name, but don't change the order of anything else. That keeps --debug happy and non-crashing, but doesn't change how the worklist gets built. llvm-svn: 141210
-
Jim Grosbach authored
llvm-svn: 141209
-
Jakob Stoklund Olesen authored
EXTRACT_SUBREG is emitted as %dst = COPY %src:sub, so there is no need to constrain the %dst register class. RegisterCoalescer will apply the necessary constraints if it decides to eliminate the COPY. The %src register class does need to be constrained to something with the right sub-registers, though. This is currently done manually with COPY_TO_REGCLASS nodes. They can possibly be removed after this patch. llvm-svn: 141207
-
Jakob Stoklund Olesen authored
There are fewer registers with sub_8bit sub-registers in 32-bit mode than in 64-bit mode. In 32-bit mode, sub_8bit behaves the same as sub_8bit_hi. llvm-svn: 141206
-
Rafael Espindola authored
fixes PR11038, but there are still some cleanups to be done. llvm-svn: 141204
-
Jim Grosbach authored
When updating the worklist for InstCombine, the Add/AddUsersToWorklist functions may access the instruction(s) being added, for debug output for example. If the instructions aren't yet added to the basic block, this can result in a crash. Finish the instruction transformation before adjusting the worklist instead. rdar://10238555 llvm-svn: 141203
-
Justin Holewinski authored
llvm-svn: 141199
-
Jakob Stoklund Olesen authored
The register class created by INSERT_SUBREG and SUBREG_TO_REG must be legal and support the SubIdx sub-registers. The new getSubClassWithSubReg() hook can compute that. This may create INSERT_SUBREG instructions defining a larger register class than the sub-register being inserted. That is OK, RegisterCoalescer will constrain the register class as needed when it eliminates the INSERT_SUBREG instructions. llvm-svn: 141198
-
Akira Hatanaka authored
llvm-svn: 141197
-
Akira Hatanaka authored
llvm-svn: 141196
-
Dan Gohman authored
llvm-svn: 141195
-
Akira Hatanaka authored
llvm-svn: 141194
-