- Jul 21, 2011
-
-
Bruno Cardoso Lopes authored
- 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
-
Bruno Cardoso Lopes authored
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
-
Bruno Cardoso Lopes authored
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
-
Bruno Cardoso Lopes authored
llvm-svn: 135660
-
Bruno Cardoso Lopes authored
llvm-svn: 135659
-
Bruno Cardoso Lopes authored
llvm-svn: 135658
-
Bruno Cardoso Lopes authored
llvm-svn: 135657
-
Bruno Cardoso Lopes authored
llvm-svn: 135656
-
Bill Wendling authored
llvm-svn: 135645
-
Evan Cheng authored
Sink ARMMCExpr and ARMAddressingModes into MC layer. First step to separate ARM MC code from target. llvm-svn: 135636
-
Bill Wendling authored
llvm-svn: 135635
-
Bill Wendling authored
llvm-svn: 135634
-
- Jul 20, 2011
-
-
Jim Grosbach authored
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
-
Jim Grosbach authored
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
-
Jim Grosbach authored
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
-
Benjamin Kramer authored
llvm-svn: 135613
-
Evan Cheng authored
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
-
Eli Friedman authored
llvm-svn: 135607
-
Jim Grosbach authored
Correctly handle 's' bit and predication suffices. Add parsing and encoding tests. llvm-svn: 135596
-
Evan Cheng authored
- 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
-
Evan Cheng authored
TargetLoweringObjectFileImpl down to MCObjectFileInfo. TargetAsmInfo is done to one last method. It's *almost* gone! llvm-svn: 135569
-
NAKAMURA Takumi authored
X86Subtarget.h: Assume "x86_64-cygwin", though it has not been released yet, to appease test/CodeGen/X86 on cygwin. llvm-svn: 135564
-
Benjamin Kramer authored
llvm-svn: 135555
-
Akira Hatanaka authored
llvm-svn: 135550
-
Akira Hatanaka authored
llvm-svn: 135546
-
Akira Hatanaka authored
llvm-svn: 135537
-
Jim Grosbach authored
The system register spec should be case insensitive. The preferred form for output with mask values of 4, 8, and 12 references APSR rather than CPSR. Update and tidy up tests accordingly. llvm-svn: 135532
-
- Jul 19, 2011
-
-
Jim Grosbach authored
Teach the parser to recognize the APSR and SPSR system register names. Add and update tests accordingly. llvm-svn: 135527
-
Owen Anderson authored
llvm-svn: 135524
-
Akira Hatanaka authored
llvm-svn: 135522
-
Jim Grosbach authored
Add range checking to the immediate operands. Update tests accordingly. llvm-svn: 135521
-
Akira Hatanaka authored
ANDi, when the instruction does not have any immediate operands. llvm-svn: 135520
-
Akira Hatanaka authored
llvm-svn: 135514
-
Jim Grosbach authored
Correct the handling of the 's' suffix when parsing ARM mode. It's only a truly separate opcode in Thumb. Add test cases to make sure we handle the s and condition suffices correctly, including diagnostics. llvm-svn: 135513
-
Jim Grosbach authored
llvm-svn: 135507
-
Jim Grosbach authored
Make sure we only clobber the cc_out operand if it is indeed a default non-setting operand. llvm-svn: 135506
-
Jim Grosbach authored
Add range checking for the immediate operand and handle the "mov" mnemonic choosing between encodings based on the value of the immediate. Add tests for fixups, encoding choice and values, and diagnostic for out of range values. llvm-svn: 135500
-
Jim Grosbach authored
cc_out and pred operands are added during parsing via custom C++ now. llvm-svn: 135497
-
Akira Hatanaka authored
llvm-svn: 135496
-
Akira Hatanaka authored
- In EmitAtomicBinaryPartword, mask incr in loopMBB only if atomic.swap is the instruction being expanded, instead of masking it in thisMBB. - Remove redundant Or in EmitAtomicCmpSwap. llvm-svn: 135495
-