| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
|
|
|
| |
This does not change anything yet, because we do not offer any
alternative mapping.
llvm-svn: 284088
|
| |
|
|
|
|
|
| |
This does not change anything yet, because we do not offer any
alternative mapping.
llvm-svn: 284087
|
| |
|
|
| |
llvm-svn: 284086
|
| |
|
|
|
|
| |
Ahmed's patch again.
llvm-svn: 284075
|
| |
|
|
|
|
| |
More of Ahmed's work.
llvm-svn: 284074
|
| |
|
|
|
|
| |
Another of Ahmed's patches.
llvm-svn: 284073
|
| |
|
|
|
|
| |
Patch from Ahmed Bougaca again.
llvm-svn: 284072
|
| |
|
|
| |
llvm-svn: 284071
|
| |
|
|
|
|
| |
It's going to be a TBNZ (at -O0) anyway, so the high bits don't matter.
llvm-svn: 284070
|
| |
|
|
| |
llvm-svn: 283973
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
Although Copies are not specific to preISel, we still have to assign them
a proper register class. However, given they are not constrained to
anything we do not have to handle the source register at the copy. It
will be properly mapped when reaching the related definition.
In the process, the handlong of G_ANYEXT is slightly modified as those
end up being selected as copy. The difference is that when register size
do not match on both sides, we need to insert SUBREG_TO_REG operation,
otherwise the post RA copy expansion will not be happy!
llvm-svn: 283972
|
| |
|
|
|
|
| |
Those are copies, we do not have to do any legalization action for them.
llvm-svn: 283970
|
| |
|
|
|
|
|
| |
Mostly Ahmed's work again, I'm just sprucing things up slightly before
committing.
llvm-svn: 283952
|
| |
|
|
|
|
| |
Patch mostly by Ahmed Bougaca.
llvm-svn: 283937
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
Allow instructions such as 'cmp w0, #(end - start)' by folding the
expression into a constant. For ELF, we fold only if the symbols are in
the same section. For MachO, we fold if the expression contains only
symbols that are not linker visible.
Fixes https://llvm.org/bugs/show_bug.cgi?id=18920
Differential Revision: https://reviews.llvm.org/D23834
llvm-svn: 283862
|
| |
|
|
|
|
| |
This patch allows to select 32 and 64-bit FP load and store.
llvm-svn: 283832
|
| |
|
|
|
|
|
|
|
|
| |
This only adds the support for 64-bit vector OR. Adding more sizes is
not difficult, but it requires a bigger refactoring because ORs work on
any size, not necessarly the ones that match the width of the register
width. Right now, this is not expressed in the legalization, so don't
bother pushing the refactoring yet.
llvm-svn: 283831
|
| |
|
|
|
|
|
| |
Actually every 64-bit loads are legal, but right now the API does not
offer a simple way to express that.
llvm-svn: 283829
|
| |
|
|
| |
llvm-svn: 283814
|
| |
|
|
| |
llvm-svn: 283809
|
| |
|
|
| |
llvm-svn: 283808
|
| |
|
|
|
|
| |
They're basically just an alias for G_ADD on AArch64.
llvm-svn: 283807
|
| |
|
|
| |
llvm-svn: 283806
|
| |
|
|
|
|
|
|
| |
This avoids "static initialization order fiasco"
Differential Revision: https://reviews.llvm.org/D25412
llvm-svn: 283702
|
| |
|
|
| |
llvm-svn: 283691
|
| |
|
|
| |
llvm-svn: 283690
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
template
The core of the change is supposed to be NFC, however it also fixes
what I believe was an undefined behavior when calling:
va_start(ValueArgs, Desc);
with Desc being a StringRef.
Differential Revision: https://reviews.llvm.org/D25342
llvm-svn: 283671
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Avoid generating indexed vector instructions for Exynos. This is needed for
fmla/fmls/fmul/fmulx. For example, the instruction
fmla v0.4s, v1.4s, v2.s[1]
is less efficient than the instructions
dup v2.4s, v2.s[1]
fmla v0.4s, v1.4s, v2.4s
Patch written by Abderrazek Zaafrani.
Differential Revision: https://reviews.llvm.org/D21571
llvm-svn: 283663
|
| |
|
|
| |
llvm-svn: 283527
|
| |
|
|
| |
llvm-svn: 283459
|
| |
|
|
| |
llvm-svn: 283458
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
AArch64InstrInfo::shouldScheduleAdjacent() determines whether two
instruction can benefit from macroop fusion on apple CPUs. The list
turned out to be incomplete:
- the "rr" variants of the instructions were missing
- even the "rs" variants can have shift value == 0 and behave like the
"rr" variants
This also splits the MacropFusion target feature into
ArithmeticBccFusion and ArithmeticCbzFusion.
Differential Revision: https://reviews.llvm.org/D25142
llvm-svn: 283243
|
| |
|
|
|
|
|
|
|
|
| |
Refactor the code so that the same function can be used for all
instructions with all the same operands for up to 3 operands.
This is going to be useful for cast instructions.
NFC.
llvm-svn: 283144
|
| |
|
|
| |
llvm-svn: 283142
|
| |
|
|
| |
llvm-svn: 283013
|
| |
|
|
| |
llvm-svn: 283004
|
| |
|
|
|
|
| |
and can be pulled from the TargetMachine. NFC.
llvm-svn: 283000
|
| |
|
|
|
|
|
|
| |
This makes sure the helper functions work as expected.
NFC.
llvm-svn: 282961
|
| |
|
|
|
|
|
|
| |
We don't return index, we return the actual ValueMapping.
NFC.
llvm-svn: 282960
|
| |
|
|
|
|
|
|
|
|
| |
We don't need to have singleton ValueMapping on their own, we can just
reuse one of the elements of the 3-ops mapping.
This allows even more code sharing.
NFC.
llvm-svn: 282959
|
| |
|
|
|
|
|
|
|
| |
Use a helper function to access ValMapping. This should make the code
easier to understand and maintain.
NFC.
llvm-svn: 282958
|
| |
|
|
|
|
|
|
|
| |
The function name did not make it clear that the returned value was an
offset to apply to a register bank index.
NFC.
llvm-svn: 282957
|
| |
|
|
|
|
|
|
| |
Avoid to rely on the dynamically allocated operands mapping for the
alternative mapping.
NFC.
llvm-svn: 282956
|
| |
|
|
|
|
|
|
| |
This uses a TableGen'ed like structure for all 3-operands instrs.
The output of the RegBankSelect pass should be identical but the
RegisterBankInfo will do less dynamic allocations.
llvm-svn: 282817
|
| |
|
|
|
|
|
| |
This is the kind of input TableGen should generate at some point.
NFC.
llvm-svn: 282816
|
| |
|
|
|
|
|
|
|
| |
Make sure that the ValueMappings contain the value we expect at the
indices we expect.
NFC.
llvm-svn: 282815
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Summary: AArch64 LLVM assembler emits add instruction without shift bit to calculate the higher 12-bit address of TLS variables in local exec model. This generates wrong code sequence to access TLS variables with thread offset larger than 0x1000.
Reviewers: t.p.northover, peter.smith, rovka
Subscribers: salim.nasser, aemerson, llvm-commits, rengolin
Differential Revision: https://reviews.llvm.org/D24702
llvm-svn: 282661
|
| |
|
|
|
|
|
|
|
|
|
| |
This is a step toward statically allocate InstructionMapping. Like the
previous few commits, the goal is to move toward a TableGen'ed like
structure with no dynamic allocation at all.
This should already improve compile time by getting rid of a bunch of
memmove of SmallVectors.
llvm-svn: 282643
|
| |
|
|
|
|
|
|
| |
Another step toward TableGen'ed like structure for the RegisterBankInfo
of AArch64. By doing this, we also save a bit of compile time for the
exact same output.
llvm-svn: 282550
|
| |
|
|
|
|
| |
NFC.
llvm-svn: 282549
|