| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
| |
patterns.
llvm-svn: 226681
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Now that we can fully specify extload legality, we can declare them
legal for the PMOVSX/PMOVZX instructions. This for instance enables
a DAGCombine to fire on code such as
(and (<zextload-equivalent> ...), <redundant mask>)
to turn it into:
(zextload ...)
as seen in the testcase changes.
There is one regression, in widen_load-2.ll: we're no longer able
to do store-to-load forwarding with illegal extload memory types.
This will be addressed separately.
Differential Revision: http://reviews.llvm.org/D6533
llvm-svn: 226676
|
| |
|
|
|
|
|
|
|
| |
AAPCS64 says that it's up to the platform to specify whether x18 is
reserved, and a first step on that way is to add a flag controlling
it.
From: Andrew Turner <andrew@fubar.geek.nz>
llvm-svn: 226664
|
| |
|
|
|
|
| |
in x32 mode.
llvm-svn: 226661
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
Implement microMIPS 16-bit unconditional branch instruction B.
Implemented 16-bit microMIPS unconditional instruction has real name B16, and
B is an alias which expands to either B16 or BEQ according to the rules:
b 256 --> b16 256 # R_MICROMIPS_PC10_S1
b 12256 --> beq $zero, $zero, 12256 # R_MICROMIPS_PC16_S1
b label --> beq $zero, $zero, label # R_MICROMIPS_PC16_S1
Differential Revision: http://reviews.llvm.org/D3514
llvm-svn: 226657
|
| |
|
|
|
|
| |
Differential Revision: http://reviews.llvm.org/D6582
llvm-svn: 226656
|
| |
|
|
|
|
| |
instructions for mips r6 it crashes as the access to operands array is out of range. This patch adds dedicated decoder method that properly handles decoding of these instructions.
llvm-svn: 226652
|
| |
|
|
|
|
| |
patterns. I think it actually went i32->iPtr->i32 in some of these cases.
llvm-svn: 226647
|
| |
|
|
| |
llvm-svn: 226646
|
| |
|
|
|
|
| |
This makes the assembler check their size and removes a hack from the disassembler to avoid sign extending the immediate.
llvm-svn: 226645
|
| |
|
|
|
|
| |
cmpss/cmpsd/cmpps/cmppd.
llvm-svn: 226642
|
| |
|
|
| |
llvm-svn: 226606
|
| |
|
|
|
|
|
| |
This is disabled by default, but can be enabled with the subtarget
feature: 'vgpr-spilling'
llvm-svn: 226597
|
| |
|
|
| |
llvm-svn: 226596
|
| |
|
|
| |
llvm-svn: 226595
|
| |
|
|
| |
llvm-svn: 226591
|
| |
|
|
|
|
|
|
| |
We were passing the scratch buffer address to the shaders via user sgprs,
but now we use external symbols and have the driver patch the shader
using reloc information.
llvm-svn: 226586
|
| |
|
|
|
|
|
| |
This allows us to re-use the same register for the scratch offset
when accessing large private arrays.
llvm-svn: 226585
|
| |
|
|
|
|
|
|
| |
We don't have a good way of legalizing this if the frame index offset
is more than the 12-bits, which is size of MUBUF's offset field, so
now we store the frame index in the vaddr field.
llvm-svn: 226584
|
| |
|
|
|
|
|
| |
Now that we have our own custom register operand types, we need
to handle them in the verifiier.
llvm-svn: 226583
|
| |
|
|
| |
llvm-svn: 226581
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
Implement microMIPS 16-bit unconditional branch instruction B.
Implemented 16-bit microMIPS unconditional instruction has real name B16, and
B is an alias which expands to either B16 or BEQ according to the rules:
b 256 --> b16 256 # R_MICROMIPS_PC10_S1
b 12256 --> beq $zero, $zero, 12256 # R_MICROMIPS_PC16_S1
b label --> beq $zero, $zero, label # R_MICROMIPS_PC16_S1
Differential Revision: http://reviews.llvm.org/D3514
llvm-svn: 226577
|
| |
|
|
|
|
|
|
|
| |
This commits adds the octeon branch instructions bbit0/bbit032/bbit1/bbit132.
It also includes patterns for instruction selection and test cases.
Reviewed by D. Sanders
llvm-svn: 226573
|
| |
|
|
|
|
| |
covered by a pattern.
llvm-svn: 226562
|
| |
|
|
|
|
|
|
|
|
| |
Now that we can create much more exhaustive X86 memory folding tests, this patch adds the missing AVX1/F16C floating point instruction stack foldings we can easily test for including the scalar intrinsics (add, div, max, min, mul, sub), conversions float/int to double, half precision conversions, rounding, dot product and bit test. The patch also adds a couple of obviously missing SSE instructions (more to follow once we have full SSE testing).
Now that scalar folding is working it broke a very old test (2006-10-07-ScalarSSEMiscompile.ll) - this test appears to make no sense as its trying to ensure that a scalar subtraction isn't folded as it 'would zero the top elts of the loaded vector' - this test just appears to be wrong to me.
Differential Revision: http://reviews.llvm.org/D7055
llvm-svn: 226513
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The fixes are to note that AArch64 has additional restrictions on when local
relocations can be used. In particular, ld64 requires that relocations to
cstring/cfstrings use linker visible symbols.
Original message:
In an assembly expression like
bar:
.long L0 + 1
the intended semantics is that bar will contain a pointer one byte past L0.
In sections that are merged by content (strings, 4 byte constants, etc), a
single position in the section doesn't give the linker enough information.
For example, it would not be able to tell a relocation must point to the
end of a string, since that would look just like the start of the next.
The solution used in ELF to use relocation with symbols if there is a non-zero
addend.
In MachO before this patch we would just keep all symbols in some sections.
This would miss some cases (only cstrings on x86_64 were implemented) and was
inefficient since most relocations have an addend of 0 and can be represented
without the symbol.
This patch implements the non-zero addend logic for MachO too.
llvm-svn: 226503
|
| |
|
|
|
|
| |
compatible with i32 rather than doing custom type conversion.
llvm-svn: 226500
|
| |
|
|
| |
llvm-svn: 226483
|
| |
|
|
| |
llvm-svn: 226480
|
| |
|
|
| |
llvm-svn: 226478
|
| |
|
|
|
|
|
|
|
|
| |
Original patch by Luke Iannini. Minor improvements and test added by
Erik de Castro Lopo.
Differential Revision: http://reviews.llvm.org/D6877
From: Erik de Castro Lopo <erikd@mega-nerd.com>
llvm-svn: 226473
|
| |
|
|
| |
llvm-svn: 226472
|
| |
|
|
|
|
| |
encoding rather than unpredictable
llvm-svn: 226469
|
| |
|
|
| |
llvm-svn: 226468
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
No change in this commit, but clang was changed to also produce trivial comdats when
needed.
Original message:
Don't create new comdats in CodeGen.
This patch stops the implicit creation of comdats during codegen.
Clang now sets the comdat explicitly when it is required. With this patch clang and gcc
now produce the same result in pr19848.
llvm-svn: 226467
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
and updated.
This may appear to remove handling for things like alias analysis when
splitting critical edges here, but in fact no callers of SplitEdge
relied on this. Similarly, all of them wanted to preserve LCSSA if there
was any update of the loop info. That makes the interface much simpler.
With this, all of BasicBlockUtils.h is free of Pass arguments and
prepared for the new pass manager. This is tho majority of utilities
that relied on pass arguments.
llvm-svn: 226459
|
| |
|
|
|
|
|
|
|
|
| |
We don't need to exclude patchpoints from the implicit r2 dependence in
FastISel because it is added as an implicit operand and, thus, should not
confuse that StackMap code.
By inspection / no test case.
llvm-svn: 226434
|
| |
|
|
|
|
|
|
|
|
|
| |
Our PPC64 ELF V2 call lowering logic added r2 as an operand to all direct call
instructions in order to represent the dependency on the TOC base pointer
value. Restricting this to ELF V2, however, does not seem to make sense: calls
under ELF V1 have the same dependence, and indirect calls have an r2 dependence
just as direct ones. Make sure the dependence is noted for all calls under both
ELF V1 and ELF V2.
llvm-svn: 226432
|
| |
|
|
|
|
| |
kind instead of a 32-bit immediate. This better aligns with the emitted instruction. It also matches SSE and AVX1 equivalents. Also add auto upgrade support.
llvm-svn: 226430
|
| |
|
|
| |
llvm-svn: 226416
|
| |
|
|
| |
llvm-svn: 226414
|
| |
|
|
|
|
|
|
|
|
|
| |
Instructions that have high-order TOC relocations always carry R2 as their base
register, so it does not matter whether we take the register from the
instruction or just hard-code it in PPCAsmPrinter. In the future, however, we
might want to apply these relocations to instructions using a different
register, so taking the register from the instruction is a better thing to do.
No change in functionality here, however.
llvm-svn: 226403
|
| |
|
|
|
|
|
| |
So we don't forget, once we support FPR <-> GPR moves on the P8, we'll likely
want to re-visit this part of the calling convention.
llvm-svn: 226401
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The default calling convention specified by the PPC64 ELF (V1 and V2) ABI is
designed to work with both prototyped and non-prototyped/varargs functions. As
a result, GPRs and stack space are allocated for every argument, even those
that are passed in floating-point or vector registers.
GlobalOpt::OptimizeFunctions will transform local non-varargs functions (that
do not have their address taken) to use the 'fast' calling convention.
When functions are using the 'fast' calling convention, don't allocate GPRs for
arguments passed in other types of registers, and don't allocate stack space for
arguments passed in registers. Other changes for the fast calling convention
may be added in the future.
llvm-svn: 226399
|
| |
|
|
|
|
|
|
|
|
| |
a LoopInfoWrapperPass to wire the object up to the legacy pass manager.
This switches all the clients of LoopInfo over and paves the way to port
LoopInfo to the new pass manager. No functionality change is intended
with this iteration.
llvm-svn: 226373
|
| |
|
|
|
|
|
|
|
|
| |
R11's status is the same under both the PPC64 ELF V1 and V2 ABIs: it is
reserved for use as an "environment pointer" for compilation models that
require such a thing. We don't, we also don't need a second scratch register,
and because we support only "local" patchpoint call targets, we might as well
let R11 be used for anyregcc patchpoints.
llvm-svn: 226369
|
| |
|
|
| |
llvm-svn: 226326
|
| |
|
|
| |
llvm-svn: 226324
|
| |
|
|
|
|
| |
definitions. Converting halfword multiply intrinsics.
llvm-svn: 226318
|
| |
|
|
|
|
| |
exist, added new versions.
llvm-svn: 226315
|