summaryrefslogtreecommitdiffstats
path: root/llvm
Commit message (Collapse)AuthorAgeFilesLines
* Fix the MASM asmprinter's lies. It does not want to emit code to .text/.dataChris Lattner2006-05-094-7/+17
| | | | | | it wants it emitted to _text/_data. llvm-svn: 28185
* Split SwitchSection into SwitchTo{Text|Data}Section methods.Chris Lattner2006-05-099-86/+131
| | | | llvm-svn: 28184
* Split SwitchSection into the SwitchTo{Text|Data}Section functions, to betterChris Lattner2006-05-091-3/+19
| | | | | | support assemblers that distinguish the two. llvm-svn: 28183
* Some notes and thoughts to myselfChris Lattner2006-05-091-7/+7
| | | | llvm-svn: 28182
* Patch to make some xforms preserve each other. Patch contributed byChris Lattner2006-05-095-2/+32
| | | | | | Domagoj Babic! llvm-svn: 28181
* Use the -dumpversion option to llvm-gcc which gives us just the version #Reid Spencer2006-05-092-2/+2
| | | | | | | and is unlikely to change in future releases. This also simplifies the parsing of the full and major llvm-gcc version numbers in the script. llvm-svn: 28180
* Move some methods out of line so that MutexGuard.h isn't needed in a public ↵Chris Lattner2006-05-083-9/+83
| | | | | | header. llvm-svn: 28179
* Move methods out of line so that MutexGuard.h isn't required in the header.Chris Lattner2006-05-081-48/+18
| | | | llvm-svn: 28178
* Another bad case I noticedChris Lattner2006-05-081-0/+37
| | | | llvm-svn: 28177
* add a noteChris Lattner2006-05-081-0/+9
| | | | llvm-svn: 28176
* Make the case I just checked in stronger. Now we compile this:Chris Lattner2006-05-081-5/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | short test2(short X, short x) { int Y = (short)(X+x); return Y >> 1; } to: _test2: add r2, r3, r4 extsh r2, r2 srawi r3, r2, 1 blr instead of: _test2: add r2, r3, r4 extsh r2, r2 srwi r2, r2, 1 extsh r3, r2 blr llvm-svn: 28175
* Implement and_sext.ll:test3, generating:Chris Lattner2006-05-081-1/+8
| | | | | | | | | | | | | | | | | | | | | _test4: srawi r3, r3, 16 blr instead of: _test4: srwi r2, r3, 16 extsh r3, r2 blr for: short test4(unsigned X) { return (X >> 16); } llvm-svn: 28174
* new testcaseChris Lattner2006-05-081-0/+6
| | | | llvm-svn: 28173
* Yet more readme updatingNate Begeman2006-05-081-36/+22
| | | | llvm-svn: 28172
* Compile this:Chris Lattner2006-05-081-0/+5
| | | | | | | | | | | | | | | | | | | | | | | short test4(unsigned X) { return (X >> 16); } to: _test4: movl 4(%esp), %eax sarl $16, %eax ret instead of: _test4: movl $-65536, %eax andl 4(%esp), %eax sarl $16, %eax ret llvm-svn: 28171
* New note about something bad happening in target independent optimizersNate Begeman2006-05-081-2/+18
| | | | llvm-svn: 28170
* Proving once again that I am not as smart as the compilerNate Begeman2006-05-081-2/+1
| | | | llvm-svn: 28169
* Fold more shifts into inserts, and update the READMENate Begeman2006-05-082-20/+34
| | | | llvm-svn: 28168
* Fold shifts with undef operands.Chris Lattner2006-05-081-0/+7
| | | | llvm-svn: 28167
* When tracking demanded bits, if any bits from the sext of an SRA are demanded,Chris Lattner2006-05-081-2/+8
| | | | | | then so is the input sign bit. This fixes mediabench/g721 on X86. llvm-svn: 28166
* Make emission of jump tables a bit less conservative; they are now requiredNate Begeman2006-05-081-4/+4
| | | | | | to be only 31.25% dense, rather than 75% dense. llvm-svn: 28165
* Fixing truncate. Previously we were emitting truncate from r16 to r8 asEvan Cheng2006-05-087-25/+100
| | | | | | | | | | | | | | | | | | | | | | | | movw. That is we promote the destination operand to r16. So %CH = TRUNC_R16_R8 %BP is emitted as movw %bp, %cx. This is incorrect. If %cl is live, it would be clobbered. Ideally we want to do the opposite, that is emitted it as movb ??, %ch But this is not possible since %bp does not have a r8 sub-register. We are now defining a new register class R16_ which is a subclass of R16 containing only those 16-bit registers that have r8 sub-registers (i.e. AX - DX). We isel the truncate to two instructions, a MOV16to16_ to copy the value to the R16_ class, followed by a TRUNC_R16_R8. Due to bug 770, the register colaescer is not going to coalesce between R16 and R16_. That will be fixed later so we can eliminate the MOV16to16_. Right now, it can only be eliminated if we are lucky that source and destination registers are the same. llvm-svn: 28164
* Move the definition of value_use_iterator::getOperandNo to User.h where theChris Lattner2006-05-082-4/+10
| | | | | | | definition of the User class is available, this fixes the build with some compiler versions. llvm-svn: 28163
* Update some stuff now that the new rlwimi code has gone inNate Begeman2006-05-082-70/+0
| | | | llvm-svn: 28162
* Fix PR772Nate Begeman2006-05-081-9/+9
| | | | llvm-svn: 28161
* Remove unncessary includeNate Begeman2006-05-081-1/+0
| | | | llvm-svn: 28160
* This test passes now, remove xfail markerChris Lattner2006-05-071-2/+1
| | | | | | Change test to be a positive test instead of a negative test llvm-svn: 28159
* Typo'sEvan Cheng2006-05-071-2/+2
| | | | llvm-svn: 28158
* Unlike Unix, Windows won't let a file be implicitly replaced via renaming ↵Jeff Cohen2006-05-071-1/+1
| | | | | | without explicit permission. llvm-svn: 28157
* New rlwimi implementation, which is superior to the old one. There areNate Begeman2006-05-071-86/+45
| | | | | | | | still a couple missed optimizations, but we now generate all the possible rlwimis for multiple inserts into the same bitfield. More regression tests to come. llvm-svn: 28156
* Use ComputeMaskedBits to determine # sign bits as a fallback. This allows usChris Lattner2006-05-061-2/+23
| | | | | | | to handle all kinds of stuff, including silly things like: sextinreg(setcc,i16) -> setcc. llvm-svn: 28155
* Add some more sign propagation casesChris Lattner2006-05-061-10/+77
| | | | llvm-svn: 28154
* Apply bug fix supplied by Greg Pettyjohn for a bug he found: '<invalid>' is ↵Jeff Cohen2006-05-061-1/+1
| | | | | | not a legal path on Windows. llvm-svn: 28153
* Simplify some code, add a couple minor missed foldsChris Lattner2006-05-061-21/+16
| | | | llvm-svn: 28152
* constant fold sign_extend_inregChris Lattner2006-05-061-1/+9
| | | | llvm-svn: 28151
* remove cases handled elsewhereChris Lattner2006-05-061-16/+2
| | | | llvm-svn: 28150
* Add some more simple sign bit propagation cases.Chris Lattner2006-05-061-27/+67
| | | | llvm-svn: 28149
* Fix some loose ends in MASM support.Jeff Cohen2006-05-063-65/+77
| | | | llvm-svn: 28148
* new testcase we handle right now.Chris Lattner2006-05-061-6/+20
| | | | llvm-svn: 28147
* Use the new TargetLowering::ComputeNumSignBits method to eliminateChris Lattner2006-05-061-5/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | sign_extend_inreg operations. Though ComputeNumSignBits is still rudimentary, this is enough to compile this: short test(short X, short x) { int Y = X+x; return (Y >> 1); } short test2(short X, short x) { int Y = (short)(X+x); return Y >> 1; } into: _test: add r2, r3, r4 srawi r3, r2, 1 blr _test2: add r2, r3, r4 extsh r2, r2 srawi r3, r2, 1 blr instead of: _test: add r2, r3, r4 srawi r2, r2, 1 extsh r3, r2 blr _test2: add r2, r3, r4 extsh r2, r2 srawi r2, r2, 1 extsh r3, r2 blr llvm-svn: 28146
* Add some really really simple code for computing sign-bit propagation.Chris Lattner2006-05-061-0/+95
| | | | | | This will certainly be enhanced in the future. llvm-svn: 28145
* Add some new methods for computing sign bit information.Chris Lattner2006-05-061-0/+13
| | | | llvm-svn: 28144
* When inserting casts, be careful of where we put them. We cannot insertChris Lattner2006-05-061-9/+12
| | | | | | | | a cast immediately before a PHI node. This fixes Regression/CodeGen/Generic/2006-05-06-GEP-Cast-Sink-Crash.ll llvm-svn: 28143
* new testcaseChris Lattner2006-05-061-0/+33
| | | | llvm-svn: 28142
* Move some code around.Chris Lattner2006-05-061-124/+140
| | | | | | | | | | Make the "fold (and (cast A), (cast B)) -> (cast (and A, B))" transformation only apply when both casts really will cause code to be generated. If one or both doesn't, then this xform doesn't remove a cast. This fixes Transforms/InstCombine/2006-05-06-Infloop.ll llvm-svn: 28141
* new testcase from ghostscript that inf looped instcombineChris Lattner2006-05-061-0/+522
| | | | llvm-svn: 28140
* Teach the X86 backend about non-i32 inline asm register classes.Chris Lattner2006-05-061-5/+25
| | | | llvm-svn: 28139
* Fold (trunc (srl x, c)) -> (srl (trunc x), c)Chris Lattner2006-05-061-0/+32
| | | | llvm-svn: 28138
* Fold trunc(any_ext). This gives stuff like:Chris Lattner2006-05-051-1/+2
| | | | | | | | | | 27,28c27 < movzwl %di, %edi < movl %edi, %ebx --- > movw %di, %bx llvm-svn: 28137
* Shrink shifts when possible.Chris Lattner2006-05-051-0/+12
| | | | llvm-svn: 28136
OpenPOWER on IntegriCloud