- Sep 13, 2012
-
-
Jakob Stoklund Olesen authored
The patch caused "Wrong topological sorting" assertions. llvm-svn: 163810
-
Silviu Baranga authored
llvm-svn: 163803
-
Craig Topper authored
Add a new compression type to ModRM table that detects when the memory modRM byte represent 8 instructions and the reg modRM byte represents up to 64 instructions. Reduces modRM table from 43k entreis to 25k entries. Based on a patch from Manman Ren. llvm-svn: 163774
-
Jakob Stoklund Olesen authored
We don't have enough GR64_TC registers when calling a varargs function with 6 arguments. Since %al holds the number of vector registers used, only %r11 is available as a scratch register. This means that addressing modes using both base and index registers can't be folded into TCRETURNmi64. <rdar://problem/12282281> llvm-svn: 163761
-
Akira Hatanaka authored
1. Remove RA from list of allocatable registers 2. Enable d,y,r constraint inline assembly instructions Patch by Reed Kotler. llvm-svn: 163753
-
- Sep 12, 2012
-
-
Michael Liao authored
- BlockAddress has no support of BA + offset form and there is no way to propagate that offset into machine operand; - Add BA + offset support and a new interface 'getTargetBlockAddress' to simplify target block address forming; - All targets are modified to use new interface and X86 backend is enhanced to support BA + offset addressing. llvm-svn: 163743
-
Chad Rosier authored
llvm-svn: 163729
-
Dmitri Gribenko authored
llvm-svn: 163721
-
Roman Divacky authored
was fixed in r163713. llvm-svn: 163715
-
Roman Divacky authored
This patch corrects logic in PPCFrameLowering for save and restore of nonvolatile condition register fields across calls under the SVR4 ABIs. * With the 64-bit ABI, the save location is at a fixed offset of 8 from the stack pointer. The frame pointer cannot be used to access this portion of the stack frame since the distance from the frame pointer may change with alloca calls. * With the 32-bit ABI, the save location is just below the general register save area, and is accessed via the frame pointer like the rest of the save areas. This is an optional slot, so it must only be created if any of CR2, CR3, and CR4 were modified. * For both ABIs, save/restore logic is generated only if one of the nonvolatile CR fields were modified. I also took this opportunity to clean up an extra FIXME in PPCFrameLowering.h. Save area offsets for 32-bit GPRs are meaningless for the 64-bit ABI, so I removed them for correctness and efficiency. Fixes PR13708 and partially also PR13623. It lets us enable exception handling on PPC64. Patch by William J. Schmidt! llvm-svn: 163713
-
Roman Divacky authored
llvm-svn: 163710
-
Craig Topper authored
llvm-svn: 163682
-
Chad Rosier authored
llvm-svn: 163654
-
Manman Ren authored
"#if !defined(NDEBUG) || defined(LLVM_ENABLE_DUMP)" No functional change. Update r163339. llvm-svn: 163653
-
- Sep 11, 2012
-
-
Chad Rosier authored
llvm-svn: 163649
-
Chad Rosier authored
llvm-svn: 163648
-
Jakob Stoklund Olesen authored
Sub-register lane masks are bitmasks that can be used to determine if two sub-registers of a virtual register will overlap. For example, ARM's ssub0 and ssub1 sub-register indices don't overlap each other, but both overlap dsub0 and qsub0. The lane masks will be accurate on most targets, but on targets that use sub-register indexes in an irregular way, the masks may conservatively report that two sub-register indices overlap when the eventually allocated physregs don't. Irregular register banks also mean that the bits in a lane mask can't be mapped onto register units, but the concept is similar. llvm-svn: 163630
-
Craig Topper authored
llvm-svn: 163596
-
Craig Topper authored
llvm-svn: 163594
-
Andrew Trick authored
The Hexagon target decided to use a lot of functionality from the target-independent scheduler. That's fine, and other targets should be able to do the same. This reorg and API update makes that easy. For the record, ScheduleDAGMI was not meant to be subclassed. Instead, new scheduling algorithms should be able to implement MachineSchedStrategy and be done. But if need be, it's nice to be able to extend ScheduleDAGMI, so I also made that easier. The target scheduler is somewhat more apt to break that way though. llvm-svn: 163580
-
Chad Rosier authored
llvm-svn: 163561
-
Chad Rosier authored
llvm-svn: 163557
-
Chad Rosier authored
llvm-svn: 163556
-
- Sep 10, 2012
-
-
Dmitri Gribenko authored
llvm-svn: 163547
-
Chad Rosier authored
and update the printOperand() function accordingly. llvm-svn: 163544
-
Chad Rosier authored
llvm-svn: 163542
-
Jakob Stoklund Olesen authored
The ARM backend can eliminate cmp instructions by reusing flags from a nearby sub instruction with similar arguments. Don't do that if the sub is predicated - the flags are not written unconditionally. <rdar://problem/12263428> llvm-svn: 163535
-
Michael Liao authored
- Fix an remaining issue of PR11674 as well llvm-svn: 163528
-
Sergei Larin authored
Improve AQ instruction selection in the Hexagon MI scheduler. llvm-svn: 163523
-
Michael Liao authored
- If a boolean value is generated from CMOV and tested as boolean value, simplify the use of test result by referencing the original condition. RDRAND intrinisc is one of such cases. llvm-svn: 163516
-
Elena Demikhovsky authored
The VPSHUFB 256-bit instruction may be generated when one of input vector is undefined or zeroinitializer. I've added the "zeroinitializer" case in this patch. llvm-svn: 163506
-
Benjamin Kramer authored
llvm-svn: 163504
-
Nick Lewycky authored
llvm-svn: 163484
-
- Sep 08, 2012
-
-
Craig Topper authored
llvm-svn: 163473
-
Craig Topper authored
llvm-svn: 163463
-
Craig Topper authored
llvm-svn: 163461
-
Craig Topper authored
Set operation action for FFLOOR to Expand for all vector types for X86. Set FFLOOR of v4f32 to Expand for ARM. v2f64 was already correct. llvm-svn: 163458
-
- Sep 07, 2012
-
-
Benjamin Kramer authored
For some reason .lcomm uses byte alignment and .comm log2 alignment so we can't use the same setting for both. Fix this by reintroducing the LCOMM enum. I verified this against mingw's gcc. llvm-svn: 163420
-
Jakob Stoklund Olesen authored
The 'select' transformations apply to all ARM architectures and don't require hasV6T2Ops. llvm-svn: 163396
-
Benjamin Kramer authored
- Darwin lied about not supporting .lcomm and turned it into zerofill in the asm parser. Push the zerofill-conversion down into macho-specific code. - This makes the tri-state LCOMMType enum superfluous, there are no targets without .lcomm. - Do proper error reporting when trying to use .lcomm with alignment on a target that doesn't support it. - .comm and .lcomm alignment was parsed in bytes on COFF, should be power of 2. - Fixes PR13755 (.lcomm crashes on ELF). llvm-svn: 163395
-