summaryrefslogtreecommitdiffstats
path: root/llvm/lib
Commit message (Collapse)AuthorAgeFilesLines
...
* Emit more efficient 64-bit operations when the RHS is a constant, and oneChris Lattner2004-04-061-5/+41
| | | | | | | | | | | | | | | of the words of the constant is zeros. For example: Y = and long X, 1234 now generates: Yl = and Xl, 1234 Yh = 0 instead of: Yl = and Xl, 1234 Yh = and Xh, 0 llvm-svn: 12685
* Fix typeoChris Lattner2004-04-061-1/+1
| | | | llvm-svn: 12684
* Add support for simple immediate handling to long instruction selection.Chris Lattner2004-04-061-25/+37
| | | | | | This allows us to handle code like 'add long %X, 123456789012' more efficiently. llvm-svn: 12683
* The sbb instructions really ARE sbb's, not adc'sChris Lattner2004-04-061-4/+4
| | | | llvm-svn: 12682
* Implement negation of longs efficiently. For this testcase:Chris Lattner2004-04-061-2/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | long %test(long %X) { %Y = sub long 0, %X ret long %Y } We used to generate: test: sub %ESP, 4 mov DWORD PTR [%ESP], %ESI mov %ECX, DWORD PTR [%ESP + 8] mov %ESI, DWORD PTR [%ESP + 12] mov %EAX, 0 mov %EDX, 0 sub %EAX, %ECX sbb %EDX, %ESI mov %ESI, DWORD PTR [%ESP] add %ESP, 4 ret Now we generate: test: mov %EAX, DWORD PTR [%ESP + 4] mov %EDX, DWORD PTR [%ESP + 8] neg %EAX adc %EDX, 0 neg %EDX ret llvm-svn: 12681
* Minor tweak to avoid an extra reg-reg copy that the register allocator has ↵Chris Lattner2004-04-061-1/+10
| | | | | | to eliminate llvm-svn: 12680
* Two changes:Chris Lattner2004-04-061-6/+17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | * In promote32, if we can just promote a constant value, do so instead of promoting a constant dynamically. * In visitReturn inst, actually USE the promote32 argument that takes a Value* The end result of this is that we now generate this: test: mov %EAX, 0 ret instead of... test: mov %AX, 0 movzx %EAX, %AX ret for: ushort %test() { ret ushort 0 } llvm-svn: 12679
* lli no longer takes the -quiet option!Chris Lattner2004-04-051-2/+0
| | | | llvm-svn: 12674
* Do not mangle intrinsics in any way!Chris Lattner2004-04-051-1/+4
| | | | llvm-svn: 12673
* Sparc don't got not "sqrtl", bum bum bumChris Lattner2004-04-051-1/+1
| | | | llvm-svn: 12670
* Kill warnings during an optimized compile where assert() disappears.Misha Brukman2004-04-051-0/+2
| | | | llvm-svn: 12669
* Fix PR312 and IndVarsSimplify/2004-04-05-InvokeCastCrash.llxChris Lattner2004-04-051-0/+2
| | | | llvm-svn: 12668
* Fix a bug in yesterdays checkins which broke siod. siod is a great ↵Chris Lattner2004-04-051-1/+1
| | | | | | testcase! :) llvm-svn: 12659
* Fix InstCombine/2004-04-04-InstCombineReplaceAllUsesWith.llChris Lattner2004-04-051-3/+15
| | | | llvm-svn: 12658
* Support getelementptr instructions which use uint's to index into structureChris Lattner2004-04-0515-201/+214
| | | | | | | types and can have arbitrary 32- and 64-bit integer types indexing into sequential types. llvm-svn: 12653
* Support getelementptr instructions which use uint's to index into structureChris Lattner2004-04-051-1/+26
| | | | | | | | | types and can have arbitrary 32- and 64-bit integer types indexing into sequential types. Auto-upgrade .ll files that use ubytes to index into structures to use uint's. llvm-svn: 12652
* Implement support for a new LLVM 1.3 bytecode format, which uses uint'sChris Lattner2004-04-056-87/+191
| | | | | | | to index into structure types and allows arbitrary 32- and 64-bit integer types to index into sequential types. llvm-svn: 12651
* Add ConstantExpr::get(Sign|Zero)Extend methodsChris Lattner2004-04-041-0/+16
| | | | llvm-svn: 12648
* In the perhaps not-to-distant future, we might support gep instructions thatChris Lattner2004-04-041-5/+20
| | | | | | | have non-long indices for sequential types. In order to avoid trying to figure out how the v9 backend works, we'll just hack it in the preselection pass. llvm-svn: 12647
* Adjust to new interfaceChris Lattner2004-04-041-1/+1
| | | | llvm-svn: 12646
* Adjust to new gep_type_iterator prototypes.Chris Lattner2004-04-041-1/+3
| | | | llvm-svn: 12644
* Remove a bunch of cruft that was used to be backwards compatible with the lastChris Lattner2004-04-033-92/+23
| | | | | | | prerelease format for LLVM bytecode files. Now we only are compatible with LLVM 1.0+. llvm-svn: 12643
* Implement test/Regression/Transforms/GCSE/undefined_load.llChris Lattner2004-04-031-0/+14
| | | | llvm-svn: 12641
* Add a break in the default caseChris Lattner2004-04-031-0/+1
| | | | llvm-svn: 12639
* Add autoconf support for isStandardOutAConsole ().Brian Gaeke2004-04-021-1/+5
| | | | llvm-svn: 12638
* Remove obsolete filesChris Lattner2004-04-021-324/+0
| | | | llvm-svn: 12633
* Add support for many of the MRegisterInfo callbacks.Brian Gaeke2004-04-021-9/+48
| | | | | | | Eliminating call-frame pseudo instrs and frame indices are still stubs. Flesh out the emitPrologue method based on better ABI knowledge. llvm-svn: 12632
* Add load, store, and NOP instructions.Brian Gaeke2004-04-021-2/+21
| | | | | | Fix up comments. llvm-svn: 12631
* Add support for printing pc-relative displacements of functions (as used inBrian Gaeke2004-04-021-0/+6
| | | | | | the CALL instruction). llvm-svn: 12630
* Add support for call instructions (0-ary only for now).Brian Gaeke2004-04-021-1/+7
| | | | llvm-svn: 12629
* Comment out debugging printoutsChris Lattner2004-04-021-1/+5
| | | | llvm-svn: 12623
* Rewrite the indvars pass to use the ScalarEvolution analysis.Chris Lattner2004-04-021-298/+346
| | | | | | | | This also implements some new features for the indvars pass, including linear function test replacement, exit value substitution, and it works with a much more general class of induction variables and loops. llvm-svn: 12620
* Add a new analysisChris Lattner2004-04-021-0/+2482
| | | | llvm-svn: 12619
* Fix the obvious bug in my previous checkinChris Lattner2004-04-021-0/+3
| | | | llvm-svn: 12618
* Implement Transforms/SimplifyCFG/return-merge.llChris Lattner2004-04-021-1/+57
| | | | | | | | | | This actually causes us to turn code like: return C ? A : B; into a select instruction. llvm-svn: 12617
* Clean up code a bit.Alkis Evlogimenos2004-04-021-14/+7
| | | | llvm-svn: 12615
* Only strip symbols if emitting bytecode to the assembly file.Brian Gaeke2004-04-021-29/+33
| | | | | | | | | | | | | | Move lowerselect pass to come after preselection. Move machine code construction and stack slots pass to come right before instruction selection. This is to help fix perlbmk. Update comments. Make the sequence of passes in addPassesToJITCompile look more like the sequence of passes in addPassesToEmitAssembly, including support for -print-machineinstrs. llvm-svn: 12614
* Add support for constant select expressions. Clarify the assertion failure msg.Brian Gaeke2004-04-021-3/+17
| | | | llvm-svn: 12613
* Fix type in commentsAlkis Evlogimenos2004-04-021-2/+2
| | | | llvm-svn: 12611
* Fix type in instruction builder instantiationAlkis Evlogimenos2004-04-021-1/+1
| | | | llvm-svn: 12610
* Make the verifier API more complete and useful.Chris Lattner2004-04-021-20/+48
| | | | | | Patch contributed by Reid Spencer llvm-svn: 12609
* Add more ADC and SBB variantsAlkis Evlogimenos2004-04-023-11/+24
| | | | llvm-svn: 12607
* Add new function, autoconf support required thoChris Lattner2004-04-021-0/+8
| | | | llvm-svn: 12600
* Fix PR310 and TailDup/2004-04-01-DemoteRegToStack.llxChris Lattner2004-04-011-5/+12
| | | | llvm-svn: 12597
* Remove some assertions that are now bogus with the last patch I put inChris Lattner2004-04-011-6/+1
| | | | llvm-svn: 12595
* Fix PR306: Loop simplify incorrectly updates dominator informationChris Lattner2004-04-011-9/+22
| | | | | | Testcase: LoopSimplify/2004-04-01-IncorrectDomUpdate.ll llvm-svn: 12592
* Add support for select constant expressions to the CBE, fixing SIODChris Lattner2004-04-011-0/+9
| | | | llvm-svn: 12589
* Simplify code by using the more powerful BuildMI forms.Chris Lattner2004-04-011-34/+41
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Implement a small optimization. In test/Regression/CodeGen/X86/select.ll, we now generate this for foldSel3: foldSel3: mov %AL, BYTE PTR [%ESP + 4] fld DWORD PTR [%ESP + 8] fld DWORD PTR [%ESP + 12] mov %EAX, DWORD PTR [%ESP + 16] mov %ECX, DWORD PTR [%ESP + 20] cmp %EAX, %ECX fxch %ST(1) fcmovae %ST(0), %ST(1) *** fstp %ST(1) ret Instead of: foldSel3: mov %AL, BYTE PTR [%ESP + 4] fld DWORD PTR [%ESP + 8] fld DWORD PTR [%ESP + 12] mov %EAX, DWORD PTR [%ESP + 16] mov %ECX, DWORD PTR [%ESP + 20] cmp %EAX, %ECX fxch %ST(1) fcmovae %ST(0), %ST(1) *** fxch %ST(1) *** fstp %ST(0) ret In practice, this only effects code size: performance should be basically unaffected. llvm-svn: 12588
* Wrap at 80 colsChris Lattner2004-04-011-2/+2
| | | | llvm-svn: 12587
* Generate slightly smaller code, "test R, R" instead of "cmp R, 0"Chris Lattner2004-03-311-5/+3
| | | | llvm-svn: 12579
OpenPOWER on IntegriCloud