* emit-rtl.c (adjust_address_1): Always copy address to avoid
[official-gcc.git] / gcc / config / 1750a / ms1750.inc
blobcb41e95b649beb603f61b5b07d4174a5c53a3929
1 ;; GCC assembler includefile for AS1750
2 ;;
3 ;; Macros defined:
4 ;;   EFLR.M  #d,#s      Load the three regs starting at R#s to R#d following.
5 ;;   RET.M   #fs        Return from function (uses the framesize #fs)
8 UC      SET     15
10 ; Return from function ; parameter: framesize
11      MACRO RET.M
12         IF `1` > 0
13             IF `1` <= 16
14                 AISP R14,`1`
15             ELSE
16                 AIM  R14,`1`
17             ENDIF
18         ENDIF
19         LR   R15,R14
20         URS  R15
21      ENDMACRO
23 ; Useful instructions missing from the 1750A standard:
25 ; Extended Float Load from Registers
26      MACRO EFLR.M       ; args : #1=dest-regno, #2=source-regno
27 ONE     SET  `1` + 2
28 TWO     SET  `2` + 2
29         IF `1` >= `2` || `1`+2 < `2`
30             LR    R`ONE`,R`TWO`
31             DLR   R`1`,R`2`
32         ELSE
33             DLR   R`1`,R`2`
34             LR    R`ONE`,R`TWO`
35             DLR   R`1`,R`1`     ; Just to update condition codes
36         ENDIF
37      ENDMACRO
39 ; The following leave the condition codes haywire. But that is
40 ; accounted for (see notice_update_cc in config/1750a.c.)
42 ; Double ANd Register with Register
43      MACRO DANR.M
44 ONE     SET  `1` + 1
45 TWO     SET  `2` + 1
46         ANDR  R`1`,R`2`
47         ANDR  R`ONE`,R`TWO`
48      ENDMACRO
50 ; Double OR Register with Register
51      MACRO DORR.M
52 ONE     SET  `1` + 1
53 TWO     SET  `2` + 1
54         ORR   R`1`,R`2`
55         ORR   R`ONE`,R`TWO`
56      ENDMACRO
58 ; Double eXoR Register with Register
59      MACRO DXRR.M
60 ONE     SET  `1` + 1
61 TWO     SET  `2` + 1
62         XORR  R`1`,R`2`
63         XORR  R`ONE`,R`TWO`
64      ENDMACRO
66 ; Double Nand Register with register
67      MACRO DNR.M
68 ONE     SET  `1` + 1
69 TWO     SET  `2` + 1
70         NR    R`1`,R`2`
71         NR    R`ONE`,R`TWO`
72      ENDMACRO
74 ; Unsigned Compare Immediate
76      MACRO UCIM.M
77 LAST    SET   `1` + 3
78         PSHM  R`1`,R`LAST`
79 LO      SET   `1` + 1
80         LR    R`LO`,R`1`
81         XORR  R`1`,R`1`
82 HI      SET   `1` + 2
83         XORR  R`HI`,R`HI`
84         LIM   R`LAST`,`2`
85         DCR   R`1`,R`HI`
86         POPM  R`1`,R`LAST`
87      ENDMACRO
90 ; Unsigned Compare Register with register
92      MACRO UCR.M
93         PSHM  R10,R13    ; R12 and R13 are assumed not to be input parameters
94         LR    R13,R`2`
95         LR    R11,R`1`
96         XORR  R12,R12
97         XORR  R10,R10
98         DCR   R10,R12
99         POPM  R10,R13
100      ENDMACRO
103 ; Unsigned Compare register with memory
105      MACRO UC.M
106         PSHM  R10,R13
107         L     R13,`2`
108         LR    R11,R`1`
109         XORR  R12,R12
110         XORR  R10,R10
111         DCR   R10,R12
112         POPM  R10,R13
113      ENDMACRO
116 ; Double Unsigned Compare Register with register
118      MACRO DUCR.M
119         PSHM    R13,R14    ; R13 and R14 are assumed not to be input parameters
120 LOW1    SET     `1` + 1
121 LOW2    SET     `2` + 1
122         PSHM    R`1`,R`LOW1`
123         PSHM    R`2`,R`LOW2`
124         LR      R13,R`LOW1`
125         LR      R14,R`LOW2`
126         DSRL    R`1`,1
127         DSRL    R`2`,1
128         DCR     R`1`,R`2`
129         BNE     +6
130         ANDM    R13,1
131         ANDM    R14,1
132         CR      R13,R14
133         POPM    R`2`,R`LOW2`
134         POPM    R`1`,R`LOW1`
135         POPM    R13,R14
136      ENDMACRO
139 ; Double Unsigned Compare register with memory
141      MACRO DUC.M
142         PSHM    R13,R14    ; R13 and R14 are assumed not to be input parameters
143 LOW1    SET     `1` + 1
144         PSHM    R`1`,R`LOW1`
145         DL      R13,`2`
146         DSRL    R`1`,1
147         DSRL    R13,1
148         DCR     R`1`,R13
149         BNE     +10        ; done, go pop the saved regs
150         DL      R13,`2`    ; interested in the *low* word (R14)
151         L       R13,1,R15
152         ANDM    R13,1
153         ANDM    R14,1
154         CR      R13,R14
155         POPM    R`1`,R`LOW1`
156         POPM    R13,R14
157      ENDMACRO