summaryrefslogtreecommitdiffstats
path: root/llvm/lib
Commit message (Collapse)AuthorAgeFilesLines
* When generating spill and reload code for vector registers on PowerPC,Bill Schmidt2012-10-101-6/+12
| | | | | | | | | | | | the compiler makes use of GPR0. However, there are two flavors of GPR0 defined by the target: the 32-bit GPR0 (R0) and the 64-bit GPR0 (X0). The spill/reload code makes use of R0 regardless of whether we are generating 32- or 64-bit code. This patch corrects the problem in the obvious manner, using X0 and ADDI8 for 64-bit and R0 and ADDI for 32-bit. llvm-svn: 165658
* The PowerPC VRSAVE register has been somewhat of an odd beast sinceBill Schmidt2012-10-102-6/+14
| | | | | | | | | | | | | | | | | the Altivec extensions were introduced. Its use is optional, and allows the compiler to communicate to the operating system which vector registers should be saved and restored during a context switch. In practice, this information is ignored by the various operating systems using the SVR4 ABI; the kernel saves and restores the entire register state. Setting the VRSAVE register is no longer performed by the AIX XL compilers, the IBM i compilers, or by GCC on Power Linux systems. It seems best to avoid this logic within LLVM as well. This patch avoids generating code to update and restore VRSAVE for the PowerPC SVR4 ABIs (32- and 64-bit). The code remains in place for the Darwin ABI. llvm-svn: 165656
* Add in support for expansion of all of the comparison operations to the ↵Micah Villmow2012-10-101-17/+62
| | | | | | | | | | absolute minimum required set. This allows a backend to expand any arbitrary set of comparisons as long as a minimum set is supported. The minimum set of required instructions is ISD::AND, ISD::OR, ISD::SETO(or ISD::SETOEQ) and ISD::SETUO(or ISD::SETUNE). Everything is expanded into one of two patterns: Pattern 1: (LHS CC1 RHS) Opc (LHS CC2 RHS) Pattern 2: (LHS CC1 LHS) Opc (RHS CC2 RHS) llvm-svn: 165655
* Revert r165652: "Remove unnecessary RTTI from the build."Sean Silva2012-10-104-0/+8
| | | | | | ... Apparently the RTTI is still necessary for some reason. llvm-svn: 165654
* Remove unnecessary RTTI from the build.Sean Silva2012-10-104-8/+0
| | | | llvm-svn: 165652
* tblgen: Compile TableGen without RTTI.Sean Silva2012-10-102-4/+0
| | | | | | TableGen no longer needs RTTI! llvm-svn: 165651
* tblgen: Use semantically correct RTTI functions.Sean Silva2012-10-102-36/+21
| | | | | | Also, some minor cleanup. llvm-svn: 165647
* tblgen: Mechanically move dynamic_cast<> to dyn_cast<>.Sean Silva2012-10-102-94/+94
| | | | | | | | | | Some of these dyn_cast<>'s would be better phrased as isa<> or cast<>. That will happen in a future patch. There are also two dyn_cast_or_null<>'s slipped in instead of dyn_cast<>'s, since they were causing crashes with just dyn_cast<>. llvm-svn: 165646
* Add support for FP_ROUND from v2f64 to v2f32Michael Liao2012-10-104-1/+23
| | | | | | | | | | - Due to the current matching vector elements constraints in ISD::FP_ROUND, rounding from v2f64 to v4f32 (after legalization from v2f32) is scalarized. Add a customized v2f32 widening to convert it into a target-specific X86ISD::VFPROUND to work around this constraints. llvm-svn: 165631
* Add alternative support for FP_ROUND from v2f32 to v2f64Michael Liao2012-10-104-90/+26
| | | | | | | | | | | - Due to the current matching vector elements constraints in ISD::FP_EXTEND, rounding from v2f32 to v2f64 is scalarized. Add a customized v2f32 widening to convert it into a target-specific X86ISD::VFPEXT to work around this constraints. This patch also reverts a previous attempt to fix this issue by recovering the scalarized ISD::FP_EXTEND pattern and thus significantly reduces the overhead of supporting non-power-2 vector FP extend. llvm-svn: 165625
* Fix for LDRB instruction:Stepan Dyatkovskiy2012-10-101-1/+2
| | | | | | | | | | | | | | | | | | | SDNode for LDRB_POST_IMM is invalid: number of registers added to SDNode fewer that described in .td. 7 ops is needed, but SDNode with only 6 is created. In more details: In ARMInstrInfo.td, in multiclass AI2_ldridx, in definition _POST_IMM, offset operand is defined as am2offset_imm. am2offset_imm is complex parameter type, and actually it consists from dummy register and imm itself. As I understood trick with dummy reg was made for AsmParser. In ARMISelLowering.cpp, this dummy register was not added to SDNode, and it cause crash in Peephole Optimizer pass. The problem fixed by setting up additional dummy reg when emitting LDRB_POST_IMM instruction. llvm-svn: 165617
* Issue description:Stepan Dyatkovskiy2012-10-103-10/+20
| | | | | | | | | | | | | | | | | | | | SchedulerDAGInstrs::buildSchedGraph ignores dependencies between FixedStack objects and byval parameters. So loading byval parameters from stack may be inserted *before* it will be stored, since these operations are treated as independent. Fix: Currently ARMTargetLowering::LowerFormalArguments saves byval registers with FixedStack MachinePointerInfo. To fix the problem we need to store byval registers with MachinePointerInfo referenced to first the "byval" parameter. Also commit adds two new fields to the InputArg structure: Function's argument index and InputArg's part offset in bytes relative to the start position of Function's argument. E.g.: If function's argument is 128 bit width and it was splitted onto 32 bit regs, then we got 4 InputArg structs with same arg index, but different offset values. llvm-svn: 165616
* Cleanup. Get rid of now dead code.Bill Wendling2012-10-101-2/+0
| | | | llvm-svn: 165613
* Remove the final bits of Attributes being declared in the AttributeBill Wendling2012-10-107-28/+58
| | | | | | | namespace. Use the attribute's enum value instead. No functionality change intended. llvm-svn: 165610
* My earlier "fix" for PBQP (see r165201) was incorrect. The real issue was thatLang Hames2012-10-101-2/+2
| | | | | | | | checkRegMaskInterference only initializes the bitmask on the first interference. This fixes PR14027 and (re)fixes PR13945. llvm-svn: 165608
* Pass into the AttributeWithIndex::get method an ArrayRef of attributeBill Wendling2012-10-101-31/+33
| | | | | | enums. These are then created via the correct Attributes creation method. llvm-svn: 165607
* misched: fall-back to a target hook for instr bundles.Andrew Trick2012-10-101-3/+4
| | | | llvm-svn: 165606
* misched: Use the TargetSchedModel interface wherever possible.Andrew Trick2012-10-107-78/+101
| | | | | | | | Allows the new machine model to be used for NumMicroOps and OutputLatency. Allows the HazardRecognizer to be disabled along with itineraries. llvm-svn: 165603
* whitespaceAndrew Trick2012-10-101-3/+3
| | | | llvm-svn: 165601
* Have 'addFnAttr' take the attribute enum value. Then have it build the ↵Bill Wendling2012-10-103-9/+5
| | | | | | attribute object and add it appropriately. No functionality change. llvm-svn: 165595
* Reorder some parts of the td file to by in alphabetical orderReed Kotler2012-10-101-64/+75
| | | | llvm-svn: 165590
* Adding comments to clarify the reason for non-standard style in these files.Andrew Kaylor2012-10-104-8/+30
| | | | | | Patch committed on behalf of Kirill Uhanov llvm-svn: 165589
* Cosmetic changesAndrew Kaylor2012-10-102-4/+4
| | | | llvm-svn: 165588
* This patch adds new functions to the SectionRef and ObjectFile interfaces to ↵Andrew Kaylor2012-10-102-0/+18
| | | | | | | | determine whether or not a section is meant to be read-only. These functions will be used by the MCJIT RuntimeDyld to give hints to the memory manager during the object loading process in a future patch. Patch by Ashok Thirumurthi. llvm-svn: 165586
* Implement MipsTargetLowering::CanLowerReturn.Akira Hatanaka2012-10-102-1/+22
| | | | | | Patch by Sasa Stankovic. llvm-svn: 165585
* When expanding atomic load arith instructions, do not lose target flags. ↵Evan Cheng2012-10-091-2/+5
| | | | | | rdar://12453106 llvm-svn: 165568
* misched: Add computeInstrLatency to TargetSchedModel.Andrew Trick2012-10-091-0/+24
| | | | llvm-svn: 165566
* misched: Allow flags to disable hasInstrSchedModel/hasInstrItineraries for ↵Andrew Trick2012-10-091-6/+12
| | | | | | external users of TargetSchedule. llvm-svn: 165564
* misched: Remove LoopDependencies heuristic.Andrew Trick2012-10-091-40/+1
| | | | | | This wasn't contributing anything significant to postRA heuristics except compile time (by my measurements) and will be replaced by a more general heuristic for cross-region dependencies within the scheduler itself. llvm-svn: 165563
* Initial assembler implementation of Mips load address macroJack Carter2012-10-092-6/+109
| | | | | | | | | | | | | | | | | | | | | | | | This patch provides initial implementation of load address macro instruction for Mips. We have implemented two kinds of expansions with their variations depending on the size of immediate operand: 1) load address with immediate value directly: * la d,j => addiu d,$zero,j (for -32768 <= j <= 65535) * la d,j => lui d,hi16(j) ori d,d,lo16(j) (for any other 32 bit value of j) 2) load load address with register offset value * la d,j(s) => addiu d,s,j (for -32768 <= j <= 65535) * la d,j(s) => lui d,hi16(j) (for any other 32 bit value of j) ori d,d,lo16(j) addu d,d,s This patch does not cover the case when the address is loaded from the value of the label or function. Contributer: Vladimir Medic llvm-svn: 165561
* Use the attribute enums to query if a function has an attribute.Bill Wendling2012-10-092-93/+7
| | | | llvm-svn: 165551
* Use the attribute enums to query if a parameter has an attribute.Bill Wendling2012-10-096-142/+30
| | | | llvm-svn: 165550
* Revert r165547 to fix build.Bill Wendling2012-10-091-4/+10
| | | | llvm-svn: 165548
* Use a single location for calculating the alignments.Bill Wendling2012-10-091-10/+4
| | | | llvm-svn: 165547
* tblgen: Rename handleDependencies -> createDependencyFileSean Silva2012-10-091-2/+2
| | | | llvm-svn: 165544
* tblgen: Move dependency file output to a separate function.Sean Silva2012-10-091-21/+31
| | | | | | This keeps it out of the main flow of TableGenMain. llvm-svn: 165542
* Use appropriate method calls to get the alignment value.Bill Wendling2012-10-091-4/+5
| | | | llvm-svn: 165541
* Whitespace.Chad Rosier2012-10-091-3/+0
| | | | llvm-svn: 165540
* Inline the checks for mutually exclusive attributes since they're used in ↵Bill Wendling2012-10-091-12/+56
| | | | | | only one module. llvm-svn: 165539
* Enable response files in all tools. Patch by Liu, Yaxun (Sam). I have simplifiedRafael Espindola2012-10-091-15/+11
| | | | | | the test. llvm-svn: 165535
* Move the 'FunctionOnly' attributes thingy inside of the Attributes class.Bill Wendling2012-10-092-21/+25
| | | | llvm-svn: 165530
* tblgen: Remove pointless method call.Sean Silva2012-10-091-1/+0
| | | | llvm-svn: 165511
* Update EarlyCSE's SimpleValues to use Hashing.h for their hashes. Expanded ↵Michael Ilseman2012-10-091-25/+81
| | | | | | the hashing and equality to allow for equality modulo commutativity for binary ops, and comparisons with swapping of predicates. llvm-svn: 165509
* Improvements to MIPS64 assembler:David Chisnall2012-10-092-42/+85
| | | | | | | - Teach it about dadd[i] instructions and move pseudo-instruction - Make it parse the register names correctly (for N32 / N64) llvm-svn: 165506
* Add in the first step of the multiple pointer support. This adds in support ↵Micah Villmow2012-10-092-31/+102
| | | | | | | | to the data layout for specifying a per address space pointer size. The next step is to update the optimizers to allow them to optimize the different address spaces with this information. llvm-svn: 165505
* Fixup for r165490: Use DenseMap instead of std::map. Simplify the loop in ↵Alexey Samsonov2012-10-091-13/+16
| | | | | | CollectFunctionDIs. llvm-svn: 165498
* Move the 'ParameterOnly' variable inside of the Attributes class and make it ↵Bill Wendling2012-10-091-15/+12
| | | | | | a method. llvm-svn: 165497
* Remove the now dead VarArgsIncompatible variable.Bill Wendling2012-10-091-3/+2
| | | | llvm-svn: 165496
* Use the enum value of the attributes when removing them from the attributes ↵Bill Wendling2012-10-092-84/+1
| | | | | | builder. llvm-svn: 165495
* Use the enum value of the attributes when adding them to the attributes builder.Bill Wendling2012-10-095-125/+57
| | | | llvm-svn: 165494
OpenPOWER on IntegriCloud