- Dec 20, 2012
-
-
Akira Hatanaka authored
llvm-svn: 170660
-
Akira Hatanaka authored
Separate encoding information from the rest. llvm-svn: 170659
-
Akira Hatanaka authored
Separate encoding information from the rest. llvm-svn: 170657
-
Reed Kotler authored
these patches are tested a lot by test-suite but make check tests are forthcoming once the next few patches that complete this are committed. with the next few patches the pass rate for mips16 is near 100% llvm-svn: 170656
-
Akira Hatanaka authored
physical register $r1 to $r0. GNU disassembler recognizes an "or" instruction as a "move", and this change makes the disassembled code easier to read. Original patch by Reed Kotler. llvm-svn: 170655
-
Richard Smith authored
llvm-svn: 170654
-
Akira Hatanaka authored
the end. llvm-svn: 170651
-
Akira Hatanaka authored
information from the rest. llvm-svn: 170650
-
Akira Hatanaka authored
from the rest. llvm-svn: 170649
-
Akira Hatanaka authored
Separate encoding information from the rest. llvm-svn: 170648
-
Akira Hatanaka authored
information from the rest. llvm-svn: 170647
-
Akira Hatanaka authored
ArithLogicI as the instruction base classes. llvm-svn: 170642
-
NAKAMURA Takumi authored
llvm-svn: 170620
-
Jim Grosbach authored
MC disassembler clients (LLDB) are interested in querying if an instruction may affect control flow other than by virtue of being an explicit branch instruction. For example, instructions which write directly to the PC on some architectures. llvm-svn: 170610
-
- Dec 19, 2012
-
-
Tom Stellard authored
Unlike SGPRs VGPRs doesn't need to be aligned. Patch by: Christian König Reviewed-by:
Tom Stellard <thomas.stellard@amd.com> Tested-by:
Michel Dänzer <michel.daenzer@amd.com> Signed-off-by:
Christian König <deathsimple@vodafone.de> llvm-svn: 170593
-
Tom Stellard authored
Branch if we have enough instructions so that it makes sense. Also remove branches if they don't make sense. Patch by: Christian König Reviewed-by:
Tom Stellard <thomas.stellard@amd.com> Tested-by:
Michel Dänzer <michel.daenzer@amd.com> Signed-off-by:
Christian König <deathsimple@vodafone.de> llvm-svn: 170592
-
Tom Stellard authored
This patch replaces the control flow handling with a new pass which structurize the graph before transforming it to machine instruction. This has a couple of different advantages and currently fixes 20 piglit tests without a single regression. It is now a general purpose transformation that could be not only be used for SI/R6xx, but also for other hardware implementations that use a form of structurized control flow. v2: further cleanup, fixes and documentation Patch by: Christian König Signed-off-by:
Christian König <deathsimple@vodafone.de> Reviewed-by:
Tom Stellard <thomas.stellard@amd.com> Tested-by:
Michel Dänzer <michel.daenzer@amd.com> llvm-svn: 170591
-
Jakob Stoklund Olesen authored
Use the version that also takes an MF reference instead. It would technically be possible to extract an MF reference from the MI as MI->getParent()->getParent(), but that would not work for MIs that are not inserted into any basic block. Given the reasonably small number of places this constructor was used at all, I preferred the compile time check to a run time assertion. llvm-svn: 170588
-
Evan Cheng authored
((x & 0xff00) >> 8) << 2 to (x >> 6) & 0x3fc This is general goodness since it folds a left shift into the mask. However, the trailing zeros in the mask prevents the ARM backend from using the bit extraction instructions. And worse since the mask materialization may require an addition instruction. This comes up fairly frequently when the result of the bit twiddling is used as memory address. e.g. = ptr[(x & 0xFF0000) >> 16] We want to generate: ubfx r3, r1, #16, #8 ldr.w r3, [r0, r3, lsl #2] vs. mov.w r9, #1020 and.w r2, r9, r1, lsr #14 ldr r2, [r0, r2] Add a late ARM specific isel optimization to ARMDAGToDAGISel::PreprocessISelDAG(). It folds the left shift to the 'base + offset' address computation; change the mask to one which doesn't have trailing zeros and enable the use of ubfx. Note the optimization has to be done late since it's target specific and we don't want to change the DAG normalization. It's also fairly restrictive as shifter operands are not always free. It's only done for lsh 1 / 2. It's known to be free on some cpus and they are most common for address computation. This is a slight win for blowfish, rijndael, etc. rdar://12870177 llvm-svn: 170581
-
Roman Divacky authored
llvm-svn: 170578
-
Paul Redmond authored
When the least bit of C is greater than V, (x&C) must be greater than V if it is not zero, so the comparison can be simplified. Although this was suggested in Target/X86/README.txt, it benefits any architecture with a directly testable form of AND. Patch by Kevin Schoedel llvm-svn: 170576
-
Benjamin Kramer authored
There's probably a better expansion for those nodes than the default for altivec, but this is better than crashing. VSELECTs occur in loop vectorizer output. llvm-svn: 170551
-
Patrik Hagglund authored
MVTs, instead of EVTs. llvm-svn: 170537
-
Patrik Hagglund authored
EVTs. llvm-svn: 170535
-
Patrik Hagglund authored
of EVT. llvm-svn: 170532
-
NAKAMURA Takumi authored
llvm-svn: 170523
-
Elena Demikhovsky authored
llvm-svn: 170506
-
Bill Wendling authored
Rename the 'Attributes' class to 'Attribute'. It's going to represent a single attribute in the future. llvm-svn: 170502
-
Reed Kotler authored
llvm-svn: 170493
-
- Dec 18, 2012
-
-
Jakub Staszak authored
AVX2 before AVX. llvm-svn: 170464
-
Quentin Colombet authored
To not over constrain the scheduler for ARM in thumb mode, some optimizations for code size reduction, specific to ARM thumb, are blocked when they add a dependency (like write after read dependency). Disables this check when code size is the priority, i.e., code is compiled with -Oz. llvm-svn: 170462
-
Eli Bendersky authored
llvm-svn: 170438
-
Jakob Stoklund Olesen authored
instruction. This isn't strictly necessary at the moment because Thumb2SizeReduction also copies all MI flags from the old instruction to the new. However, a future patch will make that kind of direct flag tampering illegal. llvm-svn: 170395
-
Jakob Stoklund Olesen authored
Sadly, this costs us a perfectly good opportunity to use 'goto'. llvm-svn: 170385
-
- Dec 17, 2012
-
-
Chad Rosier authored
llvm-svn: 170379
-
Chad Rosier authored
checks are in place. Some minor cleanup as well. llvm-svn: 170360
-
Richard Osborne authored
llvm-svn: 170345
-
Tom Stellard authored
They seem to work fine. Patch by: Christian König Reviewed-by:
Tom Stellard <thomas.stellard@amd.com> Tested-by:
Michel Dänzer <michel.daenzer@amd.com> Signed-off-by:
Christian König <deathsimple@vodafone.de> llvm-svn: 170343
-
Tom Stellard authored
Patch by: Christian König Reviewed-by:
Tom Stellard <thomas.stellard@amd.com> Tested-by:
Michel Dänzer <michel.daenzer@amd.com> Signed-off-by:
Christian König <deathsimple@vodafone.de> llvm-svn: 170342
-
Tom Stellard authored
The Align parameter is a power of two, so 16 results in 64K alignment. Additional to that even 16 byte alignment doesn't make any sense, so just remove it. Patch by: Christian König Reviewed-by:
Tom Stellard <thomas.stellard@amd.com> Tested-by:
Michel Dänzer <michel.daenzer@amd.com> Signed-off-by:
Christian König <deathsimple@vodafone.de> llvm-svn: 170341
-