| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
| |
Each target implementation was needlessly recomputing the index.
Part of rdar://13076458
llvm-svn: 174083
|
| |
|
|
| |
llvm-svn: 174009
|
| |
|
|
|
|
|
| |
register for inline asm. This conforms to how gcc allows for effective
casting of inputs into gprs (fprs is already handled).
llvm-svn: 174008
|
| |
|
|
|
|
| |
and less critical.
llvm-svn: 173987
|
| |
|
|
| |
llvm-svn: 173812
|
| |
|
|
| |
llvm-svn: 173798
|
| |
|
|
| |
llvm-svn: 173777
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
conditions are met:
1. They share the same operand and are in the same BB.
2. Both outputs are used.
3. The target has a native instruction that maps to ISD::FSINCOS node or
the target provides a sincos library call.
Implemented the generic optimization in sdisel and enabled it for
Mac OSX. Also added an additional optimization for x86_64 Mac OSX by
using an alternative entry point __sincos_stret which returns the two
results in xmm0 / xmm1.
rdar://13087969
PR13204
llvm-svn: 173755
|
| |
|
|
|
|
| |
independent 256-bit lanes.
llvm-svn: 173674
|
| |
|
|
|
|
| |
because the comment itself is still wrong.
llvm-svn: 173669
|
| |
|
|
|
|
| |
instruction.
llvm-svn: 173667
|
| |
|
|
| |
llvm-svn: 173572
|
| |
|
|
|
|
|
|
|
|
|
|
| |
This catches many cases where we can emit a more efficient shuffle for a
specific mask or when the mask contains undefs. Once the splat is lowered to
unpacks we can't do that anymore.
There is a possibility of moving the promotion after pshufb matching, but I'm
not sure if pshufb with a mask loaded from memory is faster than 3 shuffles, so
I avoided that for now.
llvm-svn: 173569
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
(defined by the x32 ABI) mode, in which case its pointers are 32-bits
in size. This knowledge is also added to X86RegisterInfo that now
returns the appropriate registers in getPointerRegClass.
There are many outcomes to this change. In order to keep the patches
separate and manageable, we start by focusing on some simple testable
cases. The patch adds a test with passing a pointer to a function -
focusing on the difference between the two data models for x86-64.
Another test is added for handling of 'sret' arguments (and
functionality is added in X86ISelLowering to make it work).
A note on naming: the "x32 ABI" document refers to the AMD64
architecture (in LLVM it's distinguished by being is64Bits() in the
x86 subtarget) with two variations: the LP64 (default) data model, and
the ILP32 data model. This patch adds predicates to the subtarget
which are consistent with this naming scheme.
llvm-svn: 173503
|
| |
|
|
| |
llvm-svn: 173382
|
| |
|
|
|
|
|
|
|
|
| |
- Add list of physical registers clobbered in pseudo atomic insts
Physical registers are clobbered when pseudo atomic instructions are
expanded. Add them in clobber list to prevent DAG scheduler to
mis-schedule them after these insns are declared side-effect free.
- Add test case from Michael Kuperstein <michael.m.kuperstein@intel.com>
llvm-svn: 173200
|
| |
|
|
|
|
|
|
| |
rip-rel relocations will be off by one byte.
PR15040.
llvm-svn: 173176
|
| |
|
|
|
|
|
|
| |
Add the x32 environment kind to the triple, and separate the concept of
pointer size and callee save stack slot size, since they're not equal
on x32.
llvm-svn: 173175
|
| |
|
|
|
|
|
|
|
| |
Previously we tried to infer it from the bit width size, with an added
IsIEEE argument for the PPC/IEEE 128-bit case, which had a default
value. This default value allowed bugs to creep in, where it was
inappropriate.
llvm-svn: 173138
|
| |
|
|
| |
llvm-svn: 173010
|
| |
|
|
| |
llvm-svn: 173009
|
| |
|
|
| |
llvm-svn: 173008
|
| |
|
|
| |
llvm-svn: 173006
|
| |
|
|
| |
llvm-svn: 173005
|
| |
|
|
| |
llvm-svn: 172995
|
| |
|
|
|
|
| |
this file despite it not matching coding standards.
llvm-svn: 172994
|
| |
|
|
| |
llvm-svn: 172992
|
| |
|
|
| |
llvm-svn: 172969
|
| |
|
|
|
|
|
|
|
| |
The optimization handles esoteric cases but adds a lot of complexity both to the X86 backend and to other backends.
This optimization disables an important canonicalization of chains of SEXT nodes and makes SEXT and ZEXT asymmetrical.
Disabling the canonicalization of consecutive SEXT nodes into a single node disables other DAG optimizations that assume
that there is only one SEXT node. The AVX mask optimizations is one example. Additionally this optimization does not update the cost model.
llvm-svn: 172968
|
| |
|
|
| |
llvm-svn: 172936
|
| |
|
|
|
|
| |
from the SVOp passed in.
llvm-svn: 172935
|
| |
|
|
| |
llvm-svn: 172933
|
| |
|
|
| |
llvm-svn: 172930
|
| |
|
|
|
|
| |
functions in this file.
llvm-svn: 172927
|
| |
|
|
| |
llvm-svn: 172894
|
| |
|
|
|
|
| |
be for legal types. Keeps compiler from generating unneeded checks and handling for extended types.
llvm-svn: 172893
|
| |
|
|
|
|
| |
vinsertf128) is faster than using a single vmovups instruction.
llvm-svn: 172868
|
| |
|
|
|
|
| |
immediate handling. Also use MVT since this only called on legal types during pattern matching.
llvm-svn: 172797
|
| |
|
|
| |
llvm-svn: 172795
|
| |
|
|
| |
llvm-svn: 172793
|
| |
|
|
|
|
| |
== 128/256.
llvm-svn: 172792
|
| |
|
|
|
|
| |
'SIZE' and 'LENGTH' operators.
llvm-svn: 172773
|
| |
|
|
|
|
| |
Part of rdar://12576868
llvm-svn: 172743
|
| |
|
|
|
|
|
|
|
|
|
|
| |
v8i8 -> v8i64,
v8i8 -> v8i32,
v4i8 -> v4i64,
v4i16 -> v4i64
for AVX and AVX2.
Bug 14865.
llvm-svn: 172708
|
| |
|
|
|
|
| |
they get instantiated together.
llvm-svn: 172704
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
Move the early if-conversion pass into this group.
ILP optimizations usually need to find the right balance between
register pressure and ILP using the MachineTraceMetrics analysis to
identify critical paths and estimate other costs. Such passes should run
together so they can share dominator tree and loop info analyses.
Besides if-conversion, future passes to run here here could include
expression height reduction and ARM's MLxExpansion pass.
llvm-svn: 172687
|
| |
|
|
|
|
|
|
| |
Moving the X86CostTable to a common place, so that other back-ends
can share the code. Also simplifying it a bit and commoning up
tables with one and two types on operations.
llvm-svn: 172658
|
| |
|
|
|
|
|
| |
have an arbitrary ordering of the base register, index register and displacement.
rdar://12527141
llvm-svn: 172484
|
| |
|
|
|
|
| |
than 2 arguments.
llvm-svn: 172379
|
| |
|
|
|
|
| |
needing to specify everything twice. No functional change intended
llvm-svn: 172378
|