- Aug 18, 2005
-
-
Nate Begeman authored
llvm-svn: 22849
-
Jim Laskey authored
llvm-svn: 22848
-
Nate Begeman authored
several of the PowerPC opcodes that come in both negated and non-negated forms. llvm-svn: 22845
-
- Aug 17, 2005
-
-
Chris Lattner authored
llvm-svn: 22837
-
Chris Lattner authored
incomplete, but it is a start. It handles basic argument/retval stuff, immediates, add and sub. llvm-svn: 22836
-
Chris Lattner authored
llvm-svn: 22835
-
Chris Lattner authored
selector. Also, there is no difference between addSImm and addImm, so just use addImm, folding some branches. llvm-svn: 22819
-
Jim Laskey authored
llvm-svn: 22818
-
Jim Laskey authored
marked as legal. llvm-svn: 22816
-
Jim Laskey authored
llvm-svn: 22815
-
Nate Begeman authored
Remove dead code in ISD::Constant handling Add support for add long, imm16 We now codegen 'long long foo(long long a) { return ++a; }' as: addic r4, r4, 1 addze r3, r3 blr instead of: li r2, 1 li r5, 0 addc r2, r4, r2 adde r3, r3, r5 blr llvm-svn: 22811
-
- Aug 16, 2005
-
-
Chris Lattner authored
llvm-svn: 22808
-
Nate Begeman authored
fixme from the PowerPC backend. Emit slightly better code for legalizing select_cc. llvm-svn: 22805
-
Chris Lattner authored
can be shared with the DAG->DAG selector. llvm-svn: 22799
-
Chris Lattner authored
Only run createLowerConstantExpressionsPass for the simple isel. The DAG isel has no need for it. llvm-svn: 22794
-
- Aug 15, 2005
-
-
Jim Laskey authored
llvm-svn: 22792
-
Jim Laskey authored
Changed code gen for int to f32 to use rounding. This makes FP results consistent with gcc. llvm-svn: 22791
-
- Aug 14, 2005
-
-
Nate Begeman authored
1. Not selecting the false value of a select_cc in the false arm, which isn't legal for nested selects. 2. Actually returning the node we created and Legalized in the FP_TO_UINT Expander. llvm-svn: 22789
-
Nate Begeman authored
codegen for FP_TO_UINT by using the legalizer's SELECT variant. Implement a codegen improvement for SELECT_CC, selecting the false node in the MBB that feeds the phi node. This allows us to codegen: void foo(int *a, int b, int c) { int d = (a < b) ? 5 : 9; *a = d; } as: _foo: li r2, 5 cmpw cr0, r4, r3 bgt .LBB_foo_2 ; entry .LBB_foo_1: ; entry li r2, 9 .LBB_foo_2: ; entry stw r2, 0(r3) blr insted of: _foo: li r2, 5 li r5, 9 cmpw cr0, r4, r3 bgt .LBB_foo_2 ; entry .LBB_foo_1: ; entry or r2, r5, r5 .LBB_foo_2: ; entry stw r2, 0(r3) blr llvm-svn: 22784
-
- Aug 13, 2005
-
-
Nate Begeman authored
back once a DAG->DAG ISel exists. llvm-svn: 22778
-
Jim Laskey authored
Fix for 2005-08-12-rlwimi-crash.ll. Make allowance for masks being shifted to zero. llvm-svn: 22773
-
Jim Laskey authored
1. This changes handles the cases of (~x)&y and x&(~y) yielding ANDC, and (~x)|y and x|(~y) yielding ORC. llvm-svn: 22771
-
- Aug 11, 2005
-
-
Jim Laskey authored
specified opcode and an integer constant right operand. 2. Modified ISD::SHL, ISD::SRL, ISD::SRA to use rlwinm when applied after a mask. llvm-svn: 22761
-
Chris Lattner authored
Patch by Jim Laskey. llvm-svn: 22760
-
Chris Lattner authored
(avoids an extra level of indirection in MakeReg). defined MakeIntReg using RegMap->createVirtualRegister(PPC32::GPRCRegisterClass) defined MakeFPReg using RegMap->createVirtualRegister(PPC32::FPRCRegisterClass) s/MakeReg(MVT::i32)/MakeIntReg/ s/MakeReg(MVT::f64)/MakeFPReg/ Patch by Jim Laskey! llvm-svn: 22759
-
- Aug 10, 2005
-
-
Nate Begeman authored
reflects what the hardware is capable of. This significantly simplifies the CC handling logic throughout the ISel. llvm-svn: 22756
-
Chris Lattner authored
1. Clean up how SelectIntImmediateExpr handles use counts. 2. "Subtract from" was not clearing hi 16 bits. Patch by Jim Laskey llvm-svn: 22754
-
Chris Lattner authored
Patch by Jim Laskey! llvm-svn: 22750
-
Chris Lattner authored
New routine: ISel::SelectIntImmediateExpr 2. Now checking use counts of large constants. If use count is > 2 then drop thru so that the constant gets loaded into a register. Source: int %test1(int %a) { entry: %tmp.1 = add int %a, 123456789 ; <int> [#uses=1] %tmp.2 = or int %tmp.1, 123456789 ; <int> [#uses=1] %tmp.3 = xor int %tmp.2, 123456789 ; <int> [#uses=1] %tmp.4 = sub int %tmp.3, -123456789 ; <int> [#uses=1] ret int %tmp.4 } Did Emit: .machine ppc970 .text .align 2 .globl _test1 _test1: .LBB_test1_0: ; entry addi r2, r3, -13035 addis r2, r2, 1884 ori r2, r2, 52501 oris r2, r2, 1883 xori r2, r2, 52501 xoris r2, r2, 1883 addi r2, r2, 52501 addis r3, r2, 1883 blr Now Emits: .machine ppc970 .text .align 2 .globl _test1 _test1: .LBB_test1_0: ; entry lis r2, 1883 ori r2, r2, 52501 add r3, r3, r2 or r3, r3, r2 xor r3, r3, r2 add r3, r3, r2 blr Patch by Jim Laskey! llvm-svn: 22749
-
Chris Lattner authored
llvm-svn: 22747
-
Chris Lattner authored
llvm-svn: 22732
-
- Aug 09, 2005
-
-
Chris Lattner authored
llvm-svn: 22729
-
Chris Lattner authored
llvm-svn: 22727
-
Chris Lattner authored
llvm-svn: 22726
-
Nate Begeman authored
code sequences. llvm-svn: 22719
-
- Aug 08, 2005
-
-
Chris Lattner authored
Patch by Jim Laskey. llvm-svn: 22716
-
Chris Lattner authored
Patch by Jim Laskey! llvm-svn: 22715
-
Chris Lattner authored
way. This allows ORI/ORIS pairs, for example. llvm-svn: 22714
-
Chris Lattner authored
Includes wider support for rotate and mask cases. Patch by Jim Laskey. I've requested that Jim add new regression tests the newly handled cases. llvm-svn: 22712
-
Chris Lattner authored
Includes support for 32-bit constants using addi/addis. Patch by Jim Laskey. llvm-svn: 22711
-