diff options
Diffstat (limited to 'code/tools/lcc/sparc/solaris/tst/fields.sbk')
-rw-r--r-- | code/tools/lcc/sparc/solaris/tst/fields.sbk | 309 |
1 files changed, 309 insertions, 0 deletions
diff --git a/code/tools/lcc/sparc/solaris/tst/fields.sbk b/code/tools/lcc/sparc/solaris/tst/fields.sbk new file mode 100644 index 0000000..e23fbe2 --- /dev/null +++ b/code/tools/lcc/sparc/solaris/tst/fields.sbk @@ -0,0 +1,309 @@ +.section ".data" +.global x +.type x,#object +.size x,16 +.align 4 +x: +.word 0x1 +.byte 0x2 +.skip 3 +.byte 0x0 +.byte 0x34 +.skip 2 +.byte 0xa +.byte 0x6 +.skip 2 +.global i +.type i,#object +.size i,4 +.align 4 +i: +.word 0x10 +.global y +.type y,#object +.size y,8 +.align 4 +y: +.byte 0xe0 +.skip 3 +.byte 0x0 +.byte 0x0 +.byte 0x0 +.byte 0x9 +.global main +.section ".text" +.align 4 +main: +save %sp,-96,%sp +set .L4,%o0 +set x,%i5 +ld [%i5],%o1 +set x+4,%i5 +ldsb [%i5],%o2 +set x+8,%i5 +ld [%i5],%i5 +sra %i5,20,%o3 +set x+8,%i5 +ld [%i5],%i5 +sll %i5,12,%i5 +sra %i5,28,%o4 +set x+12,%i5 +ld [%i5],%i5 +sll %i5,4,%i5 +sra %i5,29,%o5 +set x+13,%i5 +ldsb [%i5],%i5 +st %i5,[%sp+4*6+68] +call printf; nop +set .L10,%o0 +set y,%i5 +ld [%i5],%i5 +srl %i5,30,%i4 +set 3,%i3 +and %i4,%i3,%o1 +srl %i5,26,%i5 +set 15,%i4 +and %i5,%i4,%o2 +set y+4,%i5 +ld [%i5],%o3 +call printf; nop +set x+8,%i5 +ld [%i5],%i4 +set 0xfff0ffff,%i3 +and %i4,%i3,%i4 +set i,%i3 +ld [%i3],%i3 +sll %i3,28,%i3 +sra %i3,28,%i3 +sll %i3,16,%i3 +set 0xf0000,%i2 +and %i3,%i2,%i3 +or %i4,%i3,%i4 +st %i4,[%i5] +set x+12,%i5 +ld [%i5],%i4 +set 0xf1ffffff,%i3 +and %i4,%i3,%i4 +st %i4,[%i5] +set .L4,%o0 +set x,%i5 +ld [%i5],%o1 +set x+4,%i5 +ldsb [%i5],%o2 +set x+8,%i5 +ld [%i5],%i5 +sra %i5,20,%o3 +set x+8,%i5 +ld [%i5],%i5 +sll %i5,12,%i5 +sra %i5,28,%o4 +set x+12,%i5 +ld [%i5],%i5 +sll %i5,4,%i5 +sra %i5,29,%o5 +set x+13,%i5 +ldsb [%i5],%i5 +st %i5,[%sp+4*6+68] +call printf; nop +set y,%i5 +ld [%i5],%i4 +set 0x3fffffff,%i3 +and %i4,%i3,%i4 +set 0x80000000,%i3 +or %i4,%i3,%i4 +st %i4,[%i5] +set y+4,%i5 +set i,%i4 +ld [%i4],%i4 +st %i4,[%i5] +set .L10,%o0 +set y,%i5 +ld [%i5],%i5 +srl %i5,30,%i4 +set 3,%i3 +and %i4,%i3,%o1 +srl %i5,26,%i5 +set 15,%i4 +and %i5,%i4,%o2 +set y+4,%i5 +ld [%i5],%o3 +call printf; nop +set x,%o0 +call f2; nop +mov %g0,%i0 +.L3: +ret; restore +.type main,#function +.size main,.-main +.global f1 +.align 4 +f1: +save %sp,-96,%sp +ld [%i0],%i5 +set 0xc3ffffff,%i4 +and %i5,%i4,%i5 +st %i5,[%i0] +ld [%i0],%i5 +set 0x3fffffff,%i4 +and %i5,%i4,%i5 +set 3,%i4 +and %g0,%i4,%i4 +sll %i4,30,%i4 +set 0xc0000000,%i3 +and %i4,%i3,%i4 +or %i5,%i4,%i5 +st %i5,[%i0] +ld [%i0],%i5 +set 0x3c000000,%i4 +and %i5,%i4,%i5 +cmp %i5,%g0; be .L22; nop +set .L24,%o0 +call printf; nop +.L22: +ld [%i0],%i5 +set 0xc0000000,%i4 +or %i5,%i4,%i5 +st %i5,[%i0] +ld [%i0],%i5 +set 0x3c000000,%i4 +or %i5,%i4,%i5 +st %i5,[%i0] +set .L25,%o0 +ld [%i0],%i5 +srl %i5,30,%i4 +set 3,%i3 +and %i4,%i3,%o1 +srl %i5,26,%i5 +set 15,%i4 +and %i5,%i4,%o2 +call printf; nop +mov %g0,%i0 +.L21: +ret; restore +.type f1,#function +.size f1,.-f1 +.global f2 +.align 4 +f2: +save %sp,-96,%sp +set i,%i4 +ld [%i4],%i4 +cmp %i4,0; bne .L28; nop +set 1,%i5 +ba .L29; nop +.L28: +mov %g0,%i5 +.L29: +ld [%i0],%i4 +set 0x3fffffff,%i3 +and %i4,%i3,%i4 +mov %i5,%i3 +set 3,%i2 +and %i3,%i2,%i3 +sll %i3,30,%i3 +set 0xc0000000,%i2 +and %i3,%i2,%i3 +or %i4,%i3,%i4 +st %i4,[%i0] +mov %i0,%o0 +call f1; nop +ld [%i0],%i4 +set 0xc3ffffff,%i3 +and %i4,%i3,%i4 +mov %g0,%i3 +set 15,%i2 +and %i3,%i2,%i3 +sll %i3,26,%i3 +set 0x3c000000,%i2 +and %i3,%i2,%i3 +or %i4,%i3,%i4 +st %i4,[%i0] +mov %g0,%i0 +.L26: +ret; restore +.type f2,#function +.size f2,.-f2 +.section ".rodata" +.align 1 +.L25: +.byte 112 +.byte 45 +.byte 62 +.byte 97 +.byte 32 +.byte 61 +.byte 32 +.byte 48 +.byte 120 +.byte 37 +.byte 120 +.byte 44 +.byte 32 +.byte 112 +.byte 45 +.byte 62 +.byte 98 +.byte 32 +.byte 61 +.byte 32 +.byte 48 +.byte 120 +.byte 37 +.byte 120 +.byte 10 +.byte 0 +.align 1 +.L24: +.byte 112 +.byte 45 +.byte 62 +.byte 98 +.byte 32 +.byte 33 +.byte 61 +.byte 32 +.byte 48 +.byte 33 +.byte 10 +.byte 0 +.align 1 +.L10: +.byte 121 +.byte 32 +.byte 61 +.byte 32 +.byte 37 +.byte 100 +.byte 32 +.byte 37 +.byte 100 +.byte 32 +.byte 37 +.byte 100 +.byte 10 +.byte 0 +.align 1 +.L4: +.byte 120 +.byte 32 +.byte 61 +.byte 32 +.byte 37 +.byte 100 +.byte 32 +.byte 37 +.byte 100 +.byte 32 +.byte 37 +.byte 100 +.byte 32 +.byte 37 +.byte 100 +.byte 32 +.byte 37 +.byte 100 +.byte 32 +.byte 37 +.byte 100 +.byte 10 +.byte 0 |