lilium-voyager/code/tools/lcc/sparc/solaris/tst/struct.sbk
2005-10-04 15:18:22 +00:00

377 lines
5.4 KiB
Text

.global addpoint
.section ".text"
.align 4
addpoint:
save %sp,-96,%sp
ld [%i0],%i5
ld [%i1],%i4
add %i5,%i4,%i5
st %i5,[%i0]
add %i0,4,%i5
ld [%i5],%i4
ld [%i1+4],%i3
add %i4,%i3,%i4
st %i4,[%i5]
ld [%fp+64],%i5
ld [%r24+0],%r1
ld [%r24+4],%r2
st %r1,[%r29+0]
st %r2,[%r29+4]
.L1:
jmp %i7+12; restore
.type addpoint,#function
.size addpoint,.-addpoint
.global canonrect
.align 4
canonrect:
save %sp,-112,%sp
ld [%i0],%i3
ld [%i0+8],%i2
cmp %i3,%i2; bge .L6; nop
ld [%i0],%i5
ba .L7; nop
.L6:
ld [%i0+8],%i5
.L7:
st %i5,[%fp+-16]
ld [%i0+4],%i3
ld [%i0+12],%i2
cmp %i3,%i2; bge .L10; nop
ld [%i0+4],%i4
ba .L11; nop
.L10:
ld [%i0+12],%i4
.L11:
st %i4,[%fp+-12]
ld [%i0],%i2
ld [%i0+8],%i1
cmp %i2,%i1; ble .L14; nop
ld [%i0],%i3
ba .L15; nop
.L14:
ld [%i0+8],%i3
.L15:
st %i3,[%fp+-8]
ld [%i0+4],%i1
ld [%i0+12],%l7
cmp %i1,%l7; ble .L19; nop
ld [%i0+4],%i2
ba .L20; nop
.L19:
ld [%i0+12],%i2
.L20:
st %i2,[%fp+-4]
ld [%fp+64],%i1
add -16,%fp,%l7
ld [%r23+0],%r1
ld [%r23+4],%r2
st %r1,[%r25+0]
st %r2,[%r25+4]
ld [%r23+8],%r1
ld [%r23+12],%r2
st %r1,[%r25+8]
st %r2,[%r25+12]
.L3:
jmp %i7+12; restore
.type canonrect,#function
.size canonrect,.-canonrect
.global makepoint
.align 4
makepoint:
save %sp,-104,%sp
st %i0,[%fp+-8]
st %i1,[%fp+-4]
ld [%fp+64],%i5
add -8,%fp,%i4
ld [%r28+0],%r1
ld [%r28+4],%r2
st %r1,[%r29+0]
st %r2,[%r29+4]
.L21:
jmp %i7+12; restore
.type makepoint,#function
.size makepoint,.-makepoint
.global makerect
.align 4
makerect:
save %sp,-128,%sp
add -16,%fp,%i5
ld [%r24+0],%r1
ld [%r24+4],%r2
st %r1,[%r29+0]
st %r2,[%r29+4]
add -8,%fp,%i5
ld [%r25+0],%r1
ld [%r25+4],%r2
st %r1,[%r29+0]
st %r2,[%r29+4]
add -32,%fp,%i5
add -16,%fp,%i4
ld [%r28+0],%r1
ld [%r28+4],%r2
st %r1,[%r29+0]
st %r2,[%r29+4]
ld [%r28+8],%r1
ld [%r28+12],%r2
st %r1,[%r29+8]
st %r2,[%r29+12]
add -32,%fp,%o0
ld [%fp+64],%i5
call canonrect; st %i5,[%sp+64]; unimp 16&0xfff
.L24:
jmp %i7+12; restore
.type makerect,#function
.size makerect,.-makerect
.global ptinrect
.align 4
ptinrect:
ld [%o0],%o4
ld [%o1],%o3
cmp %o4,%o3; bl .L29; nop
ld [%o1+8],%o3
cmp %o4,%o3; bge .L29; nop
ld [%o0+4],%o4
ld [%o1+4],%o3
cmp %o4,%o3; bl .L29; nop
ld [%o1+12],%o3
cmp %o4,%o3; bge .L29; nop
set 1,%o5
ba .L30; nop
.L29:
mov %g0,%o5
.L30:
mov %o5,%o0
.L27:
retl; nop
.type ptinrect,#function
.size ptinrect,.-ptinrect
.section ".data"
.global y
.type y,#object
.size y,3
.align 1
y:
.byte 97
.byte 98
.byte 0
.global odd
.section ".text"
.align 4
odd:
save %sp,-96,%sp
add -3,%fp,%i5
ldub [%r24+0],%r1
ldub [%r24+1],%r2
stb %r1,[%r29+0]
stb %r2,[%r29+1]
ldub [%r24+2],%r1
stb %r1,[%r29+2]
set .L32,%o0
add -3,%fp,%o1
call printf; nop
mov %g0,%i0
.L31:
ret; restore
.type odd,#function
.size odd,.-odd
.section ".rodata"
.align 4
.L34:
.word 0x0
.word 0x0
.align 4
.L35:
.word 0x140
.word 0x140
.align 4
.L36:
.word 0xffffffff
.word 0xffffffff
.word 0x1
.word 0x1
.word 0x14
.word 0x12c
.word 0x1f4
.word 0x190
.global main
.section ".text"
.align 4
main:
save %sp,-240,%sp
add -64,%fp,%i4
set .L34,%i3
ld [%r27+0],%r1
ld [%r27+4],%r2
st %r1,[%r28+0]
st %r2,[%r28+4]
add -72,%fp,%i4
set .L35,%i3
ld [%r27+0],%r1
ld [%r27+4],%r2
st %r1,[%r28+0]
st %r2,[%r28+4]
add -32,%fp,%i4
set .L36,%i3
add %r27,32,%r27
add %r28,32,%r3
1: dec 8,%r3
ld [%r27+-8],%r1
ld [%r27+-4],%r2
st %r1,[%r3+0]
st %r2,[%r3+4]
cmp %r3,%r28; bgt 1b; dec 8,%r27
set -10,%i4
mov %i4,%o0
mov %i4,%o1
add -80,%fp,%i4
call makepoint; st %i4,[%sp+64]; unimp 8&0xfff
add -88,%fp,%i4
add -72,%fp,%i3
ld [%r27+0],%r1
ld [%r27+4],%r2
st %r1,[%r28+0]
st %r2,[%r28+4]
add -88,%fp,%o0
add -80,%fp,%o1
add -96,%fp,%i4
call addpoint; st %i4,[%sp+64]; unimp 8&0xfff
set 10,%i4
mov %i4,%o0
mov %i4,%o1
add -104,%fp,%i4
call makepoint; st %i4,[%sp+64]; unimp 8&0xfff
add -112,%fp,%i4
add -64,%fp,%i3
ld [%r27+0],%r1
ld [%r27+4],%r2
st %r1,[%r28+0]
st %r2,[%r28+4]
add -112,%fp,%o0
add -104,%fp,%o1
add -120,%fp,%i4
call addpoint; st %i4,[%sp+64]; unimp 8&0xfff
add -96,%fp,%o0
add -120,%fp,%o1
add -48,%fp,%i4
call makerect; st %i4,[%sp+64]; unimp 16&0xfff
mov %g0,%i5
ba .L40; nop
.L37:
sll %i5,3,%i4
add -32,%fp,%i3
ld [%i4+%i3],%o0
add -28,%fp,%i3
ld [%i4+%i3],%o1
add -56,%fp,%i4
call makepoint; st %i4,[%sp+64]; unimp 8&0xfff
set .L41,%o0
sll %i5,3,%i4
add -32,%fp,%i3
ld [%i4+%i3],%o1
ld [%fp+-52],%o2
call printf; nop
add -128,%fp,%i4
add -56,%fp,%i3
ld [%r27+0],%r1
ld [%r27+4],%r2
st %r1,[%r28+0]
st %r2,[%r28+4]
add -128,%fp,%o0
add -144,%fp,%i4
add -48,%fp,%i3
ld [%r27+0],%r1
ld [%r27+4],%r2
st %r1,[%r28+0]
st %r2,[%r28+4]
ld [%r27+8],%r1
ld [%r27+12],%r2
st %r1,[%r28+8]
st %r2,[%r28+12]
add -144,%fp,%o1
call ptinrect; nop
cmp %o0,0; bne .L44; nop
set .L46,%o0
call printf; nop
.L44:
set .L47,%o0
ld [%fp+-48],%o1
ld [%fp+-44],%o2
ld [%fp+-40],%o3
ld [%fp+-36],%o4
call printf; nop
.L38:
add %i5,1,%i5
.L40:
mov %i5,%i4
set 4,%i3
cmp %i4,%i3; blu .L37; nop
add -123,%fp,%i4
set y,%i3
ldub [%r27+0],%r1
ldub [%r27+1],%r2
stb %r1,[%r28+0]
stb %r2,[%r28+1]
ldub [%r27+2],%r1
stb %r1,[%r28+2]
add -123,%fp,%o0
call odd; nop
mov %g0,%o0
call exit; nop
mov %g0,%i0
.L33:
ret; restore
.type main,#function
.size main,.-main
.section ".rodata"
.align 1
.L47:
.byte 119
.byte 105
.byte 116
.byte 104
.byte 105
.byte 110
.byte 32
.byte 91
.byte 37
.byte 100
.byte 44
.byte 37
.byte 100
.byte 59
.byte 32
.byte 37
.byte 100
.byte 44
.byte 37
.byte 100
.byte 93
.byte 10
.byte 0
.align 1
.L46:
.byte 110
.byte 111
.byte 116
.byte 32
.byte 0
.align 1
.L41:
.byte 40
.byte 37
.byte 100
.byte 44
.byte 37
.byte 100
.byte 41
.byte 32
.byte 105
.byte 115
.byte 32
.byte 0
.align 1
.L32:
.byte 37
.byte 115
.byte 10
.byte 0