- Jul 27, 2008
-
-
Dan Gohman authored
llvm-svn: 54128
-
- Jul 04, 2008
-
-
Duncan Sands authored
hook for each way in which a result type can be legalized (promotion, expansion, softening etc), just use one: ReplaceNodeResults, which returns a node with exactly the same result types as the node passed to it, but presumably with a bunch of custom code behind the scenes. No change if the new LegalizeTypes infrastructure is not turned on. llvm-svn: 53137
-
- Jun 06, 2008
-
-
Duncan Sands authored
and better control the abstraction. Rename the type to MVT. To update out-of-tree patches, the main thing to do is to rename MVT::ValueType to MVT, and rewrite expressions like MVT::getSizeInBits(VT) in the form VT.getSizeInBits(). Use VT.getSimpleVT() to extract a MVT::SimpleValueType for use in switch statements (you will get an assert failure if VT is an extended value type - these shouldn't exist after type legalization). This results in a small speedup of codegen and no new testsuite failures (x86-64 linux). llvm-svn: 52044
-
- Apr 28, 2008
-
-
Dan Gohman authored
memcpy/memset expansion. It was a bug for the SVOffset value to be used in the actual address calculations. llvm-svn: 50359
-
- Apr 14, 2008
-
-
Dan Gohman authored
memory intrinsic expansion code. llvm-svn: 49666
-
- Apr 12, 2008
-
-
Dan Gohman authored
on any current target and aren't optimized in DAGCombiner. Instead of using intermediate nodes, expand the operations, choosing between simple loads/stores, target-specific code, and library calls, immediately. Previously, the code to emit optimized code for these operations was only used at initial SelectionDAG construction time; now it is used at all times. This fixes some cases where rep;movs was being used for small copies where simple loads/stores would be better. This also cleans up code that checks for alignments less than 4; let the targets make that decision instead of doing it in target-independent code. This allows x86 to use rep;movs in low-alignment cases. Also, this fixes a bug that resulted in the use of rep;stos for memsets of 0 with non-constant memory size when the alignment was at least 4. It's better to use the library in this case, which can be significantly faster when the size is large. This also preserves more SourceValue information when memory intrinsics are lowered into simple loads/stores. llvm-svn: 49572
-
- Feb 13, 2008
-
-
Dan Gohman authored
to pass the mask APInt by value, not by reference. llvm-svn: 47096
-
Dan Gohman authored
Add an overload that supports the uint64_t interface for use by clients that haven't been updated yet. llvm-svn: 47039
-
- Feb 05, 2008
-
-
Nate Begeman authored
llvm-svn: 46723
-
- Jan 30, 2008
-
-
Evan Cheng authored
Even though InsertAtEndOfBasicBlock is an ugly hack it still deserves a proper name. Rename it to EmitInstrWithCustomInserter since it does not necessarily insert instruction at the end. llvm-svn: 46562
-
- Dec 29, 2007
-
-
Chris Lattner authored
llvm-svn: 45418
-
- Nov 27, 2007
-
-
Chris Lattner authored
llvm-svn: 44380
-
- Nov 24, 2007
-
-
Chris Lattner authored
1) Change the interface to TargetLowering::ExpandOperationResult to take and return entire NODES that need a result expanded, not just the value. This allows us to handle things like READCYCLECOUNTER, which returns two values. 2) Implement (extremely limited) support in LegalizeDAG::ExpandOp for MERGE_VALUES. 3) Reimplement custom lowering in LegalizeDAGTypes in terms of the new ExpandOperationResult. This makes the result simpler and fully general. 4) Implement (fully general) expand support for MERGE_VALUES in LegalizeDAGTypes. 5) Implement ExpandOperationResult support for ARM f64->i64 bitconvert and ARM i64 shifts, allowing them to work with LegalizeDAGTypes. 6) Implement ExpandOperationResult support for X86 READCYCLECOUNTER and FP_TO_SINT, allowing them to work with LegalizeDAGTypes. LegalizeDAGTypes now passes several more X86 codegen tests when enabled and when type legalization in LegalizeDAG is ifdef'd out. llvm-svn: 44300
-
- Nov 06, 2007
-
-
Rafael Espindola authored
Thanks for the suggestions Bill :-) llvm-svn: 43742
-
- Oct 31, 2007
-
-
Rafael Espindola authored
and by restructuring the X86 version. New I just have to move this to a common place :-) llvm-svn: 43554
-
- Oct 23, 2007
-
-
Evan Cheng authored
llvm-svn: 43234
-
- Oct 19, 2007
-
-
Rafael Espindola authored
llvm-svn: 43176
-
- Oct 08, 2007
-
-
Dan Gohman authored
use ISD::{S,U}DIVREM and ISD::{S,U}MUL_HIO. Move the lowering code associated with these operators into target-independent in LegalizeDAG.cpp and TargetLowering.cpp. llvm-svn: 42762
-
- Sep 11, 2007
-
-
Duncan Sands authored
init_trampoline. There is now only one trampoline intrinsic. llvm-svn: 41841
-
- Aug 02, 2007
-
-
Dan Gohman authored
llvm-svn: 40757
-
- Jul 27, 2007
-
-
Duncan Sands authored
still under discussion. llvm-svn: 40549
-
- Jun 22, 2007
-
-
Dan Gohman authored
TargetLowering to SelectionDAG so that they have more convenient access to the current DAG, in preparation for the ValueType routines being changed from standalone functions to members of SelectionDAG for the pre-legalize vector type changes. llvm-svn: 37704
-
- Jun 19, 2007
-
-
Evan Cheng authored
llvm-svn: 37659
-
- May 17, 2007
-
-
Dale Johannesen authored
in the order lod;lod;lod;sto;sto;sto which means the load-store optimizer has a better chance of producing ldm/stm. Ideally you would get cooperation from the RA as well but this is not there yet. llvm-svn: 37179
-
- Apr 27, 2007
-
-
Lauro Ramos Venancio authored
llvm-svn: 36506
-
- Apr 22, 2007
-
-
Lauro Ramos Venancio authored
llvm-svn: 36324
-
- Apr 10, 2007
-
-
Chris Lattner authored
llvm-svn: 35846
-
Chris Lattner authored
llvm-svn: 35840
-
- Apr 02, 2007
-
-
Lauro Ramos Venancio authored
flags (ARMISD::CMPNZ) and comparisons that use all flags (ARMISD::CMP). - Defines the instructions: TST, TEQ (ARM) and TST (Thumb). llvm-svn: 35573
-
- Mar 31, 2007
-
-
Chris Lattner authored
llvm-svn: 35521
-
- Mar 28, 2007
-
-
Evan Cheng authored
llvm-svn: 35406
-
- Mar 25, 2007
-
-
Chris Lattner authored
not just the first letter. No functionality change. llvm-svn: 35322
-
- Mar 21, 2007
-
-
Dale Johannesen authored
llvm-svn: 35245
-
- Mar 20, 2007
-
-
Dale Johannesen authored
instructions (that would have to be split later) llvm-svn: 35227
-
Dale Johannesen authored
llvm-svn: 35196
-
- Mar 16, 2007
-
-
Evan Cheng authored
llvm-svn: 35122
-
- Mar 13, 2007
-
-
Evan Cheng authored
llvm-svn: 35075
-
- Jan 30, 2007
-
-
Evan Cheng authored
.set PCRELV0, (LJTI1_0_0-(LPCRELL0+4)) LPCRELL0: add r1, pc, #PCRELV0 This is not legal since add r1, pc, #c requires the constant be a multiple of 4. Do the following instead: .set PCRELV0, (LJTI1_0_0-(LPCRELL0+4)) LPCRELL0: mov r1, #PCRELV0 add r1, pc - In thumb mode, it's not possible to use .set generate a pc relative stub address. The stub is ARM code which is in a different section from the thumb code. Load the value from a constpool instead. - Some asm printing clean up. llvm-svn: 33664
-
- Jan 19, 2007
-
-
Evan Cheng authored
llvm-svn: 33353
-