| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
|
|
| |
Stefanovic. I removed the part that actually emits the instructions cause
I want that to get in better shape first and in incremental steps. This
also makes it easier to review the upcoming parts.
llvm-svn: 135678
|
|
|
|
| |
llvm-svn: 135676
|
|
|
|
|
|
| |
ConstantExpr::getInBoundsGetElementPtr to use ArrayRef.
llvm-svn: 135673
|
|
|
|
|
|
|
|
| |
to for it to be an an anon namespace and be in a header.
Eliminate some extraenous uses of tie.
llvm-svn: 135669
|
|
|
|
|
|
|
|
| |
- Add more bitcasts for v16i16
- Since 135661 and 135662 already added the splat logic,
just add one more splat test for v16i16
llvm-svn: 135663
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
| |
refactor the code and add a bunch of comments. The final shuffle
emitted by handling 256-bit types is suitable for the VPERM shuffle
instruction which is going to be introduced in a next commit (with
a testcase which cover this commit)
llvm-svn: 135661
|
|
|
|
| |
llvm-svn: 135660
|
|
|
|
| |
llvm-svn: 135659
|
|
|
|
| |
llvm-svn: 135658
|
|
|
|
| |
llvm-svn: 135657
|
|
|
|
| |
llvm-svn: 135656
|
|
|
|
| |
llvm-svn: 135654
|
|
|
|
|
|
| |
rdar://9786536
llvm-svn: 135650
|
|
|
|
|
|
| |
MachineInstr::FrameSetup flag.
llvm-svn: 135645
|
|
|
|
|
|
| |
rdar://9786536
llvm-svn: 135644
|
|
|
|
|
|
| |
failures running on Windows, Cygwin, or MingW hosts.
llvm-svn: 135639
|
|
|
|
|
|
| |
ARM MC code from target.
llvm-svn: 135636
|
|
|
|
| |
llvm-svn: 135635
|
|
|
|
|
|
| |
lowering code.
llvm-svn: 135634
|
|
|
|
| |
llvm-svn: 135633
|
|
|
|
|
|
| |
information is embedded in MDNode describing the variable. It is also available as a part of DebugLoc attached with DBG_VALUE instruction. DebugLoc attached with an instruction is less reliable in optimized code so use information embedded in the MDNode.
llvm-svn: 135629
|
|
|
|
|
|
| |
it's used and not included where it isn't.
llvm-svn: 135628
|
|
|
|
|
|
| |
basic type to determine size and signness of the constant value.
llvm-svn: 135627
|
|
|
|
|
|
|
|
|
|
| |
Move the shift operator and special value (32 encoded as 0 for PKHTB) handling
into the instruction printer. This cleans up a bit of the disassembler
special casing for these instructions, more easily handles not printing the
operand at all for "lsl #0" and prepares for correct asm parsing of these
operands.
llvm-svn: 135626
|
|
|
|
|
|
| |
Operations" in LangRef.
llvm-svn: 135625
|
|
|
|
|
|
|
| |
Move common definitions for ARM and Thumb2 into ARMInstrFormats.td and rename
them to be a bit more descriptive that they're for the PKH instructions.
llvm-svn: 135617
|
|
|
|
|
|
|
|
|
| |
The shift type is implied by the instruction (PKHBT vs. PKHTB) and so shouldn't
be also encoded as part of the shift value immediate. Otherwise we're able to
represent invalid instructions, plus it needlessly complicates the
representation. Preparatory work for asm parsing of these instructions.
llvm-svn: 135616
|
|
|
|
| |
llvm-svn: 135613
|
|
|
|
|
|
|
| |
There is still a bit more refactoring left to do in Targets. But we are now very
close to fixing all the layering issues in MC.
llvm-svn: 135611
|
|
|
|
| |
llvm-svn: 135607
|
|
|
|
|
|
|
| |
Correctly handle 's' bit and predication suffices. Add parsing and encoding
tests.
llvm-svn: 135596
|
|
|
|
| |
llvm-svn: 135595
|
|
|
|
|
|
| |
This should fix the spurious buildbot errors.
llvm-svn: 135594
|
|
|
|
| |
llvm-svn: 135581
|
|
|
|
|
|
|
|
| |
- Introduce JITDefault code model. This tells targets to set different default
code model for JIT. This eliminates the ugly hack in TargetMachine where
code model is changed after construction.
llvm-svn: 135580
|
|
|
|
| |
llvm-svn: 135575
|
|
|
|
| |
llvm-svn: 135573
|
|
|
|
|
|
|
|
| |
TargetLoweringObjectFileImpl down to MCObjectFileInfo.
TargetAsmInfo is done to one last method. It's *almost* gone!
llvm-svn: 135569
|
|
|
|
| |
llvm-svn: 135568
|
|
|
|
|
|
|
| |
info. Holding Use* pointers is bad form even though it happened to
work in this case.
llvm-svn: 135566
|
|
|
|
|
|
| |
to appease test/CodeGen/X86 on cygwin.
llvm-svn: 135564
|
|
|
|
| |
llvm-svn: 135561
|
|
|
|
| |
llvm-svn: 135558
|
|
|
|
| |
llvm-svn: 135555
|
|
|
|
| |
llvm-svn: 135550
|
|
|
|
| |
llvm-svn: 135546
|
|
|
|
| |
llvm-svn: 135537
|
|
|
|
| |
llvm-svn: 135535
|
|
|
|
| |
llvm-svn: 135534
|