aboutsummaryrefslogtreecommitdiff
path: root/lib/Target/PowerPC/PPC32ISelSimple.cpp
AgeCommit message (Collapse)Author
2004-07-23* Codegen of GEPs dramatically improved by folding multiplies and addsMisha Brukman
* Function pointers implemented correctly using appropriate stubs Contributed by Nate Begeman. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15133 91177308-0d34-0410-b5e6-96231b3b80d8
2004-07-23* Change class of BoolTy back to cIntMisha Brukman
* Fix indentation back to 2 spaces git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15121 91177308-0d34-0410-b5e6-96231b3b80d8
2004-07-22* Change bool from cInt to cByte (for now)Misha Brukman
* Don't allow negative immediates to users of unsigned immediates * Fix long compares * Support <const int>, op as a potential immediate candidate * Fix sign extension of short and byte loads * Fix and improve integer casts * Fix passing of doubles as vararg functions Patch contributed by Nate Begeman. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15109 91177308-0d34-0410-b5e6-96231b3b80d8
2004-07-21* Add the lost fix to define the second reg of a 2-reg representation of longsMisha Brukman
* Fix opcode RLWNM -> RLWINM since it uses an immediate const shift value git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15087 91177308-0d34-0410-b5e6-96231b3b80d8
2004-07-21* Speed up canUseAsImmediateForOpcode() by comparing Operand beforeMisha Brukman
dyn_cast<>ing and checking Constant's value * Convert tabs to spaces git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15086 91177308-0d34-0410-b5e6-96231b3b80d8
2004-07-21* Fix printing of signed immediate valuesMisha Brukman
* Generation of opcodes that take 16 bit immediates * Rewrote multiply to be correct for 64 bit values * Rewrote all the long handling to be correct for PowerPC * Fix visitSelectInst() to define the upper register of the pair of regs representing a long value Patch contributed by Nate Begeman. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15083 91177308-0d34-0410-b5e6-96231b3b80d8
2004-07-20Treat external variables similarly to those with weak linkage: load indirect.Misha Brukman
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15047 91177308-0d34-0410-b5e6-96231b3b80d8
2004-07-20* Differentiate between global and weak symbol loadsMisha Brukman
* Fix functions that take more than 32 bytes of args * Alignment of doubles in structs is 4 bytes, not 8 * Fix passing long args: rN = hi, rN+1 = lo * Rewrite signed divide * Rewrite Intrinsic::returnaddress Patch courtesy of Nate Begeman. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15036 91177308-0d34-0410-b5e6-96231b3b80d8
2004-07-20Move handing of GlobalValues from getReg() to copyConstantToRegister(), thisMisha Brukman
will avoid extra register-to-register copies. Thanks to Chris for the idea. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15019 91177308-0d34-0410-b5e6-96231b3b80d8
2004-07-20* cFP class split into cFP32 and cFP64Misha Brukman
* Fn args passed in registers are now recorded as used by the call instruction `-> asm printer updated to not print out those registers with the call instr * Stack frame layout in prolog/epilog fixed, spills and vararg fns now work * float/double to signed int codegen now correct * various single precision float codegen bugs fixed * const integer multiply codegen fixed * select and setcc blocks inserted into the correct place in machine CFG * load of integer constant code optimized All of Shootout tests now work. Great thanks to Nate Begeman for the patch! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15014 91177308-0d34-0410-b5e6-96231b3b80d8
2004-07-18Fix infinite loopChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14971 91177308-0d34-0410-b5e6-96231b3b80d8
2004-07-18CPR FixesChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14961 91177308-0d34-0410-b5e6-96231b3b80d8
2004-07-16* Use LI(S) to copy constants into registers intead of ADDI(S) as the latter isMisha Brukman
a funky way to "use" R0 for a 0-valued operand * Add IMPLICIT_DEFs for incoming function arguments via registers to help the register allocator not clobber those registers * Implement comparisons with longs * Teach emitSelectOperation() to fold the SetCC operation Patch contributed by Nate Begeman git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14901 91177308-0d34-0410-b5e6-96231b3b80d8
2004-07-15Patches towards fixing PR341Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14841 91177308-0d34-0410-b5e6-96231b3b80d8
2004-07-14Make sure MTSPR instruction is inserted into the BasicBlockMisha Brukman
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14822 91177308-0d34-0410-b5e6-96231b3b80d8
2004-07-14Don't define the same register twice when loading a ConstantPointerRef to a regMisha Brukman
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14819 91177308-0d34-0410-b5e6-96231b3b80d8
2004-07-14* Fix multiplication by powers of two and otherwiseMisha Brukman
* Clarify variable name (StoreInst SI instead of LI) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14818 91177308-0d34-0410-b5e6-96231b3b80d8
2004-07-13* Specify that FP arith options have 3 operandsMisha Brukman
* Correctly load FP constants from the constant pool, should be refactored git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14799 91177308-0d34-0410-b5e6-96231b3b80d8
2004-07-12Correctly load FP constants out of the constant pool.Misha Brukman
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14782 91177308-0d34-0410-b5e6-96231b3b80d8
2004-07-11Add compilabilityChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14744 91177308-0d34-0410-b5e6-96231b3b80d8
2004-07-09* Add support for indexing into structures, thanks to Chris (x86)Misha Brukman
The large diff is because of indentation of a whole region * Fix querying predecessor blocks in SelectPHINodes(), thanks to Brian (v8) * Add support for external functions malloc() and free() * Fix some code indentation Remember, kids: It's not plagiarism if you "creatively borrow" from your sources. It's called "research"! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14723 91177308-0d34-0410-b5e6-96231b3b80d8
2004-07-08Add support for __fixdfdi(), __floatdisf(), and __floatdidf() external functionsMisha Brukman
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14703 91177308-0d34-0410-b5e6-96231b3b80d8
2004-07-08* Use several Function* for external functions instead of a std::mapMisha Brukman
* Non-const FP values must be loaded into int regs (for vararg fns) via memory git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14701 91177308-0d34-0410-b5e6-96231b3b80d8
2004-07-08* Add support for loading FP constants from the constant poolMisha Brukman
* Load FP values into int regs as well for vararg functions; without memory ops! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14700 91177308-0d34-0410-b5e6-96231b3b80d8
2004-07-07* Use a map for caching lookups to external functions (fp div/rem)Misha Brukman
* Tabs to spaces git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14673 91177308-0d34-0410-b5e6-96231b3b80d8
2004-07-07Add fmod() to the Module being compiled so that it gets a stub in the asm fileMisha Brukman
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14670 91177308-0d34-0410-b5e6-96231b3b80d8
2004-07-06* Add support for calling vararg functions (must pass doubles in int regs too)Misha Brukman
* Make visitSetCondInst() share condition-generating code with EmitComparison() * There are 13 FPRs for function-passing arguments, not 8 * Do not rely on registers being sequential, use an array lookup * In unimplemented switch cases, send an error and abort instead of silent fall-through * Add doInitialization() for adding function prototypes for external math fns * Minor changes: fix indentation, spacing, code clarity git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14653 91177308-0d34-0410-b5e6-96231b3b80d8
2004-07-06* Add utility functions: convert SetCC => PPC opcode and invert PPC opcodeMisha Brukman
* If SetCondInst is folded into BranchInst (and it is the only user), do not emit code for SetCondInst * Fix assembly opcodes in comments in visitSetCondInst() * Fix codegen of conditional branches git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14643 91177308-0d34-0410-b5e6-96231b3b80d8
2004-07-01* Get rid of constant-expr handling code: we use the ConstantExpr lowering passMisha Brukman
* Use the SetCC handling code in the format of Brian's V8 * Add FIXMEs where calls to functions are being made without adding them to the Module first... they cause missing symbols at assembly-time. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14553 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-29* Don't save LR when outputting globals: it's already saved on the stack onceMisha Brukman
for the function * Registers aren't necessarily sequential wrt their enums, don't rely on it when emitting function arguments into sequential registers * Remove X86-specific comments about AL/BL/AH/BH/EDX/etc * Add an abort() for an unimplemented signed right shift * The src operand for a GEP was never emitted! Fixed. * We can skip zero-valued GEP indices as they are no-ops. "Hello, World!" now works. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14505 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-28Fix loading and storing PC-relative static variables, courtesy of Nate Begeman.Misha Brukman
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14468 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-25Do not move any values into registers for a void return (there isn't anything).Misha Brukman
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14413 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-25Fix opcode: no immediate in an `or r1, r2, r3' (all registers) instr.Misha Brukman
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14411 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-25Fix bug in previous checkin.Misha Brukman
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14405 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-25* Wrap long linesMisha Brukman
* Replace silent fall-through FIXME comments with an error to cerr and an abort * No need to set size of statically initialized arrays git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14404 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-25Excise X86-specific comments.Misha Brukman
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14403 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-24Add a `break' in the switch/case statement between the int/fp sections.Misha Brukman
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14385 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-24Unindent some more code to be consistent.Misha Brukman
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14377 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-24Unindent some code, it only needs 2 spaces.Misha Brukman
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14376 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-24In emitting code for a GEP instr, iterate over GEPTypes because there is oneMisha Brukman
more operand in GEPOps than there are types in GEPTypes: the pointer that is the first operand of the GEP instruction. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14375 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-21* Make indentation consistent at 2 charsMisha Brukman
* Doxygenify function comments * Wrap code at 80 cols git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14295 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-21llvm/IntrinsicLowering.h => llvm/CodeGen/IntrinsicLowering.hMisha Brukman
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14292 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-21Intrinsic::isnan has gone away, support for it commented out.Misha Brukman
Intrinsic::isunordered has arrived, and we just use the standard lowering pass for it. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14290 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-21Convert tabs to spaces.Misha Brukman
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14289 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-21Type::getPrimitiveID() -> getTypeID()Misha Brukman
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14288 91177308-0d34-0410-b5e6-96231b3b80d8
2004-06-21Initial revisionMisha Brukman
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14283 91177308-0d34-0410-b5e6-96231b3b80d8