- 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: 19244
-
Chris Lattner authored
llvm-svn: 19243
-
Chris Lattner authored
they are dense. Add a virtual method that targets can choose to implement. llvm-svn: 19242
-
Chris Lattner authored
llvm-svn: 19241
-
Reid Spencer authored
llvm-svn: 19240
-
Reid Spencer authored
This prevents bytecode splats with usage like: cat file.ll | llvm-as - llvm-svn: 19239
-
Reid Spencer authored
into lib/Support so it can be used with other tools. llvm-svn: 19238
-
Reid Spencer authored
a terminal/console. llvm-svn: 19237
-
- Jan 01, 2005
-
-
Jeff Cohen authored
console or not. llvm-svn: 19236
-
Jeff Cohen authored
llvm-svn: 19235
-
Jeff Cohen authored
llvm-svn: 19234
-
Reid Spencer authored
console or not. llvm-svn: 19233
-
Jeff Cohen authored
llvm-svn: 19232
-
Jeff Cohen authored
llvm-svn: 19231
-
Jeff Cohen authored
llvm-svn: 19230
-
Jeff Cohen authored
llvm-svn: 19229
-
Jeff Cohen authored
llvm-svn: 19228
-
Jeff Cohen authored
llvm-svn: 19227
-
Jeff Cohen authored
llvm-svn: 19226
-
Jeff Cohen authored
llvm-svn: 19225
-
Jeff Cohen authored
llvm-svn: 19224
-
Jeff Cohen authored
Move TableGen generated files out of the src tree Add descriptions to the custom build steps llvm-svn: 19223
-
Reid Spencer authored
llvm-svn: 19222
-
Reid Spencer authored
llvm-svn: 19221
-
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
llvm-svn: 19219
-
Chris Lattner authored
llvm-svn: 19218
-
Chris Lattner authored
llvm-svn: 19217
-
Chris Lattner authored
llvm-svn: 19216
-
Chris Lattner authored
llvm-svn: 19215
-
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
dead instructions. llvm-svn: 19211
-
Chris Lattner authored
llvm-svn: 19210
-
Chris Lattner authored
llvm-svn: 19209
-
Chris Lattner authored
llvm-svn: 19208
-
Reid Spencer authored
llvm-svn: 19207
-