- Sep 01, 2012
-
-
Owen Anderson authored
llvm-svn: 163051
-
Michael Liao authored
llvm-svn: 163049
-
NAKAMURA Takumi authored
llvm-svn: 163041
-
Manman Ren authored
llvm-svn: 163040
-
Manman Ren authored
output chain is correctly setup. As an example, if the original load must happen before later stores, we need to make sure the constructed VZEXT_LOAD is constrained to be before the stores. rdar://11457792 llvm-svn: 163036
-
Craig Topper authored
llvm-svn: 163035
-
Eric Christopher authored
Patch by Brad Smith! llvm-svn: 163033
-
Chad Rosier authored
function nowadays. llvm-svn: 163030
-
Craig Topper authored
llvm-svn: 163029
-
- Aug 31, 2012
-
-
Jakob Stoklund Olesen authored
Manage tied operands entirely internally to MachineInstr. This makes it possible to change the representation of tied operands, as I will do shortly. The constraint that tied uses and defs must be in the same order was too restrictive. llvm-svn: 163021
-
Michael Liao authored
- In addition to undefined, if V2 is zero vector, skip 2nd PSHUFB and POR as well as PSHUFB will zero elements with negative indices. Patch by Sriram Murali <sriram.murali@intel.com> llvm-svn: 163018
-
Jack Carter authored
on the size of the extraction and its position in the 64 bit word. This patch allows support of the dext transformations with mips64 direct object output. 0 <= msb < 32 0 <= lsb < 32 0 <= pos < 32 1 <= size <= 32 DINS The field is entirely contained in the right-most word of the doubleword 32 <= msb < 64 0 <= lsb < 32 0 <= pos < 32 2 <= size <= 64 DINSM The field straddles the words of the doubleword 32 <= msb < 64 32 <= lsb < 64 32 <= pos < 64 1 <= size <= 32 DINSU The field is entirely contained in the left-most word of the doubleword llvm-svn: 163010
-
Bill Wendling authored
llvm-svn: 163008
-
Chad Rosier authored
llvm-svn: 163005
-
Chad Rosier authored
llvm-svn: 163002
-
Craig Topper authored
llvm-svn: 163001
-
Craig Topper authored
Use CloneMachineInstr to make a new MI in commuteInstruction to make the code tolerant of instructions with more than two input operands. llvm-svn: 163000
-
Craig Topper authored
llvm-svn: 162999
-
Jakob Stoklund Olesen authored
I was too optimistic, inline asm can have tied operands that don't follow the def order. Fixes PR13742. llvm-svn: 162998
-
Benjamin Kramer authored
- Overloading operator<< for raw_ostream and pointers is dangerous, it alters the behavior of code that includes the header. - Remove unused ID. - Use LLVM's byte swapping helpers instead of a hand-coded. - Make ReadProfilingData work directly on a pointer. No functionality change. llvm-svn: 162992
-
NAKAMURA Takumi authored
FIXME: Should this be tested with both +avx and -avx,+sse2? llvm-svn: 162983
-
Bill Wendling authored
llvm-svn: 162979
-
Michael Liao authored
llvm-svn: 162973
-
Jakob Stoklund Olesen authored
Thumb2 instructions are mostly constrained to rGPR, not tGPR which is for Thumb1. rdar://problem/12203728 llvm-svn: 162968
-
Jim Grosbach authored
The assembly string for the VMOVPQIto64rr instruction incorrectly lacked the 'v' prefix, resulting in mis-assembly of the vanilla movd instruction. llvm-svn: 162963
-
Chad Rosier authored
the ConvertToMCInst() return void, rather then a bool. Update all the cvt functions as well. llvm-svn: 162961
-
Pete Cooper authored
Take account of boolean vector contents when promoting a build vector from i1 to some other type. rdar://problem/12210060 llvm-svn: 162960
-
Owen Anderson authored
llvm-svn: 162958
-
Owen Anderson authored
Teach the DAG combiner to turn chains of FADDs (x+x+x+x+...) into FMULs by constants. This is only enabled in unsafe FP math mode, since it does not preserve rounding effects for all such constants. llvm-svn: 162956
-
Chad Rosier authored
llvm-svn: 162955
-
Chad Rosier authored
llvm-svn: 162954
-
Michael Gottesman authored
llvm-svn: 162953
-
Chad Rosier authored
llvm-svn: 162952
-
- Aug 30, 2012
-
-
Chad Rosier authored
llvm-svn: 162946
-
Chad Rosier authored
llvm-svn: 162945
-
Chad Rosier authored
an 80-column violation in the generated code. No functional change intended. llvm-svn: 162944
-
Nadav Rotem authored
Currently targets that do not support selects with scalar conditions and vector operands - scalarize the code. ARM is such a target because it does not support CMOV of vectors. To implement this efficientlyi, we broadcast the condition bit and use a sequence of NAND-OR to select between the two operands. This is the same sequence we use for targets that don't have vector BLENDs (like SSE2). rdar://12201387 llvm-svn: 162926
-
Chad Rosier authored
AsmMatcherEmitter. This function maps inline assembly operands to MCInst operands. For example, '__asm mov j, eax' is represented by the follow MCInst: <MCInst 1460 <MCOperand Reg:0> <MCOperand Imm:1> <MCOperand Reg:0> <MCOperand Expr:(j)> <MCOperand Reg:0> <MCOperand Reg:43>> The first 5 MCInst operands are a result of j matching as a memory operand consisting of a BaseReg (Reg:0), MemScale (Imm:1), MemIndexReg(Reg:0), Expr (Expr:(j), and a MemSegReg (Reg:0). The 6th MCInst operand represents the eax register (Reg:43). This translation is necessary to determine the Input and Output Exprs. If a single asm operand maps to multiple MCInst operands, the index of the first MCInst operand is returned. Ideally, it would return the operand we really care out (i.e., the Expr:(j) in this case), but I haven't found an easy way of doing this yet. llvm-svn: 162920
-
Michael Liao authored
- Add 'UseSSEx' to force SSE legacy insn not being selected when AVX is enabled. As the penalty of inter-mixing SSE and AVX instructions, we need prevent SSE legacy insn from being generated except explicitly specified through some intrinsics. For patterns supported by both SSE and AVX, so far, we force AVX insn will be tried first relying on AddedComplexity or position in td file. It's error-prone and introduces bugs accidentally. 'UseSSEx' is disabled when AVX is turned on. For SSE insns inherited by AVX, we need this predicate to force VEX encoding or SSE legacy encoding only. For insns not inherited by AVX, we still use the previous predicates, i.e. 'HasSSEx'. So far, these insns fall into the following categories: * SSE insns with MMX operands * SSE insns with GPR/MEM operands only (xFENCE, PREFETCH, CLFLUSH, CRC, and etc.) * SSE4A insns. * MMX insns. * x87 insns added by SSE. 2 test cases are modified: - test/CodeGen/X86/fast-isel-x86-64.ll AVX code generation is different from SSE one. 'vcvtsi2sdq' cannot be selected by fast-isel due to complicated pattern and fast-isel fallback to materialize it from constant pool. - test/CodeGen/X86/widen_load-1.ll AVX code generation is different from SSE one after fixing SSE/AVX inter-mixing. Exec-domain fixing prefers 'vmovapd' instead of 'vmovaps'. llvm-svn: 162919
-
NAKAMURA Takumi authored
llvm-svn: 162918
-