summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target
Commit message (Collapse)AuthorAgeFilesLines
* thinko. Should fix s4addl.ll regressionAndrew Lenharth2005-08-171-2/+2
| | | | llvm-svn: 22817
* Remove ISel code generation for UINT_TO_FP and SINT_TO_FP. Now asserts ifJim Laskey2005-08-171-34/+2
| | | | | | marked as legal. llvm-svn: 22816
* Make UINT_TO_FP and SINT_TO_FP use generic expansion.Jim Laskey2005-08-171-0/+4
| | | | llvm-svn: 22815
* Implement a couple improvements:Nate Begeman2005-08-171-12/+28
| | | | | | | | | | | | | | | | | | | | 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
* updates for changes in nodesChris Lattner2005-08-162-19/+21
| | | | llvm-svn: 22808
* update the backends to work with the new CopyFromReg/CopyToReg/ImplicitDef nodesChris Lattner2005-08-163-47/+49
| | | | llvm-svn: 22807
* Implement BR_CC and BRTWOWAY_CC. This allows the removal of a rather nastyNate Begeman2005-08-166-18/+15
| | | | | | | fixme from the PowerPC backend. Emit slightly better code for legalizing select_cc. llvm-svn: 22805
* Pull the LLVM -> DAG lowering code out of the pattern selector so that itChris Lattner2005-08-163-484/+526
| | | | | | can be shared with the DAG->DAG selector. llvm-svn: 22799
* Turn loop strength reduction on by default.Chris Lattner2005-08-151-20/+14
| | | | | | | Only run createLowerConstantExpressionsPass for the simple isel. The DAG isel has no need for it. llvm-svn: 22794
* Broke 80 column rule.Jim Laskey2005-08-151-2/+3
| | | | llvm-svn: 22792
* Changed code gen for int to f32 to use rounding. This makes FP resultsJim Laskey2005-08-151-2/+2
| | | | | | consistent with gcc. llvm-svn: 22791
* isIntImmediate is a good Idea. Add a flavor that checks bounds while it is ↵Andrew Lenharth2005-08-151-105/+97
| | | | | | at it llvm-svn: 22790
* Fix last night's PPC32 regressions byNate Begeman2005-08-141-3/+1
| | | | | | | | | 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
* Fix last night's X86 regressions by putting code for SSE in the if(SSE)Nate Begeman2005-08-141-5/+5
| | | | | | block. nur. llvm-svn: 22788
* Fix FP_TO_UINT with Scalar SSE2 now that the legalizer can handle it. WeNate Begeman2005-08-141-1/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | now generate the relatively good code sequences: unsigned short foo(float a) { return a; } _foo: movss 4(%esp), %xmm0 cvttss2si %xmm0, %eax movzwl %ax, %eax ret and unsigned bar(float a) { return a; } _bar: movss .CPI_bar_0, %xmm0 movss 4(%esp), %xmm1 movapd %xmm1, %xmm2 subss %xmm0, %xmm2 cvttss2si %xmm2, %eax xorl $-2147483648, %eax cvttss2si %xmm1, %ecx ucomiss %xmm0, %xmm1 cmovb %ecx, %eax ret llvm-svn: 22786
* Make FP_TO_UINT Illegal. This allows us to generate significantly betterNate Begeman2005-08-142-71/+35
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* Remove support for 64b PPC, it's been broken for a long time. It'll beNate Begeman2005-08-1310-2272/+4
| | | | | | back once a DAG->DAG ISel exists. llvm-svn: 22778
* Fix for 2005-08-12-rlwimi-crash.ll. Make allowance for masks being shifted toJim Laskey2005-08-121-1/+1
| | | | | | zero. llvm-svn: 22773
* 1. This changes handles the cases of (~x)&y and x&(~y) yielding ANDC, andJim Laskey2005-08-121-3/+24
| | | | | | (~x)|y and x|(~y) yielding ORC. llvm-svn: 22771
* match gcc's use of tabs, makes diffs easierAndrew Lenharth2005-08-121-17/+17
| | | | llvm-svn: 22764
* .section cleanup, patch from Nicholas RileyAndrew Lenharth2005-08-121-3/+3
| | | | llvm-svn: 22763
* 1. Added the function isOpcWithIntImmediate to simplify testing of operand withJim Laskey2005-08-111-9/+40
| | | | | | | | 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
* Tidied up the use of dyn_cast<ConstantSDNode> by using isIntImmediate more.Chris Lattner2005-08-111-22/+19
| | | | | | Patch by Jim Laskey. llvm-svn: 22760
* Use a more efficient method of creating integer and float virtual registersChris Lattner2005-08-111-44/+52
| | | | | | | | | | | | | | (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
* Make SELECT illegal on PPC32, switch to using SELECT_CC, which more closelyNate Begeman2005-08-101-134/+89
| | | | | | | reflects what the hardware is capable of. This significantly simplifies the CC handling logic throughout the ISel. llvm-svn: 22756
* Changes for PPC32ISelPattern.cppChris Lattner2005-08-101-24/+22
| | | | | | | | | 1. Clean up how SelectIntImmediateExpr handles use counts. 2. "Subtract from" was not clearing hi 16 bits. Patch by Jim Laskey llvm-svn: 22754
* Changed the XOR case to use the isOprNot predicate.Chris Lattner2005-08-101-3/+1
| | | | | | Patch by Jim Laskey! llvm-svn: 22750
* 1. Refactored handling of integer immediate values for add, or, xor and sub.Chris Lattner2005-08-101-60/+61
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* sorry!! this is temporary; for some reason the nasty constmul code seems toDuraid Madina2005-08-101-3/+4
| | | | | | | be an infinite loop when using g++-4.0.1*, this kills the ia64 nightly tester. A proper fix shall be forthcoming!!! thanks for not killing me. :) llvm-svn: 22748
* Fix a bug compiling: select (i32 < i32), f32, f32Chris Lattner2005-08-101-0/+1
| | | | llvm-svn: 22747
* add a optimization noteChris Lattner2005-08-091-0/+18
| | | | llvm-svn: 22732
* Update the targets to the new SETCC/CondCodeSDNode interfaces.Chris Lattner2005-08-095-426/+407
| | | | llvm-svn: 22729
* Minor cleanup patch, no functionality changes. Written by Jim Laskey.Chris Lattner2005-08-091-19/+19
| | | | llvm-svn: 22727
* Fix CodeGen/Generic/div-neg-power-2.ll, a regression from last night.Chris Lattner2005-08-091-0/+2
| | | | llvm-svn: 22726
* Factor out some common code, and be smarter about when to emit load hi/loNate Begeman2005-08-081-31/+27
| | | | | | code sequences. llvm-svn: 22719
* Remove getImmediateForOpcode, which is now dead.Chris Lattner2005-08-081-59/+0
| | | | | | Patch by Jim Laskey. llvm-svn: 22716
* Add new immediate handling support for mul/div.Chris Lattner2005-08-081-21/+30
| | | | | | Patch by Jim Laskey! llvm-svn: 22715
* Add support for OR/XOR/SUB immediates that are handled with the new immediateChris Lattner2005-08-081-37/+55
| | | | | | way. This allows ORI/ORIS pairs, for example. llvm-svn: 22714
* Modify the ISD::AND opcode case to use new immediate constant predicates.Chris Lattner2005-08-081-45/+36
| | | | | | | | | | 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
* Modify the ISD::ADD opcode case to use new immediate constant predicates.Chris Lattner2005-08-081-11/+15
| | | | | | | | Includes support for 32-bit constants using addi/addis. Patch by Jim Laskey. llvm-svn: 22711
* Modify existing support functions to use new immediate constant predicates.Chris Lattner2005-08-081-10/+9
| | | | | | Patch by Jim Laskey llvm-svn: 22710
* Add support predicates for future immediate constant changes.Chris Lattner2005-08-081-0/+71
| | | | | | Patch by Jim Laskey llvm-svn: 22709
* Move IsRunOfOnes to a more logical place and rename to a proper predicate formChris Lattner2005-08-081-24/+24
| | | | | | | | (lowercase isXXX). Patch by Jim Laskey. llvm-svn: 22708
* Fix JIT encoding of ppc mfocrf instruction; the operands were reversedNate Begeman2005-08-082-6/+20
| | | | llvm-svn: 22707
* Consolidate the GPOpt stuff to all use the Subtarget, instead of stillChris Lattner2005-08-056-42/+48
| | | | | | | | depending on the command line option. Now the command line option just sets the subtarget as appropriate. G5 opts will now default to on on G5-enabled nightly testers among other machines. llvm-svn: 22688
* adjust to change in getSubtarget() apiChris Lattner2005-08-051-1/+1
| | | | llvm-svn: 22687
* Enable gp optimizations by default when available, even when a target tripleChris Lattner2005-08-051-0/+3
| | | | | | | is available, since the target triple doesn't specify whether to use gpopts or not. llvm-svn: 22685
* add a noteChris Lattner2005-08-051-0/+3
| | | | llvm-svn: 22681
* don't crash when running the PPC backend on non-ppc hosts without specifyingChris Lattner2005-08-051-3/+1
| | | | | | a subtarget. llvm-svn: 22677
* Hack to naturally align doubles in the constant pool. Remove this once weNate Begeman2005-08-041-1/+6
| | | | | | know what The Right Thing To Do is. llvm-svn: 22660
OpenPOWER on IntegriCloud