| Commit message (Collapse) | Author | Age | Files | Lines | 
| | 
| 
| 
| 
| 
|  | 
avoid a heap allocation when this is the case.
llvm-svn: 192602
 | 
| | 
| 
| 
| 
| 
| 
| 
|  | 
Currently MSan checks that arguments of *cvt* intrinsics are fully initialized.
That's too much to ask: some of them only operate on lower half, or even
quarter, of the input register.
llvm-svn: 192599
 | 
| | 
| 
| 
|  | 
llvm-svn: 192596
 | 
| | 
| 
| 
|  | 
llvm-svn: 192591
 | 
| | 
| 
| 
| 
| 
| 
|  | 
Some previous implicit defaults have changed, for example FP and NEON
are now on by default.
llvm-svn: 192590
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
List of instructions:
bclri.{b,h,w,d}
binsli.{b,h,w,d}
binsri.{b,h,w,d}
bnegi.{b,h,w,d}
bseti.{b,h,w,d}
sat_s.{b,h,w,d}
sat_u.{b,h,w,d}
slli.{b,h,w,d}
srai.{b,h,w,d}
srari.{b,h,w,d}
srli.{b,h,w,d}
srlri.{b,h,w,d}
llvm-svn: 192589
 | 
| | 
| 
| 
| 
| 
| 
|  | 
List of instructions:
and.v, bmnz.v, bmz.v, bsel.v, nor.v, or.v, xor.v.
llvm-svn: 192588
 | 
| | 
| 
| 
|  | 
llvm-svn: 192587
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
List of instructions:
copy_s.{b,h,w}
copy_u.{b,h,w}
sldi.{b,h,w,d}
splati.{b,h,w,d}
llvm-svn: 192586
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
|  | 
INSERT is the first type of MSA instruction that requires a change to the way
MSA registers are parsed. This happens because MSA registers may be suffixed by
an index in the form of an immediate or a general purpose register. The changes
to parseMSARegs reflect that requirement.
llvm-svn: 192582
 | 
| | 
| 
| 
|  | 
llvm-svn: 192575
 | 
| | 
| 
| 
| 
| 
| 
| 
|  | 
The alignment of allocated space was wrong, see Bugzila 17345.
Done by Zvi Rackover <zvi.rackover@intel.com>.
llvm-svn: 192573
 | 
| | 
| 
| 
| 
| 
|  | 
instructions.
llvm-svn: 192568
 | 
| | 
| 
| 
| 
| 
|  | 
instructions to parse either GR32 or GR64 without resorting to duplicating instructions.
llvm-svn: 192567
 | 
| | 
| 
| 
| 
| 
|  | 
is a shorter encoding that was part of SSE2, but a memory form was added in SSE4.1. This is the register form of that encoding.
llvm-svn: 192566
 | 
| | 
| 
| 
| 
| 
|  | 
disassembler tables. Add PINSRWrr64i to complement the AVX version.
llvm-svn: 192565
 | 
| | 
| 
| 
|  | 
llvm-svn: 192564
 | 
| | 
| 
| 
| 
| 
|  | 
produce a 1-bit result so we can just use SUBREG_TO_REG to extend the 32-bit versions.
llvm-svn: 192562
 | 
| | 
| 
| 
| 
| 
|  | 
We don't delay load it so it shouldn't be going anywhere.
llvm-svn: 192561
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
This can happen when processing command line arguments, which
are often stored as std::string's and later turned into
StringRef's via std::string::data().  Unfortunately this
is not guaranteed to return a null-terminated string
until C++11, causing breakage on platforms that don't do this.
llvm-svn: 192558
 | 
| | 
| 
| 
|  | 
llvm-svn: 192557
 | 
| | 
| 
| 
|  | 
llvm-svn: 192556
 | 
| | 
| 
| 
|  | 
llvm-svn: 192555
 | 
| | 
| 
| 
|  | 
llvm-svn: 192554
 | 
| | 
| 
| 
|  | 
llvm-svn: 192553
 | 
| | 
| 
| 
| 
| 
| 
|  | 
It makes apparently no change it to set this bit or not but the
docs recommand to left it cleared.
llvm-svn: 192552
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
We were using an anti-pattern of:
 - LoadLibrary
 - GetProcAddress
 - FreeLibrary
