- Mar 02, 2010
-
-
Eric Christopher authored
llvm-svn: 97545
-
Evan Cheng authored
llvm-svn: 97543
-
Chris Lattner authored
llvm-svn: 97541
-
Chris Lattner authored
stuff now that we don't care about emulating the old broken behavior of the old isel. This eliminates the 'CheckChainCompatible' check (along with IsChainCompatible) which did an incorrect and inefficient scan *up* the chain nodes which happened as the pattern was being formed and does the validation at the end in HandleMergeInputChains when it forms a structural pattern. This scans "down" the graph, which means that it is quickly bounded by nodes already selected. This also handles token factors that get "trapped" in the dag. Removing the CheckChainCompatible nodes also shrinks the generated tables by about 6K for X86 (down to 83K). There are two pieces remaining before I can nuke PreprocessRMW: 1. I xfailed a test because we're now producing worse code in a case that has nothing to do with the change: it turns out that our use of MorphNodeTo will leave dead nodes in the graph which (depending on how the graph is walked) end up causing bogus uses of chains and blocking matches. This is really bad for other reasons, so I'll fix this in a follow-up patch. 2. CheckFoldableChainNode needs to be improved to handle the TF. llvm-svn: 97539
-
Dan Gohman authored
Based on a patch by Micah Villmow for PR6438. llvm-svn: 97538
-
Bill Wendling authored
llvm-svn: 97536
-
Devang Patel authored
Constructors and operators for anonymous aggregates does not names. Do not force empty AT_name attribute in such cases. llvm-svn: 97533
-
Chris Lattner authored
llvm-svn: 97529
-
Chris Lattner authored
new helper function. llvm-svn: 97525
-
- Mar 01, 2010
-
-
Chris Lattner authored
(the most general) the others are dead. llvm-svn: 97511
-
Jakob Stoklund Olesen authored
Don't accidentally produce unspillable intervals for deeply nested loops. llvm-svn: 97496
-
Chris Lattner authored
OPC_SwitchOpcode to use a table lookup instead of having to go through the interpreter for this. llvm-svn: 97469
-
Dan Gohman authored
by Micah Villmow for PR6335. llvm-svn: 97461
-
Chris Lattner authored
llvm-svn: 97441
-
Chris Lattner authored
ComplexPattern at the root be generated multiple times, once for each opcode they are part of. This encourages factoring because the opcode checks get treated just like everything else in the matcher. llvm-svn: 97439
-
Chris Lattner authored
to a scope where every child starts with a CheckOpcode, but executes more efficiently. Enhance DAGISelMatcherOpt to form it. This also fixes a bug in CheckOpcode: apparently the SDNodeInfo objects are not pointer comparable, we have to compare the enum name. llvm-svn: 97438
-
- Feb 28, 2010
-
-
Chris Lattner authored
llvm-svn: 97426
-
Chris Lattner authored
(which gets #included into the middle of each target's DAGISel class) into a .cpp file where it is only compiled once. llvm-svn: 97425
-
Chris Lattner authored
case of MorphNodeTo directly. llvm-svn: 97417
-
Chris Lattner authored
llvm-svn: 97408
-
Dan Gohman authored
llvm-svn: 97360
-
Dan Gohman authored
after LSR, so that clients can opt in. llvm-svn: 97357
-
Dan Gohman authored
defs or uses. The regular def and use checking below covers them, and can be more precise. It's safe to hoist an instruction with a dead implicit def if the register isn't live into the loop header. llvm-svn: 97352
-
- Feb 27, 2010
-
-
Evan Cheng authored
llvm-svn: 97310
-
Bill Wendling authored
llvm-svn: 97295
-
- Feb 26, 2010
-
-
Bill Wendling authored
for alignment into the LSDA. If the TType base offset is emitted, then put the padding there. Otherwise, put it in the call site table length. There will be no conflict between the two sites when placing the padding in one place. llvm-svn: 97277
-
Bill Wendling authored
llvm-svn: 97269
-
Jakob Stoklund Olesen authored
The PowerPC floating point registers can represent both f32 and f64 via the two register classes F4RC and F8RC. F8RC is considered a subclass of F4RC to allow cross-class coalescing. This coalescing only affects whether registers are spilled as f32 or f64. Spill slots must be accessed with load/store instructions corresponding to the class of the spilled register. PPCInstrInfo::foldMemoryOperandImpl was looking at the instruction opcode which is wrong. X86 has similar floating point register classes, but doesn't try to fold memory operands, so there is no problem there. llvm-svn: 97262
-
Jakob Stoklund Olesen authored
llvm-svn: 97261
-
Dale Johannesen authored
as X86 is currently the only FastISel target. Per review. llvm-svn: 97255
-
Bob Wilson authored
llvm-svn: 97235
-
Bill Wendling authored
llvm-svn: 97200
-
Bill Wendling authored
the alignment requirement, if it no longer makes the TType base offset overflow into extra bytes, then we need to pad to those bytes ourselves. llvm-svn: 97196
-
Bill Wendling authored
llvm-svn: 97193
-
Bill Wendling authored
llvm-svn: 97192
-
Bill Wendling authored
will eliminate the need for padding in the "Call site table length". E.g., if we have this: GCC_except_table1: Lexception1: .byte 0xff ## @LPStart Encoding = omit .byte 0x9b ## @TType Encoding = indirect pcrel sdata4 .byte 0x7f ## @TType base offset .byte 0x03 ## Call site Encoding = udata4 .byte 0x89 ## Call site table length with padding of 1. We want to emit the padding like this: GCC_except_table1: Lexception1: .byte 0xff ## @LPStart Encoding = omit .byte 0x9b ## @TType Encoding = indirect pcrel sdata4 .byte 0xff ## @TType base offset .space 1,0 ## Padding .byte 0x03 ## Call site Encoding = udata4 .byte 0x89 ## Call site table length and not with padding on the "Call site table length" entry. llvm-svn: 97183
-
- Feb 25, 2010
-
-
Bill Wendling authored
llvm-svn: 97169
-
Dan Gohman authored
operands are themselves vectors. Based on a patch by Micah Villmow for PR6338. llvm-svn: 97165
-
Dan Gohman authored
terms of store and load, which means bitcasting between scalar integer and vector has endian-specific results, which undermines this whole approach. llvm-svn: 97137
-
Bill Wendling authored
llvm-svn: 97087
-