| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
|
|
|
| |
Added 2 new subclasses - X86ELFObjectWriter and ARMELFObectWriter.
ARM and X86 require different code for RecordRelocation(), possibly others.
llvm-svn: 119149
|
| |
|
|
|
|
|
|
|
|
|
| |
This moves most of the isUsed logic to the MCSymbol itself. With this we
get a bit more relaxed about allowing definitions after uses: uses that
don't evaluate their argument immediately (jmp foo) are accepted.
ddunbar, this was the smallest compromise I could think of that lets us
accept gcc (and clang!) assembly.
llvm-svn: 119144
|
| |
|
|
|
|
| |
No functionality change.
llvm-svn: 119142
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
directly on the mac. This is very early, doesn't support relocations and
has a terrible hack to avoid .machine from being printed, but despite
that it generates an bitwise-identical-to-cctools .o file for stuff like
this:
define i32 @test() nounwind { ret i32 42 }
I don't plan to continue pushing this forward, but if anyone else was
interested in doing it, it should be really straight-forward.
llvm-svn: 119136
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
into the immediate field. This allows us to encode stuff like this:
lbz r3, lo16(__ZL4init)(r4) ; globalopt.cpp:5
; encoding: [0x88,0x64,A,A]
; fixup A - offset: 0, value: lo16(__ZL4init), kind: fixup_ppc_lo16
stw r3, lo16(__ZL1s)(r5) ; globalopt.cpp:6
; encoding: [0x90,0x65,A,A]
; fixup A - offset: 0, value: lo16(__ZL1s), kind: fixup_ppc_lo16
With this, we should have a completely function MCCodeEmitter for PPC, wewt.
llvm-svn: 119134
|
| |
|
|
|
|
|
|
|
| |
modes. For example, we now get:
ld r3, lo16(_G)(r3) ; encoding: [0xe8,0x63,A,0bAAAAAA00]
; fixup A - offset: 0, value: lo16(_G), kind: fixup_ppc_lo14
llvm-svn: 119133
|
| |
|
|
|
|
|
| |
print DBG_VALUE instructions. This should unbreak the llvm-gcc-powerpc-darwin9
buildbot.
llvm-svn: 119132
|
| |
|
|
| |
llvm-svn: 119130
|
| |
|
|
| |
llvm-svn: 119129
|
| |
|
|
| |
llvm-svn: 119128
|
| |
|
|
|
|
|
| |
lis r4, ha16(__ZL4init) ; encoding: [0x3c,0x80,A,A]
; fixup A - offset: 0, value: ha16(__ZL4init), kind: fixup_ppc_ha16
llvm-svn: 119127
|
| |
|
|
|
|
|
| |
beq cr0, LBB0_4 ; encoding: [0x41,0x82,A,0bAAAAAA00]
; fixup A - offset: 0, value: LBB0_4, kind: fixup_ppc_brcond14
llvm-svn: 119126
|
| |
|
|
|
|
|
|
| |
as direct calls. Change conditional branches to encode with
their own method, simplifying the JIT encoder and making room
for adding an mc fixup.
llvm-svn: 119125
|
| |
|
|
| |
llvm-svn: 119124
|
| |
|
|
|
|
|
|
|
|
| |
code in the JIT. Use this to form the first fixup for the PPC backend,
giving us stuff like this:
bl L_foo$stub ; encoding: [0b010010AA,A,A,0bAAAAAA01]
; fixup A - offset: 0, value: L_foo$stub, kind: fixup_ppc_br24
llvm-svn: 119123
|
| |
|
|
| |
llvm-svn: 119122
|
| |
|
|
| |
llvm-svn: 119121
|
| |
|
|
|
|
| |
Switch the ARM backend to use 'let' instead of 'set' with this change.
llvm-svn: 119120
|
| |
|
|
| |
llvm-svn: 119119
|
| |
|
|
|
|
|
|
|
|
| |
to encode all of these instructions correctly (for example):
mflr r0 ; encoding: [0x7c,0x08,0x02,0xa6]
stw r0, 8(r1) ; encoding: [0x90,0x01,0x00,0x08]
stwu r1, -64(r1) ; encoding: [0x94,0x21,0xff,0xc0]
llvm-svn: 119118
|
| |
|
|
| |
llvm-svn: 119117
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
fixups yet, and doesn't handle actually encoding operand values,
but this is enough for llc -show-mc-encoding to show the base
instruction encoding information, e.g.:
mflr r0 ; encoding: [0x7c,0x08,0x02,0xa6]
stw r0, 8(r1) ; encoding: [0x90,0x00,0x00,0x00]
stwu r1, -64(r1) ; encoding: [0x94,0x00,0x00,0x00]
Ltmp0:
lhz r4, 4(r3) ; encoding: [0xa0,0x00,0x00,0x00]
cmplwi cr0, r4, 8 ; encoding: [0x28,0x00,0x00,0x00]
beq cr0, LBB0_2 ; encoding: [0x40,0x00,0x00,0x00]
llvm-svn: 119116
|
| |
|
|
| |
llvm-svn: 119115
|
| |
|
|
| |
llvm-svn: 119114
|
| |
|
|
|
|
|
| |
instructions, allowing is to eliminate some dead operand
printing methods from the instprinter.
llvm-svn: 119113
|
| |
|
|
| |
llvm-svn: 119112
|
| |
|
|
|
|
| |
new instprinting logic is there.
llvm-svn: 119111
|
| |
|
|
| |
llvm-svn: 119110
|
| |
|
|
|
|
| |
strd. pr8113.
llvm-svn: 119109
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
The only change in the output is:
1) we get a better comment on mfcr, we get:
mfcr r2 ; cr2
instead of:
mfcr r2 ; 32
2) we no longer emit $stub's on powerpc/leopard. The Leopard
linker autosynthesizes them.
llvm-svn: 119108
|
| |
|
|
| |
llvm-svn: 119107
|
| |
|
|
|
|
|
|
|
| |
different ways. Add $non_lazy_ptr support, and proper lowering for
global values.
Now all the ppc regression tests pass with the new instruction printer.
llvm-svn: 119106
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
nodes to indicate when ha16/lo16 modifiers should be used. This lets
us pass PowerPC/indirectbr.ll.
The one annoying thing about this patch is that the MCSymbolExpr isn't
expressive enough to represent ha16(label1-label2) which we need on
PowerPC. I have a terrible hack in the meantime, but this will have
to be revisited at some point.
Last major conversion item left is global variable references.
llvm-svn: 119105
|
| |
|
|
| |
llvm-svn: 119104
|
| |
|
|
| |
llvm-svn: 119102
|
| |
|
|
| |
llvm-svn: 119098
|
| |
|
|
|
|
| |
out of TargetRegisterInfo to TargetFrameInfo, which is definitely much better suitable place
llvm-svn: 119097
|
| |
|
|
| |
llvm-svn: 119096
|
| |
|
|
|
|
| |
a central location. This also makes us a bit more compatible with gas.
llvm-svn: 119094
|
| |
|
|
|
|
|
|
| |
and have isel apply to to call operands as required. This allows
us to get $stub suffixes on label references on ppc/tiger with the
new instprinter, fixing two tests. Only 2 to go.
llvm-svn: 119093
|
| |
|
|
| |
llvm-svn: 119092
|
| |
|
|
|
|
| |
lowering support for MovePCtoLR[8]. Down to 4 failures again.
llvm-svn: 119090
|
| |
|
|
|
|
|
| |
since it is trivial and will be shared between ppc and x86.
This substantially simplifies the X86 backend also.
llvm-svn: 119089
|
| |
|
|
| |
llvm-svn: 119088
|
| |
|
|
|
|
|
|
| |
on the operand, required for .o file writing and fixing
the PowerPC/mult-alt-generic-powerpc64.ll failure with the new
instprinter.
llvm-svn: 119087
|
| |
|
|
| |
llvm-svn: 119086
|
| |
|
|
|
|
| |
the aborting printSpecial() method. This gets us to 8 failures.
llvm-svn: 119084
|
| |
|
|
|
|
| |
printing nothing. This gets us back up to 24 failures.
llvm-svn: 119083
|
| |
|
|
|
|
| |
about handling $stub, lo/hi etc.
llvm-svn: 119082
|
| |
|
|
| |
llvm-svn: 119081
|