This is problematic because of several reasons:
 - We are holding on to pointers into a library we just unloaded.
 - Calling LoadLibrary results in an increase in the reference count of
   the library in question and any libraries that it depends on and
   so-on and so-forth.  This is none too quick.
Instead, use GetModuleHandleEx with GET_MODULE_HANDLE_EX_FLAG_PIN.  This
is done because because we didn't bring the reference for the library
into existence and therefor shouldn't count on it being around later.
llvm-svn: 192550
 | 
| | 
| 
| 
| 
| 
|  | 
(This is triggered by current lit tests)
llvm-svn: 192549
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
Before this patch we relied on the order of phi nodes when we looked for phi
nodes of the same type. This could prevent vectorization of cases where there
was a phi node of a second type in between phi nodes of some type.
This is important for vectorization of an internal graphics kernel. On the test
suite + external on x86_64 (and on a run on armv7s) it showed no impact on
either performance or compile time.
radar://15024459
llvm-svn: 192537
 | 
| | 
| 
| 
| 
|  | 
Contributed-by:  Peter Zotov  <whitequark@whitequark.org>
llvm-svn: 192536
 | 
| | 
| 
| 
| 
| 
|  | 
CodeGenOnly.
llvm-svn: 192525
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
|  | 
enabled.
Patch by: Jay Cornwall
Reviewed-by: Tom Stellard <thomas.stellard@amd.com>
llvm-svn: 192523
 | 
| | 
| 
| 
| 
| 
|  | 
disassembler.
llvm-svn: 192522
 | 
| | 
| 
| 
| 
| 
|  | 
they can be better handled and optimized in the Mips16 constant island code.
llvm-svn: 192520
 | 
| | 
| 
| 
|  | 
llvm-svn: 192519
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
|  | 
The form must be a reference form in addDIEEntry. Which reference form to
use will be decided by the callee.
No functionality change.
llvm-svn: 192517
 | 
| | 
| 
| 
|  | 
llvm-svn: 192504
 | 
| | 
| 
| 
|  | 
llvm-svn: 192499
 | 
| | 
| 
| 
|  | 
llvm-svn: 192492
 | 
| | 
| 
| 
|  | 
llvm-svn: 192487
 | 
| | 
| 
| 
| 
| 
|  | 
This doesn't change the meaning of the output, but makes look right. PR17539.
llvm-svn: 192483
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
When if converting something like:
true:
   ... = R0<kill>
false:
   ... = R0<kill>
then the instructions of the true block must not have a <kill> flag
anymore, as the instruction of the false block follow and do still read
the R0 value.
Specifically this patch determines the set of register live-in in the
false block (possibly after simulating the liveness changes of the
duplicated instructions). Each of these live-in registers mustn't be
killed.
llvm-svn: 192482
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
sse4.2 support.
This should fix the buildbots.
Original commit message:
[DAGCombiner] Slice a big load in two loads when the element are next to each
other in memory and the target has paired load and performs post-isel loads
combining.
E.g., this optimization will transform something like this:
a = load i64* addr
b = trunc i64 a to i32
c = lshr i64 a, 32
d = trunc i64 c to i32
into:
b = load i32* addr1
d = load i32* addr2
Where addr1 = addr2 +/- sizeof(i32), if the target supports paired load and
performs post-isel loads combining.
One should overload TargetLowering::hasPairedLoad to provide this information.
The default is false.
<rdar://problem/14477220>
llvm-svn: 192476
 | 
| | 
| 
| 
| 
| 
|  | 
on ubuntu.
llvm-svn: 192474
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
other in memory and the target has paired load and performs post-isel loads
combining.
E.g., this optimization will transform something like this:
 a = load i64* addr
 b = trunc i64 a to i32
 c = lshr i64 a, 32
 d = trunc i64 c to i32
into:
 b = load i32* addr1
 d = load i32* addr2
Where addr1 = addr2 +/- sizeof(i32), if the target supports paired load and
performs post-isel loads combining.
One should overload TargetLowering::hasPairedLoad to provide this information.
The default is false.
<rdar://problem/14477220>
llvm-svn: 192471
 | 
| | 
| 
| 
|  | 
llvm-svn: 192460
 | 
| | 
| 
| 
|  | 
llvm-svn: 192458
 | 
| | 
| 
| 
|  | 
llvm-svn: 192455
 | 
| | 
| 
| 
|  | 
llvm-svn: 192451
 | 
| | 
| 
| 
|  | 
llvm-svn: 192450
 |