| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
| |
independent 256-bit lanes.
llvm-svn: 173674
|
|
|
|
|
|
| |
instruction.
llvm-svn: 173667
|
|
|
|
| |
llvm-svn: 173572
|
|
|
|
|
|
| |
Simplify some of the decode functions.
llvm-svn: 156268
|
|
|
|
| |
llvm-svn: 156265
|
|
|
|
|
|
| |
lower half correctly. Missed in r155982.
llvm-svn: 156059
|
|
|
|
|
|
| |
for AsmPrinter.
llvm-svn: 155982
|
|
|
|
|
|
| |
immediate is set.
llvm-svn: 154907
|
|
|
|
|
|
| |
SmallVector of int instead of unsigned for shuffle mask in decode functions. Preparation for another change.
llvm-svn: 153079
|
|
|
|
|
|
| |
decoding.
llvm-svn: 149859
|
|
|
|
|
|
| |
instruction commenting for AVX/AVX2 forms for integer UNPCKs.
llvm-svn: 145924
|
|
|
|
|
|
| |
type for VPERMILPD/PS. Add instruction selection support for VINSERTI128/VEXTRACTI128.
llvm-svn: 145483
|
|
|
|
|
|
| |
decoding for VSHUFPS/D for 256-bit types. Add pattern matching for memory forms of VPERMILPS/VPERMILPD.
llvm-svn: 145390
|
|
|
|
|
|
| |
add AVX flavors of many instructions and fix the destination operand for some of the existing AVX entries.
llvm-svn: 145063
|
|
|
|
|
|
| |
correctly. Add support for decoding UNPCKHPS/UNPCKHPD for AVX 128-bit and 256-bit forms.
llvm-svn: 145055
|
|
|
|
|
|
|
|
| |
vectors. It operates on 128-bit elements instead of regular scalar
types. Recognize shuffles that are suitable for VPERM2F128 and teach
the x86 legalizer how to handle them.
llvm-svn: 137519
|
|
|
|
| |
llvm-svn: 136452
|
|
|
|
|
|
|
| |
different from the previous 128-bit because they work in lanes.
Update a few comments and add testcases
llvm-svn: 136157
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
instruction introduced in AVX, which can operate on 128 and 256-bit vectors.
It considers a 256-bit vector as two independent 128-bit lanes. It can permute
any 32 or 64 elements inside a lane, and restricts the second lane to
have the same permutation of the first one. With the improved splat support
introduced early today, adding codegen for this instruction enable more
efficient 256-bit code:
Instead of:
vextractf128 $0, %ymm0, %xmm0
punpcklbw %xmm0, %xmm0
punpckhbw %xmm0, %xmm0
vinsertf128 $0, %xmm0, %ymm0, %ymm1
vinsertf128 $1, %xmm0, %ymm1, %ymm0
vextractf128 $1, %ymm0, %xmm1
shufps $1, %xmm1, %xmm1
movss %xmm1, 28(%rsp)
movss %xmm1, 24(%rsp)
movss %xmm1, 20(%rsp)
movss %xmm1, 16(%rsp)
vextractf128 $0, %ymm0, %xmm0
shufps $1, %xmm0, %xmm0
movss %xmm0, 12(%rsp)
movss %xmm0, 8(%rsp)
movss %xmm0, 4(%rsp)
movss %xmm0, (%rsp)
vmovaps (%rsp), %ymm0
We get:
vextractf128 $0, %ymm0, %xmm0
punpcklbw %xmm0, %xmm0
punpckhbw %xmm0, %xmm0
vinsertf128 $0, %xmm0, %ymm0, %ymm1
vinsertf128 $1, %xmm0, %ymm1, %ymm0
vpermilps $85, %ymm0, %ymm0
llvm-svn: 135662
|
|
|
|
|
|
|
|
|
|
| |
missing patterns for them.
Add a SIMD test subdirectory to hold tests for SIMD instruction
selection correctness and quality.
'
llvm-svn: 126845
|
|
|
|
| |
llvm-svn: 126682
|
|
|
|
|
|
|
|
| |
and 256-bit forms. Because the number of elements in a vector
does not determine the vector type (4 elements could be v4f32 or
v4f64), pass the full type of the vector to decode routines.
llvm-svn: 126664
|
|
(LLVMX86Utils.a) to break cyclic library dependencies between
LLVMX86CodeGen.a and LLVMX86AsmParser.a. Previously this code was in
a header file and marked static but AVX requires some additional
functionality here that won't be used by all clients. Since including
unused static functions causes a gcc compiler warning, keeping it as a
header would break builds that use -Werror. Putting this in its own
library solves both problems at once.
llvm-svn: 125765
|