- Dec 04, 2008
-
-
Scott Michel authored
- First patch from Nehal Desai, a new contributor at Aerospace. Nehal's patch fixes sign/zero/any-extending loads for integers and floating point. Example code, compiled w/o debugging or optimization where he first noticed the bug: int main(void) { float a = 99.0; printf("%d\n", a); return 0; } Verified that this code actually works on a Cell SPU. Changes by Scott Michel: - Fix bug in the value type list constructed by SPUISD::LDRESULT to include both the load result's result and chain, not just the chain alone. - Simplify LowerLOAD and remove extraneous and unnecessary chains. - Remove unused SPUISD pseudo instructions. llvm-svn: 60526
-
- Dec 03, 2008
-
-
Dan Gohman authored
parts, and add target-independent code to add/preserve MachineMemOperands. llvm-svn: 60488
-
Dan Gohman authored
llvm-svn: 60487
-
- Dec 02, 2008
-
-
Scott Michel authored
- Incorporate Tilmann Scheller's ISD::TRUNCATE custom lowering patch - Update SPU calling convention info, even if it's not used yet (but can be at some point or another) - Ensure that any-extended f32 loads are custom lowered, especially when they're promoted for use in printf. llvm-svn: 60438
-
- Dec 01, 2008
-
-
Scott Michel authored
- Fix v2[if]64 vector insertion code before IBM files a bug report. - Ensure that zero (0) offsets relative to $sp don't trip an assert (add $sp, 0 gets legalized to $sp alone, tripping an assert) - Shuffle masks passed to SPUISD::SHUFB are now v16i8 or v4i32 llvm-svn: 60358
-
Duncan Sands authored
MERGE_VALUES node with only one operand, so get rid of special code that only existed to handle that possibility. llvm-svn: 60349
-
Duncan Sands authored
ReplaceNodeResults: rather than returning a node which must have the same number of results as the original node (which means mucking around with MERGE_VALUES, and which is also easy to get wrong since SelectionDAG folding may mean you don't get the node you expect), return the results in a vector. llvm-svn: 60348
-
- Nov 25, 2008
-
-
Scott Michel authored
(a) Remove conditionally removed code in SelectXAddr. Basically, hope for the best that the A-form and D-form address predicates catch everything before the code decides to emit a X-form address. (b) Expand vector store test cases to include the usual suspects. llvm-svn: 60034
-
Scott Michel authored
they were too tight according to bug 3126. Fix bug 3126. llvm-svn: 60006
-
Scott Michel authored
llvm-svn: 59998
-
- Nov 24, 2008
-
-
Scott Michel authored
(a) Slight rethink on i64 zero/sign/any extend code - use a shuffle to directly zero-extend i32 to i64, but use rotates and shifts for sign extension. Also ensure unified register consistency. (b) Add new test harness for i64 operations: i64ops.ll llvm-svn: 59970
-
Scott Michel authored
(a) Improve the extract element code: there's no need to do gymnastics with rotates into the preferred slot if a shuffle will do the same thing. (b) Rename a couple of SPUISD pseudo-instructions for readability and better semantic correspondence. (c) Fix i64 sign/any/zero extension lowering. llvm-svn: 59965
-
Evan Cheng authored
Move target independent td files from lib/Target/ to include/llvm/Target so they can be distributed along with the header files. llvm-svn: 59953
-
- Nov 23, 2008
-
-
Duncan Sands authored
practice these booleans are mostly produced by SetCC, however the concept is more general. llvm-svn: 59911
-
Scott Michel authored
ever conceived to occur). llvm-svn: 59891
-
- Nov 21, 2008
-
-
Scott Michel authored
(a) Fix bgs 3052, 3057 (b) Incorporate Duncan's suggestions re: i1 promotion (c) Indentation updates. llvm-svn: 59790
-
- Nov 20, 2008
-
-
Scott Michel authored
(a) Remove moved file (SPUAsmPrinter.cpp) to make svn happy. (b) Remove truncated stores that will never be used. (c) Add initial support for __muldi3 as a libcall. llvm-svn: 59734
-
Scott Michel authored
promote), fix signed conversion of indexed offsets. llvm-svn: 59707
-
Scott Michel authored
llvm-svn: 59703
-
Dan Gohman authored
is currently off by default, and can be enabled with -disable-post-RA-scheduler=false. This doesn't have a significant impact on most code yet because it doesn't yet do anything to address anti-dependencies and it doesn't attempt to disambiguate memory references. Also, several popular targets don't have pipeline descriptions yet. The majority of the changes here are splitting the SelectionDAG-specific code out of ScheduleDAG, so that ScheduleDAG can be moved to libLLVMCodeGen.a. The interface between ScheduleDAG-using code and the rest of the scheduling code is somewhat rough and will evolve. llvm-svn: 59676
-
- Nov 19, 2008
-
-
Scott Michel authored
right thing and promote the store to i8. llvm-svn: 59648
-
Scott Michel authored
llvm-svn: 59637
-
- Nov 18, 2008
-
-
Dan Gohman authored
llvm-svn: 59542
-
- Nov 15, 2008
-
-
Oscar Fuentes authored
well as 2 files that use "Registrator"s. These are to be used by the MSVC builds, as the Win32 linker does not include libs that are otherwise unreferenced, even if global constructors in the lib have side-effects. Patch by Scott Graham! llvm-svn: 59378
-
- Nov 11, 2008
-
-
Scott Michel authored
backend. llvm-svn: 59018
-
Scott Michel authored
llvm-svn: 59009
-
- Nov 08, 2008
-
-
Oscar Fuentes authored
LLVMCellSPUCodeGen. llvm-svn: 58925
-
Oscar Fuentes authored
clean start. llvm-svn: 58924
-
Oscar Fuentes authored
llvm-svn: 58923
-
Scott Michel authored
structure. Assembly printer now outputs the correct section for strings. llvm-svn: 58921
-
Scott Michel authored
theframe size is 0; the prologue and epilogue should be emitted in this case. llvm-svn: 58890
-
- Nov 07, 2008
-
-
Scott Michel authored
llvm-svn: 58839
-
Scott Michel authored
NB: This is likely to need more work. llvm-svn: 58832
-
- Nov 05, 2008
-
-
Dan Gohman authored
priority function. Instead, just iterate over the AllNodes list, which is already in topological order. This eliminates a fair amount of bookkeeping, and speeds up the isel phase by about 15% on many testcases. The impact on most targets is that AddToISelQueue calls can be simply removed. In the x86 target, there are two additional notable changes. The rule-bending AND+SHIFT optimization in MatchAddress that creates new pre-isel nodes during isel is now a little more verbose, but more robust. Instead of either creating an invalid DAG or creating an invalid topological sort, as it has historically done, it can now just insert the new nodes into the node list at a position where they will be consistent with the topological ordering. Also, the address-matching code has logic that checked to see if a node was "already selected". However, when a node is selected, it has all its uses taken away via ReplaceAllUsesWith or equivalent, so it won't recieve any further visits from MatchAddress. This code is now removed. llvm-svn: 58748
-
Dan Gohman authored
by isel and potentially forced into registers. llvm-svn: 58747
-
- Nov 03, 2008
-
-
Dan Gohman authored
adding a TargetMachine member to the base TargetAsmInfo class instead. llvm-svn: 58624
-
- Oct 30, 2008
-
-
Duncan Sands authored
getShiftAmountTy (i32 in the case of CellSPU). llvm-svn: 58449
-
Scott Michel authored
so that va_start/va_arg/et.al. will walk arguments correctly for Cell SPU. N.B.: Because neither clang nor llvm-gcc-4.2 can be built for CellSPU, this is still unexorcised code. llvm-svn: 58415
-
- Oct 27, 2008
-
-
David Greene authored
Have TableGen emit setSubgraphColor calls under control of a -gen-debug flag. Then in a debugger developers can set breakpoints at these calls to see waht is about to be selected and what the resulting subgraph looks like. This really helps when debugging instruction selection. llvm-svn: 58278
-
- Oct 18, 2008
-
-
Dan Gohman authored
and add a TargetLowering hook for it to use to determine when this is legal (i.e. not in PIC mode, etc.) This allows instruction selection to emit folded constant offsets in more cases, such as the included testcase, eliminating the need for explicit arithmetic instructions. This eliminates the need for the C++ code in X86ISelDAGToDAG.cpp that attempted to achieve the same effect, but wasn't as effective. Also, fix handling of offsets in GlobalAddressSDNodes in several places, including changing GlobalAddressSDNode's offset from int to int64_t. The Mips, Alpha, Sparc, and CellSPU targets appear to be unaware of GlobalAddress offsets currently, so set the hook to false on those targets. llvm-svn: 57748
-