- Apr 20, 2011
-
-
Daniel Dunbar authored
triple component. llvm-svn: 129838
-
- Apr 19, 2011
-
-
Daniel Dunbar authored
predicates. llvm-svn: 129816
-
Daniel Dunbar authored
llvm-svn: 129813
-
Daniel Dunbar authored
llvm-svn: 129812
-
Eli Friedman authored
llvm-svn: 129765
-
Chris Lattner authored
en-mass for C++ PODs. On my c++ test file, this cuts the fast isel rejects by 10x and shrinks the generated .s file by 5% llvm-svn: 129755
-
Chris Lattner authored
llvm-svn: 129753
-
Chris Lattner authored
when they are a truncate from something else. This eliminates fully half of all the fastisel rejections on a test c++ file I'm working with, which should make a substantial improvement for -O0 compile of c++ code. This fixed rdar://9297003 - fast isel bails out on all functions taking bools llvm-svn: 129752
-
Chris Lattner authored
Before we would bail out on i1 arguments all together, now we just bail on non-constant ones. Also, we used to emit extraneous code. e.g. test12 was: movb $0, %al movzbl %al, %edi callq _test12 and test13 was: movb $0, %al xorl %edi, %edi movb %al, 7(%rsp) callq _test13f Now we get: movl $0, %edi callq _test12 and: movl $0, %edi callq _test13f llvm-svn: 129751
-
Chris Lattner authored
testb $1, %al je LBB0_2 ## BB#1: ## %if.then movb $0, %al instead of: testb $1, %al jne LBB0_1 jmp LBB0_2 LBB0_1: ## %if.then movb $0, %al how 'bout that. llvm-svn: 129749
-
rdar://9297006Chris Lattner authored
a common cause of fast isel rejects on c++ code. llvm-svn: 129748
-
- Apr 18, 2011
-
-
Eric Christopher authored
true on success and false on failure. Update callers. llvm-svn: 129722
-
Chris Lattner authored
the generated FastISel. X86 doesn't need to generate code to match ADD16ri8 since ADD16ri will do just fine. This is a small codesize win in the generated instruction selector. llvm-svn: 129692
-
Chris Lattner authored
simplifying them and exposing more information to tblgen. It would be nice if other target authors adopted this as well, particularly arm since it has fastisel. llvm-svn: 129676
-
Chris Lattner authored
kind of predicate: one that is specific to imm nodes. The predicate function specified here just checks an int64_t directly instead of messing around with SDNode's. The virtue of this is that it means that fastisel and other things can reason about these predicates. llvm-svn: 129675
-
- Apr 17, 2011
-
-
Chris Lattner authored
structure and fix some fixmes. We now have a TreePredicateFn class that handles all of the decoding of these things. This is an internal cleanup that has no impact on the code generated by tblgen. llvm-svn: 129670
-
Chris Lattner authored
2. implement rdar://9289501 - fast isel should fold trivial multiplies to shifts 3. teach tblgen to handle shift immediates that are different sizes than the shifted operands, eliminating some code from the X86 fast isel backend. 4. Have FastISel::SelectBinaryOp use (the poorly named) FastEmit_ri_ function instead of FastEmit_ri to simplify code. llvm-svn: 129666
-
Chris Lattner authored
when we have a global variable base an an index. Instead, just give up on folding the global variable. Before we'd geenrate: _test: ## @test ## BB#0: movq _rtx_length@GOTPCREL(%rip), %rax leaq (%rax), %rax addq %rdi, %rax movzbl (%rax), %eax ret now we generate: _test: ## @test ## BB#0: movq _rtx_length@GOTPCREL(%rip), %rax movzbl (%rax,%rdi), %eax ret The difference is even more significant when there is a scale involved. This fixes rdar://9289558 - total fail with addr mode formation at -O0/x86-64 llvm-svn: 129664
-
Chris Lattner authored
less trivial things) into a dummy lea. Before we generated: _test: ## @test movq _G@GOTPCREL(%rip), %rax leaq (%rax), %rax ret now we produce: _test: ## @test movq _G@GOTPCREL(%rip), %rax ret This is part of rdar://9289558 llvm-svn: 129662
-
Chris Lattner authored
llvm-svn: 129661
-
Eli Friedman authored
llvm-svn: 129654
-
- Apr 15, 2011
-
-
Rafael Espindola authored
Change ELF systems to use CFI for producing the EH tables. This reduces the size of the clang binary in Debug builds from 690MB to 679MB. llvm-svn: 129571
-
Chris Lattner authored
Luis Felipe Strano Moraes! llvm-svn: 129558
-
NAKAMURA Takumi authored
It broke several builds. llvm-svn: 129557
-
Michael J. Spencer authored
llvm-svn: 129551
-
- Apr 14, 2011
-
-
Chris Lattner authored
llvm-svn: 129527
-
Rafael Espindola authored
size of the clang binary in Debug builds from 690MB to 679MB. llvm-svn: 129518
-
Michael J. Spencer authored
llvm-svn: 129517
-
Bill Wendling authored
(movzx/movsx) because they give more information. Revert that part of the patch. llvm-svn: 129498
-
Bill Wendling authored
cases, it's much nicer and more informative reading the alias. llvm-svn: 129497
-
Bill Wendling authored
the alias". llvm-svn: 129485
-
- Apr 13, 2011
-
-
Bill Wendling authored
llvm-svn: 129419
-
Bill Wendling authored
llvm-svn: 129403
-
Bill Wendling authored
Now that we have a first-class way to represent unaligned loads, the unaligned load intrinsics are superfluous. First part of <rdar://problem/8460511>. llvm-svn: 129401
-
- Apr 11, 2011
-
-
Jay Foad authored
llvm-svn: 129271
-
- Apr 09, 2011
-
-
rdar://8735979Chris Lattner authored
InstAlias doesn't allow matching immediate operands, so we have to write C++ code to do this. llvm-svn: 129223
-
- Apr 07, 2011
-
-
Bill Wendling authored
with the newer, cleaner model. It uses the IAPrinter class to hold the information that is needed to match an instruction with its alias. This also takes into account the available features of the platform. There is one bit of ugliness. The way the logic determines if a pattern is unique is O(N**2), which is gross. But in reality, the number of items it's checking against isn't large. So while it's N**2, it shouldn't be a massive time sink. llvm-svn: 129110
-
- Apr 06, 2011
-
-
Rafael Espindola authored
llvm-svn: 129012
-
Rafael Espindola authored
Change the test to force a sign extension and expose the problem again. llvm-svn: 129011
-
- Apr 04, 2011
-
-
Joerg Sonnenberger authored
llvm-svn: 128847
-