- Jun 01, 2012
-
-
Stepan Dyatkovskiy authored
IntegersSubset devided into IntegersSubsetGeneric and into IntegersSubset itself. The first has no references to ConstantInt and works with IntItem only. IntegersSubsetMapping also made generic. Here added second template parameter "IntegersSubsetTy" that allows to use on of two IntegersSubset types described below. llvm-svn: 157815
-
Chris Lattner authored
llvm-svn: 157813
-
Stepan Dyatkovskiy authored
IntItem cleanup. IntItemBase, IntItemConstantIntImp and IntItem merged into IntItem. All arithmetic operators was propogated from APInt. Also added comparison operators <,>,<=,>=. Currently you will find set of macros that propogates operators from APInt to IntItem in the beginning of IntegerSubset. Note that THESE MACROS WILL REMOVED after all passes will case-ranges compatible. Also note that these macros much smaller pain that something like this: if (V->getValue().ugt(AnotherV->getValue()) { ... } These changes made IntItem full featured integer object. It allows to make IntegerSubset class generic (move out all ConstantInt references inside and add unit-tests) in next commits. llvm-svn: 157810
-
Craig Topper authored
llvm-svn: 157805
-
Craig Topper authored
Remove fadd(fmul) patterns for FMA3. This needs to be implemented by paying attention to FP_CONTRACT and matching @llvm.fma which is not available yet. This will allow us to enablle intrinsic use at least though. llvm-svn: 157804
-
Craig Topper authored
llvm-svn: 157802
-
Craig Topper authored
llvm-svn: 157801
-
Chris Lattner authored
in multiple-return value scenarios, like what happens on X86-64 when returning small structs. llvm-svn: 157800
-
Craig Topper authored
llvm-svn: 157799
-
Chris Lattner authored
types, as well as int<->ptr casts. This allows us to tailcall functions with some trivial casts between the call and return (i.e. because the return types disagree). llvm-svn: 157798
-
Chris Lattner authored
llvm-svn: 157796
-
Manman Ren authored
We handle struct byval by inserting a pseudo op, which will be expanded to a loop at ExpandISelPseudos. A separate patch for clang will be submitted to enable struct byval. rdar://9877866 llvm-svn: 157793
-
Michael J. Spencer authored
llvm-svn: 157788
-
Eric Christopher authored
Part of rdar://11570854 llvm-svn: 157786
-
Chad Rosier authored
llvm-svn: 157783
-
Nuno Lopes authored
disabled by default for now; we can discusse the default value (& name) later llvm-svn: 157777
-
Nuno Lopes authored
- compute size & offset at the same time. The side-effects of this are that we now support negative GEPs. It's now approaching a phase that it can be reused by other passes (e.g., lowering of the objectsize intrinsic) - use APInt throughout to handle wrap-arounds - add support for PHI instrumentation - add a cache (required for recursive PHIs anyway) - remove hoisting support for now, since it was wrong in a few cases sorry for the churn here.. tests will follow soon. llvm-svn: 157775
-
- May 31, 2012
-
-
Jakob Stoklund Olesen authored
Patch by Yiannis Tsiouris! llvm-svn: 157757
-
Manman Ren authored
This patch will optimize the following movq %rdi, %rax subq %rsi, %rax cmovsq %rsi, %rdi movq %rdi, %rax to cmpq %rsi, %rdi cmovsq %rsi, %rdi movq %rdi, %rax Perform this optimization if the actual result of SUB is not used. rdar: 11540023 llvm-svn: 157755
-
Jakob Stoklund Olesen authored
Reg-units are named after their root registers, and most units have a single root, so they simply print as 'AL', 'XMM0', etc. The rare dual root reg-units print as FPSCR~FPSCR_NZCV, FP0~ST7, ... The printing piggybacks on the existing register name tables, so no extra const data space is required. llvm-svn: 157754
-
Joel Jones authored
llvm-svn: 157752
-
Rafael Espindola authored
Also make the checks stronger and test that we reject ranges that overlap a previous wrapped range. llvm-svn: 157749
-
Benjamin Kramer authored
It was renamed in gcc/gas a while ago and causes all kinds of confusion because it was named differently in llvm and clang. llvm-svn: 157745
-
Rafael Espindola authored
be non contiguous, non overlapping and sorted by the lower end. While this is technically a backward incompatibility, every frontent currently produces range metadata with a single interval and we don't have any pass that merges intervals yet, so no existing bitcode files should be rejected by this. llvm-svn: 157741
-
Elena Demikhovsky authored
I disabled FMA3 autodetection, since the result may differ from expected for some benchmarks. I added tests for GodeGen and intrinsics. I did not change llvm.fma.f32/64 - it may be done later. llvm-svn: 157737
-
Duncan Sands authored
Carlo Alberto Ferraris. llvm-svn: 157736
-
Craig Topper authored
llvm-svn: 157731
-
Akira Hatanaka authored
CPU16RegsRegClass and CPURARegRegClass available. Add definition of mips16 jalr instruction. Patch by Reed Kotler. llvm-svn: 157730
-
Eric Christopher authored
llvm-svn: 157726
-
Jakob Stoklund Olesen authored
This code is covered by test/CodeGen/ARM/arm-modifier.ll. llvm-svn: 157720
-
Jakob Stoklund Olesen authored
Switch to MCSuperRegIterator while we're there. llvm-svn: 157717
-
- May 30, 2012
-
-
Jakob Stoklund Olesen authored
It helps compile exotic inline asm. In the test case, normal GR32 virtual registers use up eax-edx so the final GR32_ABCD live range has no registers left. Since all the live ranges were tiny, we had no way of prioritizing the smaller register class. This patch allows tiny unspillable live ranges to be evicted by tiny unspillable live ranges from a smaller register class. <rdar://problem/11542429> llvm-svn: 157715
-
Eric Christopher authored
Patch by Jack Carter. llvm-svn: 157709
-
Owen Anderson authored
Switch the canonical FMA term operand order to match both the comment I wrote and the usual LLVM convention. llvm-svn: 157708
-
Owen Anderson authored
llvm-svn: 157707
-
Chad Rosier authored
llvm-svn: 157706
-
Benjamin Kramer authored
llvm-svn: 157704
-
Jakob Stoklund Olesen authored
It is better to address sub-registers directly by name instead of relying on their position in the sub-register list. llvm-svn: 157703
-
Jakob Stoklund Olesen authored
An empty list is not represented as a null pointer. Let TRI do its own shortcuts. llvm-svn: 157702
-
Benjamin Kramer authored
This also required making recursive simplifications until nothing changes or a hard limit (currently 3) is hit. With the simplification in place indvars can canonicalize loops of the form for (unsigned i = 0; i < a-b; ++i) into for (unsigned i = 0; i != a-b; ++i) which used to fail because SCEV created a weird umax expr for the backedge taken count. llvm-svn: 157701
-