| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
1. Legalize now always promotes truncstore of i1 to i8.
2. Remove patterns and gunk related to truncstore i1 from targets.
3. Rename the StoreXAction stuff to TruncStoreAction in TLI.
4. Make the TLI TruncStoreAction table a 2d table to handle from/to conversions.
5. Mark a wide variety of invalid truncstores as such in various targets, e.g.
X86 currently doesn't support truncstore of any of its integer types.
6. Add legalize support for truncstores with invalid value input types.
7. Add a dag combine transform to turn store(truncate) into truncstore when
safe.
The later allows us to compile CodeGen/X86/storetrunc-fp.ll to:
_foo:
fldt 20(%esp)
fldt 4(%esp)
faddp %st(1)
movl 36(%esp), %eax
fstps (%eax)
ret
instead of:
_foo:
subl $4, %esp
fldt 24(%esp)
fldt 8(%esp)
faddp %st(1)
fstps (%esp)
movl 40(%esp), %eax
movss (%esp), %xmm0
movss %xmm0, (%eax)
addl $4, %esp
ret
llvm-svn: 46140
|
| |
|
|
| |
llvm-svn: 46126
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
and switch various codegen pieces and the X86 backend over
to using it.
* Add some comments to SelectionDAGNodes.h
* Introduce a second argument to FP_ROUND, which indicates
whether the FP_ROUND changes the value of its input. If
not it is safe to xform things like fp_extend(fp_round(x)) -> x.
llvm-svn: 46125
|
| |
|
|
|
|
|
|
|
|
|
| |
spilled
and the spill is its kill. However, if the local allocator has determined the
register has not been modified (possible when its value was reloaded), it would
not issue a restore. In that case, mark the last use of the virtual register as
kill.
llvm-svn: 46111
|
| |
|
|
| |
llvm-svn: 46104
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
It's not safe to use the two value CombineTo variant to combine away a dead load.
e.g.
v1, chain2 = load chain1, loc
v2, chain3 = load chain2, loc
v3 = add v2, c
Now we replace use of v1 with undef, use of chain2 with chain1.
ReplaceAllUsesWith() will iterate through uses of the first load and update operands:
v1, chain2 = load chain1, loc
v2, chain3 = load chain1, loc
v3 = add v2, c
Now the second load is the same as the first load, SelectionDAG cse will ensure
the use of second load is replaced with the first load.
v1, chain2 = load chain1, loc
v3 = add v1, c
Then v1 is replaced with undef and bad things happen.
llvm-svn: 46099
|
| |
|
|
|
|
| |
associated function is so marked.
llvm-svn: 46088
|
| |
|
|
|
|
| |
simplification. This fixes automotive-basicmath on PPC.
llvm-svn: 46072
|
| |
|
|
|
|
| |
pattern to use EmitStackConvert now.
llvm-svn: 46066
|
| |
|
|
|
|
| |
it to allow it to emit different load and store kinds.
llvm-svn: 46065
|
| |
|
|
|
|
| |
instead of inlining its body.
llvm-svn: 46062
|
| |
|
|
|
|
|
|
|
| |
into the ANY_EXTEND/ZERO_EXTEND/SIGN_EXTEND code to simplify it.
Unmerge the code for FP_ROUND and FP_EXTEND from each other to
make each one simpler.
llvm-svn: 46061
|
| |
|
|
|
|
|
| |
a public SDOperand::reachesChainWithoutSideEffects method. No
functionality change.
llvm-svn: 46050
|
| |
|
|
|
|
|
|
|
| |
ShortenEHDataFor64Bits as a not-very-accurate
abstraction to cover all the changes in DwarfWriter.
Some cosmetic changes to Darwin assembly code for
gcc testsuite compatibility.
llvm-svn: 46029
|
| |
|
|
|
|
| |
executed as frequently in performance sensitive code.
llvm-svn: 46027
|
| |
|
|
|
|
|
| |
it's a function pointer) not MVT::Other. This fixes builtin_trap
lowering on ppc, alpha, ia64
llvm-svn: 46018
|
| |
|
|
|
|
| |
MachineRegisterInfo instead.
llvm-svn: 46016
|
| |
|
|
| |
llvm-svn: 46014
|
| |
|
|
| |
llvm-svn: 46002
|
| |
|
|
|
|
| |
as well as PPC codegen
llvm-svn: 46001
|
| |
|
|
| |
llvm-svn: 45995
|
| |
|
|
| |
llvm-svn: 45972
|
| |
|
|
| |
llvm-svn: 45971
|
| |
|
|
|
|
| |
a pointer to a struct.
llvm-svn: 45939
|
| |
|
|
|
|
|
|
|
| |
has no stores between the load and the end of block. This works
great and sinks hundreds of stores, but we can't turn it on because
machineinstrs don't have volatility information and we don't want to
sink volatile stores :(
llvm-svn: 45894
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
both work right according to the new flags.
This removes the TII::isReallySideEffectFree predicate, and adds
TII::isInvariantLoad.
It removes NeverHasSideEffects+MayHaveSideEffects and adds
UnmodeledSideEffects as machine instr flags. Now the clients
can decide everything they need.
I think isRematerializable can be implemented in terms of the
flags we have now, though I will let others tackle that.
llvm-svn: 45843
|
| |
|
|
| |
llvm-svn: 45841
|
| |
|
|
|
|
|
|
| |
Likewise fix up a bunch of other libcalls. While
there I remove NEG_F32 and NEG_F64 since they are
not used anywhere. This fixes 9 Ada ACATS failures.
llvm-svn: 45833
|
| |
|
|
| |
llvm-svn: 45831
|
| |
|
|
| |
llvm-svn: 45830
|
| |
|
|
| |
llvm-svn: 45815
|
| |
|
|
|
|
|
| |
because assembler/linker can't cope with weak absolutes.
PR 1880.
llvm-svn: 45811
|
| |
|
|
|
|
|
|
| |
equivalent API from
MachineRegisterInfo. Once all clients are switched over, the former will be going away.
llvm-svn: 45805
|
| |
|
|
|
|
|
|
| |
rename and when to insert
copies is made.
llvm-svn: 45799
|
| |
|
|
|
|
| |
information.
llvm-svn: 45797
|
| |
|
|
|
|
| |
the block.
llvm-svn: 45791
|
| |
|
|
| |
llvm-svn: 45787
|
| |
|
|
|
|
|
|
| |
internal structures. There's
still more work to do on this front.
llvm-svn: 45783
|
| |
|
|
| |
llvm-svn: 45775
|
| |
|
|
| |
llvm-svn: 45774
|
| |
|
|
| |
llvm-svn: 45773
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
void test(long long *P) { *P ^= 1; }
into just:
_test:
movl 4(%esp), %eax
xorl $1, (%eax)
ret
instead of code like this:
_test:
movl 4(%esp), %ecx
xorl $1, (%ecx)
movl 4(%ecx), %edx
movl %edx, 4(%ecx)
ret
llvm-svn: 45762
|
| |
|
|
| |
llvm-svn: 45759
|
| |
|
|
| |
llvm-svn: 45738
|
| |
|
|
| |
llvm-svn: 45719
|
| |
|
|
| |
llvm-svn: 45718
|
| |
|
|
| |
llvm-svn: 45700
|
| |
|
|
| |
llvm-svn: 45697
|
| |
|
|
|
|
|
| |
Make MachineInstr::getDesc return a reference instead
of a pointer, since it can never be null.
llvm-svn: 45695
|
| |
|
|
| |
llvm-svn: 45693
|