| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
| |
llvm-svn: 233761
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Even at -O0, we fall back to SDAG when we hit intrinsics, and if the intrinsic
is a memset/memcpy/etc. we might normally use vector types. At -O0, this is
probably not a good idea (because, if there is a bug in the lowering code,
there would be no good way to turn it off). At -O0, only use scalar preferred
types.
Related to PR22754.
llvm-svn: 233755
|
| |
|
|
|
|
|
|
|
|
| |
extended loads.
Implement the related target lowering hook so that the optimization has a better
estimation of the cost of an extension.
rdar://problem/19267165
llvm-svn: 233753
|
| |
|
|
|
|
| |
No functional changes.
llvm-svn: 233740
|
| |
|
|
|
|
|
|
|
|
| |
Change lowerCTPOP to:
- Gracefully handle a known-zero input value
- Simplify computation of significant bit size
Thanks to Jay Foad for the review!
llvm-svn: 233736
|
| |
|
|
|
|
|
|
|
| |
instructions
This is a follow-on to r233704 and another partial fix for PR22685:
https://llvm.org/bugs/show_bug.cgi?id=22685
llvm-svn: 233724
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
vector sub-types
I suggested this change in D7898 (http://llvm.org/viewvc/llvm-project?view=revision&revision=231354)
It improves the v4i64 case although not optimally. This AVX codegen:
vmovq {{.*#+}} xmm0 = mem[0],zero
vxorpd %ymm1, %ymm1, %ymm1
vblendpd {{.*#+}} ymm0 = ymm0[0],ymm1[1,2,3]
Becomes:
vmovsd {{.*#+}} xmm0 = mem[0],zero
Unfortunately, this doesn't completely solve PR22685. There are still at least 2 problems under here:
We're not handling v32i8 / v16i16.
We're not getting the FP / int domains right for instruction selection.
But since this patch alone appears to do no harm, reduces code duplication, and helps v4i64,
I'm submitting this patch ahead of fixing the above.
Differential Revision: http://reviews.llvm.org/D8341
llvm-svn: 233704
|
| |
|
|
|
|
| |
Should fix build failures with cmake builds
llvm-svn: 233700
|
| |
|
|
|
|
| |
This time with all files included.
llvm-svn: 233696
|
| |
|
|
| |
llvm-svn: 233695
|
| |
|
|
| |
llvm-svn: 233694
|
| |
|
|
|
|
|
|
|
|
| |
Reviewers: t.p.northover, jmolloy
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D8502
llvm-svn: 233693
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
So far, we do not yet support any instruction specific to zEC12.
Most of the facilities added with zEC12 are indeed not very useful
to compiler code generation, but there is one exception: the
miscellaneous-extensions facility provides the RISBGN instruction,
which is a variant of RISBG that does not set the condition code.
Add support for this facility, MC support for RISBGN, and CodeGen
support for prefering RISBGN over RISBG on zEC12, unless we can
actually make use of the condition code set by RISBG.
llvm-svn: 233690
|
| |
|
|
|
|
|
|
|
|
| |
We already exploit a number of instructions specific to z196,
but not yet POPCNT. Add support for the population-count
facility, MC support for the POPCNT instruction, CodeGen
support for using POPCNT, and implement the getPopcntSupport
TargetTransformInfo hook.
llvm-svn: 233689
|
| |
|
|
|
|
|
|
|
|
|
|
| |
This hooks up the TargetTransformInfo machinery for SystemZ,
and provides an implementation of getIntImmCost.
In addition, the patch adds the isLegalICmpImmediate and
isLegalAddImmediate TargetLowering overrides, and updates
a couple of test cases where we now generate slightly
better code.
llvm-svn: 233688
|
| |
|
|
|
|
| |
Fixes pr22995.
llvm-svn: 233686
|
| |
|
|
|
|
| |
As was done for X86 in r206094.
llvm-svn: 233684
|
| |
|
|
|
|
|
|
| |
We used to miss non-Q YMM integer vectors, and, non-Q/D XMM integer
vectors.
While there, change the v4i32 patterns to prefer MOVNTDQ.
llvm-svn: 233668
|
| |
|
|
|
|
| |
loading immediate into register is cheap, so take advantage of remat.
llvm-svn: 233666
|
| |
|
|
|
|
|
| |
We used to match the register variant before the immediate when the register
argument could be implicitly zero-extended.
llvm-svn: 233653
|
| |
|
|
|
|
|
| |
an MCInstPrinter. Update all callers and use where we wanted a Triple
previously.
llvm-svn: 233648
|
| |
|
|
|
|
|
|
|
|
|
|
| |
When we expand the RET_ReallyLR pseudo instruction we also need to transfer the
implicit operands.
The return register is an implicit operand and without it the liveness
calculation generates an incorrect live-out set for the patchpoint.
This fixes rdar://problem/19068476.
llvm-svn: 233635
|
| |
|
|
|
|
|
| |
BPF has cpu_to_be and cpu_to_le instructions.
For now assume little endian and generate cpu_to_be for ISD::BSWAP.
llvm-svn: 233620
|
| |
|
|
|
|
|
| |
fix build broken due to r233599.
Would still need to switch to MDLocation long term.
llvm-svn: 233619
|
| |
|
|
| |
llvm-svn: 233614
|
| |
|
|
| |
llvm-svn: 233612
|
| |
|
|
| |
llvm-svn: 233611
|
| |
|
|
| |
llvm-svn: 233609
|
| |
|
|
| |
llvm-svn: 233608
|
| |
|
|
| |
llvm-svn: 233607
|
| |
|
|
|
|
|
|
|
|
|
| |
This fixes the visibility of symbols in certain edge cases involving aliases
with multiple levels of indirection.
Fixes PR19582.
Differential Revision: http://reviews.llvm.org/D8586
llvm-svn: 233595
|
| |
|
|
|
|
|
|
|
|
| |
When a new SM architecture is introduced, it is only supported by the
current PTX version and later. Make sure we are using at least the
minimum PTX version for the target architecture.
This also removes support for PTX ISA < 3.2.
llvm-svn: 233583
|
| |
|
|
|
|
| |
Update lib/CodeGen (and lib/Target) to use the new `DebugLoc` API.
llvm-svn: 233582
|
| |
|
|
| |
llvm-svn: 233575
|
| |
|
|
|
|
| |
Following r233392, http://llvm.org/viewvc/llvm-project?rev=233392&view=rev.
llvm-svn: 233555
|
| |
|
|
| |
llvm-svn: 233554
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
Compiling the following function with -O0 would crash, since LLVM would
hit an assertion in getTestUnderMaskCond:
int test(unsigned long x)
{
return x >= 0 && x <= 15;
}
Fixed by detecting the case in the caller of getTestUnderMaskCond.
llvm-svn: 233541
|
| |
|
|
|
|
| |
As was done for X86 in r206094.
llvm-svn: 233540
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Summary:
The 'R' constraint is actually supposed to be much more complicated than
this and is defined in terms of whether it will cause macro expansion in
the assembler. 'R' is getting less useful due to architecture changes and
ought to be replaced by other constraints. We therefore implement 9-bit
offsets which will work for all subtargets and all instructions.
Reviewers: vkalintiris
Reviewed By: vkalintiris
Subscribers: llvm-commits
Differential Revision: http://reviews.llvm.org/D8440
llvm-svn: 233537
|
| |
|
|
|
|
| |
see comments http://reviews.llvm.org/D6835
llvm-svn: 233528
|
| |
|
|
|
|
| |
by Asaf Badouh (asaf.badouh@intel.com)
llvm-svn: 233525
|
| |
|
|
|
|
| |
which doesn't have AES. Having AES and not PCLMUL makes 'corei7' halfway between Nehalem and Westmere.
llvm-svn: 233517
|
| |
|
|
|
|
| |
By Asaf Badouh (asaf.badouh@intel.com)
llvm-svn: 233489
|
| |
|
|
|
|
|
|
|
| |
All the ports have been fixed to read the feature bits from the subtarget passed
to the print methods. Also, delete the call to setAvailableFeatures in the
constructor of NVPTX's instprinter as the instprinter wasn't using the feature
bits anywhere.
llvm-svn: 233486
|
| |
|
|
|
|
| |
instead of from MCInstPrinter::AvailableFeatures.
llvm-svn: 233485
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
instructions
The asm syntax for the 32-bit rotate-and-mask instructions can take a 32-bit
bitmask instead of an (mb, me) pair. This syntax is not specified in the Power
ISA manual, but is accepted by GNU as, and is documented in IBM's Assembler
Language Reference. The GNU Multiple Precision Arithmetic Library (gmp)
contains assembly that uses this syntax.
To implement this, I moved the isRunOfOnes utility function from
PPCISelDAGToDAG.cpp to PPCMCTargetDesc.h.
llvm-svn: 233483
|
| |
|
|
| |
llvm-svn: 233474
|
| |
|
|
| |
llvm-svn: 233473
|
| |
|
|
|
|
|
|
|
|
|
| |
instead of the one passed to the constructor.
Unfortunately, I don't have a test case for this change. In order to test my
change, I will have to run the code after line 90 in printSparcAliasInstr. I
couldn't make that happen because printAliasInstr would always handle the
printing of fcmp instructions that the code after line 90 is supposed to handle.
llvm-svn: 233471
|
| |
|
|
|
|
| |
subtarget.
llvm-svn: 233451
|