| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
| |
ISD::BITREVERSE matches "rbit" completely, so remove ARMISD::RBIT and mark ISD::BITREVERSE as legal, adding a test for lowering.
llvm-svn: 253047
|
|
|
|
|
|
|
|
| |
SHRAV_R.W, SHRA_R.W, SHRL.PH, SHRL.QB, SHRLV.PH and SHRLV.QB instructions
Differential Revision: http://reviews.llvm.org/D14010
llvm-svn: 253041
|
|
|
|
|
|
|
|
|
| |
Use clang-tidy to simplify conditonal return statements.
Author: LegalizeAdulthood
Differential Revision: http://reviews.llvm.org/D9986
llvm-svn: 253038
|
|
|
|
| |
llvm-svn: 253019
|
|
|
|
| |
llvm-svn: 252997
|
|
|
|
| |
llvm-svn: 252989
|
|
|
|
|
|
|
|
| |
This arranges the types in the LLVM instruction names in the same order that
they appear in the WebAssembly opcode names, and eliminates
double-underscores.
llvm-svn: 252988
|
|
|
|
|
|
|
| |
With MC-based instruction printing, we no longer need instruction names to
mangle in hints about how they should be printed.
llvm-svn: 252987
|
|
|
|
| |
llvm-svn: 252985
|
|
|
|
| |
llvm-svn: 252984
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
The value that the CoreCLR personality passes to a funclet for the
establisher frame may be the root function's frame or may be the parent
funclet's (mostly empty) frame in the case of nested funclets. Each
funclet stores a pointer to the root frame in its own (mostly empty)
frame, as does the root function itself. All frames allocate this slot at
the same offset, measured from the post-prolog stack pointer, so that the
same sequence can accept any ancestor as an establisher frame parameter
value, and so that a single offset can be reported to the GC, which also
looks at this slot.
This change allocate the slot when processing function entry, and records
its frame index on the WinEHFuncInfo object, then inserts the code to
set/copy it during prolog emission.
Reviewers: majnemer, AndyAyers, pgavlin, rnk
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D14614
llvm-svn: 252983
|
|
|
|
| |
llvm-svn: 252975
|
|
|
|
|
|
|
|
|
|
| |
It made it possible to apply the memory folding optimization for the 2nd
operand of FMA*_Int instructions.
Reviewer: Quentin Colombet
Differential Revision: http://reviews.llvm.org/D14550
llvm-svn: 252973
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This reverts commit r252565.
This also includes the revert of the commit mentioned below in order to
avoid breaking tests in AMDGPU:
Revert "AMDGPU: Set isAllocatable = 0 on VS_32/VS_64"
This reverts commit r252674.
llvm-svn: 252956
|
|
|
|
| |
llvm-svn: 252940
|
|
|
|
|
|
| |
Found by leaksanitizer.
llvm-svn: 252931
|
|
|
|
| |
llvm-svn: 252925
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Switch to MC for instruction printing.
This encompasses several changes which are all interconnected:
- Use the MC framework for printing almost all instructions.
- AsmStrings are now live.
- This introduces an indirection between LLVM vregs and WebAssembly registers,
and a new pass, WebAssemblyRegNumbering, for computing a basic the mapping.
This addresses some basic issues with argument registers and unused registers.
- The way ARGUMENT instructions are handled no longer generates redundant
get_local+set_local for every argument.
This also changes the assembly syntax somewhat; most notably, MC's printing
does not use sigils on label names, so those are no longer present, and
push/pop now have a sigil to keep them unambiguous.
The usage of set_local/get_local/$push/$pop will continue to evolve
significantly. This patch is just one step of a larger change.
llvm-svn: 252910
|
|
|
|
|
|
|
|
|
|
|
| |
{fadd,fdiv,fmul,fsub,fsubr,fdivr} to {faddp,fdivp,fmulp,fsubp,fsubrp,fdivrp}
LLVM Missing the following instructions: fadd\fdiv\fmul\fsub\fsubr\fdivr.
GAS and MS supporting this instruction and lowering them in to a faddp\fdivp\fmulp\fsubp\fsubrp\fdivrp instructions.
Differential Revision: http://reviews.llvm.org/D14217
llvm-svn: 252908
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
This patch changes ARMV5, ARMV5E, ARMV6SM, ARMV6HL, ARMV7, ARMV7L,
ARMV7HL, ARMV7EM to be treated as aliases for the corresponding
standard architectures, instead of as actual architectures.
Reviewers: rengolin
Subscribers: aemerson, llvm-commits, rengolin
Differential Revision: http://reviews.llvm.org/D14577
llvm-svn: 252903
|
|
|
|
|
|
|
|
| |
It broke the CMake build:
"Cannot find source file: WebAssemblyRegNumbering.cpp"
llvm-svn: 252897
|
|
|
|
|
|
|
|
|
| |
realigning the stack.""
r252219 reversed the direction of subprogram -> function edge. Fixed the
IR to account for this.
llvm-svn: 252895
|
|
|
|
|
|
|
|
| |
I completely misunderstood what ARMISD::CMPZ means. It's not "compare equal to zero", it's "compare, only setting the zero/Z flag". It can either be equal-to-zero or not-equal-to-zero, and we weren't checking what sense it was.
If it's equal-to-zero, we can swap the operands around and pretend like it is not-equal-to-zero, which is both a bug fix and lets us handle more cases.
llvm-svn: 252891
|
|
|
|
|
|
| |
This reverts commit r252825, as it broke ASAN on ARM. Investigating...
llvm-svn: 252889
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
R_MIPS_32.
Summary:
Support for R_MIPS_NONE allows us to parse MIPS16's usage of .reloc.
R_MIPS_32 was included to be able to better test the directive.
Targets can add their relocations by overriding MCAsmBackend::getFixupKind().
Subscribers: grosbach, rafael, majnemer, dsanders, llvm-commits
Differential Revision: http://reviews.llvm.org/D13659
llvm-svn: 252888
|
|
|
|
|
|
| |
Differential Revision: http://reviews.llvm.org/D11406
llvm-svn: 252885
|
|
|
|
|
|
|
|
|
| |
realigning the stack."
This reverts commit r252882. LLParser complains for invalid field 'function'
in DISubprogram.
llvm-svn: 252884
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
the stack.
Summary:
This patch overrides TargetFrameLowering::getFrameIndexReference() in order to
specify the correct register when the function needs dynamic stack realignment.
The values returned from this function are used in order to create DW_AT_locations
for DWARF info. These locations would use the wrong registers as it's been
reported in PR25028.
Reviewers: dsanders
Subscribers: dean, llvm-commits
Differential Revision: http://reviews.llvm.org/D13511
llvm-svn: 252882
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This adds part of the target info code, and adds modifications to
the build scripts so that AVR is recognized a supported, experimental
backend.
It does not include any AVR-specific code, just the bare sources required
for a backend to exist.
From D14039.
llvm-svn: 252865
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This encompasses several changes which are all interconnected:
- Use the MC framework for printing almost all instructions.
- AsmStrings are now live.
- This introduces an indirection between LLVM vregs and WebAssembly registers,
and a new pass, WebAssemblyRegNumbering, for computing a basic the mapping.
This addresses some basic issues with argument registers and unused registers.
- The way ARGUMENT instructions are handled no longer generates redundant
get_local+set_local for every argument.
This also changes the assembly syntax somewhat; most notably, MC's printing
use sigils on label names, so those are no longer present, and push/pop now
have a sigil to keep them unambiguous.
The usage of set_local/get_local/$push/$pop will continue to evolve
significantly. This patch is just one step of a larger change.
llvm-svn: 252858
|
|
|
|
|
|
|
|
|
| |
Calls involved in thread-local variable lookup save more registers
than normal calls.
rdar://problem/23073171
llvm-svn: 252837
|
|
|
|
|
|
|
|
| |
Differential Revision: http://reviews.llvm.org/D14357
rdar://problem/21942589
llvm-svn: 252825
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary: Other personalities don't use this special frame slot.
Reviewers: majnemer, andrew.w.kaylor, rnk
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D14580
llvm-svn: 252778
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
MIPS32 has instructions for efficient count-leading/trailing-zeros, so this should be
considered a cheap operation (and therefore fair game for speculation) for any MIPS32
implementation.
The net result of allowing this speculation for the regression tests in this patch is
that we get this code:
ctlz:
jr $ra
clz $2, $4
cttz:
addiu $1, $4, -1
not $2, $4
and $1, $2, $1
clz $1, $1
addiu $2, $zero, 32
jr $ra
subu $2, $2, $1
Instead of:
ctlz:
beqz $4, $BB0_2
addiu $2, $zero, 32
clz $2, $4
$BB0_2:
jr $ra
nop
cttz:
beqz $4, $BB1_2
addiu $2, $zero, 32
addiu $1, $4, -1
not $2, $4
and $1, $2, $1
clz $1, $1
addiu $2, $zero, 32
subu $2, $2, $1
$BB1_2:
jr $ra
nop
See D14469 for the larger motivation.
Differential Revision: http://reviews.llvm.org/D14500
llvm-svn: 252755
|
|
|
|
|
|
|
|
| |
I missed the side-effects of ParseBFI in my previous attempt (r252748).
Thanks dblaikie for the suggestion of adding a void use of the unused
variable instead.
llvm-svn: 252751
|
|
|
|
| |
llvm-svn: 252748
|
|
|
|
|
|
|
|
|
| |
instruction.
Differential Revision: http://reviews.llvm.org/D13316
Fixes PR25003
llvm-svn: 252743
|
|
|
|
|
|
| |
If we have a chain of BFIs, we may be able to combine several together into one merged BFI. We can do this if the "from" bits from one BFI OR'd with the "from" bits from the other BFI form a contiguous range, and the same with the "to" bits.
llvm-svn: 252740
|
|
|
|
|
|
| |
expression"; NFC.
llvm-svn: 252728
|
|
|
|
|
|
|
|
|
| |
If possible and profitable, replace lea %reg, 1(%reg) and lea %reg, -1(%reg) with inc %reg and dec %reg respectively.
Patch by: anton.nadolsky@intel.com
Differential Revision: http://reviews.llvm.org/D14059
llvm-svn: 252722
|
|
|
|
|
|
| |
introduced with SSE or SSE2.
llvm-svn: 252709
|
|
|
|
| |
llvm-svn: 252708
|
|
|
|
| |
llvm-svn: 252687
|
|
|
|
|
|
|
| |
Follow-up to r235963: this matches other assemblers and is less
unexpected (e.g. PR23227).
llvm-svn: 252681
|
|
|
|
| |
llvm-svn: 252677
|
|
|
|
| |
llvm-svn: 252675
|
|
|
|
| |
llvm-svn: 252674
|
|
|
|
|
|
|
| |
Inserting it before the target block could be bad, we might already have
a fallthrough edge to it.
llvm-svn: 252670
|
|
|
|
| |
llvm-svn: 252656
|
|
|
|
| |
llvm-svn: 252654
|