| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
|
|
|
| |
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 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
|
| |
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
| |
... Apparently the RTTI is still necessary for some reason.
llvm-svn: 165654
|
| |
|
|
| |
llvm-svn: 165652
|
| |
|
|
|
|
| |
TableGen no longer needs RTTI!
llvm-svn: 165651
|
| |
|
|
|
|
| |
Also, some minor cleanup.
llvm-svn: 165647
|
| |
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
|
|
|
|
| |
- 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
|
| |
|
|
|
|
|
|
|
|
|
| |
- 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
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
| |
llvm-svn: 165613
|
| |
|
|
|
|
|
| |
namespace. Use the attribute's enum value instead. No functionality change
intended.
llvm-svn: 165610
|
| |
|
|
|
|
|
|
| |
checkRegMaskInterference only initializes the bitmask on the first interference.
This fixes PR14027 and (re)fixes PR13945.
llvm-svn: 165608
|
| |
|
|
|
|
| |
enums. These are then created via the correct Attributes creation method.
llvm-svn: 165607
|
| |
|
|
| |
llvm-svn: 165606
|
| |
|
|
|
|
|
|
| |
Allows the new machine model to be used for NumMicroOps and OutputLatency.
Allows the HazardRecognizer to be disabled along with itineraries.
llvm-svn: 165603
|
| |
|
|
| |
llvm-svn: 165601
|
| |
|
|
|
|
| |
attribute object and add it appropriately. No functionality change.
llvm-svn: 165595
|
| |
|
|
| |
llvm-svn: 165590
|
| |
|
|
|
|
| |
Patch committed on behalf of Kirill Uhanov
llvm-svn: 165589
|
| |
|
|
| |
llvm-svn: 165588
|
| |
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
| |
Patch by Sasa Stankovic.
llvm-svn: 165585
|
| |
|
|
|
|
| |
rdar://12453106
llvm-svn: 165568
|
| |
|
|
| |
llvm-svn: 165566
|
| |
|
|
|
|
| |
external users of TargetSchedule.
llvm-svn: 165564
|
| |
|
|
|
|
| |
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
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
| |
llvm-svn: 165551
|
| |
|
|
| |
llvm-svn: 165550
|
| |
|
|
| |
llvm-svn: 165548
|
| |
|
|
| |
llvm-svn: 165547
|
| |
|
|
| |
llvm-svn: 165544
|
| |
|
|
|
|
| |
This keeps it out of the main flow of TableGenMain.
llvm-svn: 165542
|
| |
|
|
| |
llvm-svn: 165541
|
| |
|
|
| |
llvm-svn: 165540
|
| |
|
|
|
|
| |
only one module.
llvm-svn: 165539
|
| |
|
|
|
|
| |
the test.
llvm-svn: 165535
|
| |
|
|
| |
llvm-svn: 165530
|
| |
|
|
| |
llvm-svn: 165511
|
| |
|
|
|
|
| |
the hashing and equality to allow for equality modulo commutativity for binary ops, and comparisons with swapping of predicates.
llvm-svn: 165509
|
| |
|
|
|
|
|
| |
- Teach it about dadd[i] instructions and move pseudo-instruction
- Make it parse the register names correctly (for N32 / N64)
llvm-svn: 165506
|
| |
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
| |
CollectFunctionDIs.
llvm-svn: 165498
|
| |
|
|
|
|
| |
a method.
llvm-svn: 165497
|
| |
|
|
| |
llvm-svn: 165496
|
| |
|
|
|
|
| |
builder.
llvm-svn: 165495
|
| |
|
|
| |
llvm-svn: 165494
|