- Sep 13, 2013
-
-
Preston Gurd authored
Implements Instruction scheduler latencies for Silvermont, using latencies from the Intel Silvermont Optimization Guide. Auto detects SLM. Turns on post RA scheduler when generating code for SLM. llvm-svn: 190717
-
Quentin Colombet authored
By definition copies across register banks are not coalescable. Still, it may be possible to get rid of such a copy when the value is available in another register of the same register file. Consider the following example, where capital and lower letters denote different register file: b = copy A <-- cross-bank copy ... C = copy b <-- cross-bank copy This could have been optimized this way: b = copy A <-- cross-bank copy ... C = copy A <-- same-bank copy Note: b and C's definitions may be in different basic blocks. This patch adds a peephole optimization that looks through a chain of copies leading to a cross-bank copy and reuses a source that is on the same register file if available. This solution could also be used to get rid of some copies (e.g., A could have been used instead of C). However, we do not do so because: - It may over constrain the coloring of the source register for coalescing. - The register allocator may not be able to find a nice split point for the longer live-range, leading to more spill. <rdar://problem/14742333> llvm-svn: 190713
-
Benjamin Kramer authored
empty() doesn't actually empty out the container, making this a common typo. llvm-svn: 190708
-
Nuno Lopes authored
llvm-svn: 190696
-
Amaury de la Vieuville authored
Patch by Bradley Smith llvm-svn: 190694
-
Joey Gouly authored
to be more consistent. llvm-svn: 190692
-
Evgeniy Stepanov authored
Compiler part. llvm-svn: 190689
-
Daniel Sanders authored
svn 1.8.0 emits an additional line matching 'URL:' in its 'svn info' command ('Relative URL:'). Changed the grep to match only the intended line so that a valid SVNVersion.inc is generated. The problem doesnt occur with the svn version I'm using (1.7.5) but Tobias has confirmed that the change fixes the problem. See http://llvm.org/bugs/show_bug.cgi?id=17203 llvm-svn: 190685
-
Joey Gouly authored
Patch by Bradley Smith! llvm-svn: 190683
-
Amaury de la Vieuville authored
Patch by Artyom Skrobov! llvm-svn: 190679
-
Patrik Hagglund authored
Since r187209, which modified ltdl.m4, I was unable to execute AutoRegen.sh, getting: ../configure:10779: error: possibly undefined macro: AC_LTDL_FUNC_ARGZ This commit re-adds AC_LTDL_FUNC_ARGZ to ltdl.m4, as a quick fix. For me, this corresponds to the configure file currently checked in. (However, the ltdl library seems to be unused since r74924 in 2009, except for the use of the LTDL_SHLIB_EXT macro in bugpoint(?). Therefore, the right solution seems to try to get rid of the local ltdl.m4 file, specified by autoconf/README.TXT.) llvm-svn: 190677
-
Zoran Jovanovic authored
llvm-svn: 190676
-
Richard Sandiford authored
Just a clean-up, no behavioral change intended. llvm-svn: 190673
-
Richard Sandiford authored
E.g. "SRL %r2, 2; TMLL %r2, 1" => "TMLL %r2, 4". llvm-svn: 190672
-
Duncan Sands authored
disabled. llvm-svn: 190668
-
Tim Northover authored
Previously we modelled VPR128 and VPR64 as essentially identical register-classes containing V0-V31 (which had Q0-Q31 as "sub_alias" sub-registers). This model is starting to cause significant problems for code generation, particularly writing EXTRACT/INSERT_SUBREG patterns for converting between the two. The change here switches to classifying VPR64 & VPR128 as RegisterOperands, which are essentially aliases for RegisterClasses with different parsing and printing behaviour. This fits almost exactly with their real status (VPR128 == FPR128 printed strangely, VPR64 == FPR64 printed strangely). llvm-svn: 190665
-
Craig Topper authored
llvm-svn: 190659
-
Eric Christopher authored
versions of gold. This support is designed to allow gold to produce gdb_index sections similar to the accelerator tables and consumable by gdb. llvm-svn: 190649
-
Eric Christopher authored
llvm-svn: 190648
-
Vincent Lejeune authored
llvm-svn: 190645
-
Vincent Lejeune authored
llvm-svn: 190644
-
Vincent Lejeune authored
This move makes possible to correctly handle multiples instructions from a single pattern. llvm-svn: 190643
-
Chandler Carruth authored
llvm-svn: 190640
-
Hal Finkel authored
llvm-svn: 190637
-
Hal Finkel authored
When a structure is passed by value, and that structure contains a vector member, according to the PPC ABI, the structure will receive enhanced alignment (so that the vector within the structure will always be aligned). This should resolve PR16641. llvm-svn: 190636
-
Joe Abbey authored
Reviewed by Joe Abbey and Tobias Grosser Here is a patch that fixes decoding of CE_SELECT in BitcodeReader, along with a simple test case. The problem in the current code is that it generates but doesn't accept bitcode that uses vectors for the first element of a select in this context. llvm-svn: 190634
-
- Sep 12, 2013
-
-
Krzysztof Parzyszek authored
a volatile load, or a volatile store. llvm-svn: 190631
-
Hal Finkel authored
In fast-math mode sqrt(x) is calculated using the fast expansion of the reciprocal of the reciprocal sqrt expansion. The reciprocal and reciprocal sqrt expansions use the associated estimate instructions along with some Newton iterations. Unfortunately, as a result, sqrt(0) was being calculated as NaN, which is not correct. Now we explicitly return a result of zero if the input is zero. llvm-svn: 190624
-
Roman Divacky authored
FreeBSD kernel. llvm-svn: 190618
-
Filip Pizlo authored
global ThreadLocals, thereby getting rid of the load-time initialization of those objects and also getting rid of their destruction unless the LLVM client calls llvm_shutdown. llvm-svn: 190617
-
Ben Langmuir authored
Add basic assembly/disassembly support for the first Intel SHA instruction 'sha1rnds4'. Also includes feature flag, and test cases. Support for the remaining instructions will follow in a separate patch. llvm-svn: 190611
-
Hal Finkel authored
Use the new instruction deprecation feature to mark mftb (now replaced with mfspr) and dst (along with the other Altivec cache control instructions) as deprecated when targeting cores supporting at least ISA v2.03. llvm-svn: 190605
-
Joey Gouly authored
got lost during my iterations of review. Thanks to Hal for spotting it! llvm-svn: 190604
-
Joey Gouly authored
Thanks to Zonr Chang! llvm-svn: 190602
-
Elena Demikhovsky authored
llvm-svn: 190600
-
Elena Demikhovsky authored
undef constatnt for structure and test for these functions. done by Yuri Veselov (mailto:Yuri.Veselov@intel.com) llvm-svn: 190599
-
Joey Gouly authored
The 'Deprecated' class allows you to specify a SubtargetFeature that the instruction is deprecated on. The 'ComplexDeprecationPredicate' class allows you to define a custom predicate that is called to check for deprecation. For example: ComplexDeprecationPredicate<"MCR"> would mean you would have to define the following function: bool getMCRDeprecationInfo(MCInst &MI, MCSubtargetInfo &STI, std::string &Info) Which returns 'false' for not deprecated, and 'true' for deprecated and store the warning message in 'Info'. The MCTargetAsmParser constructor was chaned to take an extra argument of the MCInstrInfo class, so out-of-tree targets will need to be changed. llvm-svn: 190598
-
Elena Demikhovsky authored
Added parsing of mask register and "zeroing" semantic, like {%k1} {z}. llvm-svn: 190595
-
Alexey Samsonov authored
llvm-svn: 190591
-
Hal Finkel authored
Aggressive anti-dependency breaking is enabled by default for all PPC cores. This provides a general speedup on the P7 and other platforms (among other factors, the instruction group formation for the non-embedded PPC cores is done during post-RA scheduling). In order to do this safely, the incompatibility between uses of the MFOCRF instruction and anti-dependency breaking are resolved by marking MFOCRF with hasExtraSrcRegAllocReq. As noted in the removed FIXME, the problem was that MFOCRF's output is sensitive to the identify of the source register, and always paired with a shift to undo this effect. Because anti-dependency breaking is unaware of this hidden dependency of the shift amount on the source register of the MFOCRF instruction, changing that register must be inhibited. Two test cases were adjusted: The SjLj test was made more insensitive to register choices and scheduling; the saveCR test disabled anti-dependency breaking because part of what it is testing is proper register reuse. llvm-svn: 190587
-