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