summaryrefslogtreecommitdiffstats
path: root/gnu/usr.bin/cc/cc_int/insn-opinit.c
blob: 8ad7929028e00aa58e7a60f616caa15e77f37a4b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
/* Generated automatically by the program `genopinit'
from the machine description file `md'.  */

#include "config.h"
#include "rtl.h"
#include "flags.h"
#include "insn-flags.h"
#include "insn-codes.h"
#include "insn-config.h"
#include "recog.h"
#include "expr.h"
#include "reload.h"

void
init_all_optabs ()
{
  tst_optab->handlers[(int) SImode].insn_code = CODE_FOR_tstsi;
  tst_optab->handlers[(int) HImode].insn_code = CODE_FOR_tsthi;
  tst_optab->handlers[(int) QImode].insn_code = CODE_FOR_tstqi;
  if (HAVE_tstsf)
    tst_optab->handlers[(int) SFmode].insn_code = CODE_FOR_tstsf;
  if (HAVE_tstdf)
    tst_optab->handlers[(int) DFmode].insn_code = CODE_FOR_tstdf;
  if (HAVE_tstxf)
    tst_optab->handlers[(int) XFmode].insn_code = CODE_FOR_tstxf;
  cmp_optab->handlers[(int) SImode].insn_code = CODE_FOR_cmpsi;
  cmp_optab->handlers[(int) HImode].insn_code = CODE_FOR_cmphi;
  cmp_optab->handlers[(int) QImode].insn_code = CODE_FOR_cmpqi;
  if (HAVE_cmpxf)
    cmp_optab->handlers[(int) XFmode].insn_code = CODE_FOR_cmpxf;
  if (HAVE_cmpdf)
    cmp_optab->handlers[(int) DFmode].insn_code = CODE_FOR_cmpdf;
  if (HAVE_cmpsf)
    cmp_optab->handlers[(int) SFmode].insn_code = CODE_FOR_cmpsf;
  mov_optab->handlers[(int) SImode].insn_code = CODE_FOR_movsi;
  mov_optab->handlers[(int) HImode].insn_code = CODE_FOR_movhi;
  movstrict_optab->handlers[(int) HImode].insn_code = CODE_FOR_movstricthi;
  mov_optab->handlers[(int) QImode].insn_code = CODE_FOR_movqi;
  movstrict_optab->handlers[(int) QImode].insn_code = CODE_FOR_movstrictqi;
  mov_optab->handlers[(int) SFmode].insn_code = CODE_FOR_movsf;
  mov_optab->handlers[(int) DFmode].insn_code = CODE_FOR_movdf;
  mov_optab->handlers[(int) XFmode].insn_code = CODE_FOR_movxf;
  mov_optab->handlers[(int) DImode].insn_code = CODE_FOR_movdi;
  extendtab[(int) SImode][(int) HImode][1] = CODE_FOR_zero_extendhisi2;
  extendtab[(int) HImode][(int) QImode][1] = CODE_FOR_zero_extendqihi2;
  extendtab[(int) SImode][(int) QImode][1] = CODE_FOR_zero_extendqisi2;
  extendtab[(int) DImode][(int) SImode][1] = CODE_FOR_zero_extendsidi2;
  extendtab[(int) DImode][(int) SImode][0] = CODE_FOR_extendsidi2;
  extendtab[(int) SImode][(int) HImode][0] = CODE_FOR_extendhisi2;
  extendtab[(int) HImode][(int) QImode][0] = CODE_FOR_extendqihi2;
  extendtab[(int) SImode][(int) QImode][0] = CODE_FOR_extendqisi2;
  if (HAVE_extendsfdf2)
    extendtab[(int) DFmode][(int) SFmode][0] = CODE_FOR_extendsfdf2;
  if (HAVE_extenddfxf2)
    extendtab[(int) XFmode][(int) DFmode][0] = CODE_FOR_extenddfxf2;
  if (HAVE_extendsfxf2)
    extendtab[(int) XFmode][(int) SFmode][0] = CODE_FOR_extendsfxf2;
  if (HAVE_fixuns_truncxfsi2)
    fixtrunctab[(int) XFmode][(int) SImode][1] = CODE_FOR_fixuns_truncxfsi2;
  if (HAVE_fixuns_truncdfsi2)
    fixtrunctab[(int) DFmode][(int) SImode][1] = CODE_FOR_fixuns_truncdfsi2;
  if (HAVE_fixuns_truncsfsi2)
    fixtrunctab[(int) SFmode][(int) SImode][1] = CODE_FOR_fixuns_truncsfsi2;
  if (HAVE_fix_truncxfdi2)
    fixtrunctab[(int) XFmode][(int) DImode][0] = CODE_FOR_fix_truncxfdi2;
  if (HAVE_fix_truncdfdi2)
    fixtrunctab[(int) DFmode][(int) DImode][0] = CODE_FOR_fix_truncdfdi2;
  if (HAVE_fix_truncsfdi2)
    fixtrunctab[(int) SFmode][(int) DImode][0] = CODE_FOR_fix_truncsfdi2;
  if (HAVE_fix_truncxfsi2)
    fixtrunctab[(int) XFmode][(int) SImode][0] = CODE_FOR_fix_truncxfsi2;
  if (HAVE_fix_truncdfsi2)
    fixtrunctab[(int) DFmode][(int) SImode][0] = CODE_FOR_fix_truncdfsi2;
  if (HAVE_fix_truncsfsi2)
    fixtrunctab[(int) SFmode][(int) SImode][0] = CODE_FOR_fix_truncsfsi2;
  if (HAVE_floatsisf2)
    floattab[(int) SFmode][(int) SImode][0] = CODE_FOR_floatsisf2;
  if (HAVE_floatdisf2)
    floattab[(int) SFmode][(int) DImode][0] = CODE_FOR_floatdisf2;
  if (HAVE_floatsidf2)
    floattab[(int) DFmode][(int) SImode][0] = CODE_FOR_floatsidf2;
  if (HAVE_floatdidf2)
    floattab[(int) DFmode][(int) DImode][0] = CODE_FOR_floatdidf2;
  if (HAVE_floatsixf2)
    floattab[(int) XFmode][(int) SImode][0] = CODE_FOR_floatsixf2;
  if (HAVE_floatdixf2)
    floattab[(int) XFmode][(int) DImode][0] = CODE_FOR_floatdixf2;
  add_optab->handlers[(int) DImode].insn_code = CODE_FOR_adddi3;
  add_optab->handlers[(int) SImode].insn_code = CODE_FOR_addsi3;
  add_optab->handlers[(int) HImode].insn_code = CODE_FOR_addhi3;
  add_optab->handlers[(int) QImode].insn_code = CODE_FOR_addqi3;
  if (HAVE_addxf3)
    add_optab->handlers[(int) XFmode].insn_code = CODE_FOR_addxf3;
  if (HAVE_adddf3)
    add_optab->handlers[(int) DFmode].insn_code = CODE_FOR_adddf3;
  if (HAVE_addsf3)
    add_optab->handlers[(int) SFmode].insn_code = CODE_FOR_addsf3;
  sub_optab->handlers[(int) DImode].insn_code = CODE_FOR_subdi3;
  sub_optab->handlers[(int) SImode].insn_code = CODE_FOR_subsi3;
  sub_optab->handlers[(int) HImode].insn_code = CODE_FOR_subhi3;
  sub_optab->handlers[(int) QImode].insn_code = CODE_FOR_subqi3;
  if (HAVE_subxf3)
    sub_optab->handlers[(int) XFmode].insn_code = CODE_FOR_subxf3;
  if (HAVE_subdf3)
    sub_optab->handlers[(int) DFmode].insn_code = CODE_FOR_subdf3;
  if (HAVE_subsf3)
    sub_optab->handlers[(int) SFmode].insn_code = CODE_FOR_subsf3;
  smul_optab->handlers[(int) HImode].insn_code = CODE_FOR_mulhi3;
  smul_optab->handlers[(int) SImode].insn_code = CODE_FOR_mulsi3;
  umul_widen_optab->handlers[(int) HImode].insn_code = CODE_FOR_umulqihi3;
  smul_widen_optab->handlers[(int) HImode].insn_code = CODE_FOR_mulqihi3;
  umul_widen_optab->handlers[(int) DImode].insn_code = CODE_FOR_umulsidi3;
  smul_widen_optab->handlers[(int) DImode].insn_code = CODE_FOR_mulsidi3;
  if (HAVE_mulxf3)
    smul_optab->handlers[(int) XFmode].insn_code = CODE_FOR_mulxf3;
  if (HAVE_muldf3)
    smul_optab->handlers[(int) DFmode].insn_code = CODE_FOR_muldf3;
  if (HAVE_mulsf3)
    smul_optab->handlers[(int) SFmode].insn_code = CODE_FOR_mulsf3;
  sdiv_optab->handlers[(int) QImode].insn_code = CODE_FOR_divqi3;
  udiv_optab->handlers[(int) QImode].insn_code = CODE_FOR_udivqi3;
  if (HAVE_divxf3)
    flodiv_optab->handlers[(int) XFmode].insn_code = CODE_FOR_divxf3;
  if (HAVE_divdf3)
    flodiv_optab->handlers[(int) DFmode].insn_code = CODE_FOR_divdf3;
  if (HAVE_divsf3)
    flodiv_optab->handlers[(int) SFmode].insn_code = CODE_FOR_divsf3;
  sdivmod_optab->handlers[(int) SImode].insn_code = CODE_FOR_divmodsi4;
  sdivmod_optab->handlers[(int) HImode].insn_code = CODE_FOR_divmodhi4;
  udivmod_optab->handlers[(int) SImode].insn_code = CODE_FOR_udivmodsi4;
  udivmod_optab->handlers[(int) HImode].insn_code = CODE_FOR_udivmodhi4;
  and_optab->handlers[(int) SImode].insn_code = CODE_FOR_andsi3;
  and_optab->handlers[(int) HImode].insn_code = CODE_FOR_andhi3;
  and_optab->handlers[(int) QImode].insn_code = CODE_FOR_andqi3;
  ior_optab->handlers[(int) SImode].insn_code = CODE_FOR_iorsi3;
  ior_optab->handlers[(int) HImode].insn_code = CODE_FOR_iorhi3;
  ior_optab->handlers[(int) QImode].insn_code = CODE_FOR_iorqi3;
  xor_optab->handlers[(int) SImode].insn_code = CODE_FOR_xorsi3;
  xor_optab->handlers[(int) HImode].insn_code = CODE_FOR_xorhi3;
  xor_optab->handlers[(int) QImode].insn_code = CODE_FOR_xorqi3;
  neg_optab->handlers[(int) DImode].insn_code = CODE_FOR_negdi2;
  neg_optab->handlers[(int) SImode].insn_code = CODE_FOR_negsi2;
  neg_optab->handlers[(int) HImode].insn_code = CODE_FOR_neghi2;
  neg_optab->handlers[(int) QImode].insn_code = CODE_FOR_negqi2;
  if (HAVE_negsf2)
    neg_optab->handlers[(int) SFmode].insn_code = CODE_FOR_negsf2;
  if (HAVE_negdf2)
    neg_optab->handlers[(int) DFmode].insn_code = CODE_FOR_negdf2;
  if (HAVE_negxf2)
    neg_optab->handlers[(int) XFmode].insn_code = CODE_FOR_negxf2;
  if (HAVE_abssf2)
    abs_optab->handlers[(int) SFmode].insn_code = CODE_FOR_abssf2;
  if (HAVE_absdf2)
    abs_optab->handlers[(int) DFmode].insn_code = CODE_FOR_absdf2;
  if (HAVE_absxf2)
    abs_optab->handlers[(int) XFmode].insn_code = CODE_FOR_absxf2;
  if (HAVE_sqrtsf2)
    sqrt_optab->handlers[(int) SFmode].insn_code = CODE_FOR_sqrtsf2;
  if (HAVE_sqrtdf2)
    sqrt_optab->handlers[(int) DFmode].insn_code = CODE_FOR_sqrtdf2;
  if (HAVE_sqrtxf2)
    sqrt_optab->handlers[(int) XFmode].insn_code = CODE_FOR_sqrtxf2;
  if (HAVE_sindf2)
    sin_optab->handlers[(int) DFmode].insn_code = CODE_FOR_sindf2;
  if (HAVE_sinsf2)
    sin_optab->handlers[(int) SFmode].insn_code = CODE_FOR_sinsf2;
  if (HAVE_cosdf2)
    cos_optab->handlers[(int) DFmode].insn_code = CODE_FOR_cosdf2;
  if (HAVE_cossf2)
    cos_optab->handlers[(int) SFmode].insn_code = CODE_FOR_cossf2;
  one_cmpl_optab->handlers[(int) SImode].insn_code = CODE_FOR_one_cmplsi2;
  one_cmpl_optab->handlers[(int) HImode].insn_code = CODE_FOR_one_cmplhi2;
  one_cmpl_optab->handlers[(int) QImode].insn_code = CODE_FOR_one_cmplqi2;
  ashl_optab->handlers[(int) DImode].insn_code = CODE_FOR_ashldi3;
  ashl_optab->handlers[(int) SImode].insn_code = CODE_FOR_ashlsi3;
  ashl_optab->handlers[(int) HImode].insn_code = CODE_FOR_ashlhi3;
  ashl_optab->handlers[(int) QImode].insn_code = CODE_FOR_ashlqi3;
  ashr_optab->handlers[(int) DImode].insn_code = CODE_FOR_ashrdi3;
  ashr_optab->handlers[(int) SImode].insn_code = CODE_FOR_ashrsi3;
  ashr_optab->handlers[(int) HImode].insn_code = CODE_FOR_ashrhi3;
  ashr_optab->handlers[(int) QImode].insn_code = CODE_FOR_ashrqi3;
  lshr_optab->handlers[(int) DImode].insn_code = CODE_FOR_lshrdi3;
  lshr_optab->handlers[(int) SImode].insn_code = CODE_FOR_lshrsi3;
  lshr_optab->handlers[(int) HImode].insn_code = CODE_FOR_lshrhi3;
  lshr_optab->handlers[(int) QImode].insn_code = CODE_FOR_lshrqi3;
  rotl_optab->handlers[(int) SImode].insn_code = CODE_FOR_rotlsi3;
  rotl_optab->handlers[(int) HImode].insn_code = CODE_FOR_rotlhi3;
  rotl_optab->handlers[(int) QImode].insn_code = CODE_FOR_rotlqi3;
  rotr_optab->handlers[(int) SImode].insn_code = CODE_FOR_rotrsi3;
  rotr_optab->handlers[(int) HImode].insn_code = CODE_FOR_rotrhi3;
  rotr_optab->handlers[(int) QImode].insn_code = CODE_FOR_rotrqi3;
  setcc_gen_code[(int) EQ] = CODE_FOR_seq;
  setcc_gen_code[(int) NE] = CODE_FOR_sne;
  setcc_gen_code[(int) GT] = CODE_FOR_sgt;
  setcc_gen_code[(int) GTU] = CODE_FOR_sgtu;
  setcc_gen_code[(int) LT] = CODE_FOR_slt;
  setcc_gen_code[(int) LTU] = CODE_FOR_sltu;
  setcc_gen_code[(int) GE] = CODE_FOR_sge;
  setcc_gen_code[(int) GEU] = CODE_FOR_sgeu;
  setcc_gen_code[(int) LE] = CODE_FOR_sle;
  setcc_gen_code[(int) LEU] = CODE_FOR_sleu;
  bcc_gen_fctn[(int) EQ] = gen_beq;
  bcc_gen_fctn[(int) NE] = gen_bne;
  bcc_gen_fctn[(int) GT] = gen_bgt;
  bcc_gen_fctn[(int) GTU] = gen_bgtu;
  bcc_gen_fctn[(int) LT] = gen_blt;
  bcc_gen_fctn[(int) LTU] = gen_bltu;
  bcc_gen_fctn[(int) GE] = gen_bge;
  bcc_gen_fctn[(int) GEU] = gen_bgeu;
  bcc_gen_fctn[(int) LE] = gen_ble;
  bcc_gen_fctn[(int) LEU] = gen_bleu;
  movstr_optab[(int) SImode] = CODE_FOR_movstrsi;
  ffs_optab->handlers[(int) SImode].insn_code = CODE_FOR_ffssi2;
  ffs_optab->handlers[(int) HImode].insn_code = CODE_FOR_ffshi2;
  strlen_optab->handlers[(int) SImode].insn_code = CODE_FOR_strlensi;
}
OpenPOWER on IntegriCloud