| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
| |
naming variables!
llvm-svn: 135684
|
|
|
|
| |
llvm-svn: 135683
|
|
|
|
| |
llvm-svn: 135682
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
| |
llvm-svn: 135674
|
|
|
|
|
|
| |
ConstantExpr::getInBoundsGetElementPtr to use ArrayRef.
llvm-svn: 135673
|
|
|
|
|
|
| |
to use ArrayRef.
llvm-svn: 135672
|
|
|
|
| |
llvm-svn: 135671
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
| |
llvm-svn: 135637
|
|
|
|
|
|
| |
ARM MC code from target.
llvm-svn: 135636
|
|
|
|
| |
llvm-svn: 135635
|
|
|
|
|
|
| |
lowering code.
llvm-svn: 135634
|
|
|
|
| |
llvm-svn: 135633
|
|
|
|
| |
llvm-svn: 135632
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
| |
C++0x memory model and atomics. See thread on llvmdev titled "Reviving the new LLVM concurrency model".
llvm-svn: 135624
|
|
|
|
|
|
| |
headers, we need the explicit llvm:: qualifier to prevent a conflict.
llvm-svn: 135623
|
|
|
|
|
|
|
| |
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: 135609
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- Not great yet, but it's a start.
- Requires an object file with a symbol table. (I really want to fix this, but it'll need a whole new algorithm)
- ELF and COFF won't work at the moment due to libObject shortcomings.
To try it out run
$ llvm-objdump -d --cfg foo.o
This will create a graphviz file for every symbol in the object file's text section containing a CFG.
llvm-svn: 135608
|
|
|
|
| |
llvm-svn: 135607
|
|
|
|
| |
llvm-svn: 135602
|
|
|
|
| |
llvm-svn: 135600
|
|
|
|
| |
llvm-svn: 135599
|
|
|
|
|
|
|
| |
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: 135592
|