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