| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
|
| |
ADD, SUB, MUL integer and FP types. OR, AND, XOR.
Added embeded broadcast form for these instructions.
llvm-svn: 188673
|
|
|
|
| |
llvm-svn: 188637
|
|
|
|
|
|
| |
v8i64.
llvm-svn: 188534
|
|
|
|
|
|
| |
Lowering for SETCC.
llvm-svn: 188265
|
|
|
|
|
|
| |
Added a test for shuffles using VPERM.
llvm-svn: 188147
|
|
|
|
|
|
| |
with lowering logic and a test.
llvm-svn: 187884
|
|
|
|
|
|
| |
Added intrinsics and tests.
llvm-svn: 187717
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
double test(double a, double b, double c, double d) { return a<b ? c : d; }
before:
_test:
ucomisd %xmm0, %xmm1
ja LBB0_2
movaps %xmm3, %xmm2
LBB0_2:
movaps %xmm2, %xmm0
after:
_test:
cmpltsd %xmm1, %xmm0
andpd %xmm0, %xmm2
andnpd %xmm3, %xmm0
orpd %xmm2, %xmm0
Small speedup on Benchmarks/SmallPT
llvm-svn: 187706
|
|
|
|
|
|
|
|
|
| |
All insertf*/extractf* functions replaced with insert/extract since we have insertf and inserti forms.
Added lowering for INSERT_VECTOR_ELT / EXTRACT_VECTOR_ELT for 512-bit vectors.
Added lowering for EXTRACT/INSERT subvector for 512-bit vectors.
Added a test.
llvm-svn: 187491
|
|
|
|
|
|
| |
instruction.
llvm-svn: 173667
|
|
|
|
|
|
|
|
| |
intrinsics
This is very mechanical, no functionality change. Preparation for PR14667.
llvm-svn: 170898
|
|
|
|
|
|
|
|
|
|
|
| |
psubus if possible.
We match the pattern "x >= y ? x-y : 0" into "subus x, y" and two special cases
if y is a constant. DAGCombiner canonicalizes those so we first have to undo the
canonicalization for those cases. The pattern occurs in gzip when the loop
vectorizer is enabled. Part of PR14613.
llvm-svn: 170273
|
|
|
|
|
|
| |
Generate VPBLENDD for AVX2 and VPBLENDW for v16i16 type on AVX2.
llvm-svn: 169366
|
|
|
|
| |
llvm-svn: 166486
|
|
|
|
|
|
|
|
|
|
| |
- Due to the current matching vector elements constraints in
ISD::FP_ROUND, rounding from v2f64 to v4f32 (after legalization from
v2f32) is scalarized. Add a customized v2f32 widening to convert it
into a target-specific X86ISD::VFPROUND to work around this
constraints.
llvm-svn: 165631
|
|
|
|
|
|
| |
- Fix an remaining issue of PR11674 as well
llvm-svn: 163528
|
|
|
|
|
|
| |
align with FMA3.
llvm-svn: 162829
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
this allows for better code generation.
Added a new DAGCombine transformation to convert FMAX and FMIN to FMANC and
FMINC, which are commutative.
For example:
movaps %xmm0, %xmm1
movsd LC(%rip), %xmm0
minsd %xmm1, %xmm0
becomes:
minsd LC(%rip), %xmm0
llvm-svn: 162187
|
|
|
|
|
|
|
|
|
|
|
|
| |
- FP_EXTEND only support extending from vectors with matching elements.
This results in the scalarization of extending to v2f64 from v2f32,
which will be legalized to v4f32 not matching with v2f64.
- add X86-specific VFPEXT supproting extending from v4f32 to v2f64.
- add BUILD_VECTOR lowering helper to recover back the original
extending from v4f32 to v2f64.
- test case is enhanced to include different vector width.
llvm-svn: 161894
|
|
|
|
|
|
| |
custom handling in DAGISelToDAG due to limitations in TableGen's implicit def handling. Fixes PR11305.
llvm-svn: 161318
|
|
|
|
| |
llvm-svn: 161110
|
|
|
|
| |
llvm-svn: 160477
|
|
|
|
|
|
| |
type. Remove the custom lowering code that selected the SDNode type.
llvm-svn: 158279
|
|
|
|
| |
llvm-svn: 155309
|
|
|
|
|
|
| |
argument to match intrinsic behavior. Add a bitcast to the lowering code to convert mask from v8i32 to v8f32 for vpermps.
llvm-svn: 154798
|
|
|
|
| |
llvm-svn: 154782
|
|
|
|
| |
llvm-svn: 154781
|
|
|
|
| |
llvm-svn: 154761
|
|
|
|
|
|
|
|
|
| |
Original message:
Modify the code that lowers shuffles to blends from using blendvXX to vblendXX.
blendV uses a register for the selection while Vblend uses an immediate.
On sandybridge they still have the same latency and execute on the same execution ports.
llvm-svn: 154483
|
|
|
|
| |
llvm-svn: 154425
|
|
|
|
|
|
|
| |
blendv uses a register for the selection while vblend uses an immediate.
On sandybridge they still have the same latency and execute on the same execution ports.
llvm-svn: 154396
|
|
|
|
|
|
|
|
|
|
|
|
| |
Original commit message from r147481:
DAGCombine for transforming 128->256 casts into a vmovaps, rather
then a vxorps + vinsertf128 pair if the original vector came from a load.
Fix:
Unaligned loads need to generate a vmovups.
rdar://10974078
llvm-svn: 152366
|
|
|
|
| |
llvm-svn: 150902
|
|
|
|
|
|
| |
MSP430, PPC, PTX, Sparc, X86, XCore.
llvm-svn: 150878
|
|
|
|
| |
llvm-svn: 150795
|
|
|
|
|
|
| |
vector_shuffles shouldn't reach isel.
llvm-svn: 150462
|
|
|
|
| |
llvm-svn: 150365
|
|
|
|
| |
llvm-svn: 150362
|
|
|
|
|
|
| |
It caused 3 failures on pre-penryn and non-x86(generic) hosts.
llvm-svn: 150357
|
|
|
|
| |
llvm-svn: 150328
|
|
|
|
| |
llvm-svn: 150321
|
|
|
|
|
|
| |
vector_shuffles should be custom lowered before isel.
llvm-svn: 150299
|
|
|
|
|
|
| |
lower intrinsics to it. Use it instead of intrinsic to handle 64-bit vector multiplies.
llvm-svn: 149807
|
|
|
|
|
|
|
| |
Special handling was added for v4i32 -> v4i64 and v8i16 -> v8i32
extensions.
llvm-svn: 149600
|
|
|
|
|
|
| |
patterns with custom lowering to a target specific nodes.
llvm-svn: 149216
|
|
|
|
|
|
| |
specific nodes so we can remove the isel patterns.
llvm-svn: 148933
|
|
|
|
|
|
| |
loads are promoted to v2i64 or v4i64 so that no one tries to reintroduce pattern fragments for other types.
llvm-svn: 148771
|
|
|
|
|
|
| |
loads. All integer vector loads are promoted to v2i64 or v4i64 so these pattern fragments can never match. Fix or remove patterns that used these fragments.
llvm-svn: 148672
|
|
|
|
|
|
| |
pattern matching.
llvm-svn: 148670
|
|
|
|
|
|
| |
X86 ISD node types into only two node types. Simplifying opcode selection and pattern matching.
llvm-svn: 148667
|