| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
| |
register classes for Mips64 and DSP-ASE.
No functionality changes.
llvm-svn: 178328
|
| |
|
|
|
|
| |
No functionality changes.
llvm-svn: 178327
|
| |
|
|
|
|
| |
No functionality changes.
llvm-svn: 178326
|
| |
|
|
|
|
|
|
|
| |
Mips assembler supports macros that allows the OR instruction
to have an immediate parameter. This patch adds an instruction
alias that converts this macro into a Mips ORI instruction.
Contributer: Vladimir Medic
llvm-svn: 178316
|
| |
|
|
|
|
|
|
|
|
|
| |
Mips assembler allows following to be used as aliased instructions:
jal $rs for jalr $rs
jal $rd,$rd for jalr $rd,$rs
This patch provides alias definitions in td files and test cases to show the usage.
Contributer: Vladimir Medic
llvm-svn: 178304
|
| |
|
|
| |
llvm-svn: 177899
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch lets the register scavenger make use of multiple spill slots in
order to guarantee that it will be able to provide multiple registers
simultaneously.
To support this, the RS's API has changed slightly: setScavengingFrameIndex /
getScavengingFrameIndex have been replaced by addScavengingFrameIndex /
isScavengingFrameIndex / getScavengingFrameIndices.
In forthcoming commits, the PowerPC backend will use this capability in order
to implement the spilling of condition registers, and some special-purpose
registers, without relying on r0 being reserved. In some cases, spilling these
registers requires two GPRs: one for addressing and one to hold the value being
transferred.
llvm-svn: 177774
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
For mips a branch an 18-bit signed offset (the 16-bit
offset field shifted left 2 bits) is added to the
address of the instruction following the branch
(not the branch itself), in the branch delay slot,
to form a PC-relative effective target address.
Previously, the code generator did not perform the
shift of the immediate branch offset which resulted
in wrong instruction opcode. This patch fixes the issue.
Contributor: Vladimir Medic
llvm-svn: 177687
|
| |
|
|
|
|
|
|
|
|
|
|
| |
instructions
This patch uses the generated instruction info tables to
identify memory/load store instructions.
After successful matching and based on the operand type
and size, it generates additional instructions to the output.
Contributor: Vladimir Medic
llvm-svn: 177685
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The .set directive in the Mips the assembler can be
used to set the value of a symbol to an expression.
This changes the symbol's value and type to conform
to the expression's.
Syntax: .set symbol, expression
This patch implements the parsing of the above syntax
and enables the parser to use defined symbols when
parsing operands.
Contributor: Vladimir Medic
llvm-svn: 177667
|
| |
|
|
| |
llvm-svn: 177135
|
| |
|
|
|
|
| |
(these were added in r177089)
llvm-svn: 177129
|
| |
|
|
| |
llvm-svn: 177128
|
| |
|
|
|
|
|
|
|
|
|
|
| |
See the Mips16ISetLowering.cpp patch to see a use of this.
For now now the extra code in Mips16ISetLowering.cpp is a nop but is
used for test purposes. Mips32 registers are setup and then removed and
then the Mips16 registers are setup.
Normally you need to add register classes and then call
computeRegisterProperties.
llvm-svn: 177120
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
Add the current PEI register scavenger as a parameter to the
processFunctionBeforeFrameFinalized callback.
This change is necessary in order to allow the PowerPC target code to
set the register scavenger frame index after the save-area offset
adjustments performed by processFunctionBeforeFrameFinalized. Only
after these adjustments have been made is it possible to estimate
the size of the stack frame.
llvm-svn: 177108
|
| |
|
|
|
|
| |
No functionality changes.
llvm-svn: 177104
|
| |
|
|
| |
llvm-svn: 177096
|
| |
|
|
|
|
| |
No intended functionality changes.
llvm-svn: 177095
|
| |
|
|
| |
llvm-svn: 177092
|
| |
|
|
| |
llvm-svn: 177090
|
| |
|
|
|
|
|
|
| |
mips16 and MipsSEDAGToDAGISel is for mips32/64.
No functionality changes.
llvm-svn: 177089
|
| |
|
|
|
|
|
|
| |
mips16 and MipsSETargetLowering is for mips32/64.
No functionality changes.
llvm-svn: 176917
|
| |
|
|
|
|
| |
Delete commented-out code.
llvm-svn: 176844
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
LegalizeDAG.cpp uses the value of the comparison operands when checking
the legality of BR_CC, so DAGCombiner should do the same.
v2:
- Expand more BR_CC value types for NVPTX
v3:
- Expand correct BR_CC value types for Hexagon, Mips, and XCore.
llvm-svn: 176694
|
| |
|
|
|
|
| |
In N64-static, GOT address is needed to compute the branch address.
llvm-svn: 176580
|
| |
|
|
|
|
|
| |
This calling convention was added just to handle functions which return vector
of floats. The fix committed in r165585 solves the problem.
llvm-svn: 176530
|
| |
|
|
|
|
| |
returned in registers $2 and $4.
llvm-svn: 176527
|
| |
|
|
|
|
| |
handle fp128 returns.
llvm-svn: 176523
|
| |
|
|
|
|
| |
point registers.
llvm-svn: 176521
|
| |
|
|
|
|
| |
parameters from floating point registers if target is mips64 hard float.
llvm-svn: 176520
|
| |
|
|
|
|
| |
"move $4, $5" is printed instead of "or $4, $5, $zero".
llvm-svn: 176455
|
| |
|
|
|
|
|
| |
'R' An address that can be sued in a non-macro load or store.
This patch includes a positive test case.
llvm-svn: 176452
|
| |
|
|
| |
llvm-svn: 176426
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
This patch eliminates the need to emit a constant move instruction when this
pattern is matched:
(select (setgt a, Constant), T, F)
The pattern above effectively turns into this:
(conditional-move (setlt a, Constant + 1), F, T)
llvm-svn: 176384
|
| |
|
|
| |
llvm-svn: 176380
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
- ISD::SHL/SRL/SRA must have either both scalar or both vector operands
but TLI.getShiftAmountTy() so far only return scalar type. As a
result, backend logic assuming that breaks.
- Rename the original TLI.getShiftAmountTy() to
TLI.getScalarShiftAmountTy() and re-define TLI.getShiftAmountTy() to
return target-specificed scalar type or the same vector type as the
1st operand.
- Fix most TICG logic assuming TLI.getShiftAmountTy() a simple scalar
type.
llvm-svn: 176364
|
| |
|
|
| |
llvm-svn: 176330
|
| |
|
|
|
|
|
|
| |
successor basic blocks.
Currently this is off by default.
llvm-svn: 176329
|
| |
|
|
|
|
|
|
| |
terminator.
No functionality change.
llvm-svn: 176326
|
| |
|
|
|
|
|
|
| |
This function will be used later when the capability to search delay slot
filling instructions in successor blocks is added. No intended functionality
changes.
llvm-svn: 176325
|
| |
|
|
| |
llvm-svn: 176321
|
| |
|
|
|
|
|
|
| |
can fill the delay slot.
Currently, this is off by default.
llvm-svn: 176320
|
| |
|
|
|
|
| |
No functionality change.
llvm-svn: 176318
|
| |
|
|
| |
llvm-svn: 176317
|
| |
|
|
|
|
|
| |
This class tracks dependence between memory instructions using underlying
objects of memory operands.
llvm-svn: 176313
|
| |
|
|
| |
llvm-svn: 176165
|
| |
|
|
|
|
|
| |
It will only be used for Mips 16 at this time.
llvm-svn: 176161
|
| |
|
|
|
|
| |
No functionality change.
llvm-svn: 176070
|
| |
|
|
| |
llvm-svn: 176007
|
| |
|
|
| |
llvm-svn: 176002
|