summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target
Commit message (Collapse)AuthorAgeFilesLines
* Change the isel to not break out of the big giant switch. Instead, theChris Lattner2005-09-031-59/+61
| | | | | | switch should never be exited, so its bottom is now unreachable. llvm-svn: 23234
* rearrange logical ops to group them together more consistently.Chris Lattner2005-09-031-16/+42
| | | | | | | | Define the PatFrag class which can be used to define subpatterns to match things with. Define 'not', and use it to define the patterns for andc, nand, etc. llvm-svn: 23233
* Add AND/OR/XORChris Lattner2005-09-022-31/+65
| | | | llvm-svn: 23232
* Add some initial patterns to simple binary instructions, though theyChris Lattner2005-09-022-25/+43
| | | | | | | | | currently don't do anything. This elides patterns for binary operators that ping on the carry flag, since we don't model it yet. This patch also removes PPC::SUB, because it is dead. llvm-svn: 23230
* turn on dag isel by defaultChris Lattner2005-09-021-3/+3
| | | | llvm-svn: 23226
* Add help support for -mcpu and -mattr.Jim Laskey2005-09-022-21/+54
| | | | llvm-svn: 23222
* Pull out Lowering in preperation for multiple ISels. Oh, and get rid of ↵Andrew Lenharth2005-09-023-434/+435
| | | | | | some stuff llvm-svn: 23220
* Decouple fsqrt from gpul optimizations, implementing fsqrt.ll.Chris Lattner2005-09-023-8/+8
| | | | | | Remove the -enable-gpopt option which is subsumed by feature flags. llvm-svn: 23218
* Fix VC++ build errorsJeff Cohen2005-09-021-1/+1
| | | | llvm-svn: 23210
* Restore this patch now that the latent bug has been fixedChris Lattner2005-09-021-2/+16
| | | | llvm-svn: 23209
* Revert the previous patch which causes a mysterious regression in toast.Chris Lattner2005-09-021-16/+2
| | | | llvm-svn: 23207
* Handle any_extend like zextChris Lattner2005-09-021-0/+1
| | | | llvm-svn: 23202
* Handle ANY_EXTEND like ZERO_EXTEND. Simplify the extend/truncate code onChris Lattner2005-09-021-59/+23
| | | | | | the observation that it only has to handle i1 -> i64 and i64 -> i1. llvm-svn: 23201
* Implement small-arguments.ll:test3 by teaching the DAG optimizer thatChris Lattner2005-09-011-2/+16
| | | | | | | the results of calls to functions returning small values are properly sign/zero extended. llvm-svn: 23198
* Align functions to 16-byte boundaries, to eliminate noise in performance ↵Chris Lattner2005-09-011-1/+1
| | | | | | | | measurements. This improves the performance of 'treeadd' by about 20% with the dag isel, restoring it to the pattern-isel level (which happens to get the alignment right). llvm-svn: 23194
* Local labels on darwin apparently start with just 'L', not .L like otherChris Lattner2005-09-011-2/+2
| | | | | | | platforms. This reduces executable size and makes shark realize the actual bounds of functions instead of showing each MBB as a function :) llvm-svn: 23193
* 1. Use SubtargetFeatures in llc/lli.Jim Laskey2005-09-0121-33/+128
| | | | | | | | 2. Propagate feature "string" to all targets. 3. Implement use of SubtargetFeatures in PowerPCTargetSubtarget. llvm-svn: 23192
* This new class provides support for platform specific "features". The intentJim Laskey2005-09-011-0/+173
| | | | | | | is to manage processor specific attributes from the command line. See examples of use in llc/lli and PowerPCTargetSubtarget. llvm-svn: 23191
* Implement dynamic allocas correctly. In particular, because we were copyingChris Lattner2005-09-011-1/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | directly out of R1 (without using a CopyFromReg, which uses a chain), multiple allocas were getting CSE'd together, producing bogus code. For this: int %foo(bool %X, int %A, int %B) { br bool %X, label %T, label %F F: %G = alloca int %H = alloca int store int %A, int* %G store int %B, int* %H %R = load int* %G ret int %R T: ret int 0 } We were generating: _foo: stwu r1, -16(r1) stw r31, 4(r1) or r31, r1, r1 stw r1, 12(r31) cmpwi cr0, r3, 0 bne cr0, .LBB_foo_2 ; T .LBB_foo_1: ; F li r2, 16 subf r2, r2, r1 ;; One alloca or r1, r2, r2 or r3, r1, r1 or r1, r2, r2 or r2, r1, r1 stw r4, 0(r3) stw r5, 0(r2) lwz r3, 0(r3) lwz r1, 12(r31) lwz r31, 4(r31) lwz r1, 0(r1) blr .LBB_foo_2: ; T li r3, 0 lwz r1, 12(r31) lwz r31, 4(r31) lwz r1, 0(r1) blr Now we generate: _foo: stwu r1, -16(r1) stw r31, 4(r1) or r31, r1, r1 stw r1, 12(r31) cmpwi cr0, r3, 0 bne cr0, .LBB_foo_2 ; T .LBB_foo_1: ; F or r2, r1, r1 li r3, 16 subf r2, r3, r2 ;; Alloca 1 or r1, r2, r2 or r2, r1, r1 or r6, r1, r1 subf r3, r3, r6 ;; Alloca 2 or r1, r3, r3 or r3, r1, r1 stw r4, 0(r2) stw r5, 0(r3) lwz r3, 0(r2) lwz r1, 12(r31) lwz r31, 4(r31) lwz r1, 0(r1) blr .LBB_foo_2: ; T li r3, 0 lwz r1, 12(r31) lwz r31, 4(r31) lwz r1, 0(r1) blr This fixes Povray and SPASS with the dag isel, the last two failing cases. Tommorow we will hopefully turn it on by default! :) llvm-svn: 23190
* Fix a bug where we were useing HA to get the high part, which seems like itChris Lattner2005-09-011-11/+10
| | | | | | | | | | could cause a miscompile. Fixing this didn't fix the two programs that fail though. :( This also changes the implementation to follow the pattern selector more closely, causing us to select 0 to li instead of lis. llvm-svn: 23189
* Do not select the operands being passed into SelectCC. IT does this itselfChris Lattner2005-09-011-4/+2
| | | | | | and selecting early prevents folding immediates into the cmpw* instructions llvm-svn: 23188
* Move FCTIWZ handling out of the instruction selectors and into legalization,Chris Lattner2005-08-314-64/+70
| | | | | | getting them out of the business of making stack slots. llvm-svn: 23180
* Remove dead codeChris Lattner2005-08-312-75/+0
| | | | llvm-svn: 23179
* Move SHL,SHR i64 -> legalizerChris Lattner2005-08-311-2/+57
| | | | llvm-svn: 23178
* Remove code that is now dead from the pattern isel.Chris Lattner2005-08-311-28/+2
| | | | llvm-svn: 23177
* lower sra_parts on the dag, implementing it for the dag isel, and exposingChris Lattner2005-08-311-0/+28
| | | | | | the ops to dag optimization. llvm-svn: 23176
* add assert zext/sext to the dag iselChris Lattner2005-08-311-0/+3
| | | | llvm-svn: 23171
* Handle AssertSext/AssertZext nodes, fixing the regressions last night.Chris Lattner2005-08-311-0/+4
| | | | llvm-svn: 23170
* Enable generation of AssertSext and AssertZext in the PPC backend.Nate Begeman2005-08-311-2/+7
| | | | llvm-svn: 23168
* Fix 'ret long' to return the high and lo parts in the right registers. ThisChris Lattner2005-08-311-9/+7
| | | | | | fixes crafty and probably others. llvm-svn: 23167
* now that physregs can exist in the same dag with multiple types, remove someChris Lattner2005-08-301-27/+8
| | | | | | ugly hacks llvm-svn: 23162
* Fix type mismatches when passing f32 values to callsChris Lattner2005-08-301-2/+7
| | | | llvm-svn: 23159
* Fix some indentation (first hunks).Chris Lattner2005-08-301-30/+20
| | | | | | | | | | | | | | | | | | | | | Remove code (last hunk) that miscompiled immediate and's, such as and uint %tmp.30, 4294958079 into andi. r8, r8, 56319 andis. r8, r8, 65535 instead of: li r9, -9217 and r8, r8, r9 The first always generates zero. This fixes espresso. llvm-svn: 23155
* Fix a problem Nate found where we swapped the operands of SHL/SHR_PARTS. ThisChris Lattner2005-08-301-4/+4
| | | | | | fixes fourinarow llvm-svn: 23153
* codegen ADD_PARTS correctly: put the results in the right registers! ThisChris Lattner2005-08-301-1/+1
| | | | | | fixes fhourstones llvm-svn: 23152
* add operands in the right order, fixing McCat/18-imp with the dag iselChris Lattner2005-08-301-3/+3
| | | | llvm-svn: 23150
* Make sure the selector emits register register copies with flag operandsChris Lattner2005-08-301-10/+20
| | | | | | | | | linking them to calls when appropriate, this prevents the scheduler from pulling these copies away from the call. This fixes Ptrdist/yacr2 llvm-svn: 23143
* The first operand to AND does not always have more than two operands. ThisChris Lattner2005-08-301-1/+2
| | | | | | fixes MediaBench/toast with the dag selector llvm-svn: 23141
* Fix a bug in my patch for legalizing to fsel. It cannot handle seteq/setne,Chris Lattner2005-08-301-0/+4
| | | | | | | which I failed to include when I moved the code over. This fixes MallocBench/gs. llvm-svn: 23140
* emit FMR instructions to convert f64<->f32 instructions, so things likeChris Lattner2005-08-301-8/+15
| | | | | | STOREs, know the right type to store. llvm-svn: 23139
* Fix some really strange indentation that xcode likes to use.Chris Lattner2005-08-301-157/+158
| | | | | | | | | no xcode, this is not right: if (!foo) break; X; llvm-svn: 23138
* fix a crash in cfracChris Lattner2005-08-291-2/+2
| | | | llvm-svn: 23137
* Implement DYNAMIC_STACKALLOC, wrap some long linesChris Lattner2005-08-291-2/+35
| | | | llvm-svn: 23136
* Fix a dumb bug of mine where we were mishandling the PPC ABI (undef handling).Chris Lattner2005-08-291-15/+16
| | | | | | This fixes voronoi and bh in Olden, allowing all of olden to pass! llvm-svn: 23133
* Fix a bug the last patch exposed in treeadd among othersChris Lattner2005-08-291-1/+1
| | | | llvm-svn: 23127
* A hack to fix a problem folding immedaites. This fixes Olden/power.Chris Lattner2005-08-291-4/+8
| | | | llvm-svn: 23126
* Fix order of operands for copytoreg node when emitting calls. This fixesChris Lattner2005-08-291-1/+1
| | | | | | | Olden/msFix order of operands for copytoreg node when emitting calls. This fixes Olden/mstt. llvm-svn: 23125
* add operands in the correct orderChris Lattner2005-08-291-2/+2
| | | | llvm-svn: 23123
* Fix a bug in FP_EXTEND, implement FP_TO_SINTChris Lattner2005-08-281-3/+15
| | | | llvm-svn: 23121
* fix an assertion failure in treeaddChris Lattner2005-08-281-2/+2
| | | | llvm-svn: 23120
OpenPOWER on IntegriCloud