| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
llvm-svn: 222728
|
|
|
|
|
|
|
| |
If we find out that two types are *not* isomorphic, we learn nothing about
opaque sub types in both the source and destination.
llvm-svn: 222727
|
|
|
|
|
|
| |
They are not more or less "well typed" than GlobalVariables.
llvm-svn: 222725
|
|
|
|
| |
llvm-svn: 222724
|
|
|
|
| |
llvm-svn: 222723
|
|
|
|
|
|
|
|
|
|
| |
The pattern matching failed to recognize all instances of "-1", because when
comparing against "-1" we didn't use an APInt of the same bitwidth.
This commit fixes this and also adds inverse versions of the conditon to catch
more cases.
llvm-svn: 222722
|
|
|
|
|
|
|
|
| |
This handles cases where we are comparing a masked value against itself.
The analysis could be further improved by making it recursive but such
expense is not currently justified.
llvm-svn: 222716
|
|
|
|
|
|
|
|
| |
Missed the complexities of how these elements are destroyed.
This reverts commit r222714.
llvm-svn: 222715
|
|
|
|
| |
llvm-svn: 222714
|
|
|
|
|
|
|
|
| |
The attn instruction is not part of the Power ISA, but is documented in the A2
user manual, and is accepted by the GNU assembler for the A2 and the POWER4+.
Reported as part of PR21650.
llvm-svn: 222712
|
|
|
|
|
|
|
|
| |
This does not matter on newer cores (where we can use reciprocal estimates in
fast-math mode anyway), but for older cores this allows us to generate better
fast-math code where we have multiple FDIVs with a common divisor.
llvm-svn: 222710
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
computeKnownBitsFromAssume
We were matching against the assume intrinsic in every check. Since we know that it must be an assume, this is just wasted work. Somewhat surprisingly, matching an intrinsic id is actually relatively expensive. It devolves to a string construction and comparison in Function::isIntrinsic.
I originally spotted this because it showed up in a performance profile of my compiler. I've since discovered a separate issue which seems to be the actual root cause, but this is minor perf goodness regardless.
I'm likely to follow up with another change to factor out the comparison matching. There's no need to match the compare instruction in every single one of the tests.
Differential Revision: http://reviews.llvm.org/D6312
llvm-svn: 222709
|
|
|
|
|
|
| |
This change implements the comment and style changes Sean requested during post commit review with r221742. Sorry for the delay.
llvm-svn: 222707
|
|
|
|
| |
llvm-svn: 222705
|
|
|
|
|
|
| |
It was dead since r134829.
llvm-svn: 222684
|
|
|
|
| |
llvm-svn: 222682
|
|
|
|
|
|
|
| |
Extremely difficult to reproduce, so no test case included.
PR21637
llvm-svn: 222677
|
|
|
|
| |
llvm-svn: 222676
|
|
|
|
|
|
| |
instead of setting the guard to 1 in the generated code, pass the pointer to guard to __sanitizer_cov and set it there. No user-visible functionality change expected
llvm-svn: 222675
|
|
|
|
|
|
|
|
|
|
|
| |
When processing an assignment in the integrated assembler that sets
a symbol to the value of another symbol, we need to copy the st_other
bits that encode the local entry point offset.
Modeled after MipsTargetELFStreamer::emitAssignment handling of the
ELF::STO_MIPS_MICROMIPS flag.
llvm-svn: 222672
|
|
|
|
|
|
|
| |
Allows long paths for the executable and redirected stdin/stdout/stderr.
Addresses PR21563.
llvm-svn: 222671
|
|
|
|
| |
llvm-svn: 222670
|
|
|
|
| |
llvm-svn: 222668
|
|
|
|
| |
llvm-svn: 222662
|
|
|
|
| |
llvm-svn: 222660
|
|
|
|
|
|
|
|
|
|
| |
We would create an instruction but not inserting it.
Not inserting the unused instruction would lead us to verification
failure.
This fixes PR21653.
llvm-svn: 222659
|
|
|
|
|
|
|
|
|
| |
Fix JRADDIUSP instruction, remove delay slot flag because this instruction
doesn't have delay slot.
Differential Revision: http://reviews.llvm.org/D6365
llvm-svn: 222658
|
|
|
|
|
|
| |
Differential Revision: http://reviews.llvm.org/D5122
llvm-svn: 222653
|
|
|
|
|
|
|
|
|
|
| |
instead of S0
Implement microMIPS 16-bit instructions register set: $0, $2-$7 and $17.
Differential Revision: http://reviews.llvm.org/D5780
llvm-svn: 222652
|
|
|
|
|
|
| |
has been alerted to the warning, in case this variable is meant to be used. Fixes -Werror builds in the meantime.
llvm-svn: 222649
|
|
|
|
|
|
|
|
|
|
|
| |
With the help of new method readInstruction16() two bytes are read and
decodeInstruction() is called with DecoderTableMicroMips16, if this fails
four bytes are read and decodeInstruction() is called with
DecoderTableMicroMips32.
Differential Revision: http://reviews.llvm.org/D6149
llvm-svn: 222648
|
|
|
|
|
|
|
|
|
|
|
| |
This patch teaches function 'transformVSELECTtoBlendVECTOR_SHUFFLE' how to
convert VSELECT dag nodes to shuffles on targets that do not have SSE4.1.
On pre-SSE4.1 targets, we can still perform blend operations using movss/movsd.
Also, removed a target specific combine that performed a premature lowering of
VSELECT nodes to target specific MOVSS/MOVSD nodes.
llvm-svn: 222647
|
|
|
|
|
|
|
|
|
| |
We tried to get the result of DataLayout::getLargestLegalIntTypeSize but
we didn't have a DataLayout. This resulted in opt crashing.
This fixes PR21651.
llvm-svn: 222645
|
|
|
|
| |
llvm-svn: 222636
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
r222375 made some improvements to build_vector lowering of v4x32 and v4xf32 into an insertps, but it missed a case where:
1. A single extracted element is used twice.
2. The lower of the two non-zero indexes should be preserved, and the higher should be used for the dest mask.
This caused a crash, since the source value for the insertps ends-up uninitialized.
Differential Revision: http://reviews.llvm.org/D6377
llvm-svn: 222635
|
|
|
|
| |
llvm-svn: 222634
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Introduced new target-independent intrinsics in order to support masked vector loads and stores. The loop vectorizer optimizes loops containing conditional memory accesses by generating these intrinsics for existing targets AVX2 and AVX-512. The vectorizer asks the target about availability of masked vector loads and stores.
Added SDNodes for masked operations and lowering patterns for X86 code generator.
Examples:
<16 x i32> @llvm.masked.load.v16i32(i8* %addr, <16 x i32> %passthru, i32 4 /* align */, <16 x i1> %mask)
declare void @llvm.masked.store.v8f64(i8* %addr, <8 x double> %value, i32 4, <8 x i1> %mask)
Scalarizer for other targets (not AVX2/AVX-512) will be done in a separate patch.
http://reviews.llvm.org/D6191
llvm-svn: 222632
|
|
|
|
| |
llvm-svn: 222631
|
|
|
|
|
|
|
| |
i1 is not a legal type on Evergreen, so this combine proceeded
and tried to produce a bitcast between i1 and i8.
llvm-svn: 222630
|
|
|
|
| |
llvm-svn: 222625
|
|
|
|
| |
llvm-svn: 222624
|
|
|
|
| |
llvm-svn: 222623
|
|
|
|
|
|
| |
Use Triple::isOS*() helper functions where possible.
llvm-svn: 222622
|
|
|
|
| |
llvm-svn: 222620
|
|
|
|
|
|
|
|
| |
No functionality changed yet, but this will prevent subsequent patches
from having to handle permutations of various interleaved shuffle
patterns.
llvm-svn: 222614
|
|
|
|
| |
llvm-svn: 222613
|
|
|
|
| |
llvm-svn: 222612
|
|
|
|
|
|
| |
This is a generalization of the X - (0 - Y) -> X transform.
llvm-svn: 222611
|
|
|
|
| |
llvm-svn: 222609
|
|
|
|
| |
llvm-svn: 222606
|