| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
| |
llvm-svn: 149090
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The Win64 calling convention has xmm6-15 as callee-saved while still
clobbering all ymm registers.
Add a YMM_HI_6_15 pseudo-register that aliases the clobbered part of the
ymm registers, and mark that as call-clobbered. This allows live xmm
registers across calls.
This hack wouldn't be necessary with RegisterMask operands representing
the call clobbers, but they are not quite operational yet.
llvm-svn: 149088
|
|
|
|
|
|
|
|
| |
we're at it, allow PatternMatch's "neg" pattern to match integer
vector negations, and enhance ComputeNumSigned bits to handle
shl of vectors.
llvm-svn: 149082
|
|
|
|
| |
llvm-svn: 149078
|
|
|
|
| |
llvm-svn: 149077
|
|
|
|
|
|
|
|
|
| |
ConstantExpr::getWithOperandReplaced and ConstantExpr::replaceUsesOfWithOnConstant
in terms of ConstantExpr::getWithOperands. While we're at it,
make sure that ConstantExpr::getWithOperands covers all instructions: it was
missing insert/extractvalue.
llvm-svn: 149076
|
|
|
|
| |
llvm-svn: 149075
|
|
|
|
|
|
|
|
|
| |
MachineBasicBlock::canFallThrough(). We're interested in the state of the
instruction (i.e., is this a barrier or not?), not if the instruction is
predicable or not.
rdar://10501092
llvm-svn: 149070
|
|
|
|
|
|
|
|
|
|
| |
The live range of the source register may be extended when a redundant
copy is eliminated. Make sure any kill flags between the two copies are
cleared.
This fixes PR11765.
llvm-svn: 149069
|
|
|
|
| |
llvm-svn: 149062
|
|
|
|
|
|
|
|
| |
relocations applied to all C++ constructors and destructors.
This enables the linker to match concrete relocation types (absolute or relative) with whatever library or C++ support code is being linked against.
llvm-svn: 149057
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
. "fptosi" and "fptoui" IR instructions are defined with round-to-zero rounding mode.
. Currently for AVX mode for <4xdouble> and <8xdouble> the "VCVTPD2DQ.128" and "VCVTPD2DQ.256" instructions are selected (for .fp_to_sint. DAG node operation ) by AVX codegen. However they use round-to-nearest-even rounding mode.
. Consequently, the conversion produces incorrect numbers.
The fix is to replace selection of VCVTPD2DQ instructions with VCVTTPD2DQ instructions. The latter use truncate (i.e. round-to-zero) rounding mode.
As .fp_to_sint. DAG node operation is used only for lowering of "fptosi" and "fptoui" IR instructions, the fix in X86InstrSSE.td definition file doesn.t have an impact on other LLVM flows.
The patch includes changes in the .td file, LIT test for the changes and a fix in a legacy LIT test (which produced asm code conflicting with LLVN IR spec).
llvm-svn: 149056
|
|
|
|
| |
llvm-svn: 149054
|
|
|
|
| |
llvm-svn: 149053
|
|
|
|
|
|
| |
nodes.
llvm-svn: 149052
|
|
|
|
| |
llvm-svn: 149033
|
|
|
|
| |
llvm-svn: 149029
|
|
|
|
|
|
|
| |
more robust) ways to do what it was doing now. Also, add static methods
for decoding a ShuffleVector mask.
llvm-svn: 149028
|
|
|
|
|
|
| |
new methods recently added to (sometimes greatly!) simplify code.
llvm-svn: 149024
|
|
|
|
|
|
|
|
|
|
| |
ConstantVector. Fix some outright bugs in the implementation of
ConstantArray and Constant struct, which would cause us to not make
one big UndefValue when asking for an array/struct with all undef
elements. Enhance Constant::isAllOnesValue to work with
ConstantDataVector.
llvm-svn: 149021
|
|
|
|
| |
llvm-svn: 149006
|
|
|
|
|
|
| |
method.
llvm-svn: 149005
|
|
|
|
| |
llvm-svn: 149000
|
|
|
|
|
|
|
|
|
|
|
|
| |
to reduce the number of cast<>'s we have. This allows someone to use
things like Ty->getVectorNumElements() instead of
cast<VectorType>(Ty)->getNumElements() when you know that a type is a
vector.
It would be a great general cleanup to move the codebase to use these,
I will do so in the code I'm touching.
llvm-svn: 148999
|
|
|
|
|
|
|
| |
"isValidOperands" and "getMaskValue" methods to allow
ConstantDataSequential.
llvm-svn: 148998
|
|
|
|
|
|
|
|
|
| |
This boils down to using MachineOperand::readsReg() more.
This fixes PR11829 where a use ended up after the first def when
lowering REG_SEQUENCE instructions involving IMPLICIT_DEFs.
llvm-svn: 148996
|
|
|
|
|
|
|
|
| |
and let linker handle the rest.
This finally fixes PR5329
llvm-svn: 148990
|
|
|
|
|
|
|
|
| |
function. They don't appear to be used, and are inconsistent with handling of
other physreg intervals (i.e. intervals that are not live-in) where ranges are
not inserted for aliases.
llvm-svn: 148986
|
|
|
|
|
|
| |
LLVM isn't an acronym anymore.
llvm-svn: 148985
|
|
|
|
|
|
| |
Remove assertion which can no longer trigger.
llvm-svn: 148984
|
|
|
|
|
|
|
|
|
|
| |
"Although a Thumb2 instruction, the IT mnemonic shall be permitted in
ARM mode, and the condition verified to match the condition code(s)
on the following instruction(s)."
PR11853
llvm-svn: 148969
|
|
|
|
| |
llvm-svn: 148964
|
|
|
|
|
|
| |
Thanks to Eli for noticing.
llvm-svn: 148947
|
|
|
|
| |
llvm-svn: 148946
|
|
|
|
|
|
|
|
|
| |
savings from a pointer argument becoming an alloca. Sometimes callees will even
compare a pointer to null and then branch to an otherwise unreachable block!
Detect these cases and compute the number of saved instructions, instead of
bailing out and reporting no savings.
llvm-svn: 148941
|
|
|
|
| |
llvm-svn: 148934
|
|
|
|
|
|
| |
specific nodes so we can remove the isel patterns.
llvm-svn: 148933
|
|
|
|
|
|
|
| |
helper method for the common operation of extracting an element
out of a constant aggregate.
llvm-svn: 148931
|
|
|
|
| |
llvm-svn: 148929
|
|
|
|
|
|
| |
patterns that are no longer necessary.
llvm-svn: 148927
|
|
|
|
|
|
|
| |
"Introduce a new ConstantVector::getSplat constructor function to
simplify a really common case."
llvm-svn: 148924
|
|
|
|
|
|
| |
removed a while ago.
llvm-svn: 148922
|
|
|
|
| |
llvm-svn: 148918
|
|
|
|
|
|
|
|
|
|
|
| |
- Use MipsAnalyzeImmediate to expand immediates that do not fit in 16-bit.
- Change the types of variables so that they are sufficiently large to handle
64-bit pointers.
- Emit instructions to set register $28 in a function prologue after
instructions which store callee-saved registers have been emitted.
llvm-svn: 148917
|
|
|
|
|
|
|
|
| |
expand offsets that do not fit in the 16-bit immediate field of load and store
instructions. Also change the types of variables so that they are sufficiently
large to handle 64-bit pointers.
llvm-svn: 148916
|
|
|
|
|
|
| |
definitions. Matches non-AVX version of same instructions.
llvm-svn: 148914
|
|
|
|
|
|
| |
inttypes.h is not supplied in msvc.
llvm-svn: 148912
|
|
|
|
|
|
| |
in asserts.
llvm-svn: 148910
|
|
|
|
| |
llvm-svn: 148909
|
|
|
|
|
|
|
| |
Add a test case to show fewer instructions are needed to load an immediate
with the new way of loading immediates.
llvm-svn: 148908
|