- Nov 13, 2013
-
-
Zoran Jovanovic authored
llvm-svn: 194569
-
Robert Lytton authored
llvm-svn: 194564
-
Vladimir Medic authored
This patch fixes a bug in floating point operands parsing, when instruction alias uses default register operand. llvm-svn: 194562
-
NAKAMURA Takumi authored
Also, prune <stdlib.h>, seems stray. llvm-svn: 194557
-
Reed Kotler authored
specifically about the .space directive. This allows us to force large blocks of code to appear in test cases for things like constant islands without having to make giant test cases to force things like long branches to take effect. llvm-svn: 194555
-
Matt Arsenault authored
llvm-svn: 194547
-
Juergen Ributzka authored
This patch reapplies r193676 with an additional fix for the Hexagon backend. The SystemZ backend has already been fixed by r194148. The Type Legalizer recognizes that VSELECT needs to be split, because the type is to wide for the given target. The same does not always apply to SETCC, because less space is required to encode the result of a comparison. As a result VSELECT is split and SETCC is unrolled into scalar comparisons. This commit fixes the issue by checking for VSELECT-SETCC patterns in the DAG Combiner. If a matching pattern is found, then the result mask of SETCC is promoted to the expected vector mask type for the given target. Now the type legalizer will split both VSELECT and SETCC. This allows the following X86 DAG Combine code to sucessfully detect the MIN/MAX pattern. This fixes PR16695, PR17002, and <rdar://problem/14594431>. Reviewed by Nadav llvm-svn: 194542
-
Rafael Espindola authored
llvm-svn: 194530
-
- Nov 12, 2013
-
-
Andrew Trick authored
I still don't know how to refer to the fixed operands symbolically. I plan to look into it. llvm-svn: 194529
-
Akira Hatanaka authored
argument was not being passed in $f14. llvm-svn: 194522
-
Eric Christopher authored
llvm-svn: 194515
-
Tim Northover authored
The system LDM and STM instructions can't usually writeback to the base register. The one exception is when an LDM is actually an exception-return (i.e. contains PC in the register list). (There's already a test that "ldm sp!, {r0-r3, pc}^" works, which is why there is no positive test). rdar://problem/15223374 llvm-svn: 194512
-
Akira Hatanaka authored
llvm-svn: 194511
-
Akira Hatanaka authored
llvm-svn: 194510
-
Chad Rosier authored
copy in MC layer. Added the MC layer tests. Fixed triple setting in test cases. Patch by Ana Pazos <apazos@codeaurora.org>. llvm-svn: 194501
-
Roman Divacky authored
llvm-svn: 194500
-
Andrew Trick authored
We already know how to fold a reload from a frameindex without analyzing the load instruction. Generalize this to handle any frameindex load. This streamlines the logic for rematerializing loads from stack arguments. As a side effect, it allows stackmaps to record a stack argument location without spilling it. Verified no effect on codegen for llvm test-suite. llvm-svn: 194497
-
Vincent Lejeune authored
llvm-svn: 194484
-
Daniel Sanders authored
Like GCC, this re-uses the 'f' constraint and a new 'w' print-modifier: asm ("ldi.w %w0, 1", "=f"(result)); Unlike GCC, the 'w' print-modifer is not _required_ to produce the intended output. This is a consequence of differences in the internal handling of the registers in each compiler. To be source-compatible between the compilers, users must use the 'w' print-modifier. MSA registers (including control registers) are supported in clobber lists. llvm-svn: 194476
-
Daniel Sanders authored
llvm-svn: 194472
-
Daniel Sanders authored
llvm-svn: 194471
-
Bradley Smith authored
llvm-svn: 194470
-
Daniel Sanders authored
[mips][msa] Added support for matching bset, bseti, bneg, and bnegi from normal IR (i.e. not intrinsics) llvm-svn: 194469
-
Robert Lytton authored
llvm-svn: 194466
-
Robert Lytton authored
ATOMIC_FENCE is lowered to a compiler barrier which is codegen only. There is no need to emit an instructions since the XCore provides sequential consistency. Original patch by Richard Osborne llvm-svn: 194464
-
Robert Lytton authored
llvm-svn: 194463
-
Matt Arsenault authored
Print the range of registers used with a single letter prefix. This better matches what the shader compiler produces and is overall less obnoxious than concatenating all of the subregister names together. Instead of SGPR0, it will print s0. Instead of SGPR0_SGPR1, it will print s[0:1] and so on. There doesn't appear to be a straightforward way to get the actual register info in the InstPrinter, so this parses the generated name to print with the new syntax. The required test changes are pretty nasty, and register matching regexes are now worse. Since there isn't a way to add to a variable in FileCheck, some of the tests now don't check the exact number of registers used, but I don't think that will be a real problem. llvm-svn: 194443
-
Reed Kotler authored
This has no material effect at this time since we don't have a direct object emitter for mips16 and the assembler can't tell them apart. I place a comment "16 bit inst" for those so that I can tell them apart in the output. The constant island pass has only been minimally changed to allow this. More complete branch work is forthcoming but this is the first step. llvm-svn: 194442
-
Lang Hames authored
X86AsmPrinter::EmitInstruction, rather than X86MCInstLower::Lower. The aim is to improve the reusability of the X86MCInstLower class by making it more function-like. The X86::MORESTACK_RET_RESTORE_R10 pseudo broke the function model by emitting an extra instruction to the MCStreamer attached to the AsmPrinter. The patch should have no impact on generated code. llvm-svn: 194431
-
- Nov 11, 2013
-
-
Andrew Trick authored
Fixes <rdar://15432754> [JS] Assertion: "Folded a def to a non-store!" The primary purpose of anyregcc is to prevent a patchpoint's call arguments and return value from being spilled. They must be available in a register, although the calling convention does not pin the register. It's up to the front end to avoid using this convention for calls with more arguments than allocatable registers. llvm-svn: 194428
-
Vincent Lejeune authored
llvm-svn: 194425
-
Akira Hatanaka authored
the floating point register mode. llvm-svn: 194423
-
Artyom Skrobov authored
llvm-svn: 194416
-
Justin Holewinski authored
llvm-svn: 194410
-
Justin Holewinski authored
llvm-svn: 194409
-
Chad Rosier authored
source operands, a vector, an element to insert, and a shift amount. llvm-svn: 194406
-
Chad Rosier authored
llvm-svn: 194394
-
Hal Finkel authored
On non-Darwin PPC systems, we currently strip off the register name prefix prior to instruction printing. So instead of something like this: mr r3, r4 we print this: mr 3, 4 The first form is the default on Darwin, and is understood by binutils, but not yet understood by our integrated assembler. Once our integrated-as understands full register names as well, this temporary option will be replaced by tying this functionality to the verbose-asm option. The numeric-only form is compatible with legacy assemblers and tools, and is also gcc's default on most PPC systems. On the other hand, it is harder to read, and there are some analysis tools that expect full register names. llvm-svn: 194384
-
Justin Holewinski authored
This causes issues with virtual registers. We will likely need to fix TailDuplicate in the future, or introduce a new version that plays nicely with vregs. llvm-svn: 194373
-
Tim Northover authored
Instructions taking a vector list (e.g. "ld2 {v0.2d, v1.d2}, [x0]") need a special register-class to deal with the constraints, and C++ code to support selection. However, that C++ code can be made reasonably uniform to simplify the selection process. Hence this patch. No functionality change, so no tests. llvm-svn: 194361
-