- Apr 28, 2010
-
-
Evan Cheng authored
Rather than having a ton of patterns for double shift instructions, e.g. SHLD16rrCL, just perform custom dag combine to form x86 specific dag so they match to the same pattern. This also makes sure later dag combine do not cause isel to miss them (e.g. promoting i16 to i32). llvm-svn: 102485
-
Stuart Hastings authored
llvm-svn: 102477
-
- Apr 27, 2010
-
-
Evan Cheng authored
llvm-svn: 102467
-
Evan Cheng authored
llvm-svn: 102456
-
Chris Lattner authored
otherwise labels get incorrectly merged. We handled this by emitting a ".byte 0", but this isn't correct on thumb/arm targets where the text segment needs to be a multiple of 2/4 bytes. Handle this by emitting a noop. This is more gross than it should be because arm/ppc are not fully mc'ized yet. This fixes rdar://7908505 llvm-svn: 102400
-
- Apr 26, 2010
-
-
Evan Cheng authored
llvm-svn: 102366
-
Evan Cheng authored
llvm-svn: 102326
-
Evan Cheng authored
- Move TargetLowering::EmitTargetCodeForFrameDebugValue to TargetInstrInfo and rename it to emitFrameIndexDebugValue. - Teach spiller to modify DBG_VALUE instructions to reference spill slots. llvm-svn: 102323
-
- Apr 25, 2010
-
-
Dale Johannesen authored
form of DEBUG_VALUE, as it doesn't have reasonable default behavior for unsupported targets. Add a new hook instead. No functional change. llvm-svn: 102320
-
- Apr 24, 2010
-
-
Evan Cheng authored
llvm-svn: 102237
-
- Apr 23, 2010
-
-
Stuart Hastings authored
llvm-svn: 102199
-
Evan Cheng authored
llvm-svn: 102192
-
- Apr 22, 2010
-
-
Dan Gohman authored
and into SelectionDAGBuilder and FastISel. llvm-svn: 102123
-
Evan Cheng authored
- Some code refactoring. llvm-svn: 102111
-
- Apr 21, 2010
-
-
Evan Cheng authored
optimization for non-leaf functions. This will be hooked up to gcc's -momit-leaf-frame-pointer option. rdar://7886181 llvm-svn: 101984
-
Evan Cheng authored
llvm-svn: 101979
-
Evan Cheng authored
llvm-svn: 101978
-
Bill Wendling authored
fixes a bug (<rdar://problem/7880900>) in the JIT. This code wouldn't work: target triple = "x86_64-apple-darwin" define double @func(double %a) { %tmp1 = fmul double %a, 5.000000e-01 ; <double> [#uses=1] ret double %tmp1 } define i32 @main() nounwind { %1 = call double @func(double 4.770000e-04) ; <i64> [#uses=0] ret i32 0 } llvm-svn: 101965
-
Chris Lattner authored
(shl (or x,c), 3) the same as (shl (add x, c), 3) when x doesn't have any bits from c set. This finishes off PR1135. Before we compiled the block to: to: LBB0_3: ## %bb cmpb $4, %dl sete %dl addb %dl, %cl movb %cl, %dl shlb $2, %dl addb %r8b, %dl shlb $2, %dl movzbl %dl, %edx movl %esi, (%rdi,%rdx,4) leaq 2(%rdx), %r9 movl %esi, (%rdi,%r9,4) leaq 1(%rdx), %r9 movl %esi, (%rdi,%r9,4) addq $3, %rdx movl %esi, (%rdi,%rdx,4) incb %r8b decb %al movb %r8b, %dl jne LBB0_1 Now we produce: LBB0_3: ## %bb cmpb $4, %dl sete %dl addb %dl, %cl movb %cl, %dl shlb $2, %dl addb %r8b, %dl shlb $2, %dl movzbl %dl, %edx movl %esi, (%rdi,%rdx,4) movl %esi, 8(%rdi,%rdx,4) movl %esi, 4(%rdi,%rdx,4) movl %esi, 12(%rdi,%rdx,4) incb %r8b decb %al movb %r8b, %dl jne LBB0_1 llvm-svn: 101958
-
Dale Johannesen authored
user-defined operations that use MMX register types, but the compiler shouldn't generate them on its own. This adds a Synthesizable abstraction to represent this, and changes the vector widening computation so it won't produce MMX types. (The motivation is to remove noise from the ABI compatibility part of the gcc test suite, which has some breakage right now.) llvm-svn: 101951
-
- Apr 20, 2010
-
-
Chris Lattner authored
an optimizer infinite loop on the file, PR6866. llvm-svn: 101854
-
Eric Christopher authored
shifts and null vectors. Autoupgrade these to what we'd lower them to. Add a testcase to exercise this. llvm-svn: 101851
-
- Apr 19, 2010
-
-
Evan Cheng authored
llvm-svn: 101808
-
- Apr 17, 2010
-
-
Chris Lattner authored
in memory operands. rdar://7874844 llvm-svn: 101661
-
Chris Lattner authored
llvm-svn: 101648
-
Dan Gohman authored
llvm-svn: 101640
-
Dan Gohman authored
llvm-svn: 101639
-
Dan Gohman authored
const_casts, and it reinforces the design of the Target classes being immutable. SelectionDAGISel::IsLegalToFold is now a static member function, because PIC16 uses it in an unconventional way. There is more room for API cleanup here. And PIC16's AsmPrinter no longer uses TargetLowering. llvm-svn: 101635
-
Dan Gohman authored
MachineFunctionInfo subclasses. llvm-svn: 101634
-
Chris Lattner authored
i8 field when they really do not. This fixes rdar://7840289 llvm-svn: 101629
-
Evan Cheng authored
llvm-svn: 101621
-
Eric Christopher authored
Probably the best way to know that all getOperand() calls have been handled is to replace that API instead of updating. llvm-svn: 101579
-
Dan Gohman authored
llvm-svn: 101564
-
- Apr 16, 2010
-
-
Chris Lattner authored
llvm-svn: 101538
-
Dan Gohman authored
llvm-svn: 101531
-
Gabor Greif authored
with a fix for self-hosting rotate CallInst operands, i.e. move callee to the back of the operand array the motivation for this patch are laid out in my mail to llvm-commits: more efficient access to operands and callee, faster callgraph-construction, smaller compiler binary llvm-svn: 101465
-
Evan Cheng authored
Adding support for dag combiner to promote operations for profit. This requires target specific queries. For example, x86 should promote i16 to i32 when it does not impact load folding. x86 support is off by default. It can be enabled with -promote-16bit. Work in progress. llvm-svn: 101448
-
Gabor Greif authored
llvm-svn: 101434
-
- Apr 15, 2010
-
-
Gabor Greif authored
with a fix rotate CallInst operands, i.e. move callee to the back of the operand array the motivation for this patch are laid out in my mail to llvm-commits: more efficient access to operands and callee, faster callgraph-construction, smaller compiler binary llvm-svn: 101397
-
Gabor Greif authored
llvm-svn: 101368
-