- Aug 31, 2012
-
-
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
-
NAKAMURA Takumi authored
llvm-svn: 162917
-
NAKAMURA Takumi authored
[Tobias von Koch] What's happening here is that the CR6SET/CR6UNSET is breaking the chain of register copies glued to the function call (BL_SVR4 node). The scheduler then moves other instructions in between those and the function call, which isn't good! Right. That's the case where there is no chain of register copies before the call, so InFlag == 0... Attached is a new revision of the patch which should fix this for good. llvm-svn: 162916
-
NAKAMURA Takumi authored
llvm-svn: 162915
-
Michael Ilseman authored
llvm-svn: 162914
-
Benjamin Kramer authored
llvm-svn: 162913
-
Benjamin Kramer authored
The old PHI updating code in loop-rotate was replaced with SSAUpdater a while ago, it has no problems with comples PHIs. What had to be fixed is detecting whether a loop was already rotated and updating dominators when multiple exits were present. This change increases overall code size a bit, mostly due to additional loop unrolling opportunities. Passes test-suite and selfhost with -verify-dom-info. Fixes PR7447. Thanks to Andy for the input on the domtree updating code. llvm-svn: 162912
-
Benjamin Kramer authored
llvm-svn: 162911
-
Jakob Stoklund Olesen authored
When a MachineInstr is constructed, its implicit operands are added first, then the explicit operands are inserted before the implicits. MCInstrDesc has oprand flags like early clobber and operand ties that apply to the explicit operands. Don't look at those flags when the implicit operands are first added in the explicit operands's positions. llvm-svn: 162910
-
Alexey Samsonov authored
llvm-svn: 162907
-
Nadav Rotem authored
because C always rounds towards zero. Thanks Dirk and Ben. llvm-svn: 162899
-
Tim Northover authored
llvm-svn: 162898
-
Nadav Rotem authored
llvm-svn: 162896
-
Alexey Samsonov authored
code and allow better code reuse. Make the code a bit more conforming to LLVM code style. No functionality change. llvm-svn: 162895
-
Craig Topper authored
Add FMA to switch statement in VectorLegalizer::LegalizeOp so that it can be expanded when it isn't legal. llvm-svn: 162894
-
Craig Topper authored
llvm-svn: 162893
-
Craig Topper authored
llvm-svn: 162892
-
Bill Wendling authored
llvm-svn: 162888
-
Michael Liao authored
llvm-svn: 162885
-