| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
As this optimization converts two loads into one load with two shift instructions,
it could potentially hurt performance if a loop is arithmetic operation intensive.
Reviewers: t.p.northover, mcrosier, jmolloy
Subscribers: evandro, jmolloy, aemerson, rengolin, mcrosier, llvm-commits
Differential Revision: http://reviews.llvm.org/D20172
llvm-svn: 270251
|
| |
|
|
|
|
|
|
| |
We performed a number of memory allocations each time getTTI was called,
remove them by using SmallString.
No functionality change intended.
llvm-svn: 270246
|
| |
|
|
| |
llvm-svn: 270237
|
| |
|
|
| |
llvm-svn: 270236
|
| |
|
|
| |
llvm-svn: 270234
|
| |
|
|
|
|
|
|
|
|
|
|
| |
This patch is a first step towards a more extendible method of matching combined target shuffle masks.
Initially this just pulls out the existing basic mask matches and adds support for some 256/512 bit equivalents. Future patterns will require a number of features to be added but I wanted to keep this patch simple.
I hope we can avoid duplication between shuffle lowering and combining and share more complex pattern match functions in future commits.
Differential Revision: http://reviews.llvm.org/D19198
llvm-svn: 270230
|
| |
|
|
|
|
|
|
|
|
|
|
| |
This refactors the logic in X86 to avoid code duplication. It also
splits it in two steps: it first decides if a symbol is local to the DSO
and then uses that information to decide how to access it.
The first part is implemented by shouldAssumeDSOLocal. It is not in any
way specific to X86. In a followup patch I intend to move it to
somewhere common and reused it in other backends.
llvm-svn: 270209
|
| |
|
|
|
|
|
| |
We now handle them just like non hidden ones. This was already the case
on x86 (r207518) and arm (r207517).
llvm-svn: 270205
|
| |
|
|
| |
llvm-svn: 270200
|
| |
|
|
|
|
| |
Allows Sparc registers to be specifically referred to in inline assembly.
llvm-svn: 270198
|
| |
|
|
|
|
|
|
| |
Note: This is specifically to allow GCC's test pr44707 to pass.
Trivial change, not put for differential revision. Test included.
llvm-svn: 270192
|
| |
|
|
| |
llvm-svn: 270182
|
| |
|
|
|
|
| |
Follow r269988 and use Optional<Reloc>.
llvm-svn: 270176
|
| |
|
|
|
|
| |
supported. Without this we get isel failures on the avx-intrinsics-x86.ll test in AVX512VL.
llvm-svn: 270174
|
| |
|
|
|
|
| |
Reviewed by Matt Arsenault in http://reviews.llvm.org/D16311
llvm-svn: 270171
|
| |
|
|
|
|
| |
Addresses r270095's code review.
llvm-svn: 270147
|
| |
|
|
| |
llvm-svn: 270139
|
| |
|
|
| |
llvm-svn: 270137
|
| |
|
|
| |
llvm-svn: 270118
|
| |
|
|
| |
llvm-svn: 270111
|
| |
|
|
|
|
|
|
|
| |
Since the calls don't return, the instruction afterwards will never run,
and is just taking up unnecessary space in the binary.
Differential Revision: http://reviews.llvm.org/D20406
llvm-svn: 270109
|
| |
|
|
|
|
| |
This avoids passing a TargetMachine in a few places.
llvm-svn: 270095
|
| |
|
|
| |
llvm-svn: 270093
|
| |
|
|
|
|
|
| |
Remove a comment about not supporting LRVH/STRVH from the README
LRVH/STRVH are being generated as of r269688
llvm-svn: 270092
|
| |
|
|
| |
llvm-svn: 270091
|
| |
|
|
|
|
|
| |
Problem Was exposed by -Wstring-conversion
llvm-svn: 270087
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Mask0Imm and ~Mask1Imm must be equivalent and one of the MaskImms is a shifted
mask (e.g., 0x000ffff0). Both 'and's must have a single use.
This changes code like:
and w8, w0, #0xffff000f
and w9, w1, #0x0000fff0
orr w0, w9, w8
into
lsr w8, w1, #4
bfi w0, w8, #4, #12
llvm-svn: 270063
|
| |
|
|
| |
llvm-svn: 270056
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Fixes for MUBUF_Atomic instructions to make operand list valid:
- For RTN insns, make a copy of $vdata_in operand as $vdata.
- Do not add operand for GLC, it is hardcoded and comes as a token.
Workaround to avoid adding multiple default optional operands.
Tests added.
Differential Revision: http://reviews.llvm.org/D20257
llvm-svn: 270049
|
| |
|
|
|
|
| |
Differential Revision: http://reviews.llvm.org/D15526
llvm-svn: 270048
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
verifier.
Summary: Partially fixes PR27458
Reviewers: sdardis
Subscribers: dsanders, llvm-commits, sdardis
Differential Revision: http://reviews.llvm.org/D20330
llvm-svn: 270037
|
| |
|
|
|
|
|
|
|
|
| |
Enable "Remove Redundant LEAs" part of the LEA optimization pass for -O2.
This gives 6.4% performance improve on Broadwell on nnet benchmark from Coremark-pro.
There is no significant effect on other benchmarks (Geekbench, Spec2000, Spec2006).
Differential Revision: http://reviews.llvm.org/D19659
llvm-svn: 270036
|
| |
|
|
|
|
| |
Differential Revision: http://reviews.llvm.org/D18352
llvm-svn: 270030
|
| |
|
|
|
|
| |
No changes to the isel table size so the separation wasn't buying us anything.
llvm-svn: 270026
|
| |
|
|
|
|
| |
implied.
llvm-svn: 270025
|
| |
|
|
| |
llvm-svn: 270017
|
| |
|
|
|
|
| |
classes.
llvm-svn: 270013
|
| |
|
|
|
|
| |
type constraints for vector and scalar.
llvm-svn: 270012
|
| |
|
|
| |
llvm-svn: 270003
|
| |
|
|
| |
llvm-svn: 270002
|
| |
|
|
|
|
|
| |
If the load has a pointer type, we don't want to change
its type.
llvm-svn: 270000
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Having an enum member named Default is quite confusing: Is it distinct
from the others?
This patch removes that member and instead uses Optional<Reloc> in
places where we have a user input that still hasn't been maped to the
default value, which is now clear has no be one of the remaining 3
options.
llvm-svn: 269988
|
| |
|
|
|
|
|
|
| |
isReturn() was returning different values with and without -g which led to
different code being generated. Change isFlagSettingInstruction to query
an instruction's effect on SR instead.
llvm-svn: 269986
|
| |
|
|
| |
llvm-svn: 269976
|
| |
|
|
|
|
|
|
|
| |
Use signed division otherwise all back jumps fail the check
Fixes regression introduced in r269951
Differential Revision: http://reviews.llvm.org/D20380
llvm-svn: 269972
|
| |
|
|
| |
llvm-svn: 269963
|
| |
|
|
| |
llvm-svn: 269962
|
| |
|
|
| |
llvm-svn: 269951
|
| |
|
|
|
|
|
| |
We can chain bcnt instructions together, so
any width popcnt is pretty fast.
llvm-svn: 269950
|
| |
|
|
|
|
|
|
|
|
|
|
| |
instructions"
with an additional fix to make RegAllocFast ignore undef physreg uses. It would
previously get confused about the "push %eax" instruction's use of eax. That
method for adjusting the stack pointer is used in X86FrameLowering::emitSPUpdate
as well, but since that runs after register-allocation, we didn't run into the
RegAllocFast issue before.
llvm-svn: 269949
|