- Dec 20, 2011
-
-
Akira Hatanaka authored
llvm-svn: 147005
-
Akira Hatanaka authored
llvm-svn: 147004
-
Akira Hatanaka authored
MIPS64 can generate constant +0.0 with a single DMTC1 instruction. llvm-svn: 146999
-
- Dec 19, 2011
-
-
Akira Hatanaka authored
llvm-svn: 146901
-
Akira Hatanaka authored
patterns emit a single LUi instruction instead of a pair of LUi and ORi. llvm-svn: 146900
-
Akira Hatanaka authored
direct-object emitter should emit the appropriate shift instruction depending on the shift amount. llvm-svn: 146893
-
Akira Hatanaka authored
This change reduces the number of instructions generated. For example, (load (add (sub $n0, $n1), (MipsLo got(s)))) results in the following sequence of instructions: 1. sub $n2, $n0, $n1 2. lw got(s)($n2) Previously, three instructions were needed. 1. sub $n2, $n0, $n1 2. addiu $n3, $n2, got(s) 3. lw 0($n3) llvm-svn: 146888
-
- Dec 14, 2011
-
-
Akira Hatanaka authored
emission is not supported yet, but a patch that adds the support should follow soon. llvm-svn: 146572
-
- Dec 13, 2011
-
-
Akira Hatanaka authored
elf-relsym.ll. llvm-svn: 146470
-
Akira Hatanaka authored
test cases where there were a lot of relocations applied relative to a large rodata section. Gas would create a symbol for each of these whereas we would be relative to the beginning of the rodata section. This change mimics what gas does. Patch by Jack Carter. llvm-svn: 146468
-
- Dec 12, 2011
-
-
Akira Hatanaka authored
llvm-svn: 146433
-
Chandler Carruth authored
I followed three heuristics for deciding whether to set 'true' or 'false': - Everything target independent got 'true' as that is the expected common output of the GCC builtins. - If the target arch only has one way of implementing this operation, set the flag in the way that exercises the most of codegen. For most architectures this is also the likely path from a GCC builtin, with 'true' being set. It will (eventually) require lowering away that difference, and then lowering to the architecture's operation. - Otherwise, set the flag differently dependending on which target operation should be tested. Let me know if anyone has any issue with this pattern or would like specific tests of another form. This should allow the x86 codegen to just iteratively improve as I teach the backend how to differentiate between the two forms, and everything else should remain exactly the same. llvm-svn: 146370
-
- Dec 09, 2011
-
-
Akira Hatanaka authored
specified. llvm-svn: 146229
-
- Dec 08, 2011
-
-
Akira Hatanaka authored
llvm-svn: 146096
-
- Dec 07, 2011
-
-
Akira Hatanaka authored
llvm-svn: 146086
-
Akira Hatanaka authored
llvm-svn: 146080
-
Akira Hatanaka authored
llvm-svn: 146059
-
- Dec 05, 2011
-
-
Akira Hatanaka authored
PerformANDCombine and PerformOrCombine aware of them. Test cases are included too. llvm-svn: 145853
-
Akira Hatanaka authored
O32 with relocation-model=pic too. llvm-svn: 145850
-
- Dec 02, 2011
-
-
Akira Hatanaka authored
llvm-svn: 145717
-
Akira Hatanaka authored
llvm-svn: 145716
-
- Nov 30, 2011
-
-
Akira Hatanaka authored
tools use. Patch by Simon Atanasyan. "mips32r1" => "mips32" "4ke" => mips32r2" "mips64r1" => "mips64" llvm-svn: 145451
-
- Nov 27, 2011
-
-
Chris Lattner authored
Upgrade syntax of tests using volatile instructions to use 'load volatile' instead of 'volatile load', which is archaic. llvm-svn: 145171
-
- Nov 03, 2011
-
-
Dan Gohman authored
across calls, and only check for nested dependences on the special call-sequence-resource register. llvm-svn: 143660
-
- Oct 29, 2011
-
-
Dan Gohman authored
llvm-svn: 143262
-
- Oct 28, 2011
-
-
Dan Gohman authored
fixes: Use a separate register, instead of SP, as the calling-convention resource, to avoid spurious conflicts with actual uses of SP. Also, fix unscheduling of calling sequences, which can be triggered by pseudo-two-address dependencies. llvm-svn: 143206
-
Duncan Sands authored
it fixes the dragonegg self-host (it looks like gcc is miscompiled). Original commit messages: Eliminate LegalizeOps' LegalizedNodes map and have it just call RAUW on every node as it legalizes them. This makes it easier to use hasOneUse() heuristics, since unneeded nodes can be removed from the DAG earlier. Make LegalizeOps visit the DAG in an operands-last order. It previously used operands-first, because LegalizeTypes has to go operands-first, and LegalizeTypes used to be part of LegalizeOps, but they're now split. The operands-last order is more natural for several legalization tasks. For example, it allows lowering code for nodes with floating-point or vector constants to see those constants directly instead of seeing the lowered form (often constant-pool loads). This makes some things somewhat more complicated today, though it ought to allow things to be simpler in the future. It also fixes some bugs exposed by Legalizing using RAUW aggressively. Remove the part of LegalizeOps that attempted to patch up invalid chain operands on libcalls generated by LegalizeTypes, since it doesn't work with the new LegalizeOps traversal order. Instead, define what LegalizeTypes is doing to be correct, and transfer the responsibility of keeping calls from having overlapping calling sequences into the scheduler. Teach the scheduler to model callseq_begin/end pairs as having a physical register definition/use to prevent calls from having overlapping calling sequences. This is also somewhat complicated, though there are ways it might be simplified in the future. This addresses rdar://9816668, rdar://10043614, rdar://8434668, and others. Please direct high-level questions about this patch to management. Delete #if 0 code accidentally left in. llvm-svn: 143188
-
Dan Gohman authored
on every node as it legalizes them. This makes it easier to use hasOneUse() heuristics, since unneeded nodes can be removed from the DAG earlier. Make LegalizeOps visit the DAG in an operands-last order. It previously used operands-first, because LegalizeTypes has to go operands-first, and LegalizeTypes used to be part of LegalizeOps, but they're now split. The operands-last order is more natural for several legalization tasks. For example, it allows lowering code for nodes with floating-point or vector constants to see those constants directly instead of seeing the lowered form (often constant-pool loads). This makes some things somewhat more complicated today, though it ought to allow things to be simpler in the future. It also fixes some bugs exposed by Legalizing using RAUW aggressively. Remove the part of LegalizeOps that attempted to patch up invalid chain operands on libcalls generated by LegalizeTypes, since it doesn't work with the new LegalizeOps traversal order. Instead, define what LegalizeTypes is doing to be correct, and transfer the responsibility of keeping calls from having overlapping calling sequences into the scheduler. Teach the scheduler to model callseq_begin/end pairs as having a physical register definition/use to prevent calls from having overlapping calling sequences. This is also somewhat complicated, though there are ways it might be simplified in the future. This addresses rdar://9816668, rdar://10043614, rdar://8434668, and others. Please direct high-level questions about this patch to management. llvm-svn: 143177
-
- Oct 24, 2011
-
-
Dan Gohman authored
is going away. llvm-svn: 142810
-
- Oct 11, 2011
-
-
Akira Hatanaka authored
llvm-svn: 141631
-
- Oct 03, 2011
-
-
Akira Hatanaka authored
llvm-svn: 141030
-
Akira Hatanaka authored
llvm-svn: 141029
-
Akira Hatanaka authored
llvm-svn: 141028
-
Akira Hatanaka authored
llvm-svn: 141024
-
Akira Hatanaka authored
llvm-svn: 141017
-
- Sep 30, 2011
-
-
Akira Hatanaka authored
llvm-svn: 140872
-
Akira Hatanaka authored
llvm-svn: 140870
-
Akira Hatanaka authored
llvm-svn: 140860
-
Akira Hatanaka authored
llvm-svn: 140841
-
Akira Hatanaka authored
immediate. llvm-svn: 140839
-