- Aug 08, 2013
-
-
Akira Hatanaka authored
llvm-svn: 188017
-
Akira Hatanaka authored
No functionality change. llvm-svn: 188016
-
David Fang authored
llvm-svn: 188014
-
David Fang authored
this records relocation entries in the mach-o object file for PIC code generation. tested on powerpc-darwin8, validated against darwin otool -rvV llvm-svn: 188004
-
Niels Ole Salscheider authored
llvm-svn: 187988
-
Niels Ole Salscheider authored
llvm-svn: 187987
-
Jakub Staszak authored
llvm-svn: 187986
-
Silviu Baranga authored
Remove the now redundant FeatureFP16 from the Cortex-A15 feature list. It was made redundant when FeatureVFP4 was added which implies FP16. llvm-svn: 187985
-
Jakub Staszak authored
llvm-svn: 187984
-
Mihai Popa authored
The name "tCDP" isn't used anywhere else in the source code, so renaming it for consistency doesn't cause any problems. This is the only Thumb2 instruction defined with "t" prefix; all other Thumb2 instructions have "t2" prefix (e.g. "t2CDP2" which is defined immediately afterwards). Patch by Artyom Skrobov. llvm-svn: 187973
-
Hal Finkel authored
Making use of the recently-added ISD::FROUND, which allows for custom lowering of round(), the PPC backend will now map frin to round(). Previously, we had been using frin to lower nearbyint() (and rint() via some custom lowering to handle the extra fenv flags requirements), but only in fast-math mode because frin does not tie-to-even. Several users had complained about this behavior, and this new mapping of frin to round is certainly more appropriate (and does not require fast-math mode). In effect, this reverts r178362 (and part of r178337, replacing the nearbyint mapping with the round mapping). llvm-svn: 187960
-
Hal Finkel authored
All libm floating-point rounding functions, except for round(), had their own ISD nodes. Recent PowerPC cores have an instruction for round(), and so here I'm adding ISD::FROUND so that round() can be custom lowered as well. For the most part, this is straightforward. I've added an intrinsic and a matching ISD node just like those for nearbyint() and friends. The SelectionDAG pattern I've named frnd (because ISD::FP_ROUND has already claimed fround). This will be used by the PowerPC backend in a follow-up commit. llvm-svn: 187926
-
- Aug 07, 2013
-
-
Elena Demikhovsky authored
with lowering logic and a test. llvm-svn: 187884
-
Richard Sandiford authored
This follows the same lines as the integer code. In the end it seemed easier to have a second 4-bit mask in TSFlags to specify the compare-like CC values. That eats one more TSFlags bit than adding a CCHasUnordered would have done, but it feels more concise. llvm-svn: 187883
-
Richard Sandiford authored
These instructions can also be used as comparisons with zero. llvm-svn: 187882
-
Craig Topper authored
llvm-svn: 187870
-
Evgeniy Stepanov authored
This value may be used uninitialized in SIInsertWaits::insertWait. Found with MemorySanitizer. llvm-svn: 187869
-
Reed Kotler authored
llvm-svn: 187863
-
David Blaikie authored
llvm-svn: 187838
-
Tom Stellard authored
llvm-svn: 187834
-
Akira Hatanaka authored
llvm-svn: 187832
-
Tom Stellard authored
Since the VSrc_* register classes contain both VGPRs and SGPRs, copies that used be emitted by isel like this: SGPR = COPY VGPR Will now be emitted like this: VSrC = COPY VGPR This patch also adds a pass that tries to identify and fix situations where a VGPR to SGPR copy may occur. Hopefully, these changes will make it impossible for the compiler to generate illegal VGPR to SGPR copies. llvm-svn: 187831
-
Tom Stellard authored
Also factor out the register class lookup to its own function. llvm-svn: 187830
-
Justin Holewinski authored
[NVPTX] We dont have any target specific flags yet for generating symbol references, so get rid of the default-only switch statement. Fixes an MSVC warning. llvm-svn: 187829
-
Akira Hatanaka authored
instructions defined in MipsInstrInfo.td as codegen-only instructions. llvm-svn: 187828
-
Akira Hatanaka authored
EmitAlias flag and have MipsInstPrinter::printAlias print the aliases. llvm-svn: 187824
-
Akira Hatanaka authored
unnecessary jalr InstAliases in Mips64InstrInfo.td and add the code to print jalr InstAliases in MipsInstPrinter::printAlias. llvm-svn: 187821
-
- Aug 06, 2013
-
-
Hal Finkel authored
The PPC backend had been missing a pattern to generate mulli for 64-bit multiples. We had been generating it only for 32-bit multiplies. Unfortunately, generating li + mulld unnecessarily increases register pressure. llvm-svn: 187807
-
Mihai Popa authored
as pldw does not have a literal variant (i.e. pc relative version) llvm-svn: 187804
-
Mihai Popa authored
llvm-svn: 187803
-
Justin Holewinski authored
llvm-svn: 187800
-
Justin Holewinski authored
We do use a very small set of physical registers, so account for them in the virtual register encoding between MachineInstr and MC llvm-svn: 187799
-
Justin Holewinski authored
This change converts the NVPTX target to use the MC infrastructure instead of directly emitting MachineInstr instances. This brings the target more up-to-date with LLVM TOT, and should fix PR15175 and PR15958 (libNVPTXInstPrinter is empty) as a side-effect. llvm-svn: 187798
-
Tim Northover authored
Now that it's in place, it seems silly not to let ARM make use of the extra tail call opportunities. llvm-svn: 187795
-
Tim Northover authored
This change came about primarily because of two issues in the existing code. Niether of: define i64 @test1(i64 %val) { %in = trunc i64 %val to i32 tail call i32 @ret32(i32 returned %in) ret i64 %val } define i64 @test2(i64 %val) { tail call i32 @ret32(i32 returned undef) ret i32 42 } should be tail calls, and the function sameNoopInput is responsible. The main problem is that it is completely symmetric in the "tail call" and "ret" value, but in reality different things are allowed on each side. For these cases: 1. Any truncation should lead to a larger value being generated by "tail call" than needed by "ret". 2. Undef should only be allowed as a source for ret, not as a result of the call. Along the way I noticed that a mismatch between what this function treats as a valid truncation and what the backends see can lead to invalid calls as well (see x86-32 test case). This patch refactors the code so that instead of being based primarily on values which it recurses into when necessary, it starts by inspecting the type and considers each fundamental slot that the backend will see in turn. For example, given a pathological function that returned {{}, {{}, i32, {}}, i32} we would consider each "real" i32 in turn, and ask if it passes through unchanged. This is much closer to what the backend sees as a result of ComputeValueVTs. Aside from the bug fixes, this eliminates the recursion that's going on and, I believe, makes the bulk of the code significantly easier to understand. The trade-off is the nasty iterators needed to find the real types inside a returned value. llvm-svn: 187787
-
Craig Topper authored
llvm-svn: 187783
-
Craig Topper authored
llvm-svn: 187781
-
NAKAMURA Takumi authored
Target/*/CMakeLists.txt: Add the dependency to CommonTableGen explicitly for each corresponding CodeGen. Without explicit dependencies, both per-file action and in-CommonTableGen action could run in parallel. It races to emit *.inc files simultaneously. llvm-svn: 187780
-
Craig Topper authored
llvm-svn: 187779
-
Craig Topper authored
llvm-svn: 187771
-