- Apr 14, 2011
-
-
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
-
Joerg Sonnenberger authored
llvm-svn: 128826
-
Joerg Sonnenberger authored
Define most shift masks incrementally to reduce the redundant hard-coding. Introduce new shift for the VEX flags to replace the magic constant 32 in various places. llvm-svn: 128822
-
- Mar 31, 2011
-
-
Evan Cheng authored
llvm-svn: 128586
-
- Mar 26, 2011
-
-
Benjamin Kramer authored
llvm-svn: 128338
-
- Mar 24, 2011
-
-
NAKAMURA Takumi authored
FIXME: Some cleanups would be needed. llvm-svn: 128206
-
Andrew Trick authored
I'm backing this out for the second time. It was supposed to be fixed by r128164, but the mingw self-host must be defeating the fix. llvm-svn: 128181
-
- Mar 23, 2011
-
-
Andrew Trick authored
(target-specific branchless method for double-width relational comparisons on x86) llvm-svn: 128175
-
- Mar 22, 2011
-
-
Dan Gohman authored
outside of the current basic block. This fixes PR9500, rdar://9156159. llvm-svn: 128041
-
- Mar 21, 2011
-
-
Bill Wendling authored
the alias of an InstAlias instead of the thing being aliased. Because we need to know the features that are valid for an InstAlias. This is part of a work-in-progress. llvm-svn: 127986
-
Evan Cheng authored
Re-apply r127953 with fixes: eliminate empty return block if it has no predecessors; update dominator tree if cfg is modified. llvm-svn: 127981
-
- Mar 19, 2011
-
-
Daniel Dunbar authored
to canonicalize IR", it broke a lot of things. llvm-svn: 127954
-
Evan Cheng authored
to have single return block (at least getting there) for optimizations. This is general goodness but it would prevent some tailcall optimizations. One specific case is code like this: int f1(void); int f2(void); int f3(void); int f4(void); int f5(void); int f6(void); int foo(int x) { switch(x) { case 1: return f1(); case 2: return f2(); case 3: return f3(); case 4: return f4(); case 5: return f5(); case 6: return f6(); } } => LBB0_2: ## %sw.bb callq _f1 popq %rbp ret LBB0_3: ## %sw.bb1 callq _f2 popq %rbp ret LBB0_4: ## %sw.bb3 callq _f3 popq %rbp ret This patch teaches codegenprep to duplicate returns when the return value is a phi and where the phi operands are produced by tail calls followed by an unconditional branch: sw.bb7: ; preds = %entry %call8 = tail call i32 @f5() nounwind br label %return sw.bb9: ; preds = %entry %call10 = tail call i32 @f6() nounwind br label %return return: %retval.0 = phi i32 [ %call10, %sw.bb9 ], [ %call8, %sw.bb7 ], ... [ 0, %entry ] ret i32 %retval.0 This allows codegen to generate better code like this: LBB0_2: ## %sw.bb jmp _f1 ## TAILCALL LBB0_3: ## %sw.bb1 jmp _f2 ## TAILCALL LBB0_4: ## %sw.bb3 jmp _f3 ## TAILCALL rdar://9147433 llvm-svn: 127953
-
Nadav Rotem authored
not have native support for this operation (such as X86). The legalized code uses two vector INT_TO_FP operations and is faster than scalarizing. llvm-svn: 127951
-
- Mar 18, 2011
-
-
Eli Friedman authored
llvm-svn: 127909
-
Joerg Sonnenberger authored
For now, only the default segments are supported. llvm-svn: 127875
-
Eli Friedman authored
comparisons on x86. Essentially, the way this works is that SUB+SBB sets the relevant flags the same way a double-width CMP would. This is a substantial improvement over the generic lowering in LLVM. The output is also shorter than the gcc-generated output; I haven't done any detailed benchmarking, though. llvm-svn: 127852
-
- Mar 17, 2011
-
-
Cameron Zwarich authored
llvm-svn: 127809
-
Cameron Zwarich authored
llvm-svn: 127807
-
Eli Friedman authored
llvm-svn: 127786
-
- Mar 16, 2011
-
-
Cameron Zwarich authored
rather than an int. Thankfully, this only causes LLVM to miss optimizations, not generate incorrect code. This just fixes the zext at the return. We still insert an i32 ZextAssert when reading a function's arguments, but it is followed by a truncate and another i8 ZextAssert so it is not optimized. llvm-svn: 127766
-
- Mar 15, 2011
-
-
Sean Callanan authored
in the instruction tables and fixed a few bugs that were causing decode conflicts. Rudimentary tests are coming up in the next patch. llvm-svn: 127646
-
Sean Callanan authored
instruction set. This code adds support for the VEX prefix and for the YMM registers accessible on AVX-enabled architectures. Instruction table support that enables AVX instructions for the disassembler is in an upcoming patch. llvm-svn: 127644
-
- Mar 11, 2011
-
-
Eric Christopher authored
corresponding testcases back to the previous versions. Fixes some performance regressions only seen on 32-bit. llvm-svn: 127441
-
- Mar 10, 2011
-
-
Stuart Hastings authored
llvm-svn: 127382
-
Evan Cheng authored
llvm-svn: 127380
-
Evan Cheng authored
llvm-svn: 127376
-
- Mar 09, 2011
-
-
Evan Cheng authored
flexible. If it returns a register class that's different from the input, then that's the register class used for cross-register class copies. If it returns a register class that's the same as the input, then no cross- register class copies are needed (normal copies would do). If it returns null, then it's not at all possible to copy registers of the specified register class. llvm-svn: 127368
-
Benjamin Kramer authored
llvm-svn: 127365
-
-