- Aug 29, 2010
-
-
Dan Gohman authored
all applicable addrecs before recursing on getMulExpr, instead of recursing on getMulExpr for each one. llvm-svn: 112433
-
Dan Gohman authored
operations. llvm-svn: 112432
-
Dan Gohman authored
llvm-svn: 112431
-
Dan Gohman authored
with the Add code. llvm-svn: 112430
-
Dan Gohman authored
llvm-svn: 112429
-
Dan Gohman authored
llvm-svn: 112428
-
Kalle Raiskila authored
The IDX was treated as byte index, not element index. llvm-svn: 112422
-
Bill Wendling authored
llvm-svn: 112421
-
Chris Lattner authored
preserves domfrontier. It does preserve AA though. llvm-svn: 112419
-
Chris Lattner authored
require DomFrontier. Dropping this doesn't actually save any runs of the pass though. llvm-svn: 112418
-
Chris Lattner authored
Among other things, this uses SSAUpdater instead of PromoteMemToReg. llvm-svn: 112417
-
Bob Wilson authored
IR add/sub operations with one or both operands sign- or zero-extended. Auto-upgrade the old intrinsics. llvm-svn: 112416
-
Chris Lattner authored
llvm-svn: 112412
-
Eli Friedman authored
llvm-svn: 112411
-
Chris Lattner authored
This leads to much simpler code. llvm-svn: 112410
-
Chris Lattner authored
llvm-svn: 112409
-
Chris Lattner authored
llvm-svn: 112408
-
Chris Lattner authored
getUniqueExitBlocks instead of getExitBlocks and a manual set to eliminate dupes. llvm-svn: 112405
-
Chris Lattner authored
llvm-svn: 112404
-
Chris Lattner authored
of the sets is volatile. We were dropping the volatile bit of the merged in set, leading (luckily) to assertions in cases like PR7535. I cannot produce a testcase that repros with opt, but this is obviously correct. llvm-svn: 112402
-
Chris Lattner authored
llvm-svn: 112401
-
Chris Lattner authored
llvm-svn: 112400
-
Bill Wendling authored
- Create T2I_bin_sw_irs to be like T2I_bin_w_irs, but that it sets the S bit. llvm-svn: 112399
-
Chris Lattner authored
llvm-svn: 112397
-
Bill Wendling authored
llvm-svn: 112395
-
Bill Wendling authored
llvm-svn: 112394
-
Bill Wendling authored
it sets the CPSR register. llvm-svn: 112393
-
- Aug 28, 2010
-
-
Chris Lattner authored
times. This patch causes llc and llvm-mc (which both default to verbose-asm) to print out comments after a few common shuffle instructions which indicates the shuffle mask, e.g.: insertps $113, %xmm3, %xmm0 ## xmm0 = zero,xmm0[1,2],xmm3[1] unpcklps %xmm1, %xmm0 ## xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1] pshufd $1, %xmm1, %xmm1 ## xmm1 = xmm1[1,0,0,0] This is carefully factored to keep the information extraction (of the shuffle mask) separate from the printing logic. I plan to move the extraction part out somewhere else at some point for other parts of the x86 backend that want to introspect on the behavior of shuffles. llvm-svn: 112387
-
Chris Lattner authored
insertp[sd] $0, which is a noop. Before: _f32: ## @f32 pshufd $1, %xmm1, %xmm2 pshufd $1, %xmm0, %xmm3 addss %xmm2, %xmm3 addss %xmm1, %xmm0 ## kill: XMM0<def> XMM0<kill> XMM0<def> insertps $0, %xmm0, %xmm0 insertps $16, %xmm3, %xmm0 ret after: _f32: ## @f32 movdqa %xmm0, %xmm2 addss %xmm1, %xmm2 pshufd $1, %xmm1, %xmm1 pshufd $1, %xmm0, %xmm3 addss %xmm1, %xmm3 movdqa %xmm2, %xmm0 insertps $16, %xmm3, %xmm0 ret The extra movs are due to a random (poor) scheduling decision. llvm-svn: 112379
-
Chris Lattner authored
when the top elements of a vector are undefined. This happens all the time for X86-64 ABI stuff because only the low 2 elements of a 4 element vector are defined. For example, on: _Complex float f32(_Complex float A, _Complex float B) { return A+B; } We used to produce (with SSE2, SSE4.1+ uses insertps): _f32: ## @f32 movdqa %xmm0, %xmm2 addss %xmm1, %xmm2 pshufd $16, %xmm2, %xmm2 pshufd $1, %xmm1, %xmm1 pshufd $1, %xmm0, %xmm0 addss %xmm1, %xmm0 pshufd $16, %xmm0, %xmm1 movdqa %xmm2, %xmm0 unpcklps %xmm1, %xmm0 ret We now produce: _f32: ## @f32 movdqa %xmm0, %xmm2 addss %xmm1, %xmm2 pshufd $1, %xmm1, %xmm1 pshufd $1, %xmm0, %xmm3 addss %xmm1, %xmm3 movaps %xmm2, %xmm0 unpcklps %xmm3, %xmm0 ret This implements rdar://8368414 llvm-svn: 112378
-
Chris Lattner authored
a new EltStride variable instead of reusing NumElems variable for a non-obvious purpose. No functionality change. llvm-svn: 112377
-
Michael J. Spencer authored
According to the Microsoft documentation here: http://msdn.microsoft.com/en-us/library/ms724284%28VS.85%29.aspx this cast used in lib/System/Win32/Path.inc: __int64 ft = *reinterpret_cast<__int64*>(&fi.ftLastWriteTime); should not be done. The documentation says: "Do not cast a pointer to a FILETIME structure to either a ULARGE_INTEGER* or __int64* value because it can cause alignment faults on 64-bit Windows." llvm-svn: 112376
-
Chris Lattner authored
and hasn't kept up with ToT. Approved by Anton. llvm-svn: 112375
-
Bob Wilson authored
llvm-svn: 112357
-
Chris Lattner authored
being actively maintained, improved, or extended. llvm-svn: 112356
-
Chris Lattner authored
I'm aware of, aren't maintained, and LVI will be replacing their value. nlewycky approved this on irc. llvm-svn: 112355
-
Chris Lattner authored
llvm-svn: 112354
-
Chris Lattner authored
llvm-svn: 112351
-
Chris Lattner authored
llvm-svn: 112350
-
Chris Lattner authored
llvm-svn: 112349
-