- Apr 30, 2011
-
-
Benjamin Kramer authored
This obviously helps a lot if the division would be turned into a libcall (think i64 udiv on i386), but div is also one of the few remaining instructions on modern CPUs that become more expensive when the bitwidth gets bigger. This also helps register pressure on i386 when dividing chars, divb needs two 8-bit parts of a 16 bit register as input where divl uses two registers. int foo(unsigned char a) { return a/10; } int bar(unsigned char a, unsigned char b) { return a/b; } compiles into (x86_64) _foo: imull $205, %edi, %eax shrl $11, %eax ret _bar: movzbl %dil, %eax divb %sil, %al movzbl %al, %eax ret llvm-svn: 130615
-
Benjamin Kramer authored
This folds away silly stuff like (a&255)/1000 -> 0. llvm-svn: 130614
-
Benjamin Kramer authored
llvm-svn: 130613
-
Jakob Stoklund Olesen authored
llvm-svn: 130599
-
Jakob Stoklund Olesen authored
llvm-svn: 130567
-
Eli Friedman authored
Make FastEmit_ri_ try a bit harder to succeed for supported operations; FastEmit_i can fail for non-Thumb2 ARM. Makes ARMSimplifyAddress work correctly, and reduces the number of fast-isel bailouts on non-Thumb ARM. llvm-svn: 130560
-
Eli Friedman authored
llvm-svn: 130552
-
- Apr 29, 2011
-
-
Eli Friedman authored
llvm-svn: 130540
-
Eli Friedman authored
Fix a rather obscure crash caused by ARM fast-isel generating code which redefines a register. rdar://problem/9338332 . llvm-svn: 130539
-
Eric Christopher authored
for bools, but is a start. llvm-svn: 130534
-
Peter Collingbourne authored
llvm-svn: 130528
-
Peter Collingbourne authored
llvm-svn: 130527
-
Peter Collingbourne authored
llvm-svn: 130526
-
Daniel Dunbar authored
currently used, because variables don't get reported as being "defined". llvm-svn: 130524
-
Daniel Dunbar authored
MC: Change variable symbols to be recognized as defined, by assigning their sections based on FindAssociatedSection(). llvm-svn: 130523
-
Rafael Espindola authored
emmits: .cfi_personality, .cfi_lsda and the moves. llvm-svn: 130503
-
Andrew Trick authored
Generalization of Nate Begeman's patch! llvm-svn: 130502
-
Andrew Trick authored
llvm-svn: 130498
-
Benjamin Kramer authored
Fixes PR9809. llvm-svn: 130485
-
Eli Friedman authored
llvm-svn: 130462
-
Eli Friedman authored
llvm-svn: 130455
-
Eli Friedman authored
rdar://problem/9338332 . llvm-svn: 130454
-
- Apr 28, 2011
-
-
Eli Friedman authored
fast-isel sret calls, try 2. We actually do need to do something on x86-32. rdar://problem/9303592 . llvm-svn: 130429
-
Eli Friedman authored
llvm-svn: 130418
-
Chris Lattner authored
a nice and tidy: %x1 = load i32* %0, align 4 %1 = icmp eq i32 %x1, 1179403647 br i1 %1, label %if.then, label %if.end instead of doing lots of loads and branches. May the FreeBSD bootloader long fit in its allocated space. llvm-svn: 130416
-
Eli Friedman authored
llvm-svn: 130412
-
Benjamin Kramer authored
This happens when GVN widens loads. Part of PR6627. llvm-svn: 130405
-
Chris Lattner authored
wider load would allow elimination of subsequent loads, and when the wider load is still a native integer type. This eliminates a ton of loads on various benchmarks involving struct fields, though it is somewhat hobbled by clang not being very aggressive about field alignment. This is yet another step along the way towards resolving PR6627. llvm-svn: 130390
-
Devang Patel authored
This fixes clang generated blocks' variables' debug info. Radar 9279956. llvm-svn: 130373
-
Eli Friedman authored
llvm-svn: 130360
-
Justin Holewinski authored
- selection of bitwise preds (AND, OR, XOR) - new bitwise.ll test Patch by Dan Bailey llvm-svn: 130353
-
-
Johnny Chen authored
llvm-svn: 130345
-
Andrew Trick authored
Modified LinearFunctionTestReplace to push the condition on the dead list instead of eagerly deleting it. This can cause unnecessary IV rewrites, which should have no effect on codegen and will not be an issue once we stop generating canonical IVs. llvm-svn: 130340
-
Eli Friedman authored
Make the fast-isel code for literal 0.0 a bit shorter/faster, since 0.0 is common. rdar://problem/9303592 . llvm-svn: 130338
-
- Apr 27, 2011
-
-
Dan Gohman authored
llvm-svn: 130327
-
Evan Cheng authored
successors) and use inverse depth first search to traverse the BBs. However that doesn't work when the CFG has infinite loops. Simply do a linear traversal of all BBs work just fine. rdar://9344645 llvm-svn: 130324
-
Dan Gohman authored
only check arguments with pointer types. Update the documentation of IntrReadArgMem reflect this. While here, add support for TBAA tags on intrinsic calls. llvm-svn: 130317
-
Devang Patel authored
Simplify cfg inserts a call to trap when unreachable code is detected. Assign DebugLoc to this new trap instruction. llvm-svn: 130315
-
Jakob Stoklund Olesen authored
We cannot rely on the <imp-def> operands added by LiveIntervals in all cases as demonstrated by the test case. llvm-svn: 130313
-