| Commit message (Collapse) | Author | Age | Files | Lines | 
| | 
| 
| 
| 
| 
|  | 
nop. Emit the nop directly for PPC.
llvm-svn: 46398
 | 
| | 
| 
| 
| 
| 
| 
|  | 
a "nop" instruction so that we don't have the function's label associated
with something that it's not supposed to be associated with.
llvm-svn: 46394
 | 
| | 
| 
| 
| 
| 
| 
| 
|  | 
was actually passing a completely incorrect size to sys_icache_invalidate.
Instead of having the JITEmitter do this (which doesn't have the correct 
size), just make the target sync its own stubs.
llvm-svn: 46354
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
precision integers.  This won't actually work
(and most of the code is dead) unless the new
legalization machinery is turned on.  While
there, I rationalized the handling of i1, and
removed some bogus (and unused) sextload patterns.
For i1, this could result in microscopically
better code for some architectures (not X86).
It might also result in worse code if annotating
with AssertZExt nodes turns out to be more harmful
than helpful.
llvm-svn: 46280
 | 
| | 
| 
| 
|  | 
llvm-svn: 46267
 | 
| | 
| 
| 
|  | 
llvm-svn: 46174
 | 
| | 
| 
| 
|  | 
llvm-svn: 46165
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
_test:
	fctiwz f0, f1
	stfiwx f0, 0, r4
	blr 
instead of:
_test:
	fctiwz f0, f1
	stfd f0, -8(r1)
	nop
	nop
	lwz r2, -4(r1)
	stb r2, 0(r4)
	blr 
The former is not correct (stores 4 bytes, not 1).
llvm-svn: 46161
 | 
| | 
| 
| 
| 
| 
| 
| 
|  | 
as weak globals rather than commons.  While not wrong,
this change tickled a latent bug in Darwin's strip,
so revert it for now as a workaround.
llvm-svn: 46144
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
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
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
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
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
|  | 
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
 | 
| | 
| 
| 
|  | 
llvm-svn: 46019
 | 
| | 
| 
| 
| 
| 
|  | 
Move definition of 'trap' sdnode up from x86 instrinfo to targetselectiondag.td.
llvm-svn: 46017
 | 
| | 
| 
| 
|  | 
llvm-svn: 45871
 | 
| | 
| 
| 
| 
| 
| 
|  | 
Cosmetic changes to spacing to match gcc (some dejagnu
tests actually care).
llvm-svn: 45848
 | 
| | 
| 
| 
| 
| 
| 
| 
|  | 
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
 | 
| | 
| 
| 
| 
| 
|  | 
inferred from the instr patterns.
llvm-svn: 45824
 | 
| | 
| 
| 
|  | 
llvm-svn: 45821
 | 
| | 
| 
| 
| 
| 
| 
|  | 
because assembler/linker can't cope with weak absolutes.
PR 1880.
llvm-svn: 45811
 | 
| | 
| 
| 
| 
| 
| 
| 
|  | 
on 64-bit builds.  Analysis and original patch
by Török Edwin.  Code audit found another place
with the same problem, also fixed here.
llvm-svn: 45746
 | 
| | 
| 
| 
| 
| 
| 
| 
|  | 
the code generated is not wonderful.  This turns a miscompilation into
a code quality bug (noted in the ppc readme).  This fixes PR642, which
is over 2 years old (!).  Nate, please review this.
llvm-svn: 45742
 | 
| | 
| 
| 
| 
| 
| 
|  | 
Make MachineInstr::getDesc return a reference instead
of a pointer, since it can never be null.
llvm-svn: 45695
 | 
| | 
| 
| 
|  | 
llvm-svn: 45691
 | 
| | 
| 
| 
|  | 
llvm-svn: 45683
 | 
| | 
| 
| 
|  | 
llvm-svn: 45680
 | 
