- Jan 17, 2013
-
-
Eric Christopher authored
emitting the dwarf32 version of DW_FORM_sec_offset and correct disassembler support. llvm-svn: 172698
-
Jakob Stoklund Olesen authored
Let targets use it. llvm-svn: 172688
-
Jakob Stoklund Olesen authored
Move the early if-conversion pass into this group. ILP optimizations usually need to find the right balance between register pressure and ILP using the MachineTraceMetrics analysis to identify critical paths and estimate other costs. Such passes should run together so they can share dominator tree and loop info analyses. Besides if-conversion, future passes to run here here could include expression height reduction and ARM's MLxExpansion pass. llvm-svn: 172687
-
- Jan 16, 2013
-
-
Eric Christopher authored
of a class. Emit static data member declarations and definitions through correctly. Part of PR14471. Patch by Paul Robinson! llvm-svn: 172590
-
Eric Christopher authored
using the DW_FORM_GNU_addr_index and a separate .debug_addr section which stays in the executable and is fully linked. Sneak in two other small changes: a) Print out the debug_str_offsets.dwo section. b) Change form we're expecting the entries in the debug_str_offsets.dwo section to take from ULEB128 to U32. Add tests for all of this in the fission-cu.ll test. llvm-svn: 172578
-
- Jan 14, 2013
-
-
Bill Schmidt authored
The included test case is derived from one of the GCC compatibility tests. The problem arises after the selection DAG has been converted to type-legalized form. The combiner first sees a 64-bit load that can be converted into a pre-increment form. The original load feeds into a SRL that isolates the upper 32 bits of the loaded doubleword. This looks like an opportunity for DAGCombiner::ReduceLoadWidth() to replace the 64-bit load with a 32-bit load. However, this transformation is not valid, as the replacement load is not a pre-increment load. The pre-increment load produces an extra result, which feeds a subsequent add instruction. The replacement load only has one result value, and this value is propagated to all uses of the pre- increment load, including the add. Because the add is looking for the second result value as its operand, it ends up attempting to add a constant to a token chain, resulting in a crash. So the patch simply disables this transformation for any load with more than two result values. llvm-svn: 172480
-
- Jan 12, 2013
-
-
Benjamin Kramer authored
Shifting right two times will only yield zero. Should fix SingleSource/UnitTests/SignlessTypes/factor. llvm-svn: 172322
-
Jakob Stoklund Olesen authored
When tryEvict() is looking for a cheaper register in the allocation order, skip the tail of too expensive registers when possible. llvm-svn: 172281
-
Jakob Stoklund Olesen authored
Remember the minimum cost of the registers in an allocation order and the number of registers at the end of the allocation order that have the same cost per use. This information can be used to limit the search space for RAGreedy::tryEvict() when looking for a cheaper register. llvm-svn: 172280
-
- Jan 11, 2013
-
-
Nadav Rotem authored
llvm-svn: 172269
-
Benjamin Kramer authored
llvm-svn: 172248
-
Benjamin Kramer authored
This fixes some of the cycles between libCodeGen and libSelectionDAG. It's still a complete mess but as long as the edges consist of virtual call it doesn't cause breakage. BasicTTI did static calls and thus broke some build configurations. llvm-svn: 172246
-
Nadav Rotem authored
the target if it supports the different CAST types. We didn't do this on X86 because of the different register sizes and types, but on ARM this makes sense. llvm-svn: 172245
-
Eric Christopher authored
- recognize string "{memory}" in the MI generation - mark as mayload/maystore when there's a memory clobber constraint. PR14859. Patch by Krzysztof Parzyszek llvm-svn: 172228
-
Andrew Trick authored
llvm-svn: 172224
-
Andrew Trick authored
llvm-svn: 172223
-
Tim Northover authored
This removes previous special cases for each floating-point type in favour of a shared codepath. llvm-svn: 172189
-
- Jan 10, 2013
-
-
Evan Cheng authored
llvm-svn: 172124
-
Jakub Staszak authored
llvm-svn: 172123
-
Jakob Stoklund Olesen authored
When calling hasProperty() on an instruction inside a bundle, it should always behave as if IgnoreBundle was passed, and just return properties for the current instruction. Only attempt to aggregate bundle properties whan asked about the bundle header. The assertion fires on existing ARM test cases without this fix. llvm-svn: 172082
-
Jakob Stoklund Olesen authored
This function can still work without a BUNDLE header instruction. llvm-svn: 172029
-
Manman Ren authored
requirement when creating stack objects in MachineFrameInfo. Add CreateStackObjectWithMinAlign to throw error when the minimal alignment can't be achieved and to clamp the alignment when the preferred alignment can't be achieved. Same is true for CreateVariableSizedObject. Will not emit error in CreateSpillStackObject or CreateStackObject. As long as callers of CreateStackObject do not assume the object will be aligned at the requested alignment, we should not have miscompile since later optimizations which look at the object's alignment will have the correct information. rdar://12713765 llvm-svn: 172027
-
- Jan 09, 2013
-
-
Nadav Rotem authored
ARM Cost model: Use the size of vector registers and widest vectorizable instruction to determine the max vectorization factor. llvm-svn: 172010
-
Evan Cheng authored
It cahced XOR's operands before calling visitXOR() but failed to update the operands when visitXOR changed the XOR node. rdar://12968664 llvm-svn: 171999
-
Jakob Stoklund Olesen authored
The bundle flags are used by MachineBasicBlock::print(), they don't need to clutter up individual MachineInstrs. llvm-svn: 171986
-
Jakob Stoklund Olesen authored
It is possible to build MI bundles that don't begin with a BUNDLE header. Add support for such bundles, counting all instructions inside the bundle. llvm-svn: 171985
-
Sergei Larin authored
Fix a typo in MachineInstr::unbundleFromSucc() method. llvm-svn: 171983
-
Tim Northover authored
fp128 is almost but not quite completely illegal as a type on AArch64. As a result it needs to have a register class (for argument passing mainly), but all operations need to be lowered to runtime calls. Currently there's no way for targets to do this (without duplicating code), as the relevant functions are hidden in SelectionDAG. This patch changes that. llvm-svn: 171971
-
Eric Christopher authored
address space. Reordered the EmitULEB128IntValue arguments to make this easier. llvm-svn: 171949
-
Andrew Trick authored
This was an experimental option, but needs to be defined per-target. e.g. PPC A2 needs to aggressively hide latency. I converted some in-order scheduling tests to A2. Hal is working on more test cases. llvm-svn: 171946
-
Eric Christopher authored
them. llvm-svn: 171933
-
Eric Christopher authored
them and add one where it seemed obvious that we wanted one. llvm-svn: 171932
-
Nadav Rotem authored
Cost Model: Move the 'max unroll factor' variable to the TTI and add initial Cost Model support on ARM. llvm-svn: 171928
-
- Jan 08, 2013
-
-
Eric Christopher authored
llvm-svn: 171905
-
Tim Northover authored
llvm-svn: 171867
-
Tim Northover authored
llvm-svn: 171866
-
Chandler Carruth authored
one file where it is called as a static function. Nuke the declaration and the definition in lib/CodeGen, along with the include of SelectionDAG.h from this file. There is no dependency edge from lib/CodeGen to lib/CodeGen/SelectionDAG, so it isn't valid for a routine in lib/CodeGen to reference the DAG. There is a dependency from lib/CodeGen/SelectionDAG on lib/CodeGen. This breaks one violation of this layering. llvm-svn: 171842
-
Eric Christopher authored
make sure that vector types do work. llvm-svn: 171833
-
Jakob Stoklund Olesen authored
Previously, 4 bits were unused. llvm-svn: 171814
-
Jakob Stoklund Olesen authored
This shrinks MachineInstr to 64 bytes (from 72). llvm-svn: 171813
-