- Jan 14, 2011
-
-
Evan Cheng authored
- Fixed :upper16: fix up routine. It should be shifting down the top 16 bits first. - Added support for Thumb2 :lower16: and :upper16: fix up. - Added :upper16: and :lower16: relocation support to mach-o object writer. llvm-svn: 123424
-
Jakob Stoklund Olesen authored
llvm-svn: 123423
-
Chris Lattner authored
llvm-svn: 123422
-
Chris Lattner authored
they should go *before* the new instruction not after it. llvm-svn: 123420
-
Jakob Stoklund Olesen authored
Fix some callers to better deal with debug values. llvm-svn: 123419
-
Owen Anderson authored
most important simplifications, as well as resolving phase ordering issues where instcombine would inhibit important CSE'ing opportunities, for instance on BitBench/drop3. llvm-svn: 123418
-
Duncan Sands authored
While there, I noticed that the transform "undef >>a X -> undef" was wrong. For example if X is 2 then the top two bits must be equal, so the result can not be anything. I fixed this in the constant folder as well. Also, I made the transform for "X << undef" stronger: it now folds to undef always, even though X might be zero. This is in accordance with the LangRef, but I must admit that it is fairly aggressive. Also, I added "i32 X << 32 -> undef" following the LangRef and the constant folder, likewise fairly aggressive. llvm-svn: 123417
-
Owen Anderson authored
Don't bother conditionalizing the use of SROA in -O1 mode. We're already running it unconditionally later in the pipeline. llvm-svn: 123416
-
Chris Lattner authored
after sext's generated for addressing that got folded. Previously we compiled test5 into: _test5: ## @test5 ## BB#0: movq -8(%rsp), %rax ## 8-byte Reload movq (%rdi,%rax), %rdi addq %rdx, %rdi movslq %esi, %rax movq %rax, -8(%rsp) ## 8-byte Spill movq %rdi, %rax ret which is insane and wrong. Now we produce: _test5: ## @test5 ## BB#0: movslq %esi, %rax movq (%rdi,%rax), %rax addq %rdx, %rax ret llvm-svn: 123414
-
Jakob Stoklund Olesen authored
This approach also works when the terminator doesn't have a slot index. (Which can happen??) llvm-svn: 123413
-
Evan Cheng authored
llvm-svn: 123411
-
Tobias Grosser authored
Add methods for accessing the (single) entry / exit edge of a region. If no such edge exists, null is returned. Both accessors return the start block of the corresponding edge. The edge can finally be formed by utilizing Region::getEntry() or Region::getExit(); Contributed by: Andreas Simbuerger <simbuerg@fim.uni-passau.de> llvm-svn: 123410
-
- Jan 13, 2011
-
-
Owen Anderson authored
Fixes <rdar://problem/8857982>. llvm-svn: 123409
-
Jakob Stoklund Olesen authored
llvm-svn: 123408
-
Owen Anderson authored
llvm-svn: 123407
-
Chris Lattner authored
llvm-svn: 123406
-
Chris Lattner authored
llvm-svn: 123405
-
Owen Anderson authored
the symbolic immediate names used for these instructions, fixing their pretty-printers, and adding proper encoding information for them. With this, we can properly pretty-print and encode assembly like: mrc p15, #0, r3, c13, c0, #3 Fixes <rdar://problem/8857858>. llvm-svn: 123404
-
Evan Cheng authored
Relax an assertion. On archs like ARM, an immediate field may be scattered. So it's possible for some bits of every 8 bits to be encoded already, and the rest still needs to be fixed up. llvm-svn: 123403
-
Jakob Stoklund Olesen authored
llvm-svn: 123400
-
Jakob Stoklund Olesen authored
llvm-svn: 123399
-
Bob Wilson authored
llvm-svn: 123397
-
Bob Wilson authored
llvm-svn: 123396
-
Kevin Enderby authored
directional local labels like 1f and 2b. llvm-svn: 123393
-
Devang Patel authored
Patch by Bob Wilson. llvm-svn: 123390
-
Devang Patel authored
llvm-svn: 123389
-
Oscar Fuentes authored
Patch by arrowdodger! llvm-svn: 123388
-
Jim Grosbach authored
set up the source operands. The original instr has an immediate operand that should be replaced with the frame reg operand rather than just adding the reg operand. Previously, the instruction ended up with too many operands causing an assert() when adding the default predicate. rdar://8825456 llvm-svn: 123387
-
Jakob Stoklund Olesen authored
It will still return an iterator that points to the first terminator or end(), but there may be DBG_VALUE instructions following the first terminator. llvm-svn: 123384
-
Bob Wilson authored
llvm-svn: 123383
-
Bob Wilson authored
This is a minor extension of SROA to handle a special case that is important for some ARM NEON operations. Some of the NEON intrinsics return multiple values, which are handled as struct types containing multiple elements of the same vector type. The corresponding return types declared in the arm_neon.h header have equivalent arrays. We need SROA to recognize that it can split up those arrays and structs into separate vectors, even though they are not always accessed with the same type. SROA already handles loads and stores of an entire alloca by using insertvalue/extractvalue to access the individual pieces, and that code works the same regardless of whether the type is a struct or an array. So, all that needs to be done is to check for compatible arrays and homogeneous structs. llvm-svn: 123381
-
Bob Wilson authored
SROA only split up structs and arrays one level at a time, so padding can only cause trouble if it is located in between the struct or array elements. llvm-svn: 123380
-
Oscar Fuentes authored
llvm-svn: 123377
-
Oscar Fuentes authored
Patch by arrowdodger! llvm-svn: 123376
-
Duncan Sands authored
the comment I added): an extern weak global may have a null address. llvm-svn: 123373
-
Duncan Sands authored
is "X != 0 -> X" when X is a boolean. This occurs a lot because of the way llvm-gcc converts gcc's conditional expressions. Add this, and a few other similar transforms for completeness. llvm-svn: 123372
-
Evan Cheng authored
in the right direction. It eliminated some hacks and will unblock codegen work. But it's far from being done. It doesn't reject illegal expressions, e.g. (FOO - :lower16:BAR). It also doesn't work in Thumb2 mode at all. llvm-svn: 123369
-
Eric Christopher authored
16 bytes for PR8969. Update all testcases accordingly. llvm-svn: 123367
-
Rafael Espindola authored
llvm-svn: 123364
-
Rafael Espindola authored
llvm-svn: 123358
-