- Jul 18, 2012
-
-
Galina Kistanova authored
llvm-svn: 160419
-
Nuno Lopes authored
llvm-svn: 160411
-
Joel Jones authored
intrinsics. The second instruction(s) to be handled are the vector versions of count set bits (ctpop). The changes here are to clang so that it generates a target independent vector ctpop when it sees an ARM dependent vector bits set count. The changes in llvm are to match the target independent vector ctpop and in VMCore/AutoUpgrade.cpp to update any existing bc files containing ARM dependent vector pop counts with target-independent ctpops. There are also changes to an existing test case in llvm for ARM vector count instructions and to a test for the bitcode upgrade. <rdar://problem/11892519> There is deliberately no test for the change to clang, as so far as I know, no consensus has been reached regarding how to test neon instructions in clang; q.v. <rdar://problem/8762292> llvm-svn: 160410
-
Nuno Lopes authored
Update the language reference to reflect that. llvm-svn: 160408
-
Akira Hatanaka authored
Patch by Reed Kotler. llvm-svn: 160403
-
- Jul 17, 2012
-
-
Evan Cheng authored
llvm-svn: 160389
-
Evan Cheng authored
llvm-svn: 160387
-
Jim Grosbach authored
A standalone pattern defined in a multiclass expansion should handle null_frag references just like patterns on instructions. Follow-up to r160333. llvm-svn: 160384
-
Jakob Stoklund Olesen authored
These functions have obviously never been used before. They should be identical to the idf_ext_iterator counterparts. llvm-svn: 160381
-
Jakob Stoklund Olesen authored
llvm-svn: 160380
-
Benjamin Kramer authored
llvm-svn: 160372
-
Nuno Lopes authored
llvm-svn: 160368
-
NAKAMURA Takumi authored
It began choking since Chandler's r159547, possibly due to improper expression on grep from TclParser to ShParser. llvm-svn: 160367
-
Jakob Stoklund Olesen authored
Make it possible to prune individual graph edges from a post-order traversal by specializing the po_iterator_storage template. Previously, it was only possible to prune full graph nodes. Edge pruning makes it possible to remove loop back-edges, for example. Also replace the existing DFSetTraits customization hook with a po_iterator_storage method for observing the post-order. DFSetTraits was only used by LoopIterator.h which now provides a po_iterator_storage specialization. Thanks to Sean and Chandler for reviewing. llvm-svn: 160366
-
Alexey Samsonov authored
To fetch a subprogram name we should not only inspect the DIE for this subprogram, but optionally inspect its specification, or its abstract origin (even if there is no inlining), or even specification of an abstract origin. Reviewed by Benjamin Kramer. llvm-svn: 160365
-
Kostya Serebryany authored
[asan] more code to merge crash callbacks. Doesn't fully work yet, but allows to hold performance experiments llvm-svn: 160361
-
Nadav Rotem authored
When truncating a result of a vector that is split we need to use the result of the split vector, and not re-split the dead node. llvm-svn: 160357
-
Evan Cheng authored
llvm-svn: 160354
-
Simon Atanasyan authored
llvm-svn: 160352
-
Evan Cheng authored
llvm-svn: 160350
-
Evan Cheng authored
large immediates. Add dag combine logic to recover in case the large immediates doesn't fit in cmp immediate operand field. int foo(unsigned long l) { return (l>> 47) == 1; } we produce %shr.mask = and i64 %l, -140737488355328 %cmp = icmp eq i64 %shr.mask, 140737488355328 %conv = zext i1 %cmp to i32 ret i32 %conv which codegens to movq $0xffff800000000000,%rax andq %rdi,%rax movq $0x0000800000000000,%rcx cmpq %rcx,%rax sete %al movzbl %al,%eax ret TargetLowering::SimplifySetCC would transform (X & -256) == 256 -> (X >> 8) == 1 if the immediate fails the isLegalICmpImmediate() test. For x86, that's immediates which are not a signed 32-bit immediate. Based on a patch by Eli Friedman. PR10328 rdar://9758774 llvm-svn: 160346
-
Andrew Trick authored
Speculatively fix crashes by code inspection. Can't reproduce them yet. llvm-svn: 160344
-
Andrew Trick authored
Some units tests crashed on a different platform. llvm-svn: 160341
-
Andrew Trick authored
This places limits on CollectSubexprs to constrains the number of reassociation possibilities. It limits the recursion depth and skips over chains of nested recurrences outside the current loop. Fixes PR13361. Although underlying SCEV behavior is still potentially bad. llvm-svn: 160340
-
Jim Grosbach authored
Define a 'null_frag' SDPatternOperator node, which if referenced in an instruction Pattern, results in the pattern being collapsed to be as-if '[]' had been specified instead. This allows supporting a multiclass definition where some instaniations have ISel patterns associated and others do not. For example, multiclass myMulti<RegisterClass rc, SDPatternOperator OpNode = null_frag> { def _x : myI<(outs rc:), (ins rc:), []>; def _r : myI<(outs rc:), (ins rc:), [(set rc:, (OpNode rc:))]>; } defm foo : myMulti<GRa, not>; defm bar : myMulti<GRb>; llvm-svn: 160333
-
Akira Hatanaka authored
llvm-svn: 160329
-
Owen Anderson authored
Defer checking for registers in the MC AsmMatcher until the after user-defined match classes have been checked. This allows the creation of MatchClass's that are supersets of a register class. llvm-svn: 160327
-
Nuno Lopes authored
llvm-svn: 160325
-
- Jul 16, 2012
-
-
Nuno Lopes authored
llvm-svn: 160317
-
Evan Cheng authored
uint32_t hi(uint64_t res) { uint_32t hi = res >> 32; return !hi; } llvm IR looks like this: define i32 @hi(i64 %res) nounwind uwtable ssp { entry: %lnot = icmp ult i64 %res, 4294967296 %lnot.ext = zext i1 %lnot to i32 ret i32 %lnot.ext } The optimizer has optimize away the right shift and truncate but the resulting constant is too large to fit in the 32-bit immediate field. The resulting x86 code is worse as a result: movabsq $4294967296, %rax ## imm = 0x100000000 cmpq %rax, %rdi sbbl %eax, %eax andl $1, %eax This patch teaches the x86 lowering code to handle ult against a large immediate with trailing zeros. It will issue a right shift and a truncate followed by a comparison against a shifted immediate. shrq $32, %rdi testl %edi, %edi sete %al movzbl %al, %eax It also handles a ugt comparison against a large immediate with trailing bits set. i.e. X > 0x0ffffffff -> (X >> 32) >= 1 rdar://11866926 llvm-svn: 160312
-
Nadav Rotem authored
llvm-svn: 160311
-
Simon Atanasyan authored
The first variant accepts immediate number as the second argument. The second variant accepts register operand as the second argument. llvm-svn: 160307
-
Nadav Rotem authored
Make ComputeDemandedBits return a deterministic result when computing an AssertZext value. In the added testcase the constant 55 was behind an AssertZext of type i1, and ComputeDemandedBits reported that some of the bits were both known to be one and known to be zero. Together with Michael Kuperstein <michael.m.kuperstein@intel.com> llvm-svn: 160305
-
Tom Stellard authored
This reverts commit 4ea70107c5e51230e9e60f0bf58a0f74aa4885ea. llvm-svn: 160303
-
Tom Stellard authored
This reverts commit 600f7a90f3eef4c5108179b43e27cfd9e5de7cdc. llvm-svn: 160302
-
Tom Stellard authored
This reverts commit e3013202259ed1e006c21817c63cf25d75982721. llvm-svn: 160301
-
Tom Stellard authored
This reverts commit 11d3457afcda7848448dd7f11b2ede6552ffb9ea. llvm-svn: 160300
-
Tom Stellard authored
Revert "Target/AMDGPU/R600KernelParameters.cpp: Fix two includes, <llvm/IRBuilder.h> and <llvm/TypeBuilder.h>" This reverts commit 0258a6bdd30802f5cc0e8e57c8e768fde2aef590. llvm-svn: 160299
-
Tom Stellard authored
This reverts commit ebc934ba32ee71abbb8f0f2eb6a0fbaa613ba0d2. llvm-svn: 160298
-
Tom Stellard authored
This reverts commit 29f28bc14ad5a907f5dc849f004fafeec0aab33a. llvm-svn: 160297
-