| | 
| 
| 
|  | 
llvm-svn: 45679
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
that it is cheap and efficient to get.
Move a variety of predicates from TargetInstrInfo into 
TargetInstrDescriptor, which makes it much easier to query a predicate
when you don't have TII around.  Now you can use MI->getDesc()->isBranch()
instead of going through TII, and this is much more efficient anyway. Not
all of the predicates have been moved over yet.
Update old code that used MI->getInstrDescriptor()->Flags to use the
new predicates in many places.
llvm-svn: 45674
 | 
| | 
| 
| 
| 
| 
|  | 
Some day I'll get it all moved over...
llvm-svn: 45672
 | 
| | 
| 
| 
|  | 
llvm-svn: 45667
 | 
| | 
| 
| 
|  | 
llvm-svn: 45656
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
instead of "ISD::STORE".  This allows us to mark target-specific dag
nodes as storing (such as ppc byteswap stores).  This allows us to remove
more explicit isStore flags from the .td files.
Finally, add a warning for when a .td file contains an explicit 
isStore and tblgen is able to infer it.
llvm-svn: 45654
 | 
| | 
| 
| 
|  | 
llvm-svn: 45652
 | 
| | 
| 
| 
|  | 
llvm-svn: 45562
 | 
| | 
| 
| 
| 
| 
|  | 
for non-function GV relocations that require function address stubs (e.g. Mac OS X in non-static mode).
llvm-svn: 45527
 | 
| | 
| 
| 
|  | 
llvm-svn: 45493
 | 
| | 
| 
| 
|  | 
llvm-svn: 45484
 | 
| | 
| 
| 
| 
| 
|  | 
version.  It's unclear why gcc would ever compile this...
llvm-svn: 45476
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
a header file from libcodegen.  This violates a layering order: codegen
depends on target, not the other way around.  The fix to this is to 
split TII into two classes, TII and TargetInstrInfoImpl, which defines
stuff that depends on libcodegen.  It is defined in libcodegen, where 
the base is not.
llvm-svn: 45475
 | 
| | 
| 
| 
| 
| 
|  | 
Machine-level API cleanup instigated by Chris.
llvm-svn: 45470
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
that "machine" classes are used to represent the current state of
the code being compiled.  Given this expanded name, we can start 
moving other stuff into it.  For now, move the UsedPhysRegs and
LiveIn/LoveOuts vectors from MachineFunction into it.
Update all the clients to match.
This also reduces some needless #includes, such as MachineModuleInfo
from MachineFunction.
llvm-svn: 45467
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
e.g. MO.isMBB() instead of MO.isMachineBasicBlock().  I don't plan on 
switching everything over, so new clients should just start using the 
shorter names.
Remove old long accessors, switching everything over to use the short
accessor: getMachineBasicBlock() -> getMBB(), 
getConstantPoolIndex() -> getIndex(), setMachineBasicBlock -> setMBB(), etc.
llvm-svn: 45464
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
- Eliminate the static "print" method for operands, moving it
    into MachineOperand::print.
  - Change various set* methods for register flags to take a bool
    for the value to set it to.  Remove unset* methods.
  - Group methods more logically by operand flavor in MachineOperand.h
llvm-svn: 45461
 | 
| | 
| 
| 
| 
| 
|  | 
Likewise setImmedValue -> setImm
llvm-svn: 45453
 | 
| | 
| 
| 
|  | 
llvm-svn: 45418
 | 
| | 
| 
| 
|  | 
llvm-svn: 45415
 | 
| | 
| 
| 
|  | 
llvm-svn: 45282
 | 
| | 
| 
| 
|  | 
llvm-svn: 45281
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
are a couple of issues that show up with the optimizer,
but I don't think they're really EH problems.
(llvm-gcc testsuite users note:  By default the testsuite
uses the unwinding code that's built as part of your local
llvm-gcc, which does not work.  You need to trick it into
using the installed system unwinding code to get useful
results.)
llvm-svn: 45221
 | 
| | 
| 
| 
|  | 
llvm-svn: 45190
 |