aboutsummaryrefslogtreecommitdiff
path: root/lib/gcc/x86_64-w64-mingw32/4.8.3/plugin/include/tm-preds.h
blob: 30ddd25258b2bc10a903942c0e45a43c4f5d1c4a (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
/* Generated automatically by the program 'build/genpreds'
   from the machine description file '/buildbot/src/android/mingw/toolchain/gcc/gcc-4.8.3/gcc/config/i386/i386.md'.  */

#ifndef GCC_TM_PREDS_H
#define GCC_TM_PREDS_H

#ifdef HAVE_MACHINE_MODES
extern int general_operand (rtx, enum machine_mode);
extern int address_operand (rtx, enum machine_mode);
extern int register_operand (rtx, enum machine_mode);
extern int pmode_register_operand (rtx, enum machine_mode);
extern int scratch_operand (rtx, enum machine_mode);
extern int immediate_operand (rtx, enum machine_mode);
extern int const_int_operand (rtx, enum machine_mode);
extern int const_double_operand (rtx, enum machine_mode);
extern int nonimmediate_operand (rtx, enum machine_mode);
extern int nonmemory_operand (rtx, enum machine_mode);
extern int push_operand (rtx, enum machine_mode);
extern int pop_operand (rtx, enum machine_mode);
extern int memory_operand (rtx, enum machine_mode);
extern int indirect_operand (rtx, enum machine_mode);
extern int ordered_comparison_operator (rtx, enum machine_mode);
extern int comparison_operator (rtx, enum machine_mode);
extern int any_fp_register_operand (rtx, enum machine_mode);
extern int fp_register_operand (rtx, enum machine_mode);
extern int register_and_not_any_fp_reg_operand (rtx, enum machine_mode);
extern int register_and_not_fp_reg_operand (rtx, enum machine_mode);
extern int mmx_reg_operand (rtx, enum machine_mode);
extern int sse_reg_operand (rtx, enum machine_mode);
extern int q_regs_operand (rtx, enum machine_mode);
extern int ext_register_operand (rtx, enum machine_mode);
extern int ax_reg_operand (rtx, enum machine_mode);
extern int flags_reg_operand (rtx, enum machine_mode);
extern int QIreg_operand (rtx, enum machine_mode);
extern int ext_QIreg_operand (rtx, enum machine_mode);
extern int x86_64_immediate_operand (rtx, enum machine_mode);
extern int x86_64_zext_immediate_operand (rtx, enum machine_mode);
extern int x86_64_general_operand (rtx, enum machine_mode);
extern int x86_64_zext_general_operand (rtx, enum machine_mode);
extern int x86_64_szext_general_operand (rtx, enum machine_mode);
extern int x86_64_nonmemory_operand (rtx, enum machine_mode);
extern int x86_64_szext_nonmemory_operand (rtx, enum machine_mode);
extern int pic_32bit_operand (rtx, enum machine_mode);
extern int x86_64_movabs_operand (rtx, enum machine_mode);
extern int symbolic_operand (rtx, enum machine_mode);
extern int local_symbolic_operand (rtx, enum machine_mode);
extern int gotoff_operand (rtx, enum machine_mode);
extern int tls_symbolic_operand (rtx, enum machine_mode);
extern int tls_modbase_operand (rtx, enum machine_mode);
extern int constant_call_address_operand (rtx, enum machine_mode);
extern int call_register_no_elim_operand (rtx, enum machine_mode);
extern int register_no_elim_operand (rtx, enum machine_mode);
extern int index_register_operand (rtx, enum machine_mode);
extern int general_no_elim_operand (rtx, enum machine_mode);
extern int nonmemory_no_elim_operand (rtx, enum machine_mode);
extern int indirect_branch_operand (rtx, enum machine_mode);
extern int call_insn_operand (rtx, enum machine_mode);
extern int sibcall_insn_operand (rtx, enum machine_mode);
extern int const0_operand (rtx, enum machine_mode);
extern int const1_operand (rtx, enum machine_mode);
extern int const8_operand (rtx, enum machine_mode);
extern int const128_operand (rtx, enum machine_mode);
extern int const_32bit_mask (rtx, enum machine_mode);
extern int const248_operand (rtx, enum machine_mode);
extern int const1248_operand (rtx, enum machine_mode);
extern int const359_operand (rtx, enum machine_mode);
extern int const_0_to_1_operand (rtx, enum machine_mode);
extern int const_0_to_3_operand (rtx, enum machine_mode);
extern int const_0_to_7_operand (rtx, enum machine_mode);
extern int const_0_to_15_operand (rtx, enum machine_mode);
extern int const_0_to_31_operand (rtx, enum machine_mode);
extern int const_0_to_63_operand (rtx, enum machine_mode);
extern int const_0_to_255_operand (rtx, enum machine_mode);
extern int const_0_to_255_mul_8_operand (rtx, enum machine_mode);
extern int const_1_to_31_operand (rtx, enum machine_mode);
extern int const_1_to_63_operand (rtx, enum machine_mode);
extern int const_2_to_3_operand (rtx, enum machine_mode);
extern int const_4_to_5_operand (rtx, enum machine_mode);
extern int const_4_to_7_operand (rtx, enum machine_mode);
extern int const_6_to_7_operand (rtx, enum machine_mode);
extern int const_8_to_11_operand (rtx, enum machine_mode);
extern int const_12_to_15_operand (rtx, enum machine_mode);
extern int incdec_operand (rtx, enum machine_mode);
extern int reg_or_pm1_operand (rtx, enum machine_mode);
extern int shiftdi_operand (rtx, enum machine_mode);
extern int ashldi_input_operand (rtx, enum machine_mode);
extern int zero_extended_scalar_load_operand (rtx, enum machine_mode);
extern int vector_all_ones_operand (rtx, enum machine_mode);
extern int vector_move_operand (rtx, enum machine_mode);
extern int nonimmediate_or_const_vector_operand (rtx, enum machine_mode);
extern int nonimmediate_or_sse_const_operand (rtx, enum machine_mode);
extern int reg_or_0_operand (rtx, enum machine_mode);
extern int lea_address_operand (rtx, enum machine_mode);
extern int SImode_address_operand (rtx, enum machine_mode);
extern int vsib_address_operand (rtx, enum machine_mode);
extern int vsib_mem_operator (rtx, enum machine_mode);
extern int aligned_operand (rtx, enum machine_mode);
extern int memory_displacement_operand (rtx, enum machine_mode);
extern int memory_displacement_only_operand (rtx, enum machine_mode);
extern int cmpxchg8b_pic_memory_operand (rtx, enum machine_mode);
extern int long_memory_operand (rtx, enum machine_mode);
extern int fcmov_comparison_operator (rtx, enum machine_mode);
extern int sse_comparison_operator (rtx, enum machine_mode);
extern int ix86_comparison_int_operator (rtx, enum machine_mode);
extern int ix86_comparison_uns_operator (rtx, enum machine_mode);
extern int bt_comparison_operator (rtx, enum machine_mode);
extern int ix86_comparison_operator (rtx, enum machine_mode);
extern int ix86_carry_flag_operator (rtx, enum machine_mode);
extern int ix86_trivial_fp_comparison_operator (rtx, enum machine_mode);
extern int ix86_fp_comparison_operator (rtx, enum machine_mode);
extern int ix86_swapped_fp_comparison_operator (rtx, enum machine_mode);
extern int cmp_fp_expander_operand (rtx, enum machine_mode);
extern int binary_fp_operator (rtx, enum machine_mode);
extern int mult_operator (rtx, enum machine_mode);
extern int div_operator (rtx, enum machine_mode);
extern int plusminuslogic_operator (rtx, enum machine_mode);
extern int float_operator (rtx, enum machine_mode);
extern int arith_or_logical_operator (rtx, enum machine_mode);
extern int commutative_operator (rtx, enum machine_mode);
extern int promotable_binary_operator (rtx, enum machine_mode);
extern int compare_operator (rtx, enum machine_mode);
extern int absneg_operator (rtx, enum machine_mode);
extern int misaligned_operand (rtx, enum machine_mode);
extern int emms_operation (rtx, enum machine_mode);
extern int vzeroall_operation (rtx, enum machine_mode);
extern int vzeroupper_operation (rtx, enum machine_mode);
extern int avx_vbroadcast_operand (rtx, enum machine_mode);
extern int avx2_pblendw_operand (rtx, enum machine_mode);
#endif /* HAVE_MACHINE_MODES */

#define CONSTRAINT_NUM_DEFINED_P 1
enum constraint_num
{
  CONSTRAINT__UNKNOWN = 0,
  CONSTRAINT_R,
  CONSTRAINT_q,
  CONSTRAINT_Q,
  CONSTRAINT_l,
  CONSTRAINT_a,
  CONSTRAINT_b,
  CONSTRAINT_c,
  CONSTRAINT_d,
  CONSTRAINT_S,
  CONSTRAINT_D,
  CONSTRAINT_A,
  CONSTRAINT_U,
  CONSTRAINT_f,
  CONSTRAINT_t,
  CONSTRAINT_u,
  CONSTRAINT_y,
  CONSTRAINT_x,
  CONSTRAINT_Yz,
  CONSTRAINT_Yi,
  CONSTRAINT_Ym,
  CONSTRAINT_Yp,
  CONSTRAINT_Ya,
  CONSTRAINT_Yd,
  CONSTRAINT_Yx,
  CONSTRAINT_Yf,
  CONSTRAINT_z,
  CONSTRAINT_w,
  CONSTRAINT_I,
  CONSTRAINT_J,
  CONSTRAINT_K,
  CONSTRAINT_L,
  CONSTRAINT_M,
  CONSTRAINT_N,
  CONSTRAINT_O,
  CONSTRAINT_G,
  CONSTRAINT_C,
  CONSTRAINT_e,
  CONSTRAINT_Wz,
  CONSTRAINT_Z,
  CONSTRAINT__LIMIT
};

extern enum constraint_num lookup_constraint (const char *);
extern bool constraint_satisfied_p (rtx, enum constraint_num);

static inline size_t
insn_constraint_len (char fc, const char *str ATTRIBUTE_UNUSED)
{
  switch (fc)
    {
    case 'W': return 2;
    case 'Y': return 2;
    default: break;
    }
  return 1;
}

#define CONSTRAINT_LEN(c_,s_) insn_constraint_len (c_,s_)

extern enum reg_class regclass_for_constraint (enum constraint_num);
#define REG_CLASS_FROM_CONSTRAINT(c_,s_) \
    regclass_for_constraint (lookup_constraint (s_))
#define REG_CLASS_FOR_CONSTRAINT(x_) \
    regclass_for_constraint (x_)

extern bool insn_const_int_ok_for_constraint (HOST_WIDE_INT, enum constraint_num);
#define CONST_OK_FOR_CONSTRAINT_P(v_,c_,s_) \
    insn_const_int_ok_for_constraint (v_, lookup_constraint (s_))

#define CONST_DOUBLE_OK_FOR_CONSTRAINT_P(v_,c_,s_) \
    constraint_satisfied_p (v_, lookup_constraint (s_))

#define EXTRA_CONSTRAINT_STR(v_,c_,s_) \
    constraint_satisfied_p (v_, lookup_constraint (s_))

#define EXTRA_MEMORY_CONSTRAINT(c_,s_) false

#define EXTRA_ADDRESS_CONSTRAINT(c_,s_) false

#endif /* tm-preds.h */