| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
| |
into a target shuffle.
Correctly flagging upper elements as undef.
llvm-svn: 294020
|
|
|
|
|
|
| |
Requested by @silvas
llvm-svn: 293916
|
|
|
|
|
|
| |
shuffle
llvm-svn: 293663
|
|
|
|
| |
llvm-svn: 293533
|
|
|
|
| |
llvm-svn: 291690
|
|
|
|
|
|
| |
As discussed on D27692, the next step will be to allow cross-domain shuffles once the combined shuffle depth passes a certain point.
llvm-svn: 290064
|
|
|
|
|
|
|
|
| |
Add the missing domain equivalences for movss, movsd, movd and movq zero extending loading instructions.
Differential Revision: https://reviews.llvm.org/D27684
llvm-svn: 289825
|
|
|
|
| |
llvm-svn: 289407
|
|
|
|
| |
llvm-svn: 289398
|
|
|
|
| |
llvm-svn: 289327
|
|
|
|
|
|
|
|
| |
The non-constant pool version of DecodeVPERMIL2PMask was not offsetting correctly for the second input. I've updated the code to match the implementation in the constant-pool version.
Annoyingly this bug was hidden for so long as it's tricky to combine to useful variable shuffle masks that don't become constant-pool entries.
llvm-svn: 288898
|
|
|
|
| |
llvm-svn: 288858
|
|
|
|
| |
llvm-svn: 288663
|
|
|
|
| |
llvm-svn: 288628
|
|
|
|
|
|
| |
We're trying to combine to vpunpckhbw not vpunpckhwd
llvm-svn: 288501
|
|
|
|
|
|
|
|
|
|
| |
Initial support for target shuffle constant folding in cases where all shuffle inputs are constant. We may be able to relax this and merge shuffles with only some constant inputs in the future.
I've added the helper function getTargetConstantBitsFromNode (based off a similar function in X86ShuffleDecodeConstantPool.cpp) that could be reused for other cases requiring constant vector extraction.
Differential Revision: https://reviews.llvm.org/D27220
llvm-svn: 288250
|
|
|
|
|
|
|
|
| |
Now we can commute to BLENDPD/BLENDPS on SSE41+ targets if necessary, so simplify the combine matching where we can.
This required me to add a couple of scalar math movsd/moss fold patterns that hadn't been needed in the past.
llvm-svn: 283038
|
|
|
|
|
|
| |
Add ability to extract vXi64 'vzext_movl' masks on 32-bit targets
llvm-svn: 281834
|
|
|
|
| |
llvm-svn: 281828
|
|
|
|
|
|
| |
Use getConstVector helper to correctly create v2i64/v4i64 constants on 32-bit targets
llvm-svn: 281105
|
|
|
|
| |
llvm-svn: 278120
|
|
|
|
| |
llvm-svn: 278114
|
|
|
|
|
|
|
|
|
|
|
|
| |
We currently only allow exact matches of shuffle mask patterns during target shuffle combining.
This patch relaxes this to permit SM_SentinelUndef in the combined shuffle to always be accepted as well as allowing exact matching of the SM_SentinelZero value.
I've adjusted some tests that were requiring exact shuffle masks to now include undef values.
Differential Revision: http://reviews.llvm.org/D21495
llvm-svn: 273119
|
|
|
|
|
|
|
|
|
|
| |
shuffle mask directly
We currently only combine to blend+zero if the target value type has 8 elements or less, but this was missing a lot of cases where the combined mask had been widened.
This change makes it so we use the combined mask to determine the blend value type, allowing us to catch more widened cases.
llvm-svn: 272003
|
|
|
|
|
|
| |
combines
llvm-svn: 271834
|
|
|
|
| |
llvm-svn: 271831
|
|
|
|
| |
llvm-svn: 271809
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
| |
llvm-svn: 268450
|
|
|
|
|
|
| |
Fixed issue with VPPERM target shuffle mask decoding that was incorrectly masking off the 3-bit permute op with a 2-bit mask.
llvm-svn: 267346
|
|
|
|
|
|
|
|
| |
Reused the ability to split constants of a type wider than the shuffle mask to work with masks generated from scalar constants transfered to xmm.
This fixes an issue preventing PSHUFB target shuffle masks decoding rematerialized scalar constants and also exposes the XOP VPPERM bug described in PR27472.
llvm-svn: 267343
|
|
|
|
|
|
|
|
| |
lowered as rematerialized constants on scalar unit
Found whilst investigating PR27472
llvm-svn: 267339
|
|
|
|
|
|
| |
Currently failing due to poor blend matching, found whilst investigating PR27472
llvm-svn: 267282
|
|
|
|
|
|
|
|
| |
support
Added additional test that peeks through bitcast to v16i8 mask
llvm-svn: 266533
|
|
|
|
|
|
|
|
|
|
| |
This patch adds support for decoding XOP VPPERM instruction when it represents a basic shuffle.
The mask decoding required the existing MCInstrLowering code to be updated to support binary shuffles - the implementation now matches what is done in X86InstrComments.cpp.
Differential Revision: http://reviews.llvm.org/D18441
llvm-svn: 265874
|
|
|
|
|
|
|
|
| |
This patch begins adding support for lowering to the XOP VPPERM instruction - adding the X86ISD::VPPERM opcode.
Differential Revision: http://reviews.llvm.org/D18189
llvm-svn: 264260
|
|
Actual combing support will be added in a future patch
llvm-svn: 263402
|