- Dec 24, 2010
-
-
Rafael Espindola authored
have a single point where targets test if a relocation is needed. llvm-svn: 122549
-
Benjamin Kramer authored
This allows us to compile "int cst[] = {-1, -1, -1};" into movl $-1, 16(%rsp) movq $-1, 8(%rsp) instead of movl _cst+8(%rip), %eax movl %eax, 16(%rsp) movq _cst(%rip), %rax movq %rax, 8(%rsp) llvm-svn: 122548
-
Daniel Dunbar authored
llvm-svn: 122547
-
Andrew Trick authored
llvm-svn: 122545
-
Andrew Trick authored
Fix a few cases where the scheduler is not checking for phys reg copies. The scheduling node may have a NULL DAG node, yuck. llvm-svn: 122544
-
Jim Grosbach authored
llvm-svn: 122542
-
Andrew Trick authored
DAG scheduling during isel. Most new functionality is currently guarded by -enable-sched-cycles and -enable-sched-hazard. Added InstrItineraryData::IssueWidth field, currently derived from ARM itineraries, but could be initialized differently on other targets. Added ScheduleHazardRecognizer::MaxLookAhead to indicate whether it is active, and if so how many cycles of state it holds. Added SchedulingPriorityQueue::HasReadyFilter to allowing gating entry into the scheduler's available queue. ScoreboardHazardRecognizer now accesses the ScheduleDAG in order to get information about it's SUnits, provides RecedeCycle for bottom-up scheduling, correctly computes scoreboard depth, tracks IssueCount, and considers potential stall cycles when checking for hazards. ScheduleDAGRRList now models machine cycles and hazards (under flags). It tracks MinAvailableCycle, drives the hazard recognizer and priority queue's ready filter, manages a new PendingQueue, properly accounts for stall cycles, etc. llvm-svn: 122541
-
Andrew Trick authored
llvm-svn: 122539
-
Cameron Zwarich authored
llvm-svn: 122537
-
Kevin Enderby authored
preprocessed .s files and matches darwin gas. rdar://8798690 Also fix a comment on the next line of AsmParser.cpp after this new code. llvm-svn: 122531
-
Jim Grosbach authored
llvm-svn: 122530
-
Owen Anderson authored
are not the low bits of x, but the bits that WILL be the low bits after the operation completes. llvm-svn: 122529
-
Evan Cheng authored
llvm-svn: 122528
-
Jim Grosbach authored
llvm-svn: 122524
-
Jim Grosbach authored
llvm-svn: 122523
-
- Dec 23, 2010
-
-
Bob Wilson authored
If the basic block containing the BCCi64 (or BCCZi64) instruction ends with an unconditional branch, that branch needs to be deleted before appending the expansion of the BCCi64 to the end of the block. llvm-svn: 122521
-
Oscar Fuentes authored
It was causing problems on the MinGW build. See PR8849. llvm-svn: 122518
-
Torok Edwin authored
llvm-svn: 122517
-
Owen Anderson authored
pipeline to be caught by instcombine, and it's not feasible to catch them in SimplifyCFG because the use-lists are in an inconsistent state at the point where it could know that it need to simplify them. Instead, have CodeGenPrepare look for trivially redundant PHIs as part of its general cleanup effort. llvm-svn: 122516
-
Chris Lattner authored
llvm-svn: 122513
-
Chris Lattner authored
llvm-svn: 122509
-
Chris Lattner authored
llvm-svn: 122507
-
Chris Lattner authored
llvm-svn: 122506
-
Torok Edwin authored
See http://caml.inria.fr/mantis/view.php?id=4166 If we call only external functions from a module, then its 'let _' bindings don't get executed, which means that the exceptions don't get registered for use in the C code. This in turn causes llvm_raise to call raise_with_arg() with a NULL pointer and cause a segmentation fault. The workaround is to declare all 'external' functions as 'val' in these .mli files. Also added a separate testcase (the testcase must call only external functions for the bug to occur). llvm-svn: 122497
-
Benjamin Kramer authored
Remove/fix invalid README entries. The well thought out strcpy function doesn't return a pointer to the end of the string. llvm-svn: 122496
-
Benjamin Kramer authored
llvm-svn: 122495
-
Andrew Trick authored
llvm-svn: 122491
-
Andrew Trick authored
Converted LiveRegCycles to LiveRegGens. It's easier to work with and allows multiple nodes per cycle. llvm-svn: 122474
-
Andrew Trick authored
llvm-svn: 122473
-
Andrew Trick authored
In the bottom-up selection DAG scheduling, handle two-address instructions that read/write unspillable registers. Treat the entire chain of two-address nodes as a single live range. llvm-svn: 122472
-
Mon P Wang authored
llvm-svn: 122462
-
Jeffrey Yasskin authored
new gcc warning that complains on self-assignments and self-initializations. llvm-svn: 122458
-
Bill Wendling authored
llvm-svn: 122457
-
Jim Grosbach authored
llvm-svn: 122456
-
Benjamin Kramer authored
DAGCombine add (sext i1), X into sub X, (zext i1) if sext from i1 is illegal. The latter usually compiles into smaller code. example code: unsigned foo(unsigned x, unsigned y) { if (x != 0) y--; return y; } before: _foo: ## @foo cmpl $1, 4(%esp) ## encoding: [0x83,0x7c,0x24,0x04,0x01] sbbl %eax, %eax ## encoding: [0x19,0xc0] notl %eax ## encoding: [0xf7,0xd0] addl 8(%esp), %eax ## encoding: [0x03,0x44,0x24,0x08] ret ## encoding: [0xc3] after: _foo: ## @foo cmpl $1, 4(%esp) ## encoding: [0x83,0x7c,0x24,0x04,0x01] movl 8(%esp), %eax ## encoding: [0x8b,0x44,0x24,0x08] adcl $-1, %eax ## encoding: [0x83,0xd0,0xff] ret ## encoding: [0xc3] llvm-svn: 122455
-
Benjamin Kramer authored
llvm-svn: 122453
-
Benjamin Kramer authored
int test(unsigned long a, unsigned long b) { return -(a < b); } compiles to _test: ## @test cmpq %rsi, %rdi ## encoding: [0x48,0x39,0xf7] sbbl %eax, %eax ## encoding: [0x19,0xc0] ret ## encoding: [0xc3] instead of _test: ## @test xorl %ecx, %ecx ## encoding: [0x31,0xc9] cmpq %rsi, %rdi ## encoding: [0x48,0x39,0xf7] movl $-1, %eax ## encoding: [0xb8,0xff,0xff,0xff,0xff] cmovael %ecx, %eax ## encoding: [0x0f,0x43,0xc1] ret ## encoding: [0xc3] llvm-svn: 122451
-
- Dec 22, 2010
-
-
Rafael Espindola authored
fixed. llvm-svn: 122448
-
Dan Gohman authored
llvm-svn: 122447
-
Rafael Espindola authored
if we have a lame assembler. llvm-svn: 122446
-