1;  assemble as "as -o reg-pa64 reg-pa64.s"
2; or
3;  cc -g -o +DA2.0W
4;
5; PA-RISC 2.0 register contents test.
6;
7        .level 2.0W
8
9        .code
10        .export main,ENTRY
11        .export mainend,CODE
12        .export lab1,CODE
13        .space $TEXT$
14        .subspa $CODE$
15one
16        .align 8
17        .stringz        "?\xF0\x00\x00\x00\x00\x00\x00@\x00\x00\x00\x00\x00\x00"
18
19main
20        .proc
21        .callinfo NO_CALLS,FRAME=0
22        .entry
23
24        ;; Test we have right register numbers
25        ;;
26        ADD             %r0,%r0,%r1             ;    0
27        LDI             1,%r1                   ;    1
28        ;;
29        ;; Don't put anything into r2 or r3--they are special registers.
30        ;;
31        ADD             %r1,%r1,%r4             ;    2
32        ADD             %r4,%r4,%r5             ;    4
33        ADD             %r5,%r5,%r6             ;    8
34        ADD             %r6,%r6,%r7             ;   16
35        ADD             %r7,%r7,%r8             ;   32
36        ADD             %r8,%r8,%r9             ;   64
37        ADD             %r9,%r9,%r10            ;  128
38        ADD             %r10,%r10,%r11          ;  256
39        ADD             %r11,%r11,%r12          ;  512
40        ADD             %r12,%r12,%r13          ; 1024
41        ADD             %r13,%r13,%r14          ; 2048
42        ADD             %r14,%r14,%r15          ; 4096
43        ADD             %r15,%r15,%r16          ; 9192
44
45        ;; Test high bits, to be sure we show them.
46        ;;
47        LDI             0xde,%r19               ; "de"
48        DEPD,Z          %r19,55,56,%r19         ; "de00"
49        LDI             0xad,%r18               ; "ad"
50        ADD             %r18,%r19,%r19          ; "dead"
51        DEPD,Z          %r19,55,56,%r19         ; "dead00"
52        LDI             0xbe,%r18               ; "be"
53        ADD             %r18,%r19,%r19          ; "deadbe"
54        DEPD,Z          %r19,55,56,%r19         ; "deadbe00"
55        LDI             0xef,%r18               ; "ef"
56        ADD             %r18,%r19,%r19          ; "deadbeef"
57        ;
58        DEPD,Z          %r19,55,56,%r19         ; "deadbeef00"
59        LDI             0xba,%r18               ; "ba"
60        ADD             %r18,%r19,%r19          ; "deadbeefba"
61        DEPD,Z          %r19,55,56,%r19         ; "deadbeefba00"
62        LDI             0xdc,%r18               ; "dc"
63        ADD             %r18,%r19,%r19          ; "deadbeefbadc"
64        DEPD,Z          %r19,55,56,%r19         ; "deadbeefbadc00"
65        LDI             0xad,%r18               ; "ad"
66        ADD             %r18,%r19,%r19          ; "deadbeefbadcad"
67        DEPD,Z          %r19,55,56,%r19         ; "deadbeefbadcad00"
68        LDI             0xee,%r18               ; "ee"
69        ADD             %r18,%r19,%r19          ; "deadbeefbadcadee"
70
71lab1    ;; Test floating point registers
72        ;;
73        ;; LDIL            LR'one,%r22             ;
74        ;; FLDD            RR'one(%r22),%fr4       ;   1.0
75        ;; FLDD            RR'one+8(%r22),%fr5     ;   2.0
76        ;; FLDD            RR'one+8(%r22),%fr6     ;   2.0
77	B,L		here,%r2
78	NOP
79here	DEPDI		0x0,63,2,%r2
80	LDO		one-here(%r2),%r2
81	FLDD		0(%r2),%fr4
82	FLDD		8(%r2),%fr5
83	FLDD		8(%r2),%fr6
84
85        FMPY,DBL        %fr5,%fr6,%fr7          ;   4.0
86        FMPY,DBL        %fr6,%fr7,%fr8          ;   8.0
87        FMPY,DBL        %fr7,%fr8,%fr9          ;  32.0
88        FMPY,DBL        %fr8,%fr9,%fr10         ; 256.0
89
90        ;; The NOP prevents anything from end.o or crt0.o from
91        ;; being appended immediately after "mainend".  If that
92        ;; happens, then we may have other labels that have the
93        ;; same address as "mainend", and thus the debugger
94        ;; may symbolize this PC to something other than "mainend".
95mainend
96        NOP
97        .exit
98        .procend
99
100        .space $TEXT$
101        .subspa $CODE$
102        .subspa $LIT$        ;; <don't use> ,QUAD=0,ALIGN=8,ACCESS=0x2c,SORT=16
103        .end
104
105