- May 15, 2010
-
-
Evan Cheng authored
allow target to override it in order to map register classes to illegal but synthesizable types. e.g. v4i64, v8i64 for ARM / NEON. llvm-svn: 103854
-
Evan Cheng authored
llvm-svn: 103851
-
Evan Cheng authored
instructions. e.g. %reg1026<def> = VLDMQ %reg1025<kill>, 260, pred:14, pred:%reg0 %reg1027<def> = EXTRACT_SUBREG %reg1026, 6 %reg1028<def> = EXTRACT_SUBREG %reg1026<kill>, 5 ... %reg1029<def> = REG_SEQUENCE %reg1028<kill>, 5, %reg1027<kill>, 6, %reg1028, 7, %reg1027, 8, %reg1028, 9, %reg1027, 10, %reg1030<kill>, 11, %reg1032<kill>, 12 After REG_SEQUENCE is eliminated, we are left with: %reg1026<def> = VLDMQ %reg1025<kill>, 260, pred:14, pred:%reg0 %reg1029:6<def> = EXTRACT_SUBREG %reg1026, 6 %reg1029:5<def> = EXTRACT_SUBREG %reg1026<kill>, 5 The regular coalescer will not be able to coalesce reg1026 and reg1029 because it doesn't know how to combine sub-register indices 5 and 6. Now 2-address pass will consult the target whether sub-registers 5 and 6 of reg1026 can be combined to into a larger sub-register (or combined to be reg1026 itself as is the case here). If it is possible, it will be able to replace references of reg1026 with reg1029 + the larger sub-register index. llvm-svn: 103835
-
Evan Cheng authored
llvm-svn: 103833
-
Bill Wendling authored
replace the check with the appropriate predicate. Modify the testcase to reflect the correct code. (It should be saving callee-saved registers on the stack allocated by the calling fuction.) llvm-svn: 103829
-
Dan Gohman authored
llvm-svn: 103826
-
- May 14, 2010
-
-
Bill Wendling authored
of "has calls". That's probably wrong, but it needs further investigation. Revert to the original behavior until this is settled. llvm-svn: 103824
-
Bill Wendling authored
stack. llvm-svn: 103813
-
Bill Wendling authored
llvm-svn: 103808
-
Bill Wendling authored
llvm-svn: 103804
-
Bill Wendling authored
the variable actually tracks. N.B., several back-ends are using "HasCalls" as being synonymous for something that adjusts the stack. This isn't 100% correct and should be looked into. llvm-svn: 103802
-
Dan Gohman authored
used more than once. If ISel had put a kill flag on one of them, it's not valid to transfer the kill flag to each new instance. llvm-svn: 103799
-
Kevin Enderby authored
argument, like "int $4", to not get an Assertion error. llvm-svn: 103791
-
Evan Cheng authored
llvm-svn: 103790
-
Dan Gohman authored
llvm-svn: 103778
-
Dan Gohman authored
control barriers, not memory ordering barriers. llvm-svn: 103777
-
Dan Gohman authored
llvm-svn: 103776
-
Evan Cheng authored
llvm-svn: 103760
-
Evan Cheng authored
llvm-svn: 103749
-
- May 13, 2010
-
-
Evan Cheng authored
llvm-svn: 103731
-
Bob Wilson authored
Do not use those for Thumb1 functions. llvm-svn: 103730
-
Oscar Fuentes authored
Patch by Dimitry Andric! llvm-svn: 103727
-
Anton Korobeynikov authored
llvm-svn: 103702
-
Daniel Dunbar authored
llvm-svn: 103694
-
Evan Cheng authored
Bring back VLD1q and VST1q and use them for reloading / spilling Q registers. This allows folding loads and stores into VMOVQ. llvm-svn: 103692
-
Evan Cheng authored
llvm-svn: 103684
-
Evan Cheng authored
llvm-svn: 103683
-
Chris Lattner authored
after testing before committing. llvm-svn: 103681
-
Chris Lattner authored
llvm-svn: 103677
-
Chris Lattner authored
lower them to the correct x86-64 instructions since we don't have a clean way to handle this in td files yet. rdar://7947184 llvm-svn: 103668
-
Evan Cheng authored
Fix some potential issues in the pseudo instruction expansion phase: copy implicit operands and memoperands. Also, expand instructions even if their defs are "dead" since they may have implicit kill operands. llvm-svn: 103667
-
Chris Lattner authored
part first. rdar://7947184 llvm-svn: 103660
-
- May 12, 2010
-
-
Evan Cheng authored
llvm-svn: 103642
-
Rafael Espindola authored
llvm-svn: 103576
-
Evan Cheng authored
v1024 = REG_SEQUENCE ... v1025 = EXTRACT_SUBREG v1024, 5 v1026 = EXTRACR_SUBREG v1024, 6 = VSTxx <addr>, v1025, v1026 The REG_SEQUENCE ensures the sources that feed into the VST instruction are getting the right register allocation so they form a large super- register. The extract_subreg will be coalesced away all would just work: v1024 = REG_SEQUENCE ... = VSTxx <addr>, v1024:5, v1024:6 The problem is if the coalescer isn't run, the extract_subreg instructions would stick around and there is no assurance v1025 and v1026 will get the right registers. As a short term workaround, teach the NEON pre-allocation pass to transfer the sub-register indices over. An alternative would be do it 2addr pass when reg_sequence's are eliminated. But that *seems* wrong and require updating liveness information. Another alternative is to do this in the scheduler when the instructions are created. But that would mean somehow the scheduler this has to be done for correctness reason. That's yucky as well. So for now, we are leaving this in the target specific pass. llvm-svn: 103540
-
Daniel Dunbar authored
llvm-svn: 103535
-
Daniel Dunbar authored
be diced into atoms, and adjust getAtom() to take this into account. - This fixes relocations to symbols in fixed size literal sections, for example. llvm-svn: 103532
-
Dan Gohman authored
llvm-svn: 103529
-
- May 11, 2010
-
-
Evan Cheng authored
llvm-svn: 103513
-
Bill Wendling authored
llvm-svn: 103507
-