| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
| |
llvm-svn: 205885
|
|
|
|
| |
llvm-svn: 205884
|
|
|
|
|
|
| |
zero but should be decoded/disassembled with any value.
llvm-svn: 205883
|
|
|
|
| |
llvm-svn: 205882
|
|
|
|
|
|
| |
the top bit of their immediate clear.
llvm-svn: 205881
|
|
|
|
| |
llvm-svn: 205880
|
|
|
|
| |
llvm-svn: 205879
|
|
|
|
|
|
| |
on fcvtzs and fcvtzu.
llvm-svn: 205878
|
|
|
|
| |
llvm-svn: 205877
|
|
|
|
|
|
| |
tlbi aliases.
llvm-svn: 205876
|
|
|
|
| |
llvm-svn: 205875
|
|
|
|
|
|
| |
stores, so the unused register fields are set to all-ones canonically but are recognised with any value.
llvm-svn: 205874
|
|
|
|
|
|
| |
during disassembly.
llvm-svn: 205873
|
|
|
|
| |
llvm-svn: 205872
|
|
|
|
|
|
| |
anyway.
llvm-svn: 205871
|
|
|
|
| |
llvm-svn: 205870
|
|
|
|
|
|
| |
disassembly and assembly. This removes the last users of namespace ARM64SYS.
llvm-svn: 205869
|
|
|
|
|
|
| |
using AArch64-style system registers, and fix up test failures discovered in the process.
llvm-svn: 205868
|
|
|
|
|
|
| |
These files are required in the decoder, disassembler and parser, and a layering violation was imminent.
llvm-svn: 205867
|
|
|
|
|
|
| |
AArch64. AArch64's named immediate mapping and parsing is much more advanced than ARM64's. No functionality change - they're currently living side by side while I switch uses over.
llvm-svn: 205866
|
|
|
|
|
|
| |
also (for add/sub only) if shift=11.
llvm-svn: 205865
|
|
|
|
|
|
| |
assembly/disassembly, equivilant to AL)
llvm-svn: 205864
|
|
|
|
| |
llvm-svn: 205863
|
|
|
|
| |
llvm-svn: 205862
|
|
|
|
|
|
| |
than UXTX
llvm-svn: 205861
|
|
|
|
| |
llvm-svn: 205860
|
|
|
|
|
|
| |
instructions is unallocated if shift > 4.
llvm-svn: 205859
|
|
|
|
|
|
| |
00x or 10x are undefined.
llvm-svn: 205858
|
|
|
|
|
|
| |
This is the second part of fixing PR19367.
llvm-svn: 205836
|
|
|
|
|
|
| |
This should fix PR19367.
llvm-svn: 205835
|
|
|
|
|
|
|
|
| |
This implements the target-hooks for ARM64 to enable constant hoisting.
This fixes <rdar://problem/14774662> and <rdar://problem/16381500>.
llvm-svn: 205791
|
|
|
|
|
|
|
|
|
|
| |
Confusingly, the NEON fmla instructions put the accumulator first but the
scalar versions put it at the end (like the fma lib function & LLVM's
intrinsic).
This should fix PR19345, assuming there's only one issue.
llvm-svn: 205758
|
|
|
|
|
|
| |
Punctuation, grammar, formatting, etc..
llvm-svn: 205749
|
|
|
|
| |
llvm-svn: 205748
|
|
|
|
| |
llvm-svn: 205747
|
|
|
|
|
|
|
| |
Makes iteration over implicit and explicit machine operands more
explicit (har har). Insipired by code review discussion for r205565.
llvm-svn: 205680
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
There were several overlapping problems here, and this solution is
closely inspired by the one adopted in AArch64 in r201381.
Firstly, scalarisation of v1i1 setcc operations simply fails if the
input types are legal. This is fixed in LegalizeVectorTypes.cpp this
time, and allows AArch64 code to be simplified slightly.
Second, vselect with such a setcc feeding into it ends up in
ScalarizeVectorOperand, where it's not handled. I experimented with an
implementation, but found that whatever DAG came out was rather
horrific. I think Hao's DAG combine approach is a good one for
quality, though there are edge cases it won't catch (to be fixed
separately).
Should fix PR19335.
llvm-svn: 205625
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The previous patterns directly inserted FMOV or INS instructions into
the DAG for scalar_to_vector & bitconvert patterns. This is horribly
inefficient and can generated lots more GPR <-> FPR register traffic
than necessary.
It's much better to emit instructions the register allocator
understands so it can coalesce the copies when appropriate.
It led to at least one ISelLowering hack to avoid the problems, which
was incorrect for v1i64 (FPR64 has no dsub). It can now be removed
entirely.
This should also fix PR19331.
llvm-svn: 205616
|
|
|
|
|
|
|
|
|
|
|
| |
Without this change, the llvm_unreachable kicked in. The code pattern
being spotted is rather non-canonical for 128-bit MLAs, but it can
happen and there's no point in generating sub-optimal code for it just
because it looks odd.
Should fix PR19332.
llvm-svn: 205615
|
|
|
|
| |
llvm-svn: 205610
|
|
|
|
| |
llvm-svn: 205585
|
|
|
|
| |
llvm-svn: 205582
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
When rematerializing through truncates, the coalescer may produce instructions
with dead defs, but live implicit-defs of subregs:
E.g.
%X1<def,dead> = MOVi64imm 2, %W1<imp-def>; %X1:GPR64, %W1:GPR32
These instructions are live, and their definitions should not be rewritten.
Fixes <rdar://problem/16492408>
llvm-svn: 205565
|
|
|
|
|
|
|
|
|
|
| |
Switching between i32 and i64 based on the LHS type is a good idea in
theory, but pre-legalisation uses i64 regardless of our choice,
leading to potential ISel errors.
Should fix PR19294.
llvm-svn: 205519
|
|
|
|
|
|
| |
This should fix PR19314.
llvm-svn: 205514
|
|
|
|
|
|
| |
No functional change.
llvm-svn: 205458
|
|
|
|
|
|
|
|
| |
Just pass a MachineInstr reference rather than an MBB iterator.
Creating a MachineInstr& is the first thing every implementation did
anyway.
llvm-svn: 205453
|
|
|
|
|
|
| |
No functional change, but more readable code.
llvm-svn: 205451
|
|
|
|
|
|
| |
No functional change intended.
llvm-svn: 205446
|
|
|
|
|
|
| |
No functional change intended.
llvm-svn: 205445
|