| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
| |
the autoupgrade code. This currently results in worse codegen but is needed for correctness.
llvm-svn: 274736
|
|
|
|
| |
llvm-svn: 274550
|
|
|
|
|
|
| |
we can shorten the length of the comparison strings and avoid repeatedly comparing the common prefix. No functional change intended.
llvm-svn: 274522
|
|
|
|
| |
llvm-svn: 274506
|
|
|
|
| |
llvm-svn: 274498
|
|
|
|
| |
llvm-svn: 274439
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This is a resubmittion of 263158 change after fixing the existing problem with intrinsics mangling (see LTO and intrinsics mangling llvm-dev thread for details).
This patch fixes the problem which occurs when loop-vectorize tries to use @llvm.masked.load/store intrinsic for a non-default addrspace pointer. It fails with "Calling a function with a bad signature!" assertion in CallInst constructor because it tries to pass a non-default addrspace pointer to the pointer argument which has default addrspace.
The fix is to add pointer type as another overloaded type to @llvm.masked.load/store intrinsics.
Reviewed By: reames
Differential Revision: http://reviews.llvm.org/D17270
llvm-svn: 274043
|
|
|
|
|
|
| |
intrinsics" since some of the clang tests don't expect to see the updated signatures.
llvm-svn: 273895
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This is a resubmittion of 263158 change after fixing the existing problem with intrinsics mangling (see LTO and intrinsics mangling llvm-dev thread for details).
This patch fixes the problem which occurs when loop-vectorize tries to use @llvm.masked.load/store intrinsic for a non-default addrspace pointer. It fails with "Calling a function with a bad signature!" assertion in CallInst constructor because it tries to pass a non-default addrspace pointer to the pointer argument which has default addrspace.
The fix is to add pointer type as another overloaded type to @llvm.masked.load/store intrinsics.
Reviewed By: reames
Differential Revision: http://reviews.llvm.org/D17270
llvm-svn: 273892
|
|
|
|
|
|
| |
and selects.
llvm-svn: 273543
|
|
|
|
|
|
| |
native icmps.
llvm-svn: 273240
|
|
|
|
|
|
| |
Required better annotation of the instruction defs upon removal of the builtin intrinsic pattern.
llvm-svn: 273077
|
|
|
|
|
|
|
| |
This will (hopefully very temporarily) break clang.
The clang side of this should be the next commit.
llvm-svn: 272932
|
|
|
|
|
|
|
|
| |
Follow-up to:
http://reviews.llvm.org/rL272806
http://reviews.llvm.org/rL272807
llvm-svn: 272907
|
|
|
|
| |
llvm-svn: 272848
|
|
|
|
|
|
| |
autoupgrade them to selects and shufflevector.
llvm-svn: 272527
|
|
|
|
|
|
| |
select generation into routines that can be reused for future intrinsic upgrades. NFC
llvm-svn: 272526
|
|
|
|
|
|
| |
shufflevector.
llvm-svn: 272510
|
|
|
|
|
|
| |
code instead of calling push_back in a loop. This removes the need to check if the vector needs to grow on each iteration.
llvm-svn: 272501
|
|
|
|
|
|
| |
fully derive everything using types of the intrinsic arguments rather than writing separate loops for each intrinsic. NFC
llvm-svn: 272496
|
|
|
|
|
|
| |
ArrayRef<uint32_t> to avoid the need to manually create a bunch of Constants and a ConstantVector. NFC
llvm-svn: 272493
|
|
|
|
|
|
| |
for one of the signatures of CreateShuffleVector. This better emphasises that you can't use it for the -1 as undef behavior.
llvm-svn: 272491
|
|
|
|
|
|
| |
Auto-upgrade to generic shuffles like sse/avx2 implementations now that we can lower to VPSLLDQ/VPSRLDQ
llvm-svn: 272308
|
|
|
|
|
|
| |
of vector shuffle and select.
llvm-svn: 271872
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch begins adding support for lowering to the XOP VPERMIL2PD/VPERMIL2PS shuffle instructions - adding the X86ISD::VPERMIL2 opcode and cleaning up the usage.
The internal llvm intrinsics were assuming the shuffle mask operand was the same type as the float/double input operands (I guess to simplify the intrinsic definitions in X86InstrXOP.td to a single value type). These needed changing to integer types (matching the clang builtin and the AMD intrinsics definitions), an auto upgrade path is added to convert old calls.
Mask decoding/target shuffle support will be added in future patches.
Differential Revision: http://reviews.llvm.org/D20049
llvm-svn: 271633
|
|
|
|
|
|
|
|
|
|
|
|
| |
f32/f64 to i32 with generic IR (llvm)
This patch removes the llvm intrinsics (V)CVTTPS2DQ and VCVTTPD2DQ truncation (round to zero) conversions and auto-upgrades to FP_TO_SINT calls instead.
Note: I looked at updating CVTTPD2DQ as well but this still requires a lot more work to correctly lower.
Differential Revision: http://reviews.llvm.org/D20860
llvm-svn: 271510
|
|
|
|
|
|
|
|
| |
intrinsics instead.
The intrinsics will be autoupgraded to the same generic masked loads.
llvm-svn: 271478
|
|
|
|
|
|
|
|
| |
generic masked load intrinsics instead."
Looks like something isn't quite right still. Also forgot to move the test cases to an autoupgrade test.
llvm-svn: 271363
|
|
|
|
|
|
|
|
| |
intrinsics instead.
The intrinsics will be autoupgraded to the same generic masked loads.
llvm-svn: 271362
|
|
|
|
|
|
|
|
| |
store intrinsics instead.
The intrinsics will be autoupgraded to the same generic masked stores.
llvm-svn: 271245
|
|
|
|
|
|
| |
them. Auto upgrade to native unaligned store instructions.
llvm-svn: 271236
|
|
|
|
| |
llvm-svn: 271233
|
|
|
|
|
|
| |
checking more prefixes instead of complete matches.
llvm-svn: 271232
|
|
|
|
| |
llvm-svn: 271174
|
|
|
|
|
|
|
|
|
|
|
|
| |
intrinsics with generic IR (llvm)
This patch removes the llvm intrinsics VPMOVSX and (V)PMOVZX sign/zero extension intrinsics and auto-upgrades to SEXT/ZEXT calls instead. We already did this for SSE41 PMOVSX sometime ago so much of that implementation can be reused.
Reapplied now that the the companion patch (D20684) removes/auto-upgrade the clang intrinsics has been committed.
Differential Revision: http://reviews.llvm.org/D20686
llvm-svn: 271131
|
|
|
|
|
|
| |
extension intrinsics with generic IR (llvm)
llvm-svn: 270976
|
|
|
|
|
|
|
|
|
|
|
|
| |
generic IR (llvm)
This patch removes the llvm intrinsics VPMOVSX and (V)PMOVZX sign/zero extension intrinsics and auto-upgrades to SEXT/ZEXT calls instead. We already did this for SSE41 PMOVSX sometime ago so much of that implementation can be reused.
A companion patch (D20684) removes/auto-upgrade the clang intrinsics.
Differential Revision: http://reviews.llvm.org/D20686
llvm-svn: 270973
|
|
|
|
|
|
|
|
|
|
| |
When we have "Image Info Version" module flag but don't have "Class Properties"
module flag, set "Class Properties" module flag to 0, so we can correctly emit
errors when one module has the flag set and another module does not.
rdar://26469641
llvm-svn: 270791
|
|
|
|
|
|
|
|
|
|
| |
intrinsics with generic IR
Followup to D20528 clang patch, this removes the (V)CVTDQ2PD(Y) and (V)CVTPS2PD(Y) llvm intrinsics and auto-upgrades to sitofp/fpext instead.
Differential Revision: http://reviews.llvm.org/D20568
llvm-svn: 270678
|
|
|
|
|
|
| |
long time.
llvm-svn: 270677
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Both AArch64 and ARM support llvm.<arch>.thread.pointer intrinsics that
just return the thread pointer. I have a pending patch that does the same
for SystemZ (D19054), and there are many more targets that could benefit
from one.
This patch merges the ARM and AArch64 intrinsics into a single target
independent one that will also be used by subsequent targets.
Differential Revision: http://reviews.llvm.org/D19098
llvm-svn: 266818
|
|
|
|
|
|
| |
Retry r266541 without the range-based-for-loop-change that was wrong.
llvm-svn: 266658
|
|
|
|
|
|
|
| |
This reverts commit r266541 since it introduces a use-after-free:
http://lab.llvm.org:8011/builders/sanitizer-x86_64-linux-bootstrap/builds/11471
llvm-svn: 266550
|
|
|
|
| |
llvm-svn: 266541
|
|
|
|
|
|
|
|
| |
This reverts commit r266086.
It breaks the LTO build of gcc in SPEC2000.
llvm-svn: 266282
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This is a resubmittion of 263158 change.
This patch fixes the problem which occurs when loop-vectorize tries to use @llvm.masked.load/store intrinsic for a non-default addrspace pointer. It fails with "Calling a function with a bad signature!" assertion in CallInst constructor because it tries to pass a non-default addrspace pointer to the pointer argument which has default addrspace.
The fix is to add pointer type as another overloaded type to @llvm.masked.load/store intrinsics.
Reviewed By: reames
Differential Revision: http://reviews.llvm.org/D17270
llvm-svn: 266086
|
|
|
|
|
|
|
|
|
|
| |
This is a cleanup patch for SSP support in LLVM. There is no functional change.
llvm.stackprotectorcheck is not needed, because SelectionDAG isn't
actually lowering it in SelectBasicBlock; rather, it adds check code in
FinishBasicBlock, ignoring the position where the intrinsic is inserted
(See FindSplitPointForStackProtector()).
llvm-svn: 265851
|
|
|
|
|
|
|
|
|
|
|
|
| |
Remove logic to upgrade !llvm.loop by changing the MDString tag
directly. This old logic would check (and change) arbitrary strings
that had nothing to do with loop metadata. Instead, check !llvm.loop
attachments directly, and change which strings get attached.
Rather than updating the assembly-based upgrade, drop it entirely. It
has been quite a while since we supported upgrading textual IR.
llvm-svn: 264373
|
|
|
|
|
|
|
|
|
|
|
| |
This commit broke LTO builds. Reverting it to unbreak the bots while the
issue is investigated. See also:
http://lists.llvm.org/pipermail/llvm-commits/Week-of-Mon-20160321/341002.html
This reverts r263158
llvm-svn: 264088
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch fixes the problem which occurs when loop-vectorize tries to use @llvm.masked.load/store intrinsic for a non-default addrspace pointer. It fails with "Calling a function with a bad signature!" assertion in CallInst constructor because it tries to pass a non-default addrspace pointer to the pointer argument which has default addrspace.
The fix is to add pointer type as another overloaded type to @llvm.masked.load/store intrinsics.
Reviewed By: reames
Differential Revision: http://reviews.llvm.org/D17270
llvm-svn: 263158
|