| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
|
|
| |
Future patches will want to custom lower loads on SI.
llvm-svn: 211848
|
| |
|
|
|
|
| |
file in preparation for the subtarget move.
llvm-svn: 211847
|
| |
|
|
|
|
| |
Adjust the constructor accordingly.
llvm-svn: 211846
|
| |
|
|
|
|
| |
be shorter and identical in goal.
llvm-svn: 211845
|
| |
|
|
|
|
| |
update constructor accordingly.
llvm-svn: 211840
|
| |
|
|
|
|
| |
that it's after.
llvm-svn: 211839
|
| |
|
|
| |
llvm-svn: 211838
|
| |
|
|
|
|
| |
prototype for the function to patch what we were returning).
llvm-svn: 211837
|
| |
|
|
|
|
| |
the subtarget for the MSP430 target.
llvm-svn: 211836
|
| |
|
|
|
|
|
|
| |
both MSP430InstrInfo and MSP430RegisterInfo. Remove unused member
variable StackAlign from MSP430RegisterInfo. Update constructors
accordingly.
llvm-svn: 211835
|
| |
|
|
| |
llvm-svn: 211830
|
| |
|
|
|
|
|
|
|
| |
For now I used a separate template for these sub-vector/tuple broadcasts
rather than sharing the mem variants with avx512_int_broadcast_rm.
<rdar://problem/17402869>
llvm-svn: 211828
|
| |
|
|
|
|
|
| |
make the constructor more general since it only needs a target
machine.
llvm-svn: 211827
|
| |
|
|
|
|
|
| |
than a target machine since it doesn't need anything past the
DataLayout.
llvm-svn: 211826
|
| |
|
|
|
|
| |
machine to the subtarget.
llvm-svn: 211824
|
| |
|
|
|
|
| |
target machine since that's all it needs.
llvm-svn: 211822
|
| |
|
|
|
|
| |
but a normal TargetMachine and remove a few cached uses.
llvm-svn: 211821
|
| |
|
|
| |
llvm-svn: 211820
|
| |
|
|
|
|
| |
remove the unused constructor argument.
llvm-svn: 211819
|
| |
|
|
|
|
| |
cache it on the target as well.
llvm-svn: 211818
|
| |
|
|
|
|
| |
Temporarily back out commits r211749, r211752 and r211754.
llvm-svn: 211814
|
| |
|
|
|
|
|
|
| |
for the Sparc port. Use the same initializeSubtargetDependencies
function to handle initialization similar to the other ports to
handle dependencies.
llvm-svn: 211811
|
| |
|
|
|
|
| |
that's all it needs.
llvm-svn: 211810
|
| |
|
|
|
|
| |
lowering code.
llvm-svn: 211809
|
| |
|
|
| |
llvm-svn: 211800
|
| |
|
|
|
|
| |
rather than the target machine.
llvm-svn: 211799
|
| |
|
|
|
|
| |
includes.
llvm-svn: 211798
|
| |
|
|
|
|
|
|
| |
The default rounding mode to initialize the mode register needs
to be reported to the runtime. Fill in other bits a kernel
may be interested in setting for future use.
llvm-svn: 211791
|
| |
|
|
|
|
| |
No functional change intended.
llvm-svn: 211783
|
| |
|
|
|
|
| |
No functional change intended.
llvm-svn: 211782
|
| |
|
|
|
|
|
| |
includes handling DIR_PWR8 where appropriate
The P7Model Itinerary is currently tied in for use under the P8Model, and will be updated later.
llvm-svn: 211779
|
| |
|
|
|
|
|
|
|
|
| |
Additional compliant GAS names for coprocessor register name
are enabled for all instruction with parameter MCK_CoprocReg:
LDC,LDC2,STC,STC2,CDP,CDP2,MCR,MCR2,MCRR,MCRR2,MRC,MRC2,MRRC,MRRC2
Patch by Andrey Kuharev.
llvm-svn: 211776
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch teaches the backend how to canonicalize a shuffle vectors
according to the rule:
- (shuffle (FADD A, B), (FSUB A, B), Mask) ->
(shuffle (FSUB A, -B), (FADD A, -B), Mask)
Where 'Mask' is:
<0,5,2,7> ;; for v4f32 and v4f64 shuffles.
<0,3> ;; for v2f64 shuffles.
<0,9,2,11,4,13,6,15> ;; for v8f32 shuffles.
In general, ISel only knows how to pattern-match a canonical
'fadd + fsub + blendi' dag node sequence into an ADDSUB instruction.
This new rule allows to convert a non-canonical dag sequence into a
canonical one that will be matched by a single ADDSUB at ISel stage.
The idea of converting a non-canonical ADDSUB into a canonical one by
swapping the first two operands of the shuffle, and then negating the
second operand of the FADD and FSUB, was originally proposed by Hal Finkel.
llvm-svn: 211771
|
| |
|
|
| |
llvm-svn: 211757
|
| |
|
|
|
|
|
|
| |
The *_alt defs for vcmp are used by the InstParser (the asm string in the main
def is used by the InstPrinter) . The former was accepting vector registers
as destination rather than mask registers.
llvm-svn: 211750
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
string_ostream is a safe and efficient string builder that combines opaque
stack storage with a built-in ostream interface.
small_string_ostream<bytes> additionally permits an explicit stack storage size
other than the default 128 bytes to be provided. Beyond that, storage is
transferred to the heap.
This convenient class can be used in most places an
std::string+raw_string_ostream pair or SmallString<>+raw_svector_ostream pair
would previously have been used, in order to guarantee consistent access
without byte truncation.
The patch also converts much of LLVM to use the new facility. These changes
include several probable bug fixes for truncated output, a programming error
that's no longer possible with the new interface.
llvm-svn: 211749
|
| |
|
|
| |
llvm-svn: 211740
|
| |
|
|
| |
llvm-svn: 211735
|
| |
|
|
|
|
|
|
|
|
|
|
| |
in the same basic block.
If the cmp is in a different basic block, then it is possible that not all
operands of that compare have defined registers. This can happen when one of
the operands to the cmp is a load and the load gets folded into the cmp. In
this case FastISel will skip the load instruction and the vreg is never
defined.
llvm-svn: 211730
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
(or VPERM2X128).
This patch teaches method 'LowerVECTOR_SHUFFLE' to give higher precedence to
the check for 'isBlendMask'; the idea is that, when possible, we should firstly
check if a shuffle performs a blend, and in case, try to lower it into a BLENDI
instead of selecting a SHUFP or (worse) a VPERM2X128.
In general:
- AVX VBLENDPS/D always have better latency and throughput than VPERM2F128;
- BLENDPS/D instructions tend to always have better 'reciprocal throughput'
than the equivalent SHUFPS/D;
- Both BLENDPS/D and SHUFPS/D are often decoded into the same number of
m-ops; however, a m-op obtained from a BLENDPS/D can be scheduled to more
than one execution port.
This patch:
- Moves the check for 'isBlendMask' immediately before the check for
'isSHUFPMask' within method 'LowerVECTOR_SHUFFLE';
- Updates existing tests for sse/avx shuffle/blend instructions to verify
that we select (v)blendps/d when possible (instead of (v)shufps/d or
vperm2f128).
llvm-svn: 211720
|
| |
|
|
| |
llvm-svn: 211717
|
| |
|
|
|
|
| |
Remove the duplicate from MCRecordStreamer. No functionality change.
llvm-svn: 211714
|
| |
|
|
| |
llvm-svn: 211707
|
| |
|
|
| |
llvm-svn: 211694
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
ignore SEH pseudo ops in X86 JIT emitter.
--
This patch enables LLVM to emit Win64-native unwind info rather than
DWARF CFI. It handles all corner cases (I hope), including stack
realignment.
Because the unwind info is not flexible enough to describe stack frames
with a gap of unknown size in the middle, such as the one caused by
stack realignment, I modified register spilling code to place all spills
into the fixed frame slots, so that they can be accessed relative to the
frame pointer.
Patch by Vadim Chugunov!
Reviewed By: rnk
Differential Revision: http://reviews.llvm.org/D4081
llvm-svn: 211691
|
| |
|
|
| |
llvm-svn: 211689
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch teaches the backend how to combine a build_vector that implements
an 'addsub' between packed float vectors into a sequence of vector add
and vector sub followed by a VSELECT.
The new VSELECT is expected to be lowered into a BLENDI.
At ISel stage, the sequence 'vector add + vector sub + BLENDI' is
pattern-matched against ISel patterns added at r211427 to select
'addsub' instructions.
Added three more ISel patterns for ADDSUB.
Added test sse3-avx-addsub-2.ll to verify that we correctly emit 'addsub'
instructions.
llvm-svn: 211679
|
| |
|
|
|
|
|
| |
Optimize the codegen of select and branch instructions to directly use the
EFLAGS from the {s|u}{add|sub|mul}.with.overflow intrinsics.
llvm-svn: 211645
|
| |
|
|
|
|
|
|
| |
Now that non-leaf ComplexPatterns are allowed we can fold all the MUBUF
store patterns into the instruction definition. We will also be able to
reuse this new ComplexPattern for MUBUF loads and atomic operations.
llvm-svn: 211644
|
| |
|
|
|
|
| |
Now we need only one 64-bit pattern for stores.
llvm-svn: 211643
|