| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
| |
llvm-svn: 163116
|
|
|
|
|
|
| |
No functionality change.
llvm-svn: 163115
|
|
|
|
|
|
| |
Fixs PR13719.
llvm-svn: 163107
|
|
|
|
|
|
|
|
|
| |
This code used to only handle malloc-like calls, which do not read memory.
r158919 changed it to check isNoAliasFn(), which includes strdup-like and
realloc-like calls, but it was not checking for dependencies on the memory
read by those calls.
llvm-svn: 163106
|
|
|
|
| |
llvm-svn: 163104
|
|
|
|
| |
llvm-svn: 163103
|
|
|
|
|
|
|
|
|
|
| |
MatchInstructionImpl() function.
These values are used by the ConvertToMCInst() function to index into the
ConversionTable. The values are also needed to call the GetMCInstOperandNum()
function.
llvm-svn: 163101
|
|
|
|
| |
llvm-svn: 163100
|
|
|
|
| |
llvm-svn: 163094
|
|
|
|
|
|
|
|
|
| |
For example, the ARM target does not have efficient ISel handling for vector
selects with scalar conditions. This patch adds a TLI hook which allows the
different targets to report which selects are supported well and which selects
should be converted to CF duting codegen prepare.
llvm-svn: 163093
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
We update until we hit a fixpoint. This is probably slow but also
slightly simplifies the code. It should also fix the occasional
invalid domtrees observed when building with expensive checking.
I couldn't find a case where this had a measurable slowdown, but
if someone finds a pathological case where it does we may have
to find a cleverer way of updating dominators here.
Thanks to Duncan for the test case.
llvm-svn: 163091
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Most of the code guarded with ANDROIDEABI are not
ARM-specific, and having no relation with arm-eabi.
Thus, it will be more natural to call this
environment "Android" instead of "ANDROIDEABI".
Note: We are not using ANDROID because several projects
are using "-DANDROID" as the conditional compilation
flag.
llvm-svn: 163087
|
|
|
|
|
|
| |
not sign-extend.
llvm-svn: 163086
|
|
|
|
|
|
|
|
|
| |
zeros or all ones. A vector bool with just ones isn't suitable for masking with.
No test case unfortunately as i couldn't find a target which fit all
the conditions needed to hit this code.
llvm-svn: 163075
|
|
|
|
|
|
|
|
| |
NEON domain conversion was too heavy-handed with its widened
registers, which could have stripped existing instructions of their
dependency, leaving them vulnerable to scheduling errors.
llvm-svn: 163070
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
vector from i1 to some other type. rdar://problem/12210060"
This reverts commit 5dd9e214fb92847e947f9edab170f9b4e52b908f.
Thanks to Duncan for explaining how this should have been done.
Conflicts:
test/CodeGen/X86/vec_select.ll
llvm-svn: 163064
|
|
|
|
| |
llvm-svn: 163063
|
|
|
|
| |
llvm-svn: 163059
|
|
|
|
| |
llvm-svn: 163058
|
|
|
|
| |
llvm-svn: 163053
|
|
|
|
|
|
| |
fast-math mode.
llvm-svn: 163051
|
|
|
|
| |
llvm-svn: 163049
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
| |
llvm-svn: 163035
|
|
|
|
|
|
| |
function nowadays.
llvm-svn: 163030
|
|
|
|
| |
llvm-svn: 163029
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
| |
- 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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
| |
llvm-svn: 163008
|
|
|
|
| |
llvm-svn: 163005
|
|
|
|
|
|
| |
Match_ConversionFail enum.
llvm-svn: 163002
|
|
|
|
|
|
| |
part can be commuted.
llvm-svn: 163001
|
|
|
|
|
|
| |
code tolerant of instructions with more than two input operands.
llvm-svn: 163000
|
|
|
|
| |
llvm-svn: 162999
|
|
|
|
|
|
|
|
|
| |
I was too optimistic, inline asm can have tied operands that don't
follow the def order.
Fixes PR13742.
llvm-svn: 162998
|
|
|
|
|
|
|
|
|
|
|
|
| |
- 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
|
|
|
|
| |
llvm-svn: 162979
|
|
|
|
| |
llvm-svn: 162973
|
|
|
|
|
|
|
|
|
| |
Thumb2 instructions are mostly constrained to rGPR, not tGPR which is
for Thumb1.
rdar://problem/12203728
llvm-svn: 162968
|
|
|
|
|
|
|
| |
The assembly string for the VMOVPQIto64rr instruction incorrectly lacked the 'v'
prefix, resulting in mis-assembly of the vanilla movd instruction.
llvm-svn: 162963
|
|
|
|
|
|
|
| |
the ConvertToMCInst() return void, rather then a bool. Update all the cvt
functions as well.
llvm-svn: 162961
|
|
|
|
|
|
| |
i1 to some other type. rdar://problem/12210060
llvm-svn: 162960
|
|
|
|
|
|
| |
constants. This is only enabled in unsafe FP math mode, since it does not preserve rounding effects for all such constants.
llvm-svn: 162956
|
|
|
|
| |
llvm-svn: 162955
|
|
|
|
|
|
| |
belongs.
llvm-svn: 162954
|
|
|
|
| |
llvm-svn: 162952
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- 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
|
|
|
|
| |
llvm-svn: 162917
|