| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
| |
llvm-svn: 250741
|
| |
|
|
| |
llvm-svn: 250733
|
| |
|
|
|
|
| |
It looks like an extra negation snuck in as apart of restoring it.
llvm-svn: 250726
|
| |
|
|
| |
llvm-svn: 250724
|
| |
|
|
|
|
| |
Implemented suggestion by dblakie in review for r250704.
llvm-svn: 250723
|
| |
|
|
| |
llvm-svn: 250720
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
Convert two halfword loads into a single 32-bit word load with bitfield extract
instructions. For example :
ldrh w0, [x2]
ldrh w1, [x2, #2]
becomes
ldr w0, [x2]
ubfx w1, w0, #16, #16
and w0, w0, #ffff
llvm-svn: 250719
|
| |
|
|
|
|
|
|
|
|
|
|
| |
- Isolate the check for the existence of a stack frame into hasFP.
- Implement getFrameIndexReference for DWARF address computation.
- Use getFrameIndexReference for offset computation in eliminateFrameIndex.
- Preserve debug information for dynamically allocated stack objects.
- Prefer FP to access local objects at -O0.
- Add experimental code to skip allocframe when not strictly necessary
(disabled by default).
llvm-svn: 250718
|
| |
|
|
|
|
|
| |
While technically this is untested dead code, it has out-of-tree users.
This reverts a part of r250434.
llvm-svn: 250717
|
| |
|
|
|
|
|
| |
Emit the CFI instructions after all code transformation have been done.
This will avoid any interference between CFI instructions and packetization.
llvm-svn: 250714
|
| |
|
|
|
|
|
|
|
| |
This reverts commit r250596.
Reverted for now as the commit triggers assert in the AMDGPU target
pending investigation.
llvm-svn: 250713
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
memory, rather than representing the stubs in IR. Update the CompileOnDemand
layer to use this functionality.
Directly emitting stubs is much cheaper than building them in IR and codegen'ing
them (see below). It also plays well with remote JITing - stubs can be emitted
directly in the target process, rather than having to send them over the wire.
The downsides are:
(1) Care must be taken when resolving symbols, as stub symbols are held in a
separate symbol table. This is only a problem for layer writers and other
people using this API directly. The CompileOnDemand layer hides this detail.
(2) Aliases of function stubs can't be symbolic any more (since there's no
symbol definition in IR), but must be converted into a constant pointer
expression. This means that modules containing aliases of stubs cannot be
cached. In practice this is unlikely to be a problem: There's no benefit to
caching such a module anyway.
On balance I think the extra performance is more than worth the trade-offs: In a
simple stress test with 10000 dummy functions requiring stubs and a single
executed "hello world" main function, directly emitting stubs reduced user time
for JITing / executing by over 90% (1.5s for IR stubs vs 0.1s for direct
emission).
llvm-svn: 250712
|
| |
|
|
| |
llvm-svn: 250698
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
The mapping of these two intrinsics in ARMInstrInfo.td had a small
omission which lead to their operands not being validated/transformed
before being lowered into usat and ssat instructions. This can cause
incorrect instructions to be emitted.
I've also added tests for the remaining two saturating arithmatic
intrinsics @llvm.arm.qadd and @llvm.arm.qsub as they are missing
codegen tests.
llvm-svn: 250697
|
| |
|
|
|
|
|
|
|
|
| |
We were keeping a reference to an object in a DenseMap then mutating it. At the end of the function we were attempting to clone that reference into other keys in the DenseMap, but DenseMap may well decide to resize its hashtable which would invalidate the reference!
It took an extremely complex testcase to catch this - many thanks to Zhendong Su for catching it in PR25225.
This fixes PR25225.
llvm-svn: 250692
|
| |
|
|
|
|
|
|
|
|
| |
Originally I planned to use the same interface for masked gather/scatter and set isConsecutive to "false" in this case.
Now I'm implementing masked gather/scatter and see that the interface is inconvenient. I want to add interfaces isLegalMaskedGather() / isLegalMaskedScatter() instead of using the "Consecutive" parameter in the existing interfaces.
Differential Revision: http://reviews.llvm.org/D13850
llvm-svn: 250686
|
| |
|
|
|
|
|
|
| |
ADDU.PH, ADDU_S.QB, ADDWC and ADDUH.QB instructions
Differential Revision: http://reviews.llvm.org/D13130
llvm-svn: 250685
|
| |
|
|
|
|
|
|
| |
MADD, MADDU, MSUB, MSUBU, MULT and MULTU instructions
Differential Revision: http://reviews.llvm.org/D13721
llvm-svn: 250683
|
| |
|
|
|
|
|
| |
This is a follow up patch of r250199 after verifying the start/stop
section symbols work as spected on FreeBSD.
llvm-svn: 250679
|
| |
|
|
| |
llvm-svn: 250660
|
| |
|
|
| |
llvm-svn: 250653
|
| |
|
|
| |
llvm-svn: 250651
|
| |
|
|
|
|
| |
Differential Revision: http://reviews.llvm.org/D13769
llvm-svn: 250650
|
| |
|
|
|
|
| |
Differential Revision: http://reviews.llvm.org/D13632
llvm-svn: 250649
|
| |
|
|
|
|
| |
registers. Should reduce the table size.
llvm-svn: 250644
|
| |
|
|
| |
llvm-svn: 250643
|
| |
|
|
| |
llvm-svn: 250642
|
| |
|
|
| |
llvm-svn: 250639
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
1. Key constant values (version, magic) and data structures related to raw and
indexed profile format are moved into one centralized file: InstrProf.h.
2. Utility function such as MD5Hash computation is also moved to the common
header to allow sharing with other components in the future.
3. A header data structure is introduced for Indexed format so that the reader
and writer can always be in sync.
4. Added some comments to document different places where multiple definition
of the data structure must be kept in sync (reader/writer, runtime, lowering
etc). No functional change is intended.
Differential Revision: http://reviews.llvm.org/D13758
llvm-svn: 250638
|
| |
|
|
| |
llvm-svn: 250636
|
| |
|
|
| |
llvm-svn: 250635
|
| |
|
|
| |
llvm-svn: 250634
|
| |
|
|
| |
llvm-svn: 250633
|
| |
|
|
| |
llvm-svn: 250624
|
| |
|
|
|
|
| |
predicate struct with a lambda.
llvm-svn: 250623
|
| |
|
|
|
|
| |
Added X86ISD opcodes for VPROT vector rotate by variable and by immediate.
llvm-svn: 250620
|
| |
|
|
| |
llvm-svn: 250619
|
| |
|
|
|
|
| |
Minor fix to D13665 found during post-commit review.
llvm-svn: 250616
|
| |
|
|
|
|
| |
take ArrayRef instead of pointer and length. NFC
llvm-svn: 250615
|
| |
|
|
| |
llvm-svn: 250614
|
| |
|
|
|
|
| |
Targets with AVX but without AVX2 were incorrectly reporting costs of 256-bit integer shifts.
llvm-svn: 250611
|
| |
|
|
|
|
|
|
|
|
| |
Add FastISel support for SSE4A scalar float / double non-temporal stores
Follow up to D13698
Differential Revision: http://reviews.llvm.org/D13773
llvm-svn: 250610
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
This patch improves support for combining the SSE4A EXTRQ(I) and INSERTQ(I) intrinsics:
1 - Converts INSERTQ/EXTRQ calls to INSERTQI/EXTRQI if the 'bit index' and 'length' operands are constant
2 - Converts INSERTQI/EXTRQI calls to shufflevector if the bit index/length are both byte aligned (we can already lower shuffles to INSERTQI/EXTRQI if its useful)
3 - Constant folding support
4 - Add zeroinitializer handling
Differential Revision: http://reviews.llvm.org/D13348
llvm-svn: 250609
|
| |
|
|
| |
llvm-svn: 250603
|
| |
|
|
| |
llvm-svn: 250600
|
| |
|
|
|
|
| |
Also do some cleanups comment improvements.
llvm-svn: 250598
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
This property was already used in the code path when no liveness
intervals are present. Unfortunately the code path that uses liveness
intervals tried to query a cached live interval for an allocatable
physreg, those are usually not computed so a conservative default was
used.
This doesn't affect any of the lit testcases. This is a foreclosure to
upcoming changes which should be NFC but without this patch this tidbit
wouldn't be NFC.
llvm-svn: 250596
|
| |
|
|
|
|
|
|
|
|
|
| |
This should not change behaviour because as far as I can see all code
reading the pressure changes has no effect if the PressureInc is 0.
Removing these entries however does avoid unnecessary computation, and
results in a more stable debug output. I want the stable debug output to
check that some upcoming changes are indeed NFC and identical even at
the debug output level.
llvm-svn: 250595
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
This is a temporary hack until we get around to remapping the vreg
numbers to local numbers. Dead vregs cause bad numbering and make
consumers sad.
We could also just look at debug info an use named locals instead, but
vregs have to work properly anyways so there!
Reviewers: binji, sunfish
Subscribers: jfb, llvm-commits, dschuff
Differential Revision: http://reviews.llvm.org/D13839
llvm-svn: 250594
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Summary: It has also slightly changed.
Reviewers: binji
Subscribers: jfb, dschuff, llvm-commits, sunfish
Differential Revision: http://reviews.llvm.org/D13837
llvm-svn: 250591
|