- Sep 22, 2013
-
-
Venkatraman Govindaraju authored
[Sparc] Make SPARC instructions' encoding well defined such that TableGen can automatically generate code emitter. llvm-svn: 191168
-
Venkatraman Govindaraju authored
[Sparc] Clean up MOVcc instructions so that TableGen can encode them correctly. No functionality change intended. llvm-svn: 191167
-
Venkatraman Govindaraju authored
[Sparc] Clean up branch instructions, so that TableGen can encode branch conditions as well. No functionality change intended. llvm-svn: 191166
-
Tim Northover authored
Previously, the DAGISel function WalkChainUsers was spotting that it had entered already-selected territory by whether a node was a MachineNode (amongst other things). Since it's fairly common practice to insert MachineNodes during ISelLowering, this was not the correct check. Looking around, it seems that other nodes get their NodeId set to -1 upon selection, so this makes sure the same thing happens to all MachineNodes and uses that characteristic to determine whether we should stop looking for a loop during selection. This should fix PR15840. llvm-svn: 191165
-
Venkatraman Govindaraju authored
llvm-svn: 191164
-
David Majnemer authored
Summary: LLVM would crash when trying to come up with a relocation type for assembly like: movabsq $V@TPOFF, %rax Instead, we say the relocation type is R_X86_64_TPOFF64. Fixes PR17274. Reviewers: dblaikie, nrieck, rafael CC: llvm-commits Differential Revision: http://llvm-reviews.chandlerc.com/D1717 llvm-svn: 191163
-
Venkatraman Govindaraju authored
llvm-svn: 191160
-
Venkatraman Govindaraju authored
llvm-svn: 191158
-
Hal Finkel authored
Pre-increment loads are microcoded on the A2, and the address increment occurs only after the load completes. As a result, the latency of the GPR address update is an additional 2 cycles on top of the load latency. llvm-svn: 191156
-
Venkatraman Govindaraju authored
llvm-svn: 191154
-
- Sep 21, 2013
-
-
Juergen Ributzka authored
This reverts commit r191130. llvm-svn: 191138
-
Craig Topper authored
llvm-svn: 191136
-
Juergen Ributzka authored
llvm-svn: 191133
-
Juergen Ributzka authored
In AVX 256bit vectors are valid vectors and therefore the Type Legalizer doesn't split the VSELECT and SETCC nodes. AVX only supports MIN/MAX on 128bit vectors and this fix enables vector splitting for this special case in the X86 DAG Combiner. This fix is related to PR16695, PR17002, and <rdar://problem/14594431>. llvm-svn: 191131
-
Juergen Ributzka authored
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 for the given target. This mask has usually te same size as the VSELECT return type (except for Intel KNL). 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>. llvm-svn: 191130
-
Reed Kotler authored
llvm-svn: 191125
-
- Sep 20, 2013
-
-
Akira Hatanaka authored
I cannot think of a test case that reliably triggers this bug. llvm-svn: 191109
-
Craig Topper authored
llvm-svn: 191073
-
Andrew Trick authored
The global registry is used to allow command line override of the scheduler selection, but does not work well as the normal selection API. For example, the same LLVM process should be able to target multiple targets or subtargets. llvm-svn: 191071
-
Richard Mitton authored
llvm-svn: 191052
-
- Sep 19, 2013
-
-
Yi Jiang authored
llvm-svn: 191021
-
Justin Holewinski authored
llvm-svn: 190997
-
Amara Emerson authored
llvm-svn: 190996
-
Tim Northover authored
When selecting the DAG (add (WrapperRIP ...), (FrameIndex ...)), X86 code had spotted the FrameIndex possibility and was working out whether it could fold the WrapperRIP into this. The test for forming a %rip version is notionally whether we already have a base or index register (%rip precludes both), but we were forgetting to account for the register that would be inserted later to access the frame. rdar://problem/15024520 llvm-svn: 190995
-
Reed Kotler authored
1) make sure that the first two instructions of the sequence cannot separate from each other. The linker requires that they be sequential. If they get separated, it can still work but it will not work in all cases because the first of the instructions mostly involves the hi part of the pc relative offset and that part changes slowly. You would have to be at the right boundary for this to matter. 2) make sure that this sequence begins on a longword boundary. There appears to be a bug in binutils which makes some of these calculations get messed up if the instruction sequence does not begin on a longword boundary. This is being investigated with the appropriate binutils folks. llvm-svn: 190966
-
- Sep 18, 2013
-
-
Chandler Carruth authored
-Wunused-private-field with Clang. llvm-svn: 190941
-
NAKAMURA Takumi authored
llvm-svn: 190937
-
Robert Lytton authored
XCore target: Add XCoreTargetTransformInfo This is where getNumberOfRegisters() resides, which in turn returns the number of vector registers (=0). llvm-svn: 190936
-
Richard Sandiford authored
For some reason I never got around to adding these at the same time as the signed versions. No idea why. I'm not sure whether this SystemZII::BranchC* stuff is useful, or whether it should just be replaced with an "is normal" flag. I'll leave that for later though. There are some boundary conditions that can be tweaked, such as preferring unsigned comparisons for equality with [128, 256), and "<= 255" over "< 256", but again I'll leave those for a separate patch. llvm-svn: 190930
-
Joey Gouly authored
Patch by Bradley Smith! llvm-svn: 190928
-
Craig Topper authored
Prevent extra calls to ToggleFeature for Feature64Bit and FeatureCMOV if they've already been enabled. The extra call ends up clearing the bit in FeatureBits since its a 'toggle'. Can't prove that anything was broken because of this since I don't think the FeatureBits for these are used. llvm-svn: 190920
-
Craig Topper authored
Fix X86 subtarget to not overwrite the autodetected features by calling InitMCProcessorInfo right after detecting them. Instead add a new function that only updates the scheduling model and call that. llvm-svn: 190919
-
Craig Topper authored
llvm-svn: 190916
-
Reid Kleckner authored
Summary: We indicate that the object files are safe by emitting a @feat.00 absolute address symbol. The address is presumably interpreted as a bitfield of features that the compiler would like to enable. Bit 0 is documented in the PE COFF spec to opt in to "registered SEH", which is what /safeseh enables. LLVM's object files are safe by default because LLVM doesn't know how to produce SEH handlers. Reviewers: Bigcheese CC: llvm-commits Differential Revision: http://llvm-reviews.chandlerc.com/D1691 llvm-svn: 190898
-
- Sep 17, 2013
-
-
Bill Schmidt authored
Documenting a design choice to generate only medium model sequences for TLS addresses at this time. Small and large code models could be supported if necessary. llvm-svn: 190883
-
Bill Schmidt authored
Large code model on PPC64 requires creating and referencing TOC entries when using the addis/ld form of addressing. This was not being done in all cases. The changes in this patch to PPCAsmPrinter::EmitInstruction() fix this. Two test cases are also modified to reflect this requirement. Fast-isel was not creating correct code for loading floating-point constants using large code model. This also requires the addis/ld form of addressing. Previously we were using the addis/lfd shortcut which is only applicable to medium code model. One test case is modified to reflect this requirement. llvm-svn: 190882
-
Preston Gurd authored
llvm-svn: 190869
-
Ben Langmuir authored
Add llvm.x86.* intrinsics for all of the Intel SHA Extensions instructions, as well as tests. Also remove mayLoad and hasSideEffects, which can be inferred from the instruction patterns. llvm-svn: 190864
-
Joey Gouly authored
llvm-svn: 190862
-
Elena Demikhovsky authored
llvm-svn: 190851
-