[NDS32] Implement fp-as-gp optimization.
[official-gcc.git] / gcc / config / nds32 / constants.md
blob6d42f50c882e1b442fa5151349e10086383ae9e7
1 ;; Constant defintions of Andes NDS32 cpu for GNU compiler
2 ;; Copyright (C) 2012-2018 Free Software Foundation, Inc.
3 ;; Contributed by Andes Technology Corporation.
4 ;;
5 ;; This file is part of GCC.
6 ;;
7 ;; GCC is free software; you can redistribute it and/or modify it
8 ;; under the terms of the GNU General Public License as published
9 ;; by the Free Software Foundation; either version 3, or (at your
10 ;; option) any later version.
12 ;; GCC is distributed in the hope that it will be useful, but WITHOUT
13 ;; ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
14 ;; or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
15 ;; License for more details.
17 ;; You should have received a copy of the GNU General Public License
18 ;; along with GCC; see the file COPYING3.  If not see
19 ;; <http://www.gnu.org/licenses/>.
22 ;; Register numbers.
23 (define_constants
24   [(R8_REGNUM  8)
25    (TA_REGNUM 15)
26    (TP_REGNUM 25)
27    (FP_REGNUM 28)
28    (GP_REGNUM 29)
29    (LP_REGNUM 30)
30    (SP_REGNUM 31)
31   ])
34 ;; The unpec operation index.
35 (define_c_enum "unspec_element" [
36   UNSPEC_COPYSIGN
37   UNSPEC_FCPYNSD
38   UNSPEC_FCPYNSS
39   UNSPEC_FCPYSD
40   UNSPEC_FCPYSS
41   UNSPEC_CLIP
42   UNSPEC_CLIPS
43   UNSPEC_CLO
44   UNSPEC_PBSAD
45   UNSPEC_PBSADA
46   UNSPEC_BSE
47   UNSPEC_BSE_2
48   UNSPEC_BSP
49   UNSPEC_BSP_2
50   UNSPEC_FFB
51   UNSPEC_FFMISM
52   UNSPEC_FLMISM
53   UNSPEC_KDMBB
54   UNSPEC_KDMBT
55   UNSPEC_KDMTB
56   UNSPEC_KDMTT
57   UNSPEC_KHMBB
58   UNSPEC_KHMBT
59   UNSPEC_KHMTB
60   UNSPEC_KHMTT
61   UNSPEC_KSLRAW
62   UNSPEC_KSLRAWU
63   UNSPEC_SVA
64   UNSPEC_SVS
65   UNSPEC_WSBH
66   UNSPEC_LWUP
67   UNSPEC_LBUP
68   UNSPEC_SWUP
69   UNSPEC_SBUP
70   UNSPEC_UALOAD_HW
71   UNSPEC_UALOAD_W
72   UNSPEC_UALOAD_DW
73   UNSPEC_UASTORE_HW
74   UNSPEC_UASTORE_W
75   UNSPEC_UASTORE_DW
76   UNSPEC_GOTINIT
77   UNSPEC_GOT
78   UNSPEC_GOTOFF
79   UNSPEC_PLT
80   UNSPEC_TLSGD
81   UNSPEC_TLSLD
82   UNSPEC_TLSIE
83   UNSPEC_TLSLE
84   UNSPEC_ROUND
85   UNSPEC_VEC_COMPARE
86   UNSPEC_KHM
87   UNSPEC_KHMX
88   UNSPEC_CLIP_OV
89   UNSPEC_CLIPS_OV
90   UNSPEC_BITREV
91   UNSPEC_KABS
92   UNSPEC_LOOP_END
93   UNSPEC_TLS_DESC
94   UNSPEC_TLS_IE
95   UNSPEC_ADD32
96   UNSPEC_ICT
97   UNSPEC_KADDH
98   UNSPEC_KSUBH
101 ;; The unspec_volatile operation index.
102 (define_c_enum "unspec_volatile_element" [
103   UNSPEC_VOLATILE_EH_RETURN
104   UNSPEC_VOLATILE_ISYNC
105   UNSPEC_VOLATILE_ISB
106   UNSPEC_VOLATILE_DSB
107   UNSPEC_VOLATILE_MSYNC
108   UNSPEC_VOLATILE_MSYNC_ALL
109   UNSPEC_VOLATILE_MSYNC_STORE
110   UNSPEC_VOLATILE_MFSR
111   UNSPEC_VOLATILE_MFUSR
112   UNSPEC_VOLATILE_MTSR
113   UNSPEC_VOLATILE_MTUSR
114   UNSPEC_VOLATILE_SETGIE_EN
115   UNSPEC_VOLATILE_SETGIE_DIS
116   UNSPEC_VOLATILE_FMFCSR
117   UNSPEC_VOLATILE_FMTCSR
118   UNSPEC_VOLATILE_FMFCFG
119   UNSPEC_VOLATILE_JR_ITOFF
120   UNSPEC_VOLATILE_JR_TOFF
121   UNSPEC_VOLATILE_JRAL_ITON
122   UNSPEC_VOLATILE_JRAL_TON
123   UNSPEC_VOLATILE_RET_ITOFF
124   UNSPEC_VOLATILE_RET_TOFF
125   UNSPEC_VOLATILE_STANDBY_NO_WAKE_GRANT
126   UNSPEC_VOLATILE_STANDBY_WAKE_GRANT
127   UNSPEC_VOLATILE_STANDBY_WAKE_DONE
128   UNSPEC_VOLATILE_TEQZ
129   UNSPEC_VOLATILE_TNEZ
130   UNSPEC_VOLATILE_TRAP
131   UNSPEC_VOLATILE_SETEND_BIG
132   UNSPEC_VOLATILE_SETEND_LITTLE
133   UNSPEC_VOLATILE_BREAK
134   UNSPEC_VOLATILE_SYSCALL
135   UNSPEC_VOLATILE_NOP
136   UNSPEC_VOLATILE_LLW
137   UNSPEC_VOLATILE_SCW
138   UNSPEC_VOLATILE_CCTL_L1D_INVALALL
139   UNSPEC_VOLATILE_CCTL_L1D_WBALL_ALVL
140   UNSPEC_VOLATILE_CCTL_L1D_WBALL_ONE_LVL
141   UNSPEC_VOLATILE_CCTL_IDX_WRITE
142   UNSPEC_VOLATILE_CCTL_IDX_READ
143   UNSPEC_VOLATILE_CCTL_VA_WBINVAL_L1
144   UNSPEC_VOLATILE_CCTL_VA_WBINVAL_LA
145   UNSPEC_VOLATILE_CCTL_IDX_WBINVAL
146   UNSPEC_VOLATILE_CCTL_VA_LCK
147   UNSPEC_VOLATILE_DPREF_QW
148   UNSPEC_VOLATILE_DPREF_HW
149   UNSPEC_VOLATILE_DPREF_W
150   UNSPEC_VOLATILE_DPREF_DW
151   UNSPEC_VOLATILE_TLBOP_TRD
152   UNSPEC_VOLATILE_TLBOP_TWR
153   UNSPEC_VOLATILE_TLBOP_RWR
154   UNSPEC_VOLATILE_TLBOP_RWLK
155   UNSPEC_VOLATILE_TLBOP_UNLK
156   UNSPEC_VOLATILE_TLBOP_PB
157   UNSPEC_VOLATILE_TLBOP_INV
158   UNSPEC_VOLATILE_TLBOP_FLUA
159   UNSPEC_VOLATILE_ENABLE_INT
160   UNSPEC_VOLATILE_DISABLE_INT
161   UNSPEC_VOLATILE_SET_PENDING_SWINT
162   UNSPEC_VOLATILE_CLR_PENDING_SWINT
163   UNSPEC_VOLATILE_CLR_PENDING_HWINT
164   UNSPEC_VOLATILE_GET_ALL_PENDING_INT
165   UNSPEC_VOLATILE_GET_PENDING_INT
166   UNSPEC_VOLATILE_SET_INT_PRIORITY
167   UNSPEC_VOLATILE_GET_INT_PRIORITY
168   UNSPEC_VOLATILE_SET_TRIG_LEVEL
169   UNSPEC_VOLATILE_SET_TRIG_EDGE
170   UNSPEC_VOLATILE_GET_TRIG_TYPE
171   UNSPEC_VOLATILE_RELAX_GROUP
172   UNSPEC_VOLATILE_OMIT_FP_BEGIN
173   UNSPEC_VOLATILE_OMIT_FP_END
174   UNSPEC_VOLATILE_POP25_RETURN
175   UNSPEC_VOLATILE_UNALIGNED_FEATURE
176   UNSPEC_VOLATILE_ENABLE_UNALIGNED
177   UNSPEC_VOLATILE_DISABLE_UNALIGNED
178   UNSPEC_VOLATILE_RDOV
179   UNSPEC_VOLATILE_CLROV
182 ;; ------------------------------------------------------------------------