summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* Add some really pedantic assertions to the load folding code. Fix a bunchChris Lattner2005-01-131-35/+43
| | | | | | | of cases where we accidentally emitted a load folded once and unfolded elsewhere. llvm-svn: 19522
* Do not fold (zero_ext (sign_ext V)) -> (sign_ext V), they are not the same.Chris Lattner2005-01-121-2/+2
| | | | | | This fixes llvm-test/SingleSource/Regression/C/casts.c llvm-svn: 19519
* We can only fold a load into an op if there is exactly one use of the value.Chris Lattner2005-01-121-1/+2
| | | | | | | Checking to see if the load has two uses is not equivalent, as the chain value may have zero uses. llvm-svn: 19518
* New methodChris Lattner2005-01-121-0/+33
| | | | llvm-svn: 19517
* New method.Chris Lattner2005-01-121-0/+5
| | | | llvm-svn: 19516
* Fix sign extend to long. When coming from sbyte, we used to generate:Chris Lattner2005-01-121-2/+2
| | | | | | | | | | | | | | | | movsbl 4(%esp), %eax movl %eax, %edx sarl $7, %edx Now we generate: movsbl 4(%esp), %eax movl %eax, %edx sarl $31, %edx Which is right. llvm-svn: 19515
* Update comments to indicate CopyFrom/ToReg take physregs as well as vregs.Chris Lattner2005-01-122-7/+7
| | | | llvm-svn: 19514
* Try both ways to fold an add together. This allows us to generate this codeChris Lattner2005-01-121-0/+4
| | | | | | | | | | | | | | | | | | | | | imul %EAX, %EAX, 400 add %ECX, %EAX add %ESI, DWORD PTR [%ECX + 4*%EDX] inc %EDX cmp %EDX, 100 instead of this: imul %EAX, %EAX, 400 add %ECX, %EAX mov %EAX, %EDX shl %EAX, 2 add %ECX, %EAX add %ESI, DWORD PTR [%ECX] inc %EDX cmp %EDX, 100 llvm-svn: 19513
* Shut up warnings with GCC 3.4.3 about uninitialized variables.Reid Spencer2005-01-121-2/+1
| | | | llvm-svn: 19512
* Fix a major miscompilation where we were overwriting the scale reg.Chris Lattner2005-01-121-1/+1
| | | | llvm-svn: 19511
* Do not use the type of the RHS constant to determine the type of the operation.Chris Lattner2005-01-121-1/+1
| | | | | | This fails for shifts because the constant is always 8 bits. llvm-svn: 19508
* Do not lose the offset from teh global when peephole optimizing instructions.Chris Lattner2005-01-121-1/+3
| | | | | | This fixes FreeBench/pcompress llvm-svn: 19507
* Silence VC++ warnings.Chris Lattner2005-01-124-17/+22
| | | | llvm-svn: 19506
* Add new file to Visual Studio CodeGen projectJeff Cohen2005-01-121-0/+3
| | | | llvm-svn: 19505
* Fix C++ more compilatiom errorsJeff Cohen2005-01-121-0/+1
| | | | llvm-svn: 19504
* Fix a compile error with VC++, which things that static const arrays needChris Lattner2005-01-121-2/+2
| | | | | | to be dynamically initialized. :( llvm-svn: 19503
* Fix a bug that caused us to crash on povray. We weren't emitting an ↵Chris Lattner2005-01-121-49/+69
| | | | | | FP_REG_KILL into a block that had a successor with a FP PHI node. llvm-svn: 19502
* Print a load of a null pointer (in intel mode) like this:Chris Lattner2005-01-121-1/+1
| | | | | | | | | | mov %AX, WORD PTR [0] instead of like this: mov %AX, WORD PTR [] llvm-svn: 19501
* Print a load of a null pointer like this:Chris Lattner2005-01-121-1/+1
| | | | | | | | | | movw 0, %ax instead of like this: movw , %ax llvm-svn: 19500
* Fix a crash compiling povray on UINT_TO_FP from i16.Chris Lattner2005-01-121-3/+1
| | | | llvm-svn: 19499
* Add an option to view the selection dags as they are generated.Chris Lattner2005-01-121-0/+11
| | | | llvm-svn: 19498
* Use and print out BuildStatus, we don't always have build errors.Misha Brukman2005-01-122-5/+6
| | | | llvm-svn: 19497
* There are no [mem] op= reg instructions for FP, so remove their entries.Chris Lattner2005-01-121-12/+11
| | | | llvm-svn: 19496
* Fix a bug where we didn't insert FP_REG_KILL instructions into MBB's thatChris Lattner2005-01-121-0/+15
| | | | | | | contain FP PHI nodes but no other FP defining instructions. This fixes 183.equake llvm-svn: 19495
* Fold TRUNCATE (LOAD P) into a smaller load from P.Chris Lattner2005-01-121-0/+15
| | | | llvm-svn: 19494
* Be more careful about order of arg evalution for CopyToReg nodes. This shrinksChris Lattner2005-01-121-2/+47
| | | | | | | | | 256.bzip2 from 7142 to 7103 lines of .s file. Second, add initial support for folding loads into compares, though this code is dynamically dead for now. :( llvm-svn: 19493
* Fold some more [mem] op= val operators. This allows us to things like thisChris Lattner2005-01-121-2/+39
| | | | | | | | | | | | | several times in 256.bzip2: mov %EAX, DWORD PTR [%ESP + 204] - mov %EAX, DWORD PTR [%EAX] - or %EAX, 2097152 - mov %ECX, DWORD PTR [%ESP + 204] - mov DWORD PTR [%ECX], %EAX + or DWORD PTR [%EAX], 2097152 llvm-svn: 19492
* Fold loads into sign/zero extends. instead of:Chris Lattner2005-01-111-2/+25
| | | | | | | | | | | mov %AL, BYTE PTR [%EDX + l18_length_code] movzx %EAX, %AL Emit: movzx %EAX, BYTE PTR [%EDX + l18_length_code] llvm-svn: 19489
* Comment out debug code :)Chris Lattner2005-01-111-2/+84
| | | | | | | | | | | | | | | | | | | | | | | | | | Select [mem] += Val operations. For constants, we used to get: mov %ECX, -32768 add %ECX, DWORD PTR [l4_match_start] mov DWORD PTR [l4_match_start], %ECX Now we get: add DWORD PTR [l4_match_start], -32768 For other values we used to get: mov %EBP, %EDI ;; because the add destroys the value add %EBP, DWORD PTR [l4_input_len] mov DWORD PTR [l4_input_len], %EBP now we get: add DWORD PTR [l4_input_len], %EDI Both of these use less registers than the alternative, are faster and smaller. llvm-svn: 19488
* Handle the global address case here, not just the offset case.Chris Lattner2005-01-111-4/+11
| | | | llvm-svn: 19487
* Treat int constants as not requiring a register, since they are almost alwaysChris Lattner2005-01-111-14/+22
| | | | | | folded into an instruction. llvm-svn: 19486
* Print the value types in the nodes of the graphChris Lattner2005-01-111-0/+19
| | | | llvm-svn: 19485
* add an assertion, avoid creating copyfromreg/copytoreg pairs that are theChris Lattner2005-01-111-2/+5
| | | | | | same for PHI nodes. llvm-svn: 19484
* * Factor a bunch of binary operator cases into shared code.Chris Lattner2005-01-111-192/+241
| | | | | | | * Fold loads into Add, sub, and, or, xor and mul when possible. * Codegen shl X, 1 as add X, X llvm-svn: 19483
* Clear the whole array, always.Chris Lattner2005-01-111-1/+1
| | | | llvm-svn: 19482
* No need to repeat the word `build' since it's under `Build status'Misha Brukman2005-01-111-1/+1
| | | | llvm-svn: 19481
* Fold multiplies by 3,5,9 into addressing modes when possible.Chris Lattner2005-01-111-0/+28
| | | | llvm-svn: 19480
* We don't always have build errors, so call it `status', not `error'Misha Brukman2005-01-111-1/+1
| | | | llvm-svn: 19479
* Squelch optimized warning.Chris Lattner2005-01-111-0/+1
| | | | llvm-svn: 19475
* Fix the documentation for executeAndWait so the argument comments areReid Spencer2005-01-111-19/+16
| | | | | | actually attributed to the arguments by doxygen. llvm-svn: 19473
* Instead of generating stuff like this:Chris Lattner2005-01-111-1/+14
| | | | | | | | | | | | | | | mov %ECX, %EAX add %ECX, 32768 mov %SI, WORD PTR [2*%ECX + l13_prev] Generate this: mov %SI, WORD PTR [2*%ECX + l13_prev + 65536] This occurs when you have a GEP instruction where an index is "something + imm". llvm-svn: 19472
* Make the construction of doxygen documentation a repeatable processReid Spencer2005-01-111-1/+5
| | | | llvm-svn: 19469
* Implement MEMCPY natively in terms of rep movs*Chris Lattner2005-01-111-1/+45
| | | | llvm-svn: 19468
* Implement memset -> rep stos*Chris Lattner2005-01-111-3/+64
| | | | llvm-svn: 19467
* Announce that we don't support mem ops yet.Chris Lattner2005-01-111-1/+5
| | | | llvm-svn: 19466
* Teach legalize to lower MEMSET/MEMCPY/MEMMOVE operations if the targetChris Lattner2005-01-111-7/+52
| | | | | | does not support them. llvm-svn: 19465
* Print new operations.Chris Lattner2005-01-111-0/+3
| | | | llvm-svn: 19464
* Turn memset/memcpy/memmove into the corresponding operations.Chris Lattner2005-01-111-52/+15
| | | | llvm-svn: 19463
* Add MEMSET/MEMCPY/MEMMOVE operations. Fix a really bad bug in the vectorChris Lattner2005-01-111-2/+10
| | | | | | SDNode ctor. llvm-svn: 19462
* * Add the use of LOADABLE_MODULE=1 in the makefile exampleReid Spencer2005-01-111-13/+18
| | | | | | | * Change the names of the resulting module to Hello instead of libHello * Change lib/Debug -> Debug/lib per new makefile implementation. llvm-svn: 19459
OpenPOWER on IntegriCloud