- Jan 02, 2005
-
-
Chris Lattner authored
1. Add new instructions for checking parity flags: JP, JNP, SETP, SETNP. 2. Set the isCommutable and isPromotableTo3Address bits on several instructions. llvm-svn: 19246
-
Chris Lattner authored
1. If we are two-addressing a commutable instruction and the LHS is not the last use of the variable, see if the instruction is the last use of the RHS. If so, commute the instruction, allowing us to avoid a register-register copy in many cases for common instructions like ADD, OR, AND, etc on X86. 2. If #1 doesn't hold, and if this is an instruction that also existing in 3-address form, promote the instruction to a 3-address instruction to avoid the register-register copy. We can do this for several common instructions in X86, including ADDrr, INC, DEC, etc. This patch implements test/Regression/CodeGen/X86/commute-two-addr.ll, overlap-add.ll, and overlap-shift.ll when I check in the X86 support for it. llvm-svn: 19245
-
Chris Lattner authored
llvm-svn: 19241
-
Reid Spencer authored
llvm-svn: 19240
-
Reid Spencer authored
a terminal/console. llvm-svn: 19237
-
- Jan 01, 2005
-
-
Jeff Cohen authored
console or not. llvm-svn: 19236
-
Reid Spencer authored
console or not. llvm-svn: 19233
-
Chris Lattner authored
* We can now fold cast instructions into select instructions that have at least one constant operand. * We now optimize expressions more aggressively based on bits that are known to be zero. These optimizations occur a lot in code that uses bitfields even in simple ways. * We now turn more cast-cast sequences into AND instructions. Before we would only do this if it if all types were unsigned. Now only the middle type needs to be unsigned (guaranteeing a zero extend). * We transform sign extensions into zero extensions in several cases. This corresponds to these test/Regression/Transforms/InstCombine testcases: 2004-11-22-Missed-and-fold.ll and.ll: test28-29 cast.ll: test21-24 and-or-and.ll cast-cast-to-and.ll zeroext-and-reduce.ll llvm-svn: 19220
-
Chris Lattner authored
While we're at it, improve codegen of select instructions. For this testcase: int %test(bool %C, int %A, int %B) { %D = select bool %C, int %A, int %B ret int %D } We used to generate this code: _test: cmpwi cr0, r3, 0 bne .LBB_test_2 ; .LBB_test_1: ; b .LBB_test_3 ; .LBB_test_2: ; or r5, r4, r4 .LBB_test_3: ; or r3, r5, r5 blr Now we emit: _test: cmpwi cr0, r3, 0 bne .LBB_test_2 ; .LBB_test_1: ; or r4, r5, r5 .LBB_test_2: ; or r3, r4, r4 blr -Chris llvm-svn: 19214
-
Chris Lattner authored
In particular, instead of compiling this: bool %test(int %A, int %B) { %C = setlt int %A, %B ret bool %C } to this: test: save %sp, -96, %sp subcc %i0, %i1, %g0 bl .LBBtest_1 ! nop ba .LBBtest_2 ! nop .LBBtest_1: ! or %g0, 1, %i0 ba .LBBtest_3 ! nop .LBBtest_2: ! or %g0, 0, %i0 ba .LBBtest_3 ! nop .LBBtest_3: ! restore %g0, %g0, %g0 retl nop We now compile it to this: test: save %sp, -96, %sp subcc %i0, %i1, %g0 or %g0, 1, %i0 bl .LBBtest_2 ! nop .LBBtest_1: ! or %g0, %g0, %i0 .LBBtest_2: ! restore %g0, %g0, %g0 retl nop llvm-svn: 19213
-
Chris Lattner authored
SimplifyCFG is one of those passes that we use for final cleanup: it should not rely on other passes to clean up its garbage. This fixes the "why are trivially dead setcc's in the output of gccas" problem. llvm-svn: 19212
-
Chris Lattner authored
llvm-svn: 19210
-
- Dec 31, 2004
-
-
Jeff Cohen authored
llvm-svn: 19203
-
Jeff Cohen authored
llvm-svn: 19202
-
Reid Spencer authored
llvm-svn: 19201
-
Jeff Cohen authored
llvm-svn: 19199
-
Jeff Cohen authored
llvm-svn: 19198
-
- Dec 30, 2004
-
-
Jeff Cohen authored
llvm-svn: 19190
-
- Dec 29, 2004
-
-
Chris Lattner authored
llvm-svn: 19180
-
Chris Lattner authored
Fix testcase CodeGen/CBackend/2004-12-28-LogicalConstantExprs.ll llvm-svn: 19176
-
Reid Spencer authored
llvm-svn: 19172
-
- Dec 27, 2004
-
-
Reid Spencer authored
portability, the --track-space option was inadvertently ignored. This patch fixes that so that sys::Process::GetMallocUsage() is only invoked if the --track-spaces option is given. Apparently the mallinfo() call that GetMallocUsage() uses is *very* slow, especially when processing very large modules like projects/llvm-test/MultiSource/Applications/kimwitu++. llvm-svn: 19163
-
Reid Spencer authored
* Ensure #includes are wrapped with appropriate HAVE_ guards * Account for variations in time.h and sys/time.h inclusion. * Add macros for getting wait(2) exit status correctly (per autoconf sugg.) * Implement ThrowErrno in terms of strerror_r, strerror or none based on what is available on the platform. llvm-svn: 19161
-
Reid Spencer authored
* Remove redundant #includes that are now in Unix.h llvm-svn: 19160
-
Reid Spencer authored
* Move implementation of sys::PreventCoreFiles function to this file from the now defunct SysConfig abstraction. llvm-svn: 19159
-
Reid Spencer authored
* Ensure #includes are wrapped with appropriate HAVE_ guards * Ensure variations in "dirent" structure are accounted for. llvm-svn: 19158
-
Reid Spencer authored
* Ensure #includes are wrapped with appropriate HAVE_ guards * Consolidate implementation from operating system specific directory. llvm-svn: 19157
-
Reid Spencer authored
* Ensure #includes are wrapped with appropriate HAVE_ guards llvm-svn: 19156
-
Reid Spencer authored
* Consolidate implementation for Unix systems into Unix/TimeValue.cpp * Avoid use of symbolic link to #include platform-specific implementation. llvm-svn: 19155
-
Reid Spencer authored
* Consolidate implementation for Unix systems into Unix/Program.cpp * Avoid use of symbolic link to #include platform-specific implementation. llvm-svn: 19154
-
Reid Spencer authored
* Consolidate implementation for Unix systems into Unix/Signals.cpp * Avoid use of symbolic link to #include platform-specific implementation. llvm-svn: 19153
-
Reid Spencer authored
* Consolidate implementation for Unix systems into Unix/Memory.cpp * Avoid use of symbolic link to #include platform-specific implementation. llvm-svn: 19152
-
Reid Spencer authored
* Consolidate implementation for Unix systems into Unix/MappedFile.cpp * Avoid use of symbolic link to #include platform-specific implementation. llvm-svn: 19151
-
Reid Spencer authored
* Consolidate implementation for Unix systems into Unix/Process.cpp * Avoid use of symbolic link to #include platform-specific implementation. llvm-svn: 19150
-
Reid Spencer authored
SysConf abstraction was pointless because it had a single function in it that pertained only to the current process. So merge it into the Process abstraction and remove the files completely. llvm-svn: 19149
-
- Dec 25, 2004
-
-
Jeff Cohen authored
Old versions of the C runtime somehow get loaded into the process. Make sure they aren't searched for symbols. llvm-svn: 19141
-
- Dec 24, 2004
-
-
Jeff Cohen authored
llvm-svn: 19140
-
Jeff Cohen authored
ltdl's LGPL license would infect all of LLVM. llvm-svn: 19137
-
Reid Spencer authored
Merge implementations of isValid and GetTemporaryDirectory into this file. There is not any point having the operating system specific files for such little variation between the Unix family of systems. llvm-svn: 19134
-
Reid Spencer authored
This implementation is no longer needed, its been merged to Unix/Path.cpp since there is such little variation between the platforms. llvm-svn: 19133
-