aboutsummaryrefslogtreecommitdiffstats
path: root/lcc/sparc/solaris/tst/struct.sbk
diff options
context:
space:
mode:
Diffstat (limited to 'lcc/sparc/solaris/tst/struct.sbk')
-rwxr-xr-xlcc/sparc/solaris/tst/struct.sbk377
1 files changed, 377 insertions, 0 deletions
diff --git a/lcc/sparc/solaris/tst/struct.sbk b/lcc/sparc/solaris/tst/struct.sbk
new file mode 100755
index 0000000..720b5a9
--- /dev/null
+++ b/lcc/sparc/solaris/tst/struct.sbk
@@ -0,0 +1,377 @@
+.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