| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
|
|
|
|
|
|
| |
A partial redef now triggers a reload if required. Also don't add
<imp-def,dead> operands for physical superregisters.
Kill flags are still treated as full register kills, and <imp-use,kill> operands
are added for physical superregisters as before.
llvm-svn: 104167
|
| |
|
|
| |
llvm-svn: 104165
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
partial redefines.
We are going to treat a partial redefine of a virtual register as a
read-modify-write:
%reg1024:6 = OP
Unless the register is fully clobbered:
%reg1024:6 = OP, %reg1024<imp-def>
MachineInstr::readsVirtualRegister() knows the difference. The first case is a
read, the second isn't.
llvm-svn: 104149
|
| |
|
|
|
|
| |
TargetMachine.h and put it in its own namespace.
llvm-svn: 104147
|
| |
|
|
|
|
|
|
| |
lowering REG_SEQUENCE instructions.
Insert copies for REG_SEQUENCE sources not killed to avoid breaking later passes.
llvm-svn: 104146
|
| |
|
|
| |
llvm-svn: 104145
|
| |
|
|
|
|
|
|
| |
need to be promoted. The BUILD_VECTOR and EXTRACT_VECTOR_ELT nodes generated
here already allow the promoted type to be used without further changes, so
just do the promotion. This fixes part of pr7167.
llvm-svn: 104141
|
| |
|
|
| |
llvm-svn: 104122
|
| |
|
|
|
|
|
| |
prefix byte problem as in r104062.
- As a total hack to keep the TAILCALL markers in the output, which some tests depend on, this invents a new TAILJMP_1 instruction.
llvm-svn: 104120
|
| |
|
|
|
|
| |
CALL64pcrel32, for the same reason.
llvm-svn: 104116
|
| |
|
|
|
|
| |
hoist more loads during machine LICM.
llvm-svn: 104115
|
| |
|
|
| |
llvm-svn: 104114
|
| |
|
|
| |
llvm-svn: 104112
|
| |
|
|
|
|
| |
do not have other un-modeled side effects.
llvm-svn: 104111
|
| |
|
|
| |
llvm-svn: 104110
|
| |
|
|
|
|
| |
avoid same prefix byte problem as in r104062.
llvm-svn: 104108
|
| |
|
|
|
|
| |
especially important on instructions like t2LEApcreal which are prime candidate for machine LICM.
llvm-svn: 104102
|
| |
|
|
| |
llvm-svn: 104095
|
| |
|
|
|
|
|
|
|
|
| |
modeled as icmp / fcmp + sext. This is turned into a vsetcc by dag combine (yes, not a good long term solution). The targets can then isel the vsetcc to the appropriate instruction.
The trouble arises when the result of a vector cmp + sext is then and'ed with all ones. Instcombine will turn it into a vector cmp + zext, dag combiner will miss turning it into a vsetcc and hell breaks loose after that.
Teach dag combine to turn a vector cpm + zest into a vsetcc + and 1. This fixes rdar://7923010.
llvm-svn: 104094
|
| |
|
|
|
|
|
| |
opcodes into a helper function. This fixes a few places in the code
which were not properly selecting the 8-bit-immediate opcodes.
llvm-svn: 104091
|
| |
|
|
| |
llvm-svn: 104089
|
| |
|
|
|
|
| |
constants in registers which partially cancel out their immediate fields.
llvm-svn: 104088
|
| |
|
|
|
|
|
| |
of its formulae have been removed into a helper function, and also
teach it how to update the RegUseTracker.
llvm-svn: 104087
|
| |
|
|
|
|
| |
in the coalescer's instruction map.
llvm-svn: 104086
|
| |
|
|
|
|
| |
function.
llvm-svn: 104082
|
| |
|
|
| |
llvm-svn: 104080
|
| |
|
|
|
|
| |
a helper function.
llvm-svn: 104079
|
| |
|
|
| |
llvm-svn: 104078
|
| |
|
|
|
|
|
| |
is inconsistent with the BaseRegs field. It's not print's job to
assert on an invalid condition, but it can make one more obvious.
llvm-svn: 104077
|
| |
|
|
|
|
| |
confusion with LSRInstance's RegUses member.
llvm-svn: 104076
|
| |
|
|
| |
llvm-svn: 104074
|
| |
|
|
| |
llvm-svn: 104068
|
| |
|
|
|
|
| |
specified.
llvm-svn: 104066
|
| |
|
|
|
|
| |
8-bit immediate field rather than one with a wider immediate field.
llvm-svn: 104064
|
| |
|
|
|
|
|
|
|
|
|
|
| |
The register use operands (e.g. the first argument is passed in a
register) is currently being modeled as a normal register use,
instead of correctly being an implicit use. This causes the operand
to get propagated onto the mcinst, which was causing the encoder to
emit a rex prefix byte, which generates an invalid call.
This fixes rdar://7998435
llvm-svn: 104062
|
| |
|
|
|
|
| |
into the target hook. Only the target knows whether the swap is safe. In Thumb2 mode, the offset must be an immediate. rdar://7998649
llvm-svn: 104060
|
| |
|
|
|
|
| |
Fixes build failure as well.
llvm-svn: 104059
|
| |
|
|
|
|
| |
Fix up callers and users.
llvm-svn: 104057
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
instruction.
This can happen on ARM:
>> %reg1035:5<def>, %reg1035:6<def> = VLD1q16 %reg1028, 0, pred:14, pred:%reg0
Regs: Q0=%reg1032* R0=%reg1028* R1=%reg1029* R2 R3=%reg1031*
Killing last use: %reg1028
Allocating %reg1035 from QPR
Assigning %reg1035 to Q1
<< %D2<def>, %D3<def> = VLD1q16 %R0<kill>, 0, pred:14, pred:%reg0, %Q1<imp-def>
llvm-svn: 104056
|
| |
|
|
|
|
| |
source registers and sub-register indices.
llvm-svn: 104051
|
| |
|
|
|
|
| |
correct register class of the definitions of REG_SEQUENCE.
llvm-svn: 104050
|
| |
|
|
|
|
|
| |
CurPtr[0] == '\n' when testing the character after a "0b" when looking
to see if it part of a something like "jmp 0b".
llvm-svn: 104039
|
| |
|
|
|
|
|
| |
correctly. The Lexer was incorrectly eating the newline casusing it to branch
to address 0. Updated the test case to use a "0:" label and a branch to "0b".
llvm-svn: 104038
|
| |
|
|
|
|
| |
The old approach was wrong. It had an off-by-one error.
llvm-svn: 104034
|
| |
|
|
|
|
|
|
| |
section header.
Also, create symbol data for LHS of assignment, to match 'as' symbol ordering better.
llvm-svn: 104033
|
| |
|
|
| |
llvm-svn: 104032
|
| |
|
|
| |
llvm-svn: 104031
|
| |
|
|
|
|
|
|
| |
X86::ADC32ri $0, %eax
to
X86::ADC32i32 $0
llvm-svn: 104030
|
| |
|
|
| |
llvm-svn: 104029
|
| |
|
|
|
|
| |
Update the comment.
llvm-svn: 104021
|