Bug Summary

File:objdir/gcc/insn-preds.cc
Warning:line 2805, column 24
The result of the left shift is undefined because the right operand is negative

Annotated Source Code

Press '?' to see keyboard shortcuts

clang -cc1 -cc1 -triple x86_64-suse-linux -analyze -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name insn-preds.cc -analyzer-checker=core -analyzer-checker=apiModeling -analyzer-checker=unix -analyzer-checker=deadcode -analyzer-checker=cplusplus -analyzer-checker=security.insecureAPI.UncheckedReturn -analyzer-checker=security.insecureAPI.getpw -analyzer-checker=security.insecureAPI.gets -analyzer-checker=security.insecureAPI.mktemp -analyzer-checker=security.insecureAPI.mkstemp -analyzer-checker=security.insecureAPI.vfork -analyzer-checker=nullability.NullPassedToNonnull -analyzer-checker=nullability.NullReturnedFromNonnull -analyzer-output plist -w -setup-static-analyzer -analyzer-config-compatibility-mode=true -mrelocation-model static -mframe-pointer=none -fmath-errno -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=2 -target-cpu x86-64 -tune-cpu generic -debugger-tuning=gdb -fcoverage-compilation-dir=/buildworker/marxinbox-gcc-clang-static-analyzer/objdir/gcc -resource-dir /usr/lib64/clang/15.0.7 -D IN_GCC -D HAVE_CONFIG_H -I . -I . -I /buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc -I /buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/. -I /buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/../include -I /buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/../libcpp/include -I /buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/../libcody -I /buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/../libdecnumber -I /buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/../libdecnumber/bid -I ../libdecnumber -I /buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/../libbacktrace -internal-isystem /usr/bin/../lib64/gcc/x86_64-suse-linux/13/../../../../include/c++/13 -internal-isystem /usr/bin/../lib64/gcc/x86_64-suse-linux/13/../../../../include/c++/13/x86_64-suse-linux -internal-isystem /usr/bin/../lib64/gcc/x86_64-suse-linux/13/../../../../include/c++/13/backward -internal-isystem /usr/lib64/clang/15.0.7/include -internal-isystem /usr/local/include -internal-isystem /usr/bin/../lib64/gcc/x86_64-suse-linux/13/../../../../x86_64-suse-linux/include -internal-externc-isystem /include -internal-externc-isystem /usr/include -O2 -Wno-narrowing -Wwrite-strings -Wno-long-long -Wno-variadic-macros -Wno-overlength-strings -fdeprecated-macro -fdebug-compilation-dir=/buildworker/marxinbox-gcc-clang-static-analyzer/objdir/gcc -ferror-limit 19 -fno-rtti -fgnuc-version=4.2.1 -vectorize-loops -vectorize-slp -analyzer-output=plist-html -analyzer-config silence-checkers=core.NullDereference -faddrsig -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o /buildworker/marxinbox-gcc-clang-static-analyzer/objdir/clang-static-analyzer/2023-03-27-141847-20772-1/report-_XuRfZ.plist -x c++ insn-preds.cc

insn-preds.cc

1/* Generated automatically by the program 'build/genpreds'
2 from the machine description file '/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/i386.md'. */
3
4#define IN_TARGET_CODE1 1
5#include "config.h"
6#include "system.h"
7#include "coretypes.h"
8#include "backend.h"
9#include "predict.h"
10#include "tree.h"
11#include "rtl.h"
12#include "alias.h"
13#include "varasm.h"
14#include "stor-layout.h"
15#include "calls.h"
16#include "memmodel.h"
17#include "tm_p.h"
18#include "insn-config.h"
19#include "recog.h"
20#include "output.h"
21#include "flags.h"
22#include "df.h"
23#include "resource.h"
24#include "diagnostic-core.h"
25#include "reload.h"
26#include "regs.h"
27#include "emit-rtl.h"
28#include "tm-constrs.h"
29#include "target.h"
30
31bool
32any_fp_register_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
33{
34 return ((GET_CODE (op)((enum rtx_code) (op)->code) == REG) && (
35#line 23 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
36(ANY_FP_REGNO_P (REGNO (op))(((unsigned long) (((rhs_regno(op)))) - (unsigned long) (8) <=
(unsigned long) (15) - (unsigned long) (8)) || (((unsigned long
) (((rhs_regno(op)))) - (unsigned long) (20) <= (unsigned long
) (27) - (unsigned long) (20)) || ((unsigned long) (((rhs_regno
(op)))) - (unsigned long) (44) <= (unsigned long) (51) - (
unsigned long) (44)) || ((unsigned long) (((rhs_regno(op)))) -
(unsigned long) (52) <= (unsigned long) (67) - (unsigned long
) (52))))
))) && (
37(mode == VOIDmode((void) 0, E_VOIDmode) || GET_MODE (op)((machine_mode) (op)->mode) == mode));
38}
39
40bool
41fp_register_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
42{
43 return ((GET_CODE (op)((enum rtx_code) (op)->code) == REG) && (
44#line 28 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
45(STACK_REGNO_P (REGNO (op))((unsigned long) (((rhs_regno(op)))) - (unsigned long) (8) <=
(unsigned long) (15) - (unsigned long) (8))
))) && (
46(mode == VOIDmode((void) 0, E_VOIDmode) || GET_MODE (op)((machine_mode) (op)->mode) == mode));
47}
48
49bool
50general_reg_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
51{
52 return ((GET_CODE (op)((enum rtx_code) (op)->code) == REG) && (
53#line 33 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
54(GENERAL_REGNO_P (REGNO (op))((((unsigned long) (((rhs_regno(op)))) - (unsigned long) (0) <=
(unsigned long) (7) - (unsigned long) (0))) || ((unsigned long
) (((rhs_regno(op)))) - (unsigned long) (36) <= (unsigned long
) (43) - (unsigned long) (36)))
))) && (
55(mode == VOIDmode((void) 0, E_VOIDmode) || GET_MODE (op)((machine_mode) (op)->mode) == mode));
56}
57
58bool
59nonimmediate_gr_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
60{
61 return (GET_CODE (op)((enum rtx_code) (op)->code) == REG) ? ((
62#line 38 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
63(GENERAL_REGNO_P (REGNO (op))((((unsigned long) (((rhs_regno(op)))) - (unsigned long) (0) <=
(unsigned long) (7) - (unsigned long) (0))) || ((unsigned long
) (((rhs_regno(op)))) - (unsigned long) (36) <= (unsigned long
) (43) - (unsigned long) (36)))
)) && (
64(mode == VOIDmode((void) 0, E_VOIDmode) || GET_MODE (op)((machine_mode) (op)->mode) == mode))) : (nonimmediate_operand (op, mode));
65}
66
67bool
68general_gr_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
69{
70 return (GET_CODE (op)((enum rtx_code) (op)->code) == REG) ? ((
71#line 44 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
72(GENERAL_REGNO_P (REGNO (op))((((unsigned long) (((rhs_regno(op)))) - (unsigned long) (0) <=
(unsigned long) (7) - (unsigned long) (0))) || ((unsigned long
) (((rhs_regno(op)))) - (unsigned long) (36) <= (unsigned long
) (43) - (unsigned long) (36)))
)) && (
73(mode == VOIDmode((void) 0, E_VOIDmode) || GET_MODE (op)((machine_mode) (op)->mode) == mode || GET_MODE (op)((machine_mode) (op)->mode) == VOIDmode((void) 0, E_VOIDmode)))) : (general_operand (op, mode));
74}
75
76bool
77mmx_reg_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
78{
79 return ((GET_CODE (op)((enum rtx_code) (op)->code) == REG) && (
80#line 50 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
81(MMX_REGNO_P (REGNO (op))((unsigned long) (((rhs_regno(op)))) - (unsigned long) (28) <=
(unsigned long) (35) - (unsigned long) (28))
))) && (
82(mode == VOIDmode((void) 0, E_VOIDmode) || GET_MODE (op)((machine_mode) (op)->mode) == mode));
83}
84
85bool
86register_mmxmem_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
87{
88 return (register_operand (op, mode)) || ((!(
89#line 56 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
90(TARGET_MMX_WITH_SSE(((global_options.x_ix86_isa_flags & (1UL << 1)) !=
0) && ((global_options.x_ix86_isa_flags & (1UL <<
51)) != 0))
))) && (memory_operand (op, mode)));
91}
92
93bool
94sse_reg_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
95{
96 return ((GET_CODE (op)((enum rtx_code) (op)->code) == REG) && (
97#line 62 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
98(SSE_REGNO_P (REGNO (op))(((unsigned long) (((rhs_regno(op)))) - (unsigned long) (20) <=
(unsigned long) (27) - (unsigned long) (20)) || ((unsigned long
) (((rhs_regno(op)))) - (unsigned long) (44) <= (unsigned long
) (51) - (unsigned long) (44)) || ((unsigned long) (((rhs_regno
(op)))) - (unsigned long) (52) <= (unsigned long) (67) - (
unsigned long) (52)))
))) && (
99(mode == VOIDmode((void) 0, E_VOIDmode) || GET_MODE (op)((machine_mode) (op)->mode) == mode));
100}
101
102bool
103any_QIreg_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
104{
105 return ((GET_CODE (op)((enum rtx_code) (op)->code) == REG) && (
106#line 67 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
107(ANY_QI_REGNO_P (REGNO (op))(((global_options.x_ix86_isa_flags & (1UL << 1)) !=
0) ? ((((unsigned long) (((rhs_regno(op)))) - (unsigned long
) (0) <= (unsigned long) (7) - (unsigned long) (0))) || ((
unsigned long) (((rhs_regno(op)))) - (unsigned long) (36) <=
(unsigned long) (43) - (unsigned long) (36))) : ((unsigned long
) (((rhs_regno(op)))) - (unsigned long) (0) <= (unsigned long
) (3) - (unsigned long) (0)))
))) && (
108(mode == VOIDmode((void) 0, E_VOIDmode) || GET_MODE (op)((machine_mode) (op)->mode) == mode));
109}
110
111bool
112QIreg_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
113{
114 return ((GET_CODE (op)((enum rtx_code) (op)->code) == REG) && (
115#line 72 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
116(QI_REGNO_P (REGNO (op))((unsigned long) (((rhs_regno(op)))) - (unsigned long) (0) <=
(unsigned long) (3) - (unsigned long) (0))
))) && (
117(mode == VOIDmode((void) 0, E_VOIDmode) || GET_MODE (op)((machine_mode) (op)->mode) == mode));
118}
119
120bool
121ext_QIreg_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
122{
123 return ((
124#line 76 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
125(TARGET_64BIT((global_options.x_ix86_isa_flags & (1UL << 1)) != 0
)
)) && ((GET_CODE (op)((enum rtx_code) (op)->code) == REG) && (!(
126#line 78 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
127(QI_REGNO_P (REGNO (op))((unsigned long) (((rhs_regno(op)))) - (unsigned long) (0) <=
(unsigned long) (3) - (unsigned long) (0))
))))) && (
128(mode == VOIDmode((void) 0, E_VOIDmode) || GET_MODE (op)((machine_mode) (op)->mode) == mode));
129}
130
131bool
132ax_reg_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
133{
134 return ((GET_CODE (op)((enum rtx_code) (op)->code) == REG) && (
135#line 83 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
136(REGNO (op)(rhs_regno(op)) == AX_REG0))) && (
137(mode == VOIDmode((void) 0, E_VOIDmode) || GET_MODE (op)((machine_mode) (op)->mode) == mode));
138}
139
140bool
141flags_reg_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
142{
143 return ((GET_CODE (op)((enum rtx_code) (op)->code) == REG) && (
144#line 88 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
145(REGNO (op)(rhs_regno(op)) == FLAGS_REG17))) && (
146(mode == VOIDmode((void) 0, E_VOIDmode) || GET_MODE (op)((machine_mode) (op)->mode) == mode));
147}
148
149bool
150mask_reg_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
151{
152 return ((GET_CODE (op)((enum rtx_code) (op)->code) == REG) && (
153#line 93 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
154(MASK_REGNO_P (REGNO (op))((unsigned long) (((rhs_regno(op)))) - (unsigned long) (68) <=
(unsigned long) (75) - (unsigned long) (68))
))) && (
155(mode == VOIDmode((void) 0, E_VOIDmode) || GET_MODE (op)((machine_mode) (op)->mode) == mode));
156}
157
158bool
159int248_register_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
160{
161 return (register_operand (op, mode)) && (((
162#line 98 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
163(TARGET_64BIT((global_options.x_ix86_isa_flags & (1UL << 1)) != 0
)
)) && (
164#line 99 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
165(GET_MODE (op)((machine_mode) (op)->mode) == DImode(scalar_int_mode ((scalar_int_mode::from_int) E_DImode))))) || ((
166#line 100 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
167(GET_MODE (op)((machine_mode) (op)->mode) == SImode(scalar_int_mode ((scalar_int_mode::from_int) E_SImode)))) || (
168#line 101 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
169(GET_MODE (op)((machine_mode) (op)->mode) == HImode(scalar_int_mode ((scalar_int_mode::from_int) E_HImode))))));
170}
171
172bool
173int_nonimmediate_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
174{
175 return (nonimmediate_operand (op, mode)) && (((
176#line 106 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
177(TARGET_64BIT((global_options.x_ix86_isa_flags & (1UL << 1)) != 0
)
)) && (
178#line 107 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
179(GET_MODE (op)((machine_mode) (op)->mode) == DImode(scalar_int_mode ((scalar_int_mode::from_int) E_DImode))))) || ((
180#line 108 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
181(GET_MODE (op)((machine_mode) (op)->mode) == SImode(scalar_int_mode ((scalar_int_mode::from_int) E_SImode)))) || ((
182#line 109 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
183(GET_MODE (op)((machine_mode) (op)->mode) == HImode(scalar_int_mode ((scalar_int_mode::from_int) E_HImode)))) || (
184#line 110 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
185(GET_MODE (op)((machine_mode) (op)->mode) == QImode(scalar_int_mode ((scalar_int_mode::from_int) E_QImode)))))));
186}
187
188bool
189nonimm_x64constmem_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
190{
191 return (register_operand (op, mode)) || ((memory_operand (op, mode)) && ((!(
192#line 116 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
193(TARGET_64BIT((global_options.x_ix86_isa_flags & (1UL << 1)) != 0
)
))) || (
194#line 117 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
195(constant_address_p (XEXP (op, 0)(((op)->u.fld[0]).rt_rtx))))));
196}
197
198bool
199general_x64constmem_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
200{
201 return (nonmemory_operand (op, mode)) || ((memory_operand (op, mode)) && ((!(
202#line 123 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
203(TARGET_64BIT((global_options.x_ix86_isa_flags & (1UL << 1)) != 0
)
))) || (
204#line 124 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
205(constant_address_p (XEXP (op, 0)(((op)->u.fld[0]).rt_rtx))))));
206}
207
208bool
209register_ssemem_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
210{
211 return (
212#line 129 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
213(SSE_FLOAT_MODE_P (mode)((((global_options.x_ix86_isa_flags & (1UL << 50)) !=
0) && (mode) == (scalar_float_mode ((scalar_float_mode
::from_int) E_SFmode))) || (((global_options.x_ix86_isa_flags
& (1UL << 51)) != 0) && (mode) == (scalar_float_mode
((scalar_float_mode::from_int) E_DFmode))))
&& TARGET_SSE_MATH((global_options.x_ix86_fpmath & FPMATH_SSE) != 0))) ? (nonimmediate_operand (op, mode)) : (register_operand (op, mode));
214}
215
216bool
217nonimm_ssenomem_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
218{
219 return ((
220#line 137 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
221(SSE_FLOAT_MODE_P (mode)((((global_options.x_ix86_isa_flags & (1UL << 50)) !=
0) && (mode) == (scalar_float_mode ((scalar_float_mode
::from_int) E_SFmode))) || (((global_options.x_ix86_isa_flags
& (1UL << 51)) != 0) && (mode) == (scalar_float_mode
((scalar_float_mode::from_int) E_DFmode))))
&& TARGET_SSE_MATH((global_options.x_ix86_fpmath & FPMATH_SSE) != 0))) && (!(
222#line 138 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
223(TARGET_MIX_SSE_I387((global_options.x_ix86_fpmath & (FPMATH_SSE | FPMATH_387
)) == (FPMATH_SSE | FPMATH_387))
)))) ? (register_operand (op, mode)) : (nonimmediate_operand (op, mode));
224}
225
226bool
227x87nonimm_ssenomem_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
228{
229 return ((
230#line 145 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
231(SSE_FLOAT_MODE_P (mode)((((global_options.x_ix86_isa_flags & (1UL << 50)) !=
0) && (mode) == (scalar_float_mode ((scalar_float_mode
::from_int) E_SFmode))) || (((global_options.x_ix86_isa_flags
& (1UL << 51)) != 0) && (mode) == (scalar_float_mode
((scalar_float_mode::from_int) E_DFmode))))
&& TARGET_SSE_MATH((global_options.x_ix86_fpmath & FPMATH_SSE) != 0))) && (!(
232#line 146 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
233(TARGET_MIX_SSE_I387((global_options.x_ix86_fpmath & (FPMATH_SSE | FPMATH_387
)) == (FPMATH_SSE | FPMATH_387))
&& X87_ENABLE_ARITH (mode)(global_options.x_ix86_unsafe_math_optimizations || global_options
.x_ix86_excess_precision == EXCESS_PRECISION_FAST || (mode) ==
(scalar_float_mode ((scalar_float_mode::from_int) E_XFmode))
)
)))) ? (register_operand (op, mode)) : (nonimmediate_operand (op, mode));
234}
235
236bool
237register_sse4nonimm_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
238{
239 return (
240#line 152 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
241(TARGET_SSE4_1((global_options.x_ix86_isa_flags & (1UL << 38)) !=
0)
)) ? (nonimmediate_operand (op, mode)) : (register_operand (op, mode));
242}
243
244bool
245symbol_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
246{
247 return (GET_CODE (op)((enum rtx_code) (op)->code) == SYMBOL_REF) && (
248(mode == VOIDmode((void) 0, E_VOIDmode) || GET_MODE (op)((machine_mode) (op)->mode) == mode));
249}
250
251static inline bool
252ix86_endbr_immediate_operand_1 (rtx op ATTRIBUTE_UNUSED__attribute__ ((__unused__)), machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
253#line 163 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
254{
255 if (flag_cf_protectionglobal_options.x_flag_cf_protection & CF_BRANCH)
256 {
257 unsigned HOST_WIDE_INTlong imm = UINTVAL (op)((unsigned long) ((op)->u.hwint[0]));
258 unsigned HOST_WIDE_INTlong val = TARGET_64BIT((global_options.x_ix86_isa_flags & (1UL << 1)) != 0
)
? 0xfa1e0ff3 : 0xfb1e0ff3;
259
260 if (imm == val)
261 return true;
262
263 /* NB: Encoding is byte based. */
264 if (TARGET_64BIT((global_options.x_ix86_isa_flags & (1UL << 1)) != 0
)
)
265 for (; imm >= val; imm >>= 8)
266 if (imm == val)
267 return true;
268 }
269
270 return false;
271}
272
273bool
274ix86_endbr_immediate_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
275{
276 return (GET_CODE (op)((enum rtx_code) (op)->code) == CONST_INT) && (
277(ix86_endbr_immediate_operand_1 (op, mode)));
278}
279
280static inline bool
281x86_64_immediate_operand_1 (rtx op ATTRIBUTE_UNUSED__attribute__ ((__unused__)), machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
282#line 185 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
283{
284 if (ix86_endbr_immediate_operand (op, VOIDmode((void) 0, E_VOIDmode)))
285 return false;
286
287 if (!TARGET_64BIT((global_options.x_ix86_isa_flags & (1UL << 1)) != 0
)
)
288 return immediate_operand (op, mode);
289
290 switch (GET_CODE (op)((enum rtx_code) (op)->code))
291 {
292 case CONST_INT:
293 {
294 HOST_WIDE_INTlong val = INTVAL (op)((op)->u.hwint[0]);
295 return trunc_int_for_mode (val, SImode(scalar_int_mode ((scalar_int_mode::from_int) E_SImode))) == val;
296 }
297 case SYMBOL_REF:
298 /* TLS symbols are not constant. */
299 if (SYMBOL_REF_TLS_MODEL (op)((enum tls_model) (((__extension__ ({ __typeof ((op)) const _rtx
= ((op)); if (((enum rtx_code) (_rtx)->code) != SYMBOL_REF
) rtl_check_failed_flag ("SYMBOL_REF_FLAGS", _rtx, "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
, 201, __FUNCTION__); _rtx; }) ->u2.symbol_ref_flags) >>
3) & 7))
)
300 return false;
301
302 /* Load the external function address via the GOT slot. */
303 if (ix86_force_load_from_GOT_p (op))
304 return false;
305
306 /* For certain code models, the symbolic references are known to fit.
307 in CM_SMALL_PIC model we know it fits if it is local to the shared
308 library. Don't count TLS SYMBOL_REFs here, since they should fit
309 only if inside of UNSPEC handled below. */
310 return (ix86_cmodelglobal_options.x_ix86_cmodel == CM_SMALL || ix86_cmodelglobal_options.x_ix86_cmodel == CM_KERNEL
311 || (ix86_cmodelglobal_options.x_ix86_cmodel == CM_MEDIUM && !SYMBOL_REF_FAR_ADDR_P (op)(((__extension__ ({ __typeof ((op)) const _rtx = ((op)); if (
((enum rtx_code) (_rtx)->code) != SYMBOL_REF) rtl_check_failed_flag
("SYMBOL_REF_FLAGS", _rtx, "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
, 213, __FUNCTION__); _rtx; }) ->u2.symbol_ref_flags) &
((1 << 9) << 0)) != 0)
));
312
313 case LABEL_REF:
314 /* For certain code models, the code is near as well. */
315 return (ix86_cmodelglobal_options.x_ix86_cmodel == CM_SMALL || ix86_cmodelglobal_options.x_ix86_cmodel == CM_MEDIUM
316 || ix86_cmodelglobal_options.x_ix86_cmodel == CM_KERNEL);
317
318 case CONST:
319 /* We also may accept the offsetted memory references in certain
320 special cases. */
321 if (GET_CODE (XEXP (op, 0))((enum rtx_code) ((((op)->u.fld[0]).rt_rtx))->code) == UNSPEC)
322 switch (XINT (XEXP (op, 0), 1)((((((op)->u.fld[0]).rt_rtx))->u.fld[1]).rt_int))
323 {
324 case UNSPEC_GOTPCREL:
325 case UNSPEC_DTPOFF:
326 case UNSPEC_GOTNTPOFF:
327 case UNSPEC_NTPOFF:
328 return true;
329 default:
330 break;
331 }
332
333 if (GET_CODE (XEXP (op, 0))((enum rtx_code) ((((op)->u.fld[0]).rt_rtx))->code) == PLUS)
334 {
335 rtx op1 = XEXP (XEXP (op, 0), 0)((((((op)->u.fld[0]).rt_rtx))->u.fld[0]).rt_rtx);
336 rtx op2 = XEXP (XEXP (op, 0), 1)((((((op)->u.fld[0]).rt_rtx))->u.fld[1]).rt_rtx);
337
338 if (ix86_cmodelglobal_options.x_ix86_cmodel == CM_LARGE && GET_CODE (op1)((enum rtx_code) (op1)->code) != UNSPEC)
339 return false;
340 if (!CONST_INT_P (op2)(((enum rtx_code) (op2)->code) == CONST_INT))
341 return false;
342
343 HOST_WIDE_INTlong offset = INTVAL (op2)((op2)->u.hwint[0]);
344 if (trunc_int_for_mode (offset, SImode(scalar_int_mode ((scalar_int_mode::from_int) E_SImode))) != offset)
345 return false;
346
347 switch (GET_CODE (op1)((enum rtx_code) (op1)->code))
348 {
349 case SYMBOL_REF:
350 /* TLS symbols are not constant. */
351 if (SYMBOL_REF_TLS_MODEL (op1)((enum tls_model) (((__extension__ ({ __typeof ((op1)) const _rtx
= ((op1)); if (((enum rtx_code) (_rtx)->code) != SYMBOL_REF
) rtl_check_failed_flag ("SYMBOL_REF_FLAGS", _rtx, "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
, 253, __FUNCTION__); _rtx; }) ->u2.symbol_ref_flags) >>
3) & 7))
)
352 return false;
353
354 /* Load the external function address via the GOT slot. */
355 if (ix86_force_load_from_GOT_p (op1))
356 return false;
357
358 /* For CM_SMALL assume that latest object is 16MB before
359 end of 31bits boundary. We may also accept pretty
360 large negative constants knowing that all objects are
361 in the positive half of address space. */
362 if ((ix86_cmodelglobal_options.x_ix86_cmodel == CM_SMALL
363 || (ix86_cmodelglobal_options.x_ix86_cmodel == CM_MEDIUM
364 && !SYMBOL_REF_FAR_ADDR_P (op1)(((__extension__ ({ __typeof ((op1)) const _rtx = ((op1)); if
(((enum rtx_code) (_rtx)->code) != SYMBOL_REF) rtl_check_failed_flag
("SYMBOL_REF_FLAGS", _rtx, "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
, 266, __FUNCTION__); _rtx; }) ->u2.symbol_ref_flags) &
((1 << 9) << 0)) != 0)
))
365 && offset < 16*1024*1024)
366 return true;
367 /* For CM_KERNEL we know that all object resist in the
368 negative half of 32bits address space. We may not
369 accept negative offsets, since they may be just off
370 and we may accept pretty large positive ones. */
371 if (ix86_cmodelglobal_options.x_ix86_cmodel == CM_KERNEL
372 && offset > 0)
373 return true;
374 break;
375
376 case LABEL_REF:
377 /* These conditions are similar to SYMBOL_REF ones, just the
378 constraints for code models differ. */
379 if ((ix86_cmodelglobal_options.x_ix86_cmodel == CM_SMALL || ix86_cmodelglobal_options.x_ix86_cmodel == CM_MEDIUM)
380 && offset < 16*1024*1024)
381 return true;
382 if (ix86_cmodelglobal_options.x_ix86_cmodel == CM_KERNEL
383 && offset > 0)
384 return true;
385 break;
386
387 case UNSPEC:
388 switch (XINT (op1, 1)(((op1)->u.fld[1]).rt_int))
389 {
390 case UNSPEC_DTPOFF:
391 case UNSPEC_NTPOFF:
392 return true;
393 }
394 break;
395
396 default:
397 break;
398 }
399 }
400 break;
401
402 default:
403 gcc_unreachable ()(fancy_abort ("/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
, 305, __FUNCTION__))
;
404 }
405
406 return false;
407}
408
409bool
410x86_64_immediate_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
411{
412 switch (GET_CODE (op)((enum rtx_code) (op)->code))
413 {
414 case CONST_INT:
415 case SYMBOL_REF:
416 case LABEL_REF:
417 case CONST:
418 break;
419 default:
420 return false;
421 }
422 return (
423(x86_64_immediate_operand_1 (op, mode))) && (
424(mode == VOIDmode((void) 0, E_VOIDmode) || GET_MODE (op)((machine_mode) (op)->mode) == mode || GET_MODE (op)((machine_mode) (op)->mode) == VOIDmode((void) 0, E_VOIDmode)));
425}
426
427static inline bool
428x86_64_zext_immediate_operand_1 (rtx op ATTRIBUTE_UNUSED__attribute__ ((__unused__)), machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
429#line 314 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
430{
431 if (ix86_endbr_immediate_operand (op, VOIDmode((void) 0, E_VOIDmode)))
432 return false;
433
434 switch (GET_CODE (op)((enum rtx_code) (op)->code))
435 {
436 case CONST_INT:
437 return !(INTVAL (op)((op)->u.hwint[0]) & ~(HOST_WIDE_INTlong) 0xffffffff);
438
439 case SYMBOL_REF:
440 /* TLS symbols are not constant. */
441 if (SYMBOL_REF_TLS_MODEL (op)((enum tls_model) (((__extension__ ({ __typeof ((op)) const _rtx
= ((op)); if (((enum rtx_code) (_rtx)->code) != SYMBOL_REF
) rtl_check_failed_flag ("SYMBOL_REF_FLAGS", _rtx, "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
, 325, __FUNCTION__); _rtx; }) ->u2.symbol_ref_flags) >>
3) & 7))
)
442 return false;
443
444 /* Load the external function address via the GOT slot. */
445 if (ix86_force_load_from_GOT_p (op))
446 return false;
447
448 /* For certain code models, the symbolic references are known to fit. */
449 return (ix86_cmodelglobal_options.x_ix86_cmodel == CM_SMALL
450 || (ix86_cmodelglobal_options.x_ix86_cmodel == CM_MEDIUM
451 && !SYMBOL_REF_FAR_ADDR_P (op)(((__extension__ ({ __typeof ((op)) const _rtx = ((op)); if (
((enum rtx_code) (_rtx)->code) != SYMBOL_REF) rtl_check_failed_flag
("SYMBOL_REF_FLAGS", _rtx, "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
, 335, __FUNCTION__); _rtx; }) ->u2.symbol_ref_flags) &
((1 << 9) << 0)) != 0)
));
452
453 case LABEL_REF:
454 /* For certain code models, the code is near as well. */
455 return ix86_cmodelglobal_options.x_ix86_cmodel == CM_SMALL || ix86_cmodelglobal_options.x_ix86_cmodel == CM_MEDIUM;
456
457 case CONST:
458 /* We also may accept the offsetted memory references in certain
459 special cases. */
460 if (GET_CODE (XEXP (op, 0))((enum rtx_code) ((((op)->u.fld[0]).rt_rtx))->code) == PLUS)
461 {
462 rtx op1 = XEXP (XEXP (op, 0), 0)((((((op)->u.fld[0]).rt_rtx))->u.fld[0]).rt_rtx);
463 rtx op2 = XEXP (XEXP (op, 0), 1)((((((op)->u.fld[0]).rt_rtx))->u.fld[1]).rt_rtx);
464
465 if (ix86_cmodelglobal_options.x_ix86_cmodel == CM_LARGE)
466 return false;
467 if (!CONST_INT_P (op2)(((enum rtx_code) (op2)->code) == CONST_INT))
468 return false;
469
470 HOST_WIDE_INTlong offset = INTVAL (op2)((op2)->u.hwint[0]);
471 if (trunc_int_for_mode (offset, SImode(scalar_int_mode ((scalar_int_mode::from_int) E_SImode))) != offset)
472 return false;
473
474 switch (GET_CODE (op1)((enum rtx_code) (op1)->code))
475 {
476 case SYMBOL_REF:
477 /* TLS symbols are not constant. */
478 if (SYMBOL_REF_TLS_MODEL (op1)((enum tls_model) (((__extension__ ({ __typeof ((op1)) const _rtx
= ((op1)); if (((enum rtx_code) (_rtx)->code) != SYMBOL_REF
) rtl_check_failed_flag ("SYMBOL_REF_FLAGS", _rtx, "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
, 362, __FUNCTION__); _rtx; }) ->u2.symbol_ref_flags) >>
3) & 7))
)
479 return false;
480
481 /* Load the external function address via the GOT slot. */
482 if (ix86_force_load_from_GOT_p (op1))
483 return false;
484
485 /* For small code model we may accept pretty large positive
486 offsets, since one bit is available for free. Negative
487 offsets are limited by the size of NULL pointer area
488 specified by the ABI. */
489 if ((ix86_cmodelglobal_options.x_ix86_cmodel == CM_SMALL
490 || (ix86_cmodelglobal_options.x_ix86_cmodel == CM_MEDIUM
491 && !SYMBOL_REF_FAR_ADDR_P (op1)(((__extension__ ({ __typeof ((op1)) const _rtx = ((op1)); if
(((enum rtx_code) (_rtx)->code) != SYMBOL_REF) rtl_check_failed_flag
("SYMBOL_REF_FLAGS", _rtx, "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
, 375, __FUNCTION__); _rtx; }) ->u2.symbol_ref_flags) &
((1 << 9) << 0)) != 0)
))
492 && offset > -0x10000)
493 return true;
494 /* ??? For the kernel, we may accept adjustment of
495 -0x10000000, since we know that it will just convert
496 negative address space to positive, but perhaps this
497 is not worthwhile. */
498 break;
499
500 case LABEL_REF:
501 /* These conditions are similar to SYMBOL_REF ones, just the
502 constraints for code models differ. */
503 if ((ix86_cmodelglobal_options.x_ix86_cmodel == CM_SMALL || ix86_cmodelglobal_options.x_ix86_cmodel == CM_MEDIUM)
504 && offset > -0x10000)
505 return true;
506 break;
507
508 default:
509 return false;
510 }
511 }
512 break;
513
514 default:
515 gcc_unreachable ()(fancy_abort ("/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
, 399, __FUNCTION__))
;
516 }
517 return false;
518}
519
520bool
521x86_64_zext_immediate_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
522{
523 switch (GET_CODE (op)((enum rtx_code) (op)->code))
524 {
525 case CONST_INT:
526 case SYMBOL_REF:
527 case LABEL_REF:
528 case CONST:
529 break;
530 default:
531 return false;
532 }
533 return (
534(x86_64_zext_immediate_operand_1 (op, mode))) && (
535(mode == VOIDmode((void) 0, E_VOIDmode) || GET_MODE (op)((machine_mode) (op)->mode) == mode || GET_MODE (op)((machine_mode) (op)->mode) == VOIDmode((void) 0, E_VOIDmode)));
536}
537
538static inline bool
539x86_64_hilo_int_operand_1 (rtx op ATTRIBUTE_UNUSED__attribute__ ((__unused__)), machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
540#line 408 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
541{
542 switch (GET_CODE (op)((enum rtx_code) (op)->code))
543 {
544 case CONST_INT:
545 return x86_64_immediate_operand (op, mode);
546
547 case CONST_WIDE_INT:
548 gcc_assert (CONST_WIDE_INT_NUNITS (op) == 2)((void)(!(((int)__extension__ ({ __typeof ((op)) const _rtx =
((op)); if (((enum rtx_code) (_rtx)->code) != CONST_WIDE_INT
) rtl_check_failed_flag ("CWI_GET_NUM_ELEM", _rtx, "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
, 415, __FUNCTION__); _rtx; })->u2.num_elem) == 2) ? fancy_abort
("/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
, 415, __FUNCTION__), 0 : 0))
;
549 return (x86_64_immediate_operand (GEN_INT (CONST_WIDE_INT_ELT (op, 0))gen_rtx_CONST_INT (((void) 0, E_VOIDmode), (((op)->u.hwiv.
elem[0])))
,
550 DImode(scalar_int_mode ((scalar_int_mode::from_int) E_DImode)))
551 && x86_64_immediate_operand (GEN_INT (CONST_WIDE_INT_ELT (op,gen_rtx_CONST_INT (((void) 0, E_VOIDmode), (((op)->u.hwiv.
elem[1])))
552 1))gen_rtx_CONST_INT (((void) 0, E_VOIDmode), (((op)->u.hwiv.
elem[1])))
,
553 DImode(scalar_int_mode ((scalar_int_mode::from_int) E_DImode))));
554
555 default:
556 gcc_unreachable ()(fancy_abort ("/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
, 423, __FUNCTION__))
;
557 }
558}
559
560bool
561x86_64_hilo_int_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
562{
563 switch (GET_CODE (op)((enum rtx_code) (op)->code))
564 {
565 case CONST_INT:
566 case CONST_WIDE_INT:
567 break;
568 default:
569 return false;
570 }
571 return
572(x86_64_hilo_int_operand_1 (op, mode));
573}
574
575static inline bool
576x86_64_dwzext_immediate_operand_1 (rtx op ATTRIBUTE_UNUSED__attribute__ ((__unused__)), machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
577#line 431 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
578{
579 if (ix86_endbr_immediate_operand (op, VOIDmode((void) 0, E_VOIDmode)))
580 return false;
581
582 switch (GET_CODE (op)((enum rtx_code) (op)->code))
583 {
584 case CONST_INT:
585 if (!TARGET_64BIT((global_options.x_ix86_isa_flags & (1UL << 1)) != 0
)
)
586 return UINTVAL (op)((unsigned long) ((op)->u.hwint[0])) <= HOST_WIDE_INT_UC (0xffffffff)0xffffffffUL;
587 return UINTVAL (op)((unsigned long) ((op)->u.hwint[0])) <= HOST_WIDE_INT_UC (0x7fffffff)0x7fffffffUL;
588
589 case CONST_WIDE_INT:
590 if (!TARGET_64BIT((global_options.x_ix86_isa_flags & (1UL << 1)) != 0
)
)
591 return false;
592 return (CONST_WIDE_INT_NUNITS (op)((int)__extension__ ({ __typeof ((op)) const _rtx = ((op)); if
(((enum rtx_code) (_rtx)->code) != CONST_WIDE_INT) rtl_check_failed_flag
("CWI_GET_NUM_ELEM", _rtx, "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
, 445, __FUNCTION__); _rtx; })->u2.num_elem)
== 2
593 && CONST_WIDE_INT_ELT (op, 1)((op)->u.hwiv.elem[1]) == 0
594 && (trunc_int_for_mode (CONST_WIDE_INT_ELT (op, 0)((op)->u.hwiv.elem[0]), SImode(scalar_int_mode ((scalar_int_mode::from_int) E_SImode)))
595 == (HOST_WIDE_INTlong) CONST_WIDE_INT_ELT (op, 0)((op)->u.hwiv.elem[0])));
596
597 default:
598 gcc_unreachable ()(fancy_abort ("/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
, 451, __FUNCTION__))
;
599 }
600}
601
602bool
603x86_64_dwzext_immediate_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
604{
605 switch (GET_CODE (op)((enum rtx_code) (op)->code))
606 {
607 case CONST_INT:
608 case CONST_WIDE_INT:
609 break;
610 default:
611 return false;
612 }
613 return
614(x86_64_dwzext_immediate_operand_1 (op, mode));
615}
616
617bool
618x86_64_immediate_size_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
619{
620 return ((GET_CODE (op)((enum rtx_code) (op)->code) == SYMBOL_REF) && ((!(
621#line 459 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
622(TARGET_64BIT((global_options.x_ix86_isa_flags & (1UL << 1)) != 0
)
))) || ((
623#line 460 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
624(ix86_cmodelglobal_options.x_ix86_cmodel == CM_SMALL)) || (
625#line 461 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
626(ix86_cmodelglobal_options.x_ix86_cmodel == CM_KERNEL))))) && (
627(mode == VOIDmode((void) 0, E_VOIDmode) || GET_MODE (op)((machine_mode) (op)->mode) == mode));
628}
629
630bool
631x86_64_general_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
632{
633 return (
634#line 465 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
635(TARGET_64BIT((global_options.x_ix86_isa_flags & (1UL << 1)) != 0
)
)) ? ((nonimmediate_operand (op, mode)) || (x86_64_immediate_operand (op, mode))) : (general_operand (op, mode));
636}
637
638bool
639x86_64_hilo_general_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
640{
641 return (
642#line 473 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
643(TARGET_64BIT((global_options.x_ix86_isa_flags & (1UL << 1)) != 0
)
)) ? ((nonimmediate_operand (op, mode)) || (x86_64_hilo_int_operand (op, mode))) : (general_operand (op, mode));
644}
645
646bool
647x86_64_sext_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
648{
649 return (
650#line 482 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
651(GET_MODE (op)((machine_mode) (op)->mode) != VOIDmode((void) 0, E_VOIDmode))) && (x86_64_general_operand (op, mode));
652}
653
654bool
655sext_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
656{
657 return (
658#line 489 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
659(GET_MODE (op)((machine_mode) (op)->mode) != VOIDmode((void) 0, E_VOIDmode))) && (general_operand (op, mode));
660}
661
662bool
663x86_64_zext_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
664{
665 return (
666#line 496 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
667(TARGET_64BIT((global_options.x_ix86_isa_flags & (1UL << 1)) != 0
)
)) ? ((nonimmediate_operand (op, mode)) || ((x86_64_zext_immediate_operand (op, mode)) && (
668#line 499 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
669(GET_MODE (op)((machine_mode) (op)->mode) != VOIDmode((void) 0, E_VOIDmode))))) : (nonimmediate_operand (op, mode));
670}
671
672bool
673x86_64_szext_general_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
674{
675 return (
676#line 505 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
677(TARGET_64BIT((global_options.x_ix86_isa_flags & (1UL << 1)) != 0
)
)) ? ((nonimmediate_operand (op, mode)) || ((x86_64_immediate_operand (op, mode)) || (x86_64_zext_immediate_operand (op, mode)))) : (general_operand (op, mode));
678}
679
680bool
681x86_64_nonmemory_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
682{
683 return (
684#line 513 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
685(TARGET_64BIT((global_options.x_ix86_isa_flags & (1UL << 1)) != 0
)
)) ? ((register_operand (op, mode)) || (x86_64_immediate_operand (op, mode))) : (nonmemory_operand (op, mode));
686}
687
688bool
689x86_64_szext_nonmemory_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
690{
691 return (
692#line 520 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
693(TARGET_64BIT((global_options.x_ix86_isa_flags & (1UL << 1)) != 0
)
)) ? ((register_operand (op, mode)) || ((x86_64_immediate_operand (op, mode)) || (x86_64_zext_immediate_operand (op, mode)))) : (nonmemory_operand (op, mode));
694}
695
696static inline bool
697pic_32bit_operand_1 (rtx op ATTRIBUTE_UNUSED__attribute__ ((__unused__)), machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
698#line 530 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
699{
700 if (!flag_picglobal_options.x_flag_pic)
701 return false;
702
703 /* Rule out relocations that translate into 64bit constants. */
704 if (TARGET_64BIT((global_options.x_ix86_isa_flags & (1UL << 1)) != 0
)
&& GET_CODE (op)((enum rtx_code) (op)->code) == CONST)
705 {
706 op = XEXP (op, 0)(((op)->u.fld[0]).rt_rtx);
707 if (GET_CODE (op)((enum rtx_code) (op)->code) == PLUS && CONST_INT_P (XEXP (op, 1))(((enum rtx_code) ((((op)->u.fld[1]).rt_rtx))->code) ==
CONST_INT)
)
708 op = XEXP (op, 0)(((op)->u.fld[0]).rt_rtx);
709 if (GET_CODE (op)((enum rtx_code) (op)->code) == UNSPEC
710 && (XINT (op, 1)(((op)->u.fld[1]).rt_int) == UNSPEC_GOTOFF
711 || XINT (op, 1)(((op)->u.fld[1]).rt_int) == UNSPEC_GOT))
712 return false;
713 }
714
715 return symbolic_operand (op, mode);
716}
717
718bool
719pic_32bit_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
720{
721 switch (GET_CODE (op)((enum rtx_code) (op)->code))
722 {
723 case CONST:
724 case SYMBOL_REF:
725 case LABEL_REF:
726 break;
727 default:
728 return false;
729 }
730 return (
731(pic_32bit_operand_1 (op, mode))) && (
732(mode == VOIDmode((void) 0, E_VOIDmode) || GET_MODE (op)((machine_mode) (op)->mode) == mode || GET_MODE (op)((machine_mode) (op)->mode) == VOIDmode((void) 0, E_VOIDmode)));
733}
734
735bool
736x86_64_movabs_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
737{
738 return (nonmemory_operand (op, mode)) && (!(pic_32bit_operand (op, mode)));
739}
740
741static inline bool
742symbolic_operand_1 (rtx op ATTRIBUTE_UNUSED__attribute__ ((__unused__)), machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
743#line 558 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
744{
745 switch (GET_CODE (op)((enum rtx_code) (op)->code))
746 {
747 case SYMBOL_REF:
748 case LABEL_REF:
749 return true;
750
751 case CONST:
752 op = XEXP (op, 0)(((op)->u.fld[0]).rt_rtx);
753 if (GET_CODE (op)((enum rtx_code) (op)->code) == SYMBOL_REF
754 || GET_CODE (op)((enum rtx_code) (op)->code) == LABEL_REF
755 || (GET_CODE (op)((enum rtx_code) (op)->code) == UNSPEC
756 && (XINT (op, 1)(((op)->u.fld[1]).rt_int) == UNSPEC_GOT
757 || XINT (op, 1)(((op)->u.fld[1]).rt_int) == UNSPEC_GOTOFF
758 || XINT (op, 1)(((op)->u.fld[1]).rt_int) == UNSPEC_PCREL
759 || XINT (op, 1)(((op)->u.fld[1]).rt_int) == UNSPEC_GOTPCREL)))
760 return true;
761 if (GET_CODE (op)((enum rtx_code) (op)->code) != PLUS
762 || !CONST_INT_P (XEXP (op, 1))(((enum rtx_code) ((((op)->u.fld[1]).rt_rtx))->code) ==
CONST_INT)
)
763 return false;
764
765 op = XEXP (op, 0)(((op)->u.fld[0]).rt_rtx);
766 if (GET_CODE (op)((enum rtx_code) (op)->code) == SYMBOL_REF
767 || GET_CODE (op)((enum rtx_code) (op)->code) == LABEL_REF)
768 return true;
769 /* Only @GOTOFF gets offsets. */
770 if (GET_CODE (op)((enum rtx_code) (op)->code) != UNSPEC
771 || XINT (op, 1)(((op)->u.fld[1]).rt_int) != UNSPEC_GOTOFF)
772 return false;
773
774 op = XVECEXP (op, 0, 0)(((((op)->u.fld[0]).rt_rtvec))->elem[0]);
775 if (GET_CODE (op)((enum rtx_code) (op)->code) == SYMBOL_REF
776 || GET_CODE (op)((enum rtx_code) (op)->code) == LABEL_REF)
777 return true;
778 return false;
779
780 default:
781 gcc_unreachable ()(fancy_abort ("/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
, 595, __FUNCTION__))
;
782 }
783}
784
785bool
786symbolic_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
787{
788 switch (GET_CODE (op)((enum rtx_code) (op)->code))
789 {
790 case SYMBOL_REF:
791 case LABEL_REF:
792 case CONST:
793 break;
794 default:
795 return false;
796 }
797 return (
798(symbolic_operand_1 (op, mode))) && (
799(mode == VOIDmode((void) 0, E_VOIDmode) || GET_MODE (op)((machine_mode) (op)->mode) == mode || GET_MODE (op)((machine_mode) (op)->mode) == VOIDmode((void) 0, E_VOIDmode)));
800}
801
802static inline bool
803local_symbolic_operand_1 (rtx op ATTRIBUTE_UNUSED__attribute__ ((__unused__)), machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
804#line 602 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
805{
806 if (GET_CODE (op)((enum rtx_code) (op)->code) == CONST
807 && GET_CODE (XEXP (op, 0))((enum rtx_code) ((((op)->u.fld[0]).rt_rtx))->code) == PLUS
808 && CONST_INT_P (XEXP (XEXP (op, 0), 1))(((enum rtx_code) (((((((op)->u.fld[0]).rt_rtx))->u.fld
[1]).rt_rtx))->code) == CONST_INT)
)
809 op = XEXP (XEXP (op, 0), 0)((((((op)->u.fld[0]).rt_rtx))->u.fld[0]).rt_rtx);
810
811 if (GET_CODE (op)((enum rtx_code) (op)->code) == LABEL_REF)
812 return true;
813
814 if (GET_CODE (op)((enum rtx_code) (op)->code) != SYMBOL_REF)
815 return false;
816
817 if (SYMBOL_REF_TLS_MODEL (op)((enum tls_model) (((__extension__ ({ __typeof ((op)) const _rtx
= ((op)); if (((enum rtx_code) (_rtx)->code) != SYMBOL_REF
) rtl_check_failed_flag ("SYMBOL_REF_FLAGS", _rtx, "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
, 614, __FUNCTION__); _rtx; }) ->u2.symbol_ref_flags) >>
3) & 7))
)
818 return false;
819
820 /* Dll-imported symbols are always external. */
821 if (TARGET_DLLIMPORT_DECL_ATTRIBUTES0 && SYMBOL_REF_DLLIMPORT_P (op)(((__extension__ ({ __typeof ((op)) const _rtx = ((op)); if (
((enum rtx_code) (_rtx)->code) != SYMBOL_REF) rtl_check_failed_flag
("SYMBOL_REF_FLAGS", _rtx, "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
, 618, __FUNCTION__); _rtx; }) ->u2.symbol_ref_flags) &
((1 << 9) << 1)) != 0)
)
822 return false;
823 if (SYMBOL_REF_LOCAL_P (op)(((__extension__ ({ __typeof ((op)) const _rtx = ((op)); if (
((enum rtx_code) (_rtx)->code) != SYMBOL_REF) rtl_check_failed_flag
("SYMBOL_REF_FLAGS", _rtx, "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
, 620, __FUNCTION__); _rtx; }) ->u2.symbol_ref_flags) &
(1 << 1)) != 0)
)
824 return true;
825
826 /* There is, however, a not insubstantial body of code in the rest of
827 the compiler that assumes it can just stick the results of
828 ASM_GENERATE_INTERNAL_LABEL in a symbol_ref and have done. */
829 /* ??? This is a hack. Should update the body of the compiler to
830 always create a DECL an invoke targetm.encode_section_info. */
831 if (strncmp (XSTR (op, 0)(((op)->u.fld[0]).rt_str), internal_label_prefix,
832 internal_label_prefix_len) == 0)
833 return true;
834
835 return false;
836}
837
838bool
839local_symbolic_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
840{
841 switch (GET_CODE (op)((enum rtx_code) (op)->code))
842 {
843 case CONST:
844 case LABEL_REF:
845 case SYMBOL_REF:
846 break;
847 default:
848 return false;
849 }
850 return (
851(local_symbolic_operand_1 (op, mode))) && (
852(mode == VOIDmode((void) 0, E_VOIDmode) || GET_MODE (op)((machine_mode) (op)->mode) == mode || GET_MODE (op)((machine_mode) (op)->mode) == VOIDmode((void) 0, E_VOIDmode)));
853}
854
855static inline bool
856local_func_symbolic_operand_1 (rtx op ATTRIBUTE_UNUSED__attribute__ ((__unused__)), machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
857#line 637 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
858{
859 if (GET_CODE (op)((enum rtx_code) (op)->code) == CONST
860 && GET_CODE (XEXP (op, 0))((enum rtx_code) ((((op)->u.fld[0]).rt_rtx))->code) == PLUS
861 && CONST_INT_P (XEXP (XEXP (op, 0), 1))(((enum rtx_code) (((((((op)->u.fld[0]).rt_rtx))->u.fld
[1]).rt_rtx))->code) == CONST_INT)
)
862 op = XEXP (XEXP (op, 0), 0)((((((op)->u.fld[0]).rt_rtx))->u.fld[0]).rt_rtx);
863
864 if (GET_CODE (op)((enum rtx_code) (op)->code) == SYMBOL_REF
865 && !SYMBOL_REF_FUNCTION_P (op)(((__extension__ ({ __typeof ((op)) const _rtx = ((op)); if (
((enum rtx_code) (_rtx)->code) != SYMBOL_REF) rtl_check_failed_flag
("SYMBOL_REF_FLAGS", _rtx, "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
, 644, __FUNCTION__); _rtx; }) ->u2.symbol_ref_flags) &
(1 << 0)) != 0)
)
866 return false;
867
868 return true;
869}
870
871bool
872local_func_symbolic_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
873{
874 return (local_symbolic_operand (op, mode)) && (
875(local_func_symbolic_operand_1 (op, mode)));
876}
877
878bool
879gotoff_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
880{
881 return ((!(
882#line 659 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
883(TARGET_VXWORKS_RTPfalse))) || ((
884#line 660 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
885(ix86_cmodelglobal_options.x_ix86_cmodel == CM_LARGE)) || (
886#line 661 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
887(ix86_cmodelglobal_options.x_ix86_cmodel == CM_LARGE_PIC)))) && (local_symbolic_operand (op, mode));
888}
889
890bool
891tls_symbolic_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
892{
893 return (GET_CODE (op)((enum rtx_code) (op)->code) == SYMBOL_REF) && (
894#line 667 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
895(SYMBOL_REF_TLS_MODEL (op)((enum tls_model) (((__extension__ ({ __typeof ((op)) const _rtx
= ((op)); if (((enum rtx_code) (_rtx)->code) != SYMBOL_REF
) rtl_check_failed_flag ("SYMBOL_REF_FLAGS", _rtx, "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
, 667, __FUNCTION__); _rtx; }) ->u2.symbol_ref_flags) >>
3) & 7))
));
896}
897
898bool
899tls_modbase_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
900{
901 return (GET_CODE (op)((enum rtx_code) (op)->code) == SYMBOL_REF) && (
902#line 671 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
903(op == ix86_tls_module_base ()));
904}
905
906bool
907tls_address_pattern (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
908{
909 switch (GET_CODE (op)((enum rtx_code) (op)->code))
910 {
911 case SET:
912 case PARALLEL:
913 case UNSPEC:
914 case UNSPEC_VOLATILE:
915 break;
916 default:
917 return false;
918 }
919 return (
920#line 675 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
921(ix86_tls_address_pattern_p (op))) && (
922(mode == VOIDmode((void) 0, E_VOIDmode) || GET_MODE (op)((machine_mode) (op)->mode) == mode));
923}
924
925static inline bool
926constant_call_address_operand_1 (rtx op ATTRIBUTE_UNUSED__attribute__ ((__unused__)), machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
927#line 680 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
928{
929 if (ix86_cmodelglobal_options.x_ix86_cmodel == CM_LARGE || ix86_cmodelglobal_options.x_ix86_cmodel == CM_LARGE_PIC
930 || flag_force_indirect_callglobal_options.x_flag_force_indirect_call)
931 return false;
932 if (TARGET_DLLIMPORT_DECL_ATTRIBUTES0 && SYMBOL_REF_DLLIMPORT_P (op)(((__extension__ ({ __typeof ((op)) const _rtx = ((op)); if (
((enum rtx_code) (_rtx)->code) != SYMBOL_REF) rtl_check_failed_flag
("SYMBOL_REF_FLAGS", _rtx, "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
, 684, __FUNCTION__); _rtx; }) ->u2.symbol_ref_flags) &
((1 << 9) << 1)) != 0)
)
933 return false;
934 return true;
935}
936
937bool
938constant_call_address_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
939{
940 return ((GET_CODE (op)((enum rtx_code) (op)->code) == SYMBOL_REF) && (
941(constant_call_address_operand_1 (op, mode)))) && (
942(mode == VOIDmode((void) 0, E_VOIDmode) || GET_MODE (op)((machine_mode) (op)->mode) == mode));
943}
944
945static inline bool
946call_register_no_elim_operand_1 (rtx op ATTRIBUTE_UNUSED__attribute__ ((__unused__)), machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
947#line 695 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
948{
949 if (SUBREG_P (op)(((enum rtx_code) (op)->code) == SUBREG))
950 op = SUBREG_REG (op)(((op)->u.fld[0]).rt_rtx);
951
952 if (!TARGET_64BIT((global_options.x_ix86_isa_flags & (1UL << 1)) != 0
)
&& op == stack_pointer_rtx((this_target_rtl->x_global_rtl)[GR_STACK_POINTER]))
953 return false;
954
955 return register_no_elim_operand (op, mode);
956}
957
958bool
959call_register_no_elim_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
960{
961 return (register_operand (op, mode)) && (
962(call_register_no_elim_operand_1 (op, mode)));
963}
964
965static inline bool
966register_no_elim_operand_1 (rtx op ATTRIBUTE_UNUSED__attribute__ ((__unused__)), machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
967#line 709 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
968{
969 if (SUBREG_P (op)(((enum rtx_code) (op)->code) == SUBREG))
970 op = SUBREG_REG (op)(((op)->u.fld[0]).rt_rtx);
971
972 /* Before reload, we can allow (SUBREG (MEM...)) as a register operand
973 because it is guaranteed to be reloaded into one. */
974 if (MEM_P (op)(((enum rtx_code) (op)->code) == MEM))
975 return true;
976
977 return !(op == arg_pointer_rtx((this_target_rtl->x_global_rtl)[GR_ARG_POINTER])
978 || op == frame_pointer_rtx((this_target_rtl->x_global_rtl)[GR_FRAME_POINTER])
979 || IN_RANGE (REGNO (op),((unsigned long) ((rhs_regno(op))) - (unsigned long) (76) <=
(unsigned long) ((((76)) + 5)) - (unsigned long) (76))
980 FIRST_PSEUDO_REGISTER, LAST_VIRTUAL_REGISTER)((unsigned long) ((rhs_regno(op))) - (unsigned long) (76) <=
(unsigned long) ((((76)) + 5)) - (unsigned long) (76))
);
981}
982
983bool
984register_no_elim_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
985{
986 return (register_operand (op, mode)) && (
987(register_no_elim_operand_1 (op, mode)));
988}
989
990static inline bool
991index_register_operand_1 (rtx op ATTRIBUTE_UNUSED__attribute__ ((__unused__)), machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
992#line 728 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
993{
994 if (SUBREG_P (op)(((enum rtx_code) (op)->code) == SUBREG))
995 op = SUBREG_REG (op)(((op)->u.fld[0]).rt_rtx);
996
997 if (reload_completed)
998 return REG_OK_FOR_INDEX_STRICT_P (op)(((rhs_regno(op))) < 7 || ((unsigned long) (((rhs_regno(op
)))) - (unsigned long) (36) <= (unsigned long) (43) - (unsigned
long) (36)) || (unsigned) reg_renumber[((rhs_regno(op)))] <
7 || ((unsigned long) (((unsigned) reg_renumber[((rhs_regno(
op)))])) - (unsigned long) (36) <= (unsigned long) (43) - (
unsigned long) (36)))
;
999 else
1000 return REG_OK_FOR_INDEX_NONSTRICT_P (op)((rhs_regno(op)) < 7 || ((unsigned long) (((rhs_regno(op))
)) - (unsigned long) (36) <= (unsigned long) (43) - (unsigned
long) (36)) || (rhs_regno(op)) >= 76)
;
1001}
1002
1003bool
1004index_register_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
1005{
1006 return (register_operand (op, mode)) && (
1007(index_register_operand_1 (op, mode)));
1008}
1009
1010bool
1011general_no_elim_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
1012{
1013 return (GET_CODE (op)((enum rtx_code) (op)->code) == REG || GET_CODE (op)((enum rtx_code) (op)->code) == SUBREG) ? (register_no_elim_operand (op, mode)) : (general_operand (op, mode));
1014}
1015
1016bool
1017nonmemory_no_elim_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
1018{
1019 return (register_no_elim_operand (op, mode)) || (immediate_operand (op, mode));
1020}
1021
1022bool
1023indirect_branch_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
1024{
1025 return (register_operand (op, mode)) || ((!(
1026#line 753 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
1027(TARGET_INDIRECT_BRANCH_REGISTER(global_options.x_ix86_indirect_branch_register || (cfun + 0)
->machine->indirect_branch_type != indirect_branch_keep
)
))) && ((!(
1028#line 754 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
1029(TARGET_X32((global_options.x_ix86_isa_flags & (1UL << 58)) !=
0)
))) && (memory_operand (op, mode))));
1030}
1031
1032static inline bool
1033sibcall_memory_operand_1 (rtx op ATTRIBUTE_UNUSED__attribute__ ((__unused__)), machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
1034#line 764 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
1035{
1036 op = XEXP (op, 0)(((op)->u.fld[0]).rt_rtx);
1037 if (CONSTANT_P (op)((rtx_class[(int) (((enum rtx_code) (op)->code))]) == RTX_CONST_OBJ
)
)
1038 return true;
1039 if (GET_CODE (op)((enum rtx_code) (op)->code) == PLUS && REG_P (XEXP (op, 0))(((enum rtx_code) ((((op)->u.fld[0]).rt_rtx))->code) ==
REG)
)
1040 {
1041 int regno = REGNO (XEXP (op, 0))(rhs_regno((((op)->u.fld[0]).rt_rtx)));
1042 if (!HARD_REGISTER_NUM_P (regno)((regno) < 76) || call_used_or_fixed_reg_p (regno))
1043 {
1044 op = XEXP (op, 1)(((op)->u.fld[1]).rt_rtx);
1045 if (GOT32_symbol_operand (op, VOIDmode((void) 0, E_VOIDmode)))
1046 return true;
1047 }
1048 }
1049 return false;
1050}
1051
1052bool
1053sibcall_memory_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
1054{
1055 return (memory_operand (op, mode)) && (
1056(sibcall_memory_operand_1 (op, mode)));
1057}
1058
1059bool
1060GOT_memory_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
1061{
1062 return (memory_operand (op, mode)) && ((GET_CODE (XEXP (op, 0))((enum rtx_code) ((((op)->u.fld[0]).rt_rtx))->code) == CONST) && ((GET_CODE (XEXP (XEXP (op, 0), 0))((enum rtx_code) (((((((op)->u.fld[0]).rt_rtx))->u.fld[
0]).rt_rtx))->code)
== UNSPEC) && (
1063#line 786 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
1064(XINT (XEXP (XEXP (op, 0), 0), 1)(((((((((op)->u.fld[0]).rt_rtx))->u.fld[0]).rt_rtx))->
u.fld[1]).rt_int)
== UNSPEC_GOTPCREL))));
1065}
1066
1067bool
1068call_insn_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
1069{
1070 return (
1071#line 791 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
1072(constant_call_address_operand
1073 (op, mode == VOIDmode((void) 0, E_VOIDmode) ? mode : Pmode(global_options.x_ix86_pmode == PMODE_DI ? (scalar_int_mode (
(scalar_int_mode::from_int) E_DImode)) : (scalar_int_mode ((scalar_int_mode
::from_int) E_SImode)))
))) || ((call_register_no_elim_operand (op, mode)) || ((!(
1074#line 794 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
1075(TARGET_INDIRECT_BRANCH_REGISTER(global_options.x_ix86_indirect_branch_register || (cfun + 0)
->machine->indirect_branch_type != indirect_branch_keep
)
))) && (((!(
1076#line 795 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
1077(TARGET_X32((global_options.x_ix86_isa_flags & (1UL << 58)) !=
0)
))) && (memory_operand (op, mode))) || ((
1078#line 797 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
1079(TARGET_X32((global_options.x_ix86_isa_flags & (1UL << 58)) !=
0)
&& Pmode(global_options.x_ix86_pmode == PMODE_DI ? (scalar_int_mode (
(scalar_int_mode::from_int) E_DImode)) : (scalar_int_mode ((scalar_int_mode
::from_int) E_SImode)))
== DImode(scalar_int_mode ((scalar_int_mode::from_int) E_DImode)))) && (GOT_memory_operand (op, mode))))));
1080}
1081
1082bool
1083sibcall_insn_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
1084{
1085 return (
1086#line 802 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
1087(constant_call_address_operand
1088 (op, mode == VOIDmode((void) 0, E_VOIDmode) ? mode : Pmode(global_options.x_ix86_pmode == PMODE_DI ? (scalar_int_mode (
(scalar_int_mode::from_int) E_DImode)) : (scalar_int_mode ((scalar_int_mode
::from_int) E_SImode)))
))) || ((register_no_elim_operand (op, mode)) || ((!(
1089#line 805 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
1090(TARGET_INDIRECT_BRANCH_REGISTER(global_options.x_ix86_indirect_branch_register || (cfun + 0)
->machine->indirect_branch_type != indirect_branch_keep
)
))) && (((!(
1091#line 806 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
1092(TARGET_X32((global_options.x_ix86_isa_flags & (1UL << 58)) !=
0)
))) && (sibcall_memory_operand (op, mode))) || ((
1093#line 808 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
1094(TARGET_X32((global_options.x_ix86_isa_flags & (1UL << 58)) !=
0)
&& Pmode(global_options.x_ix86_pmode == PMODE_DI ? (scalar_int_mode (
(scalar_int_mode::from_int) E_DImode)) : (scalar_int_mode ((scalar_int_mode
::from_int) E_SImode)))
== DImode(scalar_int_mode ((scalar_int_mode::from_int) E_DImode)))) && (GOT_memory_operand (op, mode))))));
1095}
1096
1097bool
1098GOT32_symbol_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
1099{
1100 return ((GET_CODE (op)((enum rtx_code) (op)->code) == CONST) && ((GET_CODE (XEXP (op, 0))((enum rtx_code) ((((op)->u.fld[0]).rt_rtx))->code) == UNSPEC) && (
1101#line 815 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
1102(XINT (XEXP (op, 0), 1)((((((op)->u.fld[0]).rt_rtx))->u.fld[1]).rt_int) == UNSPEC_GOT)))) && (
1103(mode == VOIDmode((void) 0, E_VOIDmode) || GET_MODE (op)((machine_mode) (op)->mode) == mode));
1104}
1105
1106static inline bool
1107const0_operand_1 (rtx op ATTRIBUTE_UNUSED__attribute__ ((__unused__)), machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
1108#line 820 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
1109{
1110 if (mode == VOIDmode((void) 0, E_VOIDmode))
1111 mode = GET_MODE (op)((machine_mode) (op)->mode);
1112 return op == CONST0_RTX (mode)(const_tiny_rtx[0][(int) (mode)]);
1113}
1114
1115bool
1116const0_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
1117{
1118 switch (GET_CODE (op)((enum rtx_code) (op)->code))
1119 {
1120 case CONST_INT:
1121 case CONST_DOUBLE:
1122 case CONST_VECTOR:
1123 break;
1124 default:
1125 return false;
1126 }
1127 return (
1128(const0_operand_1 (op, mode))) && (
1129(mode == VOIDmode((void) 0, E_VOIDmode) || GET_MODE (op)((machine_mode) (op)->mode) == mode || GET_MODE (op)((machine_mode) (op)->mode) == VOIDmode((void) 0, E_VOIDmode)));
1130}
1131
1132static inline bool
1133const1_operand_1 (rtx op ATTRIBUTE_UNUSED__attribute__ ((__unused__)), machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
1134#line 829 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
1135{
1136 if (mode == VOIDmode((void) 0, E_VOIDmode))
1137 mode = GET_MODE (op)((machine_mode) (op)->mode);
1138 return op == CONST1_RTX (mode)(const_tiny_rtx[1][(int) (mode)]);
1139}
1140
1141bool
1142const1_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
1143{
1144 switch (GET_CODE (op)((enum rtx_code) (op)->code))
1145 {
1146 case CONST_INT:
1147 case CONST_DOUBLE:
1148 case CONST_VECTOR:
1149 break;
1150 default:
1151 return false;
1152 }
1153 return (
1154(const1_operand_1 (op, mode))) && (
1155(mode == VOIDmode((void) 0, E_VOIDmode) || GET_MODE (op)((machine_mode) (op)->mode) == mode || GET_MODE (op)((machine_mode) (op)->mode) == VOIDmode((void) 0, E_VOIDmode)));
1156}
1157
1158bool
1159constm1_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
1160{
1161 return (GET_CODE (op)((enum rtx_code) (op)->code) == CONST_INT) && (
1162#line 838 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
1163(op == constm1_rtx(const_int_rtx[64 -1])));
1164}
1165
1166bool
1167const8_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
1168{
1169 return (GET_CODE (op)((enum rtx_code) (op)->code) == CONST_INT) && (
1170#line 843 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
1171(INTVAL (op)((op)->u.hwint[0]) == 8));
1172}
1173
1174bool
1175const128_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
1176{
1177 return (GET_CODE (op)((enum rtx_code) (op)->code) == CONST_INT) && (
1178#line 848 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
1179(INTVAL (op)((op)->u.hwint[0]) == 128));
1180}
1181
1182bool
1183const_32bit_mask (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
1184{
1185 return (GET_CODE (op)((enum rtx_code) (op)->code) == CONST_INT) && (
1186#line 853 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
1187(trunc_int_for_mode (INTVAL (op)((op)->u.hwint[0]), DImode(scalar_int_mode ((scalar_int_mode::from_int) E_DImode)))
1188 == (HOST_WIDE_INTlong) 0xffffffff));
1189}
1190
1191static inline bool
1192const248_operand_1 (rtx op ATTRIBUTE_UNUSED__attribute__ ((__unused__)), machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
1193#line 859 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
1194{
1195 HOST_WIDE_INTlong i = INTVAL (op)((op)->u.hwint[0]);
1196 return i == 2 || i == 4 || i == 8;
1197}
1198
1199bool
1200const248_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
1201{
1202 return (GET_CODE (op)((enum rtx_code) (op)->code) == CONST_INT) && (
1203(const248_operand_1 (op, mode)));
1204}
1205
1206static inline bool
1207const123_operand_1 (rtx op ATTRIBUTE_UNUSED__attribute__ ((__unused__)), machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
1208#line 867 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
1209{
1210 HOST_WIDE_INTlong i = INTVAL (op)((op)->u.hwint[0]);
1211 return i == 1 || i == 2 || i == 3;
1212}
1213
1214bool
1215const123_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
1216{
1217 return (GET_CODE (op)((enum rtx_code) (op)->code) == CONST_INT) && (
1218(const123_operand_1 (op, mode)));
1219}
1220
1221static inline bool
1222const2367_operand_1 (rtx op ATTRIBUTE_UNUSED__attribute__ ((__unused__)), machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
1223#line 875 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
1224{
1225 HOST_WIDE_INTlong i = INTVAL (op)((op)->u.hwint[0]);
1226 return i == 2 || i == 3 || i == 6 || i == 7;
1227}
1228
1229bool
1230const2367_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
1231{
1232 return (GET_CODE (op)((enum rtx_code) (op)->code) == CONST_INT) && (
1233(const2367_operand_1 (op, mode)));
1234}
1235
1236static inline bool
1237const1248_operand_1 (rtx op ATTRIBUTE_UNUSED__attribute__ ((__unused__)), machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
1238#line 883 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
1239{
1240 HOST_WIDE_INTlong i = INTVAL (op)((op)->u.hwint[0]);
1241 return i == 1 || i == 2 || i == 4 || i == 8;
1242}
1243
1244bool
1245const1248_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
1246{
1247 return (GET_CODE (op)((enum rtx_code) (op)->code) == CONST_INT) && (
1248(const1248_operand_1 (op, mode)));
1249}
1250
1251static inline bool
1252const359_operand_1 (rtx op ATTRIBUTE_UNUSED__attribute__ ((__unused__)), machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
1253#line 891 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
1254{
1255 HOST_WIDE_INTlong i = INTVAL (op)((op)->u.hwint[0]);
1256 return i == 3 || i == 5 || i == 9;
1257}
1258
1259bool
1260const359_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
1261{
1262 return (GET_CODE (op)((enum rtx_code) (op)->code) == CONST_INT) && (
1263(const359_operand_1 (op, mode)));
1264}
1265
1266static inline bool
1267const_4_or_8_to_11_operand_1 (rtx op ATTRIBUTE_UNUSED__attribute__ ((__unused__)), machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
1268#line 899 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
1269{
1270 HOST_WIDE_INTlong i = INTVAL (op)((op)->u.hwint[0]);
1271 return i == 4 || (i >= 8 && i <= 11);
1272}
1273
1274bool
1275const_4_or_8_to_11_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
1276{
1277 return (GET_CODE (op)((enum rtx_code) (op)->code) == CONST_INT) && (
1278(const_4_or_8_to_11_operand_1 (op, mode)));
1279}
1280
1281static inline bool
1282const48_operand_1 (rtx op ATTRIBUTE_UNUSED__attribute__ ((__unused__)), machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
1283#line 907 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
1284{
1285 HOST_WIDE_INTlong i = INTVAL (op)((op)->u.hwint[0]);
1286 return i == 4 || i == 8;
1287}
1288
1289bool
1290const48_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
1291{
1292 return (GET_CODE (op)((enum rtx_code) (op)->code) == CONST_INT) && (
1293(const48_operand_1 (op, mode)));
1294}
1295
1296bool
1297const_0_to_1_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
1298{
1299 return (GET_CODE (op)((enum rtx_code) (op)->code) == CONST_INT) && ((
1300#line 915 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
1301(op == const0_rtx(const_int_rtx[64]))) || (
1302#line 916 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
1303(op == const1_rtx(const_int_rtx[64 +1]))));
1304}
1305
1306bool
1307const_0_to_3_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
1308{
1309 return (GET_CODE (op)((enum rtx_code) (op)->code) == CONST_INT) && (
1310#line 921 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
1311(IN_RANGE (INTVAL (op), 0, 3)((unsigned long) (((op)->u.hwint[0])) - (unsigned long) (0
) <= (unsigned long) (3) - (unsigned long) (0))
));
1312}
1313
1314bool
1315const_0_to_4_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
1316{
1317 return (GET_CODE (op)((enum rtx_code) (op)->code) == CONST_INT) && (
1318#line 926 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
1319(IN_RANGE (INTVAL (op), 0, 4)((unsigned long) (((op)->u.hwint[0])) - (unsigned long) (0
) <= (unsigned long) (4) - (unsigned long) (0))
));
1320}
1321
1322bool
1323const_0_to_5_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
1324{
1325 return (GET_CODE (op)((enum rtx_code) (op)->code) == CONST_INT) && (
1326#line 931 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
1327(IN_RANGE (INTVAL (op), 0, 5)((unsigned long) (((op)->u.hwint[0])) - (unsigned long) (0
) <= (unsigned long) (5) - (unsigned long) (0))
));
1328}
1329
1330bool
1331const_0_to_7_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
1332{
1333 return (GET_CODE (op)((enum rtx_code) (op)->code) == CONST_INT) && (
1334#line 936 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
1335(IN_RANGE (INTVAL (op), 0, 7)((unsigned long) (((op)->u.hwint[0])) - (unsigned long) (0
) <= (unsigned long) (7) - (unsigned long) (0))
));
1336}
1337
1338bool
1339const_0_to_15_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
1340{
1341 return (GET_CODE (op)((enum rtx_code) (op)->code) == CONST_INT) && (
1342#line 941 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
1343(IN_RANGE (INTVAL (op), 0, 15)((unsigned long) (((op)->u.hwint[0])) - (unsigned long) (0
) <= (unsigned long) (15) - (unsigned long) (0))
));
1344}
1345
1346bool
1347const_0_to_31_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
1348{
1349 return (GET_CODE (op)((enum rtx_code) (op)->code) == CONST_INT) && (
1350#line 946 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
1351(IN_RANGE (INTVAL (op), 0, 31)((unsigned long) (((op)->u.hwint[0])) - (unsigned long) (0
) <= (unsigned long) (31) - (unsigned long) (0))
));
1352}
1353
1354bool
1355const_0_to_63_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
1356{
1357 return (GET_CODE (op)((enum rtx_code) (op)->code) == CONST_INT) && (
1358#line 951 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
1359(IN_RANGE (INTVAL (op), 0, 63)((unsigned long) (((op)->u.hwint[0])) - (unsigned long) (0
) <= (unsigned long) (63) - (unsigned long) (0))
));
1360}
1361
1362bool
1363const_0_to_127_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
1364{
1365 return (GET_CODE (op)((enum rtx_code) (op)->code) == CONST_INT) && (
1366#line 956 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
1367(IN_RANGE (INTVAL (op), 0, 127)((unsigned long) (((op)->u.hwint[0])) - (unsigned long) (0
) <= (unsigned long) (127) - (unsigned long) (0))
));
1368}
1369
1370bool
1371const_0_to_255_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
1372{
1373 return (GET_CODE (op)((enum rtx_code) (op)->code) == CONST_INT) && (
1374#line 961 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
1375(IN_RANGE (INTVAL (op), 0, 255)((unsigned long) (((op)->u.hwint[0])) - (unsigned long) (0
) <= (unsigned long) (255) - (unsigned long) (0))
));
1376}
1377
1378static inline bool
1379const_0_to_255_mul_8_operand_1 (rtx op ATTRIBUTE_UNUSED__attribute__ ((__unused__)), machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
1380#line 966 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
1381{
1382 unsigned HOST_WIDE_INTlong val = INTVAL (op)((op)->u.hwint[0]);
1383 return val <= 255*8 && val % 8 == 0;
1384}
1385
1386bool
1387const_0_to_255_mul_8_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
1388{
1389 return (GET_CODE (op)((enum rtx_code) (op)->code) == CONST_INT) && (
1390(const_0_to_255_mul_8_operand_1 (op, mode)));
1391}
1392
1393static inline bool
1394const_0_to_255_not_mul_8_operand_1 (rtx op ATTRIBUTE_UNUSED__attribute__ ((__unused__)), machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
1395#line 974 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
1396{
1397 unsigned HOST_WIDE_INTlong val = INTVAL (op)((op)->u.hwint[0]);
1398 return val <= 255 && val % 8 != 0;
1399}
1400
1401bool
1402const_0_to_255_not_mul_8_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
1403{
1404 return (GET_CODE (op)((enum rtx_code) (op)->code) == CONST_INT) && (
1405(const_0_to_255_not_mul_8_operand_1 (op, mode)));
1406}
1407
1408bool
1409const_1_to_31_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
1410{
1411 return (GET_CODE (op)((enum rtx_code) (op)->code) == CONST_INT) && (
1412#line 983 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
1413(IN_RANGE (INTVAL (op), 1, 31)((unsigned long) (((op)->u.hwint[0])) - (unsigned long) (1
) <= (unsigned long) (31) - (unsigned long) (1))
));
1414}
1415
1416bool
1417const_1_to_63_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
1418{
1419 return (GET_CODE (op)((enum rtx_code) (op)->code) == CONST_INT) && (
1420#line 989 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
1421(IN_RANGE (INTVAL (op), 1, 63)((unsigned long) (((op)->u.hwint[0])) - (unsigned long) (1
) <= (unsigned long) (63) - (unsigned long) (1))
));
1422}
1423
1424bool
1425const_2_to_3_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
1426{
1427 return (GET_CODE (op)((enum rtx_code) (op)->code) == CONST_INT) && (
1428#line 994 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
1429(IN_RANGE (INTVAL (op), 2, 3)((unsigned long) (((op)->u.hwint[0])) - (unsigned long) (2
) <= (unsigned long) (3) - (unsigned long) (2))
));
1430}
1431
1432bool
1433const_4_to_5_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
1434{
1435 return (GET_CODE (op)((enum rtx_code) (op)->code) == CONST_INT) && (
1436#line 999 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
1437(IN_RANGE (INTVAL (op), 4, 5)((unsigned long) (((op)->u.hwint[0])) - (unsigned long) (4
) <= (unsigned long) (5) - (unsigned long) (4))
));
1438}
1439
1440bool
1441const_4_to_7_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
1442{
1443 return (GET_CODE (op)((enum rtx_code) (op)->code) == CONST_INT) && (
1444#line 1004 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
1445(IN_RANGE (INTVAL (op), 4, 7)((unsigned long) (((op)->u.hwint[0])) - (unsigned long) (4
) <= (unsigned long) (7) - (unsigned long) (4))
));
1446}
1447
1448bool
1449const_6_to_7_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
1450{
1451 return (GET_CODE (op)((enum rtx_code) (op)->code) == CONST_INT) && (
1452#line 1009 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
1453(IN_RANGE (INTVAL (op), 6, 7)((unsigned long) (((op)->u.hwint[0])) - (unsigned long) (6
) <= (unsigned long) (7) - (unsigned long) (6))
));
1454}
1455
1456bool
1457const_8_to_9_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
1458{
1459 return (GET_CODE (op)((enum rtx_code) (op)->code) == CONST_INT) && (
1460#line 1014 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
1461(IN_RANGE (INTVAL (op), 8, 9)((unsigned long) (((op)->u.hwint[0])) - (unsigned long) (8
) <= (unsigned long) (9) - (unsigned long) (8))
));
1462}
1463
1464bool
1465const_8_to_11_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
1466{
1467 return (GET_CODE (op)((enum rtx_code) (op)->code) == CONST_INT) && (
1468#line 1019 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
1469(IN_RANGE (INTVAL (op), 8, 11)((unsigned long) (((op)->u.hwint[0])) - (unsigned long) (8
) <= (unsigned long) (11) - (unsigned long) (8))
));
1470}
1471
1472bool
1473const_8_to_15_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
1474{
1475 return (GET_CODE (op)((enum rtx_code) (op)->code) == CONST_INT) && (
1476#line 1024 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
1477(IN_RANGE (INTVAL (op), 8, 15)((unsigned long) (((op)->u.hwint[0])) - (unsigned long) (8
) <= (unsigned long) (15) - (unsigned long) (8))
));
1478}
1479
1480bool
1481const_10_to_11_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
1482{
1483 return (GET_CODE (op)((enum rtx_code) (op)->code) == CONST_INT) && (
1484#line 1029 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
1485(IN_RANGE (INTVAL (op), 10, 11)((unsigned long) (((op)->u.hwint[0])) - (unsigned long) (10
) <= (unsigned long) (11) - (unsigned long) (10))
));
1486}
1487
1488bool
1489const_12_to_13_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
1490{
1491 return (GET_CODE (op)((enum rtx_code) (op)->code) == CONST_INT) && (
1492#line 1034 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
1493(IN_RANGE (INTVAL (op), 12, 13)((unsigned long) (((op)->u.hwint[0])) - (unsigned long) (12
) <= (unsigned long) (13) - (unsigned long) (12))
));
1494}
1495
1496bool
1497const_12_to_15_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
1498{
1499 return (GET_CODE (op)((enum rtx_code) (op)->code) == CONST_INT) && (
1500#line 1039 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
1501(IN_RANGE (INTVAL (op), 12, 15)((unsigned long) (((op)->u.hwint[0])) - (unsigned long) (12
) <= (unsigned long) (15) - (unsigned long) (12))
));
1502}
1503
1504bool
1505const_14_to_15_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
1506{
1507 return (GET_CODE (op)((enum rtx_code) (op)->code) == CONST_INT) && (
1508#line 1044 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
1509(IN_RANGE (INTVAL (op), 14, 15)((unsigned long) (((op)->u.hwint[0])) - (unsigned long) (14
) <= (unsigned long) (15) - (unsigned long) (14))
));
1510}
1511
1512bool
1513const_16_to_19_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
1514{
1515 return (GET_CODE (op)((enum rtx_code) (op)->code) == CONST_INT) && (
1516#line 1049 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
1517(IN_RANGE (INTVAL (op), 16, 19)((unsigned long) (((op)->u.hwint[0])) - (unsigned long) (16
) <= (unsigned long) (19) - (unsigned long) (16))
));
1518}
1519
1520bool
1521const_16_to_31_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
1522{
1523 return (GET_CODE (op)((enum rtx_code) (op)->code) == CONST_INT) && (
1524#line 1054 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
1525(IN_RANGE (INTVAL (op), 16, 31)((unsigned long) (((op)->u.hwint[0])) - (unsigned long) (16
) <= (unsigned long) (31) - (unsigned long) (16))
));
1526}
1527
1528bool
1529const_20_to_23_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
1530{
1531 return (GET_CODE (op)((enum rtx_code) (op)->code) == CONST_INT) && (
1532#line 1059 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
1533(IN_RANGE (INTVAL (op), 20, 23)((unsigned long) (((op)->u.hwint[0])) - (unsigned long) (20
) <= (unsigned long) (23) - (unsigned long) (20))
));
1534}
1535
1536bool
1537const_24_to_27_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
1538{
1539 return (GET_CODE (op)((enum rtx_code) (op)->code) == CONST_INT) && (
1540#line 1064 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
1541(IN_RANGE (INTVAL (op), 24, 27)((unsigned long) (((op)->u.hwint[0])) - (unsigned long) (24
) <= (unsigned long) (27) - (unsigned long) (24))
));
1542}
1543
1544bool
1545const_28_to_31_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
1546{
1547 return (GET_CODE (op)((enum rtx_code) (op)->code) == CONST_INT) && (
1548#line 1069 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
1549(IN_RANGE (INTVAL (op), 28, 31)((unsigned long) (((op)->u.hwint[0])) - (unsigned long) (28
) <= (unsigned long) (31) - (unsigned long) (28))
));
1550}
1551
1552static inline bool
1553incdec_operand_1 (rtx op ATTRIBUTE_UNUSED__attribute__ ((__unused__)), machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
1554#line 1074 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
1555{
1556 /* On Pentium4, the inc and dec operations causes extra dependency on flag
1557 registers, since carry flag is not set. */
1558 if (!TARGET_USE_INCDECix86_tune_features[X86_TUNE_USE_INCDEC] && !optimize_insn_for_size_p ())
1559 return false;
1560 return op == const1_rtx(const_int_rtx[64 +1]) || op == constm1_rtx(const_int_rtx[64 -1]);
1561}
1562
1563bool
1564incdec_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
1565{
1566 return (GET_CODE (op)((enum rtx_code) (op)->code) == CONST_INT) && (
1567(incdec_operand_1 (op, mode)));
1568}
1569
1570bool
1571vec_setm_sse41_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
1572{
1573 return ((register_operand (op, mode)) && (
1574#line 1085 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
1575(TARGET_SSE4_1((global_options.x_ix86_isa_flags & (1UL << 38)) !=
0)
))) || ((GET_CODE (op)((enum rtx_code) (op)->code) == CONST_INT) && (
1576(mode == VOIDmode((void) 0, E_VOIDmode) || GET_MODE (op)((machine_mode) (op)->mode) == mode || GET_MODE (op)((machine_mode) (op)->mode) == VOIDmode((void) 0, E_VOIDmode))));
1577}
1578
1579bool
1580vec_setm_avx2_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
1581{
1582 return ((register_operand (op, mode)) && (
1583#line 1090 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
1584(TARGET_AVX2((global_options.x_ix86_isa_flags & (1UL << 9)) != 0
)
))) || ((GET_CODE (op)((enum rtx_code) (op)->code) == CONST_INT) && (
1585(mode == VOIDmode((void) 0, E_VOIDmode) || GET_MODE (op)((machine_mode) (op)->mode) == mode || GET_MODE (op)((machine_mode) (op)->mode) == VOIDmode((void) 0, E_VOIDmode))));
1586}
1587
1588bool
1589vec_setm_mmx_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
1590{
1591 return ((register_operand (op, mode)) && ((
1592#line 1095 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
1593(TARGET_SSE4_1((global_options.x_ix86_isa_flags & (1UL << 38)) !=
0)
)) && (
1594#line 1096 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
1595(TARGET_MMX_WITH_SSE(((global_options.x_ix86_isa_flags & (1UL << 1)) !=
0) && ((global_options.x_ix86_isa_flags & (1UL <<
51)) != 0))
)))) || ((GET_CODE (op)((enum rtx_code) (op)->code) == CONST_INT) && (
1596(mode == VOIDmode((void) 0, E_VOIDmode) || GET_MODE (op)((machine_mode) (op)->mode) == mode || GET_MODE (op)((machine_mode) (op)->mode) == VOIDmode((void) 0, E_VOIDmode))));
1597}
1598
1599bool
1600reg_or_pm1_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
1601{
1602 return (register_operand (op, mode)) || (((GET_CODE (op)((enum rtx_code) (op)->code) == CONST_INT) && ((
1603#line 1103 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
1604(op == const1_rtx(const_int_rtx[64 +1]))) || (
1605#line 1104 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
1606(op == constm1_rtx(const_int_rtx[64 -1]))))) && (
1607(mode == VOIDmode((void) 0, E_VOIDmode) || GET_MODE (op)((machine_mode) (op)->mode) == mode || GET_MODE (op)((machine_mode) (op)->mode) == VOIDmode((void) 0, E_VOIDmode))));
1608}
1609
1610bool
1611regmem_or_bitnot_regmem_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
1612{
1613 return (nonimmediate_operand (op, mode)) || (((GET_CODE (op)((enum rtx_code) (op)->code) == NOT) && (
1614#line 1111 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
1615(nonimmediate_operand (XEXP (op, 0)(((op)->u.fld[0]).rt_rtx), mode)))) && (
1616(mode == VOIDmode((void) 0, E_VOIDmode) || GET_MODE (op)((machine_mode) (op)->mode) == mode)));
1617}
1618
1619bool
1620shiftdi_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
1621{
1622 return (
1623#line 1115 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
1624(TARGET_64BIT((global_options.x_ix86_isa_flags & (1UL << 1)) != 0
)
)) ? (nonimmediate_operand (op, mode)) : (register_operand (op, mode));
1625}
1626
1627bool
1628ashldi_input_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
1629{
1630 return (
1631#line 1120 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
1632(TARGET_64BIT((global_options.x_ix86_isa_flags & (1UL << 1)) != 0
)
)) ? (nonimmediate_operand (op, mode)) : (reg_or_pm1_operand (op, mode));
1633}
1634
1635static inline bool
1636zero_extended_scalar_load_operand_1 (rtx op ATTRIBUTE_UNUSED__attribute__ ((__unused__)), machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
1637#line 1128 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
1638{
1639 unsigned n_elts;
1640 op = avoid_constant_pool_reference (op);
1641
1642 if (GET_CODE (op)((enum rtx_code) (op)->code) != CONST_VECTOR)
1643 return false;
1644
1645 n_elts = CONST_VECTOR_NUNITS (op)(mode_to_nunits (((machine_mode) (op)->mode)).coeffs[0]);
1646
1647 for (n_elts--; n_elts > 0; n_elts--)
1648 {
1649 rtx elt = CONST_VECTOR_ELT (op, n_elts)const_vector_elt (op, n_elts);
1650 if (elt != CONST0_RTX (GET_MODE_INNER (GET_MODE (op)))(const_tiny_rtx[0][(int) ((mode_to_inner (((machine_mode) (op
)->mode))))])
)
1651 return false;
1652 }
1653 return true;
1654}
1655
1656bool
1657zero_extended_scalar_load_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
1658{
1659 return ((GET_CODE (op)((enum rtx_code) (op)->code) == MEM) && (
1660(zero_extended_scalar_load_operand_1 (op, mode)))) && (
1661(mode == VOIDmode((void) 0, E_VOIDmode) || GET_MODE (op)((machine_mode) (op)->mode) == mode));
1662}
1663
1664static inline bool
1665float_vector_all_ones_operand_1 (rtx op ATTRIBUTE_UNUSED__attribute__ ((__unused__)), machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
1666#line 1149 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
1667{
1668 mode = GET_MODE (op)((machine_mode) (op)->mode);
1669 if (!FLOAT_MODE_P (mode)(((enum mode_class) mode_class[mode]) == MODE_FLOAT || ((enum
mode_class) mode_class[mode]) == MODE_DECIMAL_FLOAT || ((enum
mode_class) mode_class[mode]) == MODE_COMPLEX_FLOAT || ((enum
mode_class) mode_class[mode]) == MODE_VECTOR_FLOAT)
1670 || (MEM_P (op)(((enum rtx_code) (op)->code) == MEM)
1671 && (!SYMBOL_REF_P (XEXP (op, 0))(((enum rtx_code) ((((op)->u.fld[0]).rt_rtx))->code) ==
SYMBOL_REF)
1672 || !CONSTANT_POOL_ADDRESS_P (XEXP (op, 0))(__extension__ ({ __typeof (((((op)->u.fld[0]).rt_rtx))) const
_rtx = (((((op)->u.fld[0]).rt_rtx))); if (((enum rtx_code
) (_rtx)->code) != SYMBOL_REF) rtl_check_failed_flag ("CONSTANT_POOL_ADDRESS_P"
, _rtx, "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
, 1154, __FUNCTION__); _rtx; })->unchanging)
)))
1673 return false;
1674
1675 if (MEM_P (op)(((enum rtx_code) (op)->code) == MEM))
1676 {
1677 op = get_pool_constant (XEXP (op, 0)(((op)->u.fld[0]).rt_rtx));
1678 if (GET_CODE (op)((enum rtx_code) (op)->code) != CONST_VECTOR)
1679 return false;
1680
1681 if (GET_MODE (op)((machine_mode) (op)->mode) != mode
1682 && INTEGRAL_MODE_P (GET_MODE (op))(((enum mode_class) mode_class[((machine_mode) (op)->mode)
]) == MODE_INT || ((enum mode_class) mode_class[((machine_mode
) (op)->mode)]) == MODE_PARTIAL_INT || ((enum mode_class) mode_class
[((machine_mode) (op)->mode)]) == MODE_COMPLEX_INT || ((enum
mode_class) mode_class[((machine_mode) (op)->mode)]) == MODE_VECTOR_BOOL
|| ((enum mode_class) mode_class[((machine_mode) (op)->mode
)]) == MODE_VECTOR_INT)
1683 && op == CONSTM1_RTX (GET_MODE (op))(const_tiny_rtx[3][(int) (((machine_mode) (op)->mode))]))
1684 return true;
1685 }
1686
1687 rtx first = XVECEXP (op, 0, 0)(((((op)->u.fld[0]).rt_rtvec))->elem[0]);
1688 for (int i = 1; i != GET_MODE_NUNITS (GET_MODE (op))(mode_to_nunits (((machine_mode) (op)->mode)).coeffs[0]); i++)
1689 {
1690 rtx tmp = XVECEXP (op, 0, i)(((((op)->u.fld[0]).rt_rtvec))->elem[i]);
1691 if (!rtx_equal_p (tmp, first))
1692 return false;
1693 }
1694 if (GET_MODE (first)((machine_mode) (first)->mode) == E_SFmode)
1695 {
1696 long l;
1697 REAL_VALUE_TO_TARGET_SINGLE (*CONST_DOUBLE_REAL_VALUE (first), l)((l) = real_to_target (nullptr, &(*((const struct real_value
*) (&(first)->u.rv))), float_mode_for_size (32).require
()))
;
1698 return (l & 0xffffffff) == 0xffffffff;
1699 }
1700 else if (GET_MODE (first)((machine_mode) (first)->mode) == E_DFmode)
1701 {
1702 long l[2];
1703 REAL_VALUE_TO_TARGET_DOUBLE (*CONST_DOUBLE_REAL_VALUE (first), l)real_to_target (l, &(*((const struct real_value *) (&
(first)->u.rv))), float_mode_for_size (64).require ())
;
1704 return ((l[0] & 0xffffffff) == 0xffffffff
1705 && (l[1] & 0xffffffff) == 0xffffffff);
1706 }
1707 else
1708 return false;
1709}
1710
1711bool
1712float_vector_all_ones_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
1713{
1714 switch (GET_CODE (op)((enum rtx_code) (op)->code))
1715 {
1716 case CONST_VECTOR:
1717 case MEM:
1718 break;
1719 default:
1720 return false;
1721 }
1722 return (
1723(float_vector_all_ones_operand_1 (op, mode))) && (
1724(mode == VOIDmode((void) 0, E_VOIDmode) || GET_MODE (op)((machine_mode) (op)->mode) == mode));
1725}
1726
1727bool
1728vector_all_ones_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
1729{
1730 return ((GET_CODE (op)((enum rtx_code) (op)->code) == CONST_VECTOR) && ((
1731#line 1196 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
1732(INTEGRAL_MODE_P (GET_MODE (op))(((enum mode_class) mode_class[((machine_mode) (op)->mode)
]) == MODE_INT || ((enum mode_class) mode_class[((machine_mode
) (op)->mode)]) == MODE_PARTIAL_INT || ((enum mode_class) mode_class
[((machine_mode) (op)->mode)]) == MODE_COMPLEX_INT || ((enum
mode_class) mode_class[((machine_mode) (op)->mode)]) == MODE_VECTOR_BOOL
|| ((enum mode_class) mode_class[((machine_mode) (op)->mode
)]) == MODE_VECTOR_INT)
)) && (
1733#line 1197 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
1734(op == CONSTM1_RTX (GET_MODE (op))(const_tiny_rtx[3][(int) (((machine_mode) (op)->mode))]))))) && (
1735(mode == VOIDmode((void) 0, E_VOIDmode) || GET_MODE (op)((machine_mode) (op)->mode) == mode));
1736}
1737
1738static inline bool
1739vector_all_ones_zero_extend_half_operand_1 (rtx op ATTRIBUTE_UNUSED__attribute__ ((__unused__)), machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
1740#line 1203 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
1741{
1742 mode = GET_MODE (op)((machine_mode) (op)->mode);
1743 if (GET_MODE_CLASS (mode)((enum mode_class) mode_class[mode]) != MODE_VECTOR_INT
1744 || (GET_MODE_SIZE (mode)((unsigned short) mode_to_bytes (mode).coeffs[0]) != 32
1745 && GET_MODE_SIZE (mode)((unsigned short) mode_to_bytes (mode).coeffs[0]) != 64))
1746 return false;
1747
1748 int nelts = CONST_VECTOR_NUNITS (op)(mode_to_nunits (((machine_mode) (op)->mode)).coeffs[0]);
1749 for (int i = 0; i != nelts; i++)
1750 {
1751 rtx elt = CONST_VECTOR_ELT (op, i)const_vector_elt (op, i);
1752 if (i < nelts / 2
1753 && elt != CONSTM1_RTX (GET_MODE_INNER (mode))(const_tiny_rtx[3][(int) ((mode_to_inner (mode)))]))
1754 return false;
1755 if (i >= nelts / 2
1756 && elt != CONST0_RTX (GET_MODE_INNER (mode))(const_tiny_rtx[0][(int) ((mode_to_inner (mode)))]))
1757 return false;
1758 }
1759 return true;
1760}
1761
1762bool
1763vector_all_ones_zero_extend_half_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
1764{
1765 return ((GET_CODE (op)((enum rtx_code) (op)->code) == CONST_VECTOR) && (
1766(vector_all_ones_zero_extend_half_operand_1 (op, mode)))) && (
1767(mode == VOIDmode((void) 0, E_VOIDmode) || GET_MODE (op)((machine_mode) (op)->mode) == mode));
1768}
1769
1770static inline bool
1771vector_all_ones_zero_extend_quarter_operand_1 (rtx op ATTRIBUTE_UNUSED__attribute__ ((__unused__)), machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
1772#line 1228 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
1773{
1774 mode = GET_MODE (op)((machine_mode) (op)->mode);
1775 if (GET_MODE_CLASS (mode)((enum mode_class) mode_class[mode]) != MODE_VECTOR_INT
1776 || GET_MODE_SIZE (mode)((unsigned short) mode_to_bytes (mode).coeffs[0]) != 64)
1777 return false;
1778
1779 int nelts = CONST_VECTOR_NUNITS (op)(mode_to_nunits (((machine_mode) (op)->mode)).coeffs[0]);
1780 for (int i = 0; i != nelts; i++)
1781 {
1782 rtx elt = CONST_VECTOR_ELT (op, i)const_vector_elt (op, i);
1783 if (i < nelts / 4
1784 && elt != CONSTM1_RTX (GET_MODE_INNER (mode))(const_tiny_rtx[3][(int) ((mode_to_inner (mode)))]))
1785 return false;
1786 if (i >= nelts / 4
1787 && elt != CONST0_RTX (GET_MODE_INNER (mode))(const_tiny_rtx[0][(int) ((mode_to_inner (mode)))]))
1788 return false;
1789 }
1790 return true;
1791}
1792
1793bool
1794vector_all_ones_zero_extend_quarter_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
1795{
1796 return ((GET_CODE (op)((enum rtx_code) (op)->code) == CONST_VECTOR) && (
1797(vector_all_ones_zero_extend_quarter_operand_1 (op, mode)))) && (
1798(mode == VOIDmode((void) 0, E_VOIDmode) || GET_MODE (op)((machine_mode) (op)->mode) == mode));
1799}
1800
1801bool
1802vector_memory_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
1803{
1804 return (memory_operand (op, mode)) && ((
1805#line 1252 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
1806(TARGET_AVX((global_options.x_ix86_isa_flags & (1UL << 8)) != 0
)
)) || (
1807#line 1253 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
1808(MEM_ALIGN (op)(get_mem_attrs (op)->align) >= GET_MODE_ALIGNMENT (mode)get_mode_alignment (mode))));
1809}
1810
1811bool
1812vector_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
1813{
1814 return (register_operand (op, mode)) || (vector_memory_operand (op, mode));
1815}
1816
1817bool
1818vector_or_const_vector_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
1819{
1820 return (register_operand (op, mode)) || ((vector_memory_operand (op, mode)) || ((GET_CODE (op)((enum rtx_code) (op)->code) == CONST_VECTOR) && (
1821(mode == VOIDmode((void) 0, E_VOIDmode) || GET_MODE (op)((machine_mode) (op)->mode) == mode))));
1822}
1823
1824bool
1825bcst_mem_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
1826{
1827 return ((GET_CODE (op)((enum rtx_code) (op)->code) == VEC_DUPLICATE) && (((
1828#line 1269 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
1829(TARGET_AVX512F((global_options.x_ix86_isa_flags & (1UL << 15)) !=
0)
)) && ((
1830#line 1270 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
1831(TARGET_AVX512VL((global_options.x_ix86_isa_flags & (1UL << 20)) !=
0)
)) || (
1832#line 1271 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
1833(GET_MODE_SIZE (GET_MODE (op))((unsigned short) mode_to_bytes (((machine_mode) (op)->mode
)).coeffs[0])
== 64)))) && ((
1834#line 1272 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
1835(VALID_BCST_MODE_P (GET_MODE_INNER (GET_MODE (op)))(((mode_to_inner (((machine_mode) (op)->mode)))) == (scalar_float_mode
((scalar_float_mode::from_int) E_SFmode)) || ((mode_to_inner
(((machine_mode) (op)->mode)))) == (scalar_float_mode ((scalar_float_mode
::from_int) E_DFmode)) || ((mode_to_inner (((machine_mode) (op
)->mode)))) == (scalar_int_mode ((scalar_int_mode::from_int
) E_SImode)) || ((mode_to_inner (((machine_mode) (op)->mode
)))) == (scalar_int_mode ((scalar_int_mode::from_int) E_DImode
)) || ((mode_to_inner (((machine_mode) (op)->mode)))) == (
scalar_float_mode ((scalar_float_mode::from_int) E_HFmode)))
)) && ((
1836#line 1273 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
1837(GET_MODE (XEXP (op, 0))((machine_mode) ((((op)->u.fld[0]).rt_rtx))->mode)
1838 == GET_MODE_INNER (GET_MODE (op))(mode_to_inner (((machine_mode) (op)->mode))))) && (
1839#line 1275 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
1840(memory_operand (XEXP (op, 0)(((op)->u.fld[0]).rt_rtx), GET_MODE (XEXP (op, 0))((machine_mode) ((((op)->u.fld[0]).rt_rtx))->mode)))))))) && (
1841(mode == VOIDmode((void) 0, E_VOIDmode) || GET_MODE (op)((machine_mode) (op)->mode) == mode));
1842}
1843
1844bool
1845bcst_vector_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
1846{
1847 return (vector_operand (op, mode)) || (bcst_mem_operand (op, mode));
1848}
1849
1850bool
1851nonimmediate_or_const_vector_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
1852{
1853 return (nonimmediate_operand (op, mode)) || ((GET_CODE (op)((enum rtx_code) (op)->code) == CONST_VECTOR) && (
1854(mode == VOIDmode((void) 0, E_VOIDmode) || GET_MODE (op)((machine_mode) (op)->mode) == mode)));
1855}
1856
1857bool
1858nonimmediate_or_const_vec_dup_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
1859{
1860 return (nonimmediate_operand (op, mode)) || ((
1861#line 1290 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
1862(const_vec_duplicate_p (op))) && (
1863(mode == VOIDmode((void) 0, E_VOIDmode) || GET_MODE (op)((machine_mode) (op)->mode) == mode || GET_MODE (op)((machine_mode) (op)->mode) == VOIDmode((void) 0, E_VOIDmode))));
1864}
1865
1866bool
1867reg_or_const_vector_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
1868{
1869 return (register_operand (op, mode)) || ((GET_CODE (op)((enum rtx_code) (op)->code) == CONST_VECTOR) && (
1870(mode == VOIDmode((void) 0, E_VOIDmode) || GET_MODE (op)((machine_mode) (op)->mode) == mode)));
1871}
1872
1873static inline bool
1874x86_64_const_vector_operand_1 (rtx op ATTRIBUTE_UNUSED__attribute__ ((__unused__)), machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
1875#line 1302 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
1876{
1877 if (mode == VOIDmode((void) 0, E_VOIDmode))
1878 mode = GET_MODE (op)((machine_mode) (op)->mode);
1879 else if (GET_MODE (op)((machine_mode) (op)->mode) != mode)
1880 return false;
1881 if (GET_MODE_SIZE (mode)((unsigned short) mode_to_bytes (mode).coeffs[0]) > UNITS_PER_WORD(((global_options.x_ix86_isa_flags & (1UL << 1)) !=
0) ? 8 : 4)
)
1882 return false;
1883 HOST_WIDE_INTlong val = ix86_convert_const_vector_to_integer (op, mode);
1884 return trunc_int_for_mode (val, SImode(scalar_int_mode ((scalar_int_mode::from_int) E_SImode))) == val;
1885}
1886
1887bool
1888x86_64_const_vector_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
1889{
1890 return ((GET_CODE (op)((enum rtx_code) (op)->code) == CONST_VECTOR) && (
1891(x86_64_const_vector_operand_1 (op, mode)))) && (
1892(mode == VOIDmode((void) 0, E_VOIDmode) || GET_MODE (op)((machine_mode) (op)->mode) == mode));
1893}
1894
1895bool
1896nonimmediate_or_x86_64_const_vector_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
1897{
1898 return (nonimmediate_operand (op, mode)) || (x86_64_const_vector_operand (op, mode));
1899}
1900
1901bool
1902nonimmediate_or_sse_const_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
1903{
1904 return (nonimmediate_operand (op, mode)) || ((
1905#line 1320 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
1906(standard_sse_constant_p (op, mode))) && (
1907(mode == VOIDmode((void) 0, E_VOIDmode) || GET_MODE (op)((machine_mode) (op)->mode) == mode || GET_MODE (op)((machine_mode) (op)->mode) == VOIDmode((void) 0, E_VOIDmode))));
1908}
1909
1910bool
1911reg_or_0_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
1912{
1913 return (register_operand (op, mode)) || (const0_operand (op, mode));
1914}
1915
1916bool
1917nonimm_or_0_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
1918{
1919 return (nonimmediate_operand (op, mode)) || (const0_operand (op, mode));
1920}
1921
1922bool
1923norex_memory_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
1924{
1925 return (memory_operand (op, mode)) && (!(
1926#line 1334 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
1927(x86_extended_reg_mentioned_p (op))));
1928}
1929
1930bool
1931SImode_address_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
1932{
1933 switch (GET_CODE (op)((enum rtx_code) (op)->code))
1934 {
1935 case SUBREG:
1936 case ZERO_EXTEND:
1937 case AND:
1938 break;
1939 default:
1940 return false;
1941 }
1942 return
1943(mode == VOIDmode((void) 0, E_VOIDmode) || GET_MODE (op)((machine_mode) (op)->mode) == mode);
1944}
1945
1946static inline bool
1947address_no_seg_operand_1 (rtx op ATTRIBUTE_UNUSED__attribute__ ((__unused__)), machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
1948#line 1345 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
1949{
1950 struct ix86_address parts;
1951 int ok;
1952
1953 if (!CONST_INT_P (op)(((enum rtx_code) (op)->code) == CONST_INT)
1954 && mode != VOIDmode((void) 0, E_VOIDmode)
1955 && GET_MODE (op)((machine_mode) (op)->mode) != mode)
1956 return false;
1957
1958 ok = ix86_decompose_address (op, &parts);
1959 gcc_assert (ok)((void)(!(ok) ? fancy_abort ("/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
, 1355, __FUNCTION__), 0 : 0))
;
1960 return parts.seg == ADDR_SPACE_GENERIC0;
1961}
1962
1963bool
1964address_no_seg_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
1965{
1966 return (
1967#line 1344 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
1968(address_operand (op, VOIDmode((void) 0, E_VOIDmode)))) && (
1969(address_no_seg_operand_1 (op, mode)));
1970}
1971
1972static inline bool
1973vsib_address_operand_1 (rtx op ATTRIBUTE_UNUSED__attribute__ ((__unused__)), machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
1974#line 1363 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
1975{
1976 struct ix86_address parts;
1977 int ok;
1978 rtx disp;
1979
1980 ok = ix86_decompose_address (op, &parts);
1981 gcc_assert (ok)((void)(!(ok) ? fancy_abort ("/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
, 1369, __FUNCTION__), 0 : 0))
;
1982 if (parts.index || parts.seg != ADDR_SPACE_GENERIC0)
1983 return false;
1984
1985 /* VSIB addressing doesn't support (%rip). */
1986 if (parts.disp)
1987 {
1988 disp = parts.disp;
1989 if (GET_CODE (disp)((enum rtx_code) (disp)->code) == CONST)
1990 {
1991 disp = XEXP (disp, 0)(((disp)->u.fld[0]).rt_rtx);
1992 if (GET_CODE (disp)((enum rtx_code) (disp)->code) == PLUS)
1993 disp = XEXP (disp, 0)(((disp)->u.fld[0]).rt_rtx);
1994 if (GET_CODE (disp)((enum rtx_code) (disp)->code) == UNSPEC)
1995 switch (XINT (disp, 1)(((disp)->u.fld[1]).rt_int))
1996 {
1997 case UNSPEC_GOTPCREL:
1998 case UNSPEC_PCREL:
1999 case UNSPEC_GOTNTPOFF:
2000 return false;
2001 }
2002 }
2003 if (TARGET_64BIT((global_options.x_ix86_isa_flags & (1UL << 1)) != 0
)
2004 && flag_picglobal_options.x_flag_pic
2005 && (GET_CODE (disp)((enum rtx_code) (disp)->code) == SYMBOL_REF
2006 || GET_CODE (disp)((enum rtx_code) (disp)->code) == LABEL_REF))
2007 return false;
2008 }
2009
2010 return true;
2011}
2012
2013bool
2014vsib_address_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
2015{
2016 return ((
2017#line 1362 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
2018(address_operand (op, VOIDmode((void) 0, E_VOIDmode)))) && (
2019(vsib_address_operand_1 (op, mode)))) && (
2020(mode == VOIDmode((void) 0, E_VOIDmode) || GET_MODE (op)((machine_mode) (op)->mode) == mode || GET_MODE (op)((machine_mode) (op)->mode) == VOIDmode((void) 0, E_VOIDmode)));
2021}
2022
2023bool
2024vsib_mem_operator (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
2025{
2026 return (GET_CODE (op)((enum rtx_code) (op)->code) == MEM) && (
2027(mode == VOIDmode((void) 0, E_VOIDmode) || GET_MODE (op)((machine_mode) (op)->mode) == mode));
2028}
2029
2030static inline bool
2031aligned_operand_1 (rtx op ATTRIBUTE_UNUSED__attribute__ ((__unused__)), machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
2032#line 1407 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
2033{
2034 struct ix86_address parts;
2035 int ok;
2036
2037 /* Registers and immediate operands are always "aligned". */
2038 if (!MEM_P (op)(((enum rtx_code) (op)->code) == MEM))
2039 return true;
2040
2041 /* All patterns using aligned_operand on memory operands ends up
2042 in promoting memory operand to 64bit and thus causing memory mismatch. */
2043 if (TARGET_MEMORY_MISMATCH_STALLix86_tune_features[X86_TUNE_MEMORY_MISMATCH_STALL] && !optimize_insn_for_size_p ())
2044 return false;
2045
2046 /* Don't even try to do any aligned optimizations with volatiles. */
2047 if (MEM_VOLATILE_P (op)(__extension__ ({ __typeof ((op)) const _rtx = ((op)); if (((
enum rtx_code) (_rtx)->code) != MEM && ((enum rtx_code
) (_rtx)->code) != ASM_OPERANDS && ((enum rtx_code
) (_rtx)->code) != ASM_INPUT) rtl_check_failed_flag ("MEM_VOLATILE_P"
, _rtx, "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
, 1421, __FUNCTION__); _rtx; })->volatil)
)
2048 return false;
2049
2050 if (MEM_ALIGN (op)(get_mem_attrs (op)->align) >= 32)
2051 return true;
2052
2053 op = XEXP (op, 0)(((op)->u.fld[0]).rt_rtx);
2054
2055 /* Pushes and pops are only valid on the stack pointer. */
2056 if (GET_CODE (op)((enum rtx_code) (op)->code) == PRE_DEC
2057 || GET_CODE (op)((enum rtx_code) (op)->code) == POST_INC)
2058 return true;
2059
2060 /* Decode the address. */
2061 ok = ix86_decompose_address (op, &parts);
2062 gcc_assert (ok)((void)(!(ok) ? fancy_abort ("/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
, 1436, __FUNCTION__), 0 : 0))
;
2063
2064 if (parts.base && SUBREG_P (parts.base)(((enum rtx_code) (parts.base)->code) == SUBREG))
2065 parts.base = SUBREG_REG (parts.base)(((parts.base)->u.fld[0]).rt_rtx);
2066 if (parts.index && SUBREG_P (parts.index)(((enum rtx_code) (parts.index)->code) == SUBREG))
2067 parts.index = SUBREG_REG (parts.index)(((parts.index)->u.fld[0]).rt_rtx);
2068
2069 /* Look for some component that isn't known to be aligned. */
2070 if (parts.index)
2071 {
2072 if (REGNO_POINTER_ALIGN (REGNO (parts.index))((&x_rtl)->emit.regno_pointer_align[(rhs_regno(parts.index
))])
* parts.scale < 32)
2073 return false;
2074 }
2075 if (parts.base)
2076 {
2077 if (REGNO_POINTER_ALIGN (REGNO (parts.base))((&x_rtl)->emit.regno_pointer_align[(rhs_regno(parts.base
))])
< 32)
2078 return false;
2079 }
2080 if (parts.disp)
2081 {
2082 if (!CONST_INT_P (parts.disp)(((enum rtx_code) (parts.disp)->code) == CONST_INT)
2083 || (INTVAL (parts.disp)((parts.disp)->u.hwint[0]) & 3))
2084 return false;
2085 }
2086
2087 /* Didn't find one -- this must be an aligned address. */
2088 return true;
2089}
2090
2091bool
2092aligned_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
2093{
2094 return (general_operand (op, mode)) && (
2095(aligned_operand_1 (op, mode)));
2096}
2097
2098static inline bool
2099memory_displacement_operand_1 (rtx op ATTRIBUTE_UNUSED__attribute__ ((__unused__)), machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
2100#line 1468 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
2101{
2102 struct ix86_address parts;
2103 int ok;
2104
2105 ok = ix86_decompose_address (XEXP (op, 0)(((op)->u.fld[0]).rt_rtx), &parts);
2106 gcc_assert (ok)((void)(!(ok) ? fancy_abort ("/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
, 1473, __FUNCTION__), 0 : 0))
;
2107 return parts.disp != NULL_RTX(rtx) 0;
2108}
2109
2110bool
2111memory_displacement_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
2112{
2113 return (memory_operand (op, mode)) && (
2114(memory_displacement_operand_1 (op, mode)));
2115}
2116
2117static inline bool
2118memory_displacement_only_operand_1 (rtx op ATTRIBUTE_UNUSED__attribute__ ((__unused__)), machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
2119#line 1480 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
2120{
2121 struct ix86_address parts;
2122 int ok;
2123
2124 if (TARGET_64BIT((global_options.x_ix86_isa_flags & (1UL << 1)) != 0
)
)
2125 return false;
2126
2127 ok = ix86_decompose_address (XEXP (op, 0)(((op)->u.fld[0]).rt_rtx), &parts);
2128 gcc_assert (ok)((void)(!(ok) ? fancy_abort ("/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
, 1488, __FUNCTION__), 0 : 0))
;
2129
2130 if (parts.base || parts.index)
2131 return false;
2132
2133 return parts.disp != NULL_RTX(rtx) 0;
2134}
2135
2136bool
2137memory_displacement_only_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
2138{
2139 return (memory_operand (op, mode)) && (
2140(memory_displacement_only_operand_1 (op, mode)));
2141}
2142
2143bool
2144long_memory_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
2145{
2146 return (memory_operand (op, mode)) && (
2147#line 1500 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
2148(memory_address_length (op, false)));
2149}
2150
2151static inline bool
2152fcmov_comparison_operator_1 (rtx op ATTRIBUTE_UNUSED__attribute__ ((__unused__)), machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
2153#line 1505 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
2154{
2155 machine_mode inmode = GET_MODE (XEXP (op, 0))((machine_mode) ((((op)->u.fld[0]).rt_rtx))->mode);
2156 enum rtx_code code = GET_CODE (op)((enum rtx_code) (op)->code);
2157
2158 if (inmode == CCFPmode((void) 0, E_CCFPmode))
2159 code = ix86_fp_compare_code_to_integer (code);
2160
2161 /* i387 supports just limited amount of conditional codes. */
2162 switch (code)
2163 {
2164 case GEU: case LTU:
2165 if (inmode == CCCmode((void) 0, E_CCCmode) || inmode == CCGZmode((void) 0, E_CCGZmode))
2166 return true;
2167 /* FALLTHRU */
2168 case GTU: case LEU:
2169 if (inmode == CCmode((void) 0, E_CCmode) || inmode == CCFPmode((void) 0, E_CCFPmode))
2170 return true;
2171 return false;
2172 case ORDERED: case UNORDERED:
2173 case EQ: case NE:
2174 return true;
2175 default:
2176 return false;
2177 }
2178}
2179
2180bool
2181fcmov_comparison_operator (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
2182{
2183 return (comparison_operator (op, mode)) && (
2184(fcmov_comparison_operator_1 (op, mode)));
2185}
2186
2187bool
2188sse_comparison_operator (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
2189{
2190 return ((GET_CODE (op)((enum rtx_code) (op)->code) == EQ || GET_CODE (op)((enum rtx_code) (op)->code) == NE || GET_CODE (op)((enum rtx_code) (op)->code) == LT || GET_CODE (op)((enum rtx_code) (op)->code) == LE || GET_CODE (op)((enum rtx_code) (op)->code) == UNORDERED || GET_CODE (op)((enum rtx_code) (op)->code) == UNGE || GET_CODE (op)((enum rtx_code) (op)->code) == UNGT || GET_CODE (op)((enum rtx_code) (op)->code) == ORDERED) || ((
2191#line 1537 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
2192(TARGET_AVX((global_options.x_ix86_isa_flags & (1UL << 8)) != 0
)
)) && (GET_CODE (op)((enum rtx_code) (op)->code) == GE || GET_CODE (op)((enum rtx_code) (op)->code) == GT || GET_CODE (op)((enum rtx_code) (op)->code) == UNEQ || GET_CODE (op)((enum rtx_code) (op)->code) == UNLE || GET_CODE (op)((enum rtx_code) (op)->code) == UNLT || GET_CODE (op)((enum rtx_code) (op)->code) == LTGT))) && (
2193(mode == VOIDmode((void) 0, E_VOIDmode) || GET_MODE (op)((machine_mode) (op)->mode) == mode));
2194}
2195
2196bool
2197ix86_comparison_int_operator (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
2198{
2199 switch (GET_CODE (op)((enum rtx_code) (op)->code))
2200 {
2201 case NE:
2202 case EQ:
2203 case GE:
2204 case GT:
2205 case LE:
2206 case LT:
2207 break;
2208 default:
2209 return false;
2210 }
2211 return
2212(mode == VOIDmode((void) 0, E_VOIDmode) || GET_MODE (op)((machine_mode) (op)->mode) == mode);
2213}
2214
2215bool
2216ix86_comparison_uns_operator (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
2217{
2218 switch (GET_CODE (op)((enum rtx_code) (op)->code))
2219 {
2220 case NE:
2221 case EQ:
2222 case GEU:
2223 case GTU:
2224 case LEU:
2225 case LTU:
2226 break;
2227 default:
2228 return false;
2229 }
2230 return
2231(mode == VOIDmode((void) 0, E_VOIDmode) || GET_MODE (op)((machine_mode) (op)->mode) == mode);
2232}
2233
2234bool
2235bt_comparison_operator (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
2236{
2237 switch (GET_CODE (op)((enum rtx_code) (op)->code))
2238 {
2239 case NE:
2240 case EQ:
2241 break;
2242 default:
2243 return false;
2244 }
2245 return
2246(mode == VOIDmode((void) 0, E_VOIDmode) || GET_MODE (op)((machine_mode) (op)->mode) == mode);
2247}
2248
2249bool
2250shr_comparison_operator (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
2251{
2252 switch (GET_CODE (op)((enum rtx_code) (op)->code))
2253 {
2254 case GTU:
2255 case LEU:
2256 break;
2257 default:
2258 return false;
2259 }
2260 return
2261(mode == VOIDmode((void) 0, E_VOIDmode) || GET_MODE (op)((machine_mode) (op)->mode) == mode);
2262}
2263
2264bool
2265add_comparison_operator (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
2266{
2267 switch (GET_CODE (op)((enum rtx_code) (op)->code))
2268 {
2269 case GEU:
2270 case LTU:
2271 break;
2272 default:
2273 return false;
2274 }
2275 return
2276(mode == VOIDmode((void) 0, E_VOIDmode) || GET_MODE (op)((machine_mode) (op)->mode) == mode);
2277}
2278
2279static inline bool
2280ix86_comparison_operator_1 (rtx op ATTRIBUTE_UNUSED__attribute__ ((__unused__)), machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
2281#line 1558 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
2282{
2283 machine_mode inmode = GET_MODE (XEXP (op, 0))((machine_mode) ((((op)->u.fld[0]).rt_rtx))->mode);
2284 enum rtx_code code = GET_CODE (op)((enum rtx_code) (op)->code);
2285
2286 if (inmode == CCFPmode((void) 0, E_CCFPmode))
2287 return ix86_trivial_fp_comparison_operator (op, mode);
2288
2289 switch (code)
2290 {
2291 case EQ: case NE:
2292 if (inmode == CCGZmode((void) 0, E_CCGZmode))
2293 return false;
2294 return true;
2295 case GE: case LT:
2296 if (inmode == CCmode((void) 0, E_CCmode) || inmode == CCGCmode((void) 0, E_CCGCmode)
2297 || inmode == CCGOCmode((void) 0, E_CCGOCmode) || inmode == CCNOmode((void) 0, E_CCNOmode) || inmode == CCGZmode((void) 0, E_CCGZmode))
2298 return true;
2299 return false;
2300 case GEU: case LTU:
2301 if (inmode == CCCmode((void) 0, E_CCCmode) || inmode == CCGZmode((void) 0, E_CCGZmode))
2302 return true;
2303 /* FALLTHRU */
2304 case GTU: case LEU:
2305 if (inmode == CCmode((void) 0, E_CCmode))
2306 return true;
2307 return false;
2308 case ORDERED: case UNORDERED:
2309 if (inmode == CCmode((void) 0, E_CCmode))
2310 return true;
2311 return false;
2312 case GT: case LE:
2313 if (inmode == CCmode((void) 0, E_CCmode) || inmode == CCGCmode((void) 0, E_CCGCmode) || inmode == CCNOmode((void) 0, E_CCNOmode))
2314 return true;
2315 return false;
2316 default:
2317 return false;
2318 }
2319}
2320
2321bool
2322ix86_comparison_operator (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
2323{
2324 return (comparison_operator (op, mode)) && (
2325(ix86_comparison_operator_1 (op, mode)));
2326}
2327
2328static inline bool
2329ix86_carry_flag_operator_1 (rtx op ATTRIBUTE_UNUSED__attribute__ ((__unused__)), machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
2330#line 1601 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
2331{
2332 machine_mode inmode = GET_MODE (XEXP (op, 0))((machine_mode) ((((op)->u.fld[0]).rt_rtx))->mode);
2333 enum rtx_code code = GET_CODE (op)((enum rtx_code) (op)->code);
2334
2335 if (inmode == CCFPmode((void) 0, E_CCFPmode))
2336 code = ix86_fp_compare_code_to_integer (code);
2337 else if (inmode != CCmode((void) 0, E_CCmode) && inmode != CCCmode((void) 0, E_CCCmode) && inmode != CCGZmode((void) 0, E_CCGZmode))
2338 return false;
2339
2340 return code == LTU;
2341}
2342
2343bool
2344ix86_carry_flag_operator (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
2345{
2346 switch (GET_CODE (op)((enum rtx_code) (op)->code))
2347 {
2348 case LTU:
2349 case UNLT:
2350 break;
2351 default:
2352 return false;
2353 }
2354 return (
2355(ix86_carry_flag_operator_1 (op, mode))) && (
2356(mode == VOIDmode((void) 0, E_VOIDmode) || GET_MODE (op)((machine_mode) (op)->mode) == mode));
2357}
2358
2359static inline bool
2360ix86_carry_flag_unset_operator_1 (rtx op ATTRIBUTE_UNUSED__attribute__ ((__unused__)), machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
2361#line 1617 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
2362{
2363 machine_mode inmode = GET_MODE (XEXP (op, 0))((machine_mode) ((((op)->u.fld[0]).rt_rtx))->mode);
2364 enum rtx_code code = GET_CODE (op)((enum rtx_code) (op)->code);
2365
2366 if (inmode == CCFPmode((void) 0, E_CCFPmode))
2367 code = ix86_fp_compare_code_to_integer (code);
2368 else if (inmode != CCmode((void) 0, E_CCmode) && inmode != CCCmode((void) 0, E_CCCmode) && inmode != CCGZmode((void) 0, E_CCGZmode))
2369 return false;
2370
2371 return code == GEU;
2372}
2373
2374bool
2375ix86_carry_flag_unset_operator (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
2376{
2377 switch (GET_CODE (op)((enum rtx_code) (op)->code))
2378 {
2379 case GEU:
2380 case GE:
2381 break;
2382 default:
2383 return false;
2384 }
2385 return (
2386(ix86_carry_flag_unset_operator_1 (op, mode))) && (
2387(mode == VOIDmode((void) 0, E_VOIDmode) || GET_MODE (op)((machine_mode) (op)->mode) == mode));
2388}
2389
2390bool
2391ix86_trivial_fp_comparison_operator (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
2392{
2393 switch (GET_CODE (op)((enum rtx_code) (op)->code))
2394 {
2395 case GT:
2396 case GE:
2397 case UNLT:
2398 case UNLE:
2399 case UNEQ:
2400 case LTGT:
2401 case ORDERED:
2402 case UNORDERED:
2403 break;
2404 default:
2405 return false;
2406 }
2407 return
2408(mode == VOIDmode((void) 0, E_VOIDmode) || GET_MODE (op)((machine_mode) (op)->mode) == mode);
2409}
2410
2411bool
2412ix86_fp_comparison_operator (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
2413{
2414 return (
2415#line 1637 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
2416(ix86_fp_comparison_strategy (GET_CODE (op)((enum rtx_code) (op)->code))
2417 == IX86_FPCMP_ARITH)) ? (comparison_operator (op, mode)) : (ix86_trivial_fp_comparison_operator (op, mode));
2418}
2419
2420bool
2421cmp_fp_expander_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
2422{
2423 return ((GET_CODE (op)((enum rtx_code) (op)->code) == CONST_DOUBLE) && (
2424(mode == VOIDmode((void) 0, E_VOIDmode) || GET_MODE (op)((machine_mode) (op)->mode) == mode || GET_MODE (op)((machine_mode) (op)->mode) == VOIDmode((void) 0, E_VOIDmode)))) || (general_operand (op, mode));
2425}
2426
2427bool
2428binary_fp_operator (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
2429{
2430 switch (GET_CODE (op)((enum rtx_code) (op)->code))
2431 {
2432 case PLUS:
2433 case MINUS:
2434 case MULT:
2435 case DIV:
2436 break;
2437 default:
2438 return false;
2439 }
2440 return
2441(mode == VOIDmode((void) 0, E_VOIDmode) || GET_MODE (op)((machine_mode) (op)->mode) == mode);
2442}
2443
2444bool
2445mult_operator (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
2446{
2447 return (GET_CODE (op)((enum rtx_code) (op)->code) == MULT) && (
2448(mode == VOIDmode((void) 0, E_VOIDmode) || GET_MODE (op)((machine_mode) (op)->mode) == mode));
2449}
2450
2451bool
2452div_operator (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
2453{
2454 return (GET_CODE (op)((enum rtx_code) (op)->code) == DIV) && (
2455(mode == VOIDmode((void) 0, E_VOIDmode) || GET_MODE (op)((machine_mode) (op)->mode) == mode));
2456}
2457
2458bool
2459logic_operator (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
2460{
2461 switch (GET_CODE (op)((enum rtx_code) (op)->code))
2462 {
2463 case AND:
2464 case IOR:
2465 case XOR:
2466 break;
2467 default:
2468 return false;
2469 }
2470 return
2471(mode == VOIDmode((void) 0, E_VOIDmode) || GET_MODE (op)((machine_mode) (op)->mode) == mode);
2472}
2473
2474bool
2475plusminuslogic_operator (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
2476{
2477 switch (GET_CODE (op)((enum rtx_code) (op)->code))
2478 {
2479 case PLUS:
2480 case MINUS:
2481 case AND:
2482 case IOR:
2483 case XOR:
2484 break;
2485 default:
2486 return false;
2487 }
2488 return
2489(mode == VOIDmode((void) 0, E_VOIDmode) || GET_MODE (op)((machine_mode) (op)->mode) == mode);
2490}
2491
2492bool
2493arith_or_logical_operator (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
2494{
2495 switch (GET_CODE (op)((enum rtx_code) (op)->code))
2496 {
2497 case PLUS:
2498 case MULT:
2499 case AND:
2500 case IOR:
2501 case XOR:
2502 case SMIN:
2503 case SMAX:
2504 case UMIN:
2505 case UMAX:
2506 case COMPARE:
2507 case MINUS:
2508 case DIV:
2509 case MOD:
2510 case UDIV:
2511 case UMOD:
2512 case ASHIFT:
2513 case ROTATE:
2514 case ASHIFTRT:
2515 case LSHIFTRT:
2516 case ROTATERT:
2517 break;
2518 default:
2519 return false;
2520 }
2521 return
2522(mode == VOIDmode((void) 0, E_VOIDmode) || GET_MODE (op)((machine_mode) (op)->mode) == mode);
2523}
2524
2525bool
2526commutative_operator (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
2527{
2528 switch (GET_CODE (op)((enum rtx_code) (op)->code))
2529 {
2530 case PLUS:
2531 case MULT:
2532 case AND:
2533 case IOR:
2534 case XOR:
2535 case SMIN:
2536 case SMAX:
2537 case UMIN:
2538 case UMAX:
2539 break;
2540 default:
2541 return false;
2542 }
2543 return
2544(mode == VOIDmode((void) 0, E_VOIDmode) || GET_MODE (op)((machine_mode) (op)->mode) == mode);
2545}
2546
2547bool
2548promotable_binary_operator (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
2549{
2550 return ((GET_CODE (op)((enum rtx_code) (op)->code) == PLUS || GET_CODE (op)((enum rtx_code) (op)->code) == MINUS || GET_CODE (op)((enum rtx_code) (op)->code) == AND || GET_CODE (op)((enum rtx_code) (op)->code) == IOR || GET_CODE (op)((enum rtx_code) (op)->code) == XOR || GET_CODE (op)((enum rtx_code) (op)->code) == ASHIFT) || ((GET_CODE (op)((enum rtx_code) (op)->code) == MULT) && (
2551#line 1682 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
2552(TARGET_TUNE_PROMOTE_HIMODE_IMULix86_tune_features[X86_TUNE_PROMOTE_HIMODE_IMUL])))) && (
2553(mode == VOIDmode((void) 0, E_VOIDmode) || GET_MODE (op)((machine_mode) (op)->mode) == mode));
2554}
2555
2556bool
2557compare_operator (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
2558{
2559 return (GET_CODE (op)((enum rtx_code) (op)->code) == COMPARE) && (
2560(mode == VOIDmode((void) 0, E_VOIDmode) || GET_MODE (op)((machine_mode) (op)->mode) == mode));
2561}
2562
2563bool
2564misaligned_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
2565{
2566 return ((GET_CODE (op)((enum rtx_code) (op)->code) == MEM) && (
2567#line 1691 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
2568(MEM_ALIGN (op)(get_mem_attrs (op)->align) < GET_MODE_BITSIZE (mode)((unsigned short) mode_to_bits (mode).coeffs[0])))) && (
2569(mode == VOIDmode((void) 0, E_VOIDmode) || GET_MODE (op)((machine_mode) (op)->mode) == mode));
2570}
2571
2572static inline bool
2573movq_parallel_1 (rtx op ATTRIBUTE_UNUSED__attribute__ ((__unused__)), machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
2574#line 1697 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
2575{
2576 unsigned nelt = XVECLEN (op, 0)(((((op)->u.fld[0]).rt_rtvec))->num_elem);
2577 unsigned nelt2 = nelt >> 1;
2578 unsigned i;
2579
2580 if (nelt < 2)
2581 return false;
2582
2583 /* Validate that all of the elements are constants,
2584 lower halves of permute are lower halves of the first operand,
2585 upper halves of permute come from any of the second operand. */
2586 for (i = 0; i < nelt; ++i)
2587 {
2588 rtx er = XVECEXP (op, 0, i)(((((op)->u.fld[0]).rt_rtvec))->elem[i]);
2589 unsigned HOST_WIDE_INTlong ei;
2590
2591 if (!CONST_INT_P (er)(((enum rtx_code) (er)->code) == CONST_INT))
2592 return false;
2593 ei = INTVAL (er)((er)->u.hwint[0]);
2594 if (i < nelt2 && ei != i)
2595 return false;
2596 if (i >= nelt2 && (ei < nelt || ei >= nelt << 1))
2597 return false;
2598 }
2599
2600 return true;
2601}
2602
2603bool
2604movq_parallel (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
2605{
2606 return ((GET_CODE (op)((enum rtx_code) (op)->code) == PARALLEL) && (
2607(movq_parallel_1 (op, mode)))) && (
2608(mode == VOIDmode((void) 0, E_VOIDmode) || GET_MODE (op)((machine_mode) (op)->mode) == mode));
2609}
2610
2611static inline bool
2612vzeroall_operation_1 (rtx op ATTRIBUTE_UNUSED__attribute__ ((__unused__)), machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
2613#line 1728 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
2614{
2615 unsigned i, nregs = TARGET_64BIT((global_options.x_ix86_isa_flags & (1UL << 1)) != 0
)
? 16 : 8;
2616
2617 if ((unsigned) XVECLEN (op, 0)(((((op)->u.fld[0]).rt_rtvec))->num_elem) != 1 + nregs)
2618 return false;
2619
2620 for (i = 0; i < nregs; i++)
2621 {
2622 rtx elt = XVECEXP (op, 0, i+1)(((((op)->u.fld[0]).rt_rtvec))->elem[i+1]);
2623
2624 if (GET_CODE (elt)((enum rtx_code) (elt)->code) != SET
2625 || GET_CODE (SET_DEST (elt))((enum rtx_code) ((((elt)->u.fld[0]).rt_rtx))->code) != REG
2626 || GET_MODE (SET_DEST (elt))((machine_mode) ((((elt)->u.fld[0]).rt_rtx))->mode) != V8SImode((void) 0, E_V8SImode)
2627 || REGNO (SET_DEST (elt))(rhs_regno((((elt)->u.fld[0]).rt_rtx))) != GET_SSE_REGNO (i)((i) < 8 ? 20 + (i) : (i) < 16 ? 44 + (i) - 8 : 52 + (i
) - 16)
2628 || SET_SRC (elt)(((elt)->u.fld[1]).rt_rtx) != CONST0_RTX (V8SImode)(const_tiny_rtx[0][(int) (((void) 0, E_V8SImode))]))
2629 return false;
2630 }
2631 return true;
2632}
2633
2634bool
2635vzeroall_operation (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
2636{
2637 return ((GET_CODE (op)((enum rtx_code) (op)->code) == PARALLEL) && (
2638(vzeroall_operation_1 (op, mode)))) && (
2639(mode == VOIDmode((void) 0, E_VOIDmode) || GET_MODE (op)((machine_mode) (op)->mode) == mode));
2640}
2641
2642bool
2643vzeroall_pattern (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
2644{
2645 return ((GET_CODE (op)((enum rtx_code) (op)->code) == PARALLEL) && ((GET_CODE (XVECEXP (op, 0, 0))((enum rtx_code) ((((((op)->u.fld[0]).rt_rtvec))->elem[
0]))->code)
== UNSPEC_VOLATILE) && (
2646#line 1752 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
2647(XINT (XVECEXP (op, 0, 0), 1)((((((((op)->u.fld[0]).rt_rtvec))->elem[0]))->u.fld[
1]).rt_int)
== UNSPECV_VZEROALL)))) && (
2648(mode == VOIDmode((void) 0, E_VOIDmode) || GET_MODE (op)((machine_mode) (op)->mode) == mode));
2649}
2650
2651bool
2652vzeroupper_pattern (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
2653{
2654 return ((GET_CODE (op)((enum rtx_code) (op)->code) == PARALLEL) && ((GET_CODE (XVECEXP (op, 0, 1))((enum rtx_code) ((((((op)->u.fld[0]).rt_rtvec))->elem[
1]))->code)
== UNSPEC) && ((
2655#line 1758 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
2656(XINT (XVECEXP (op, 0, 1), 1)((((((((op)->u.fld[0]).rt_rtvec))->elem[1]))->u.fld[
1]).rt_int)
== UNSPEC_CALLEE_ABI)) && (
2657#line 1759 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
2658(INTVAL (XVECEXP (XVECEXP (op, 0, 1), 0, 0))((((((((((((op)->u.fld[0]).rt_rtvec))->elem[1]))->u.
fld[0]).rt_rtvec))->elem[0]))->u.hwint[0])
== ABI_VZEROUPPER1))))) && (
2659(mode == VOIDmode((void) 0, E_VOIDmode) || GET_MODE (op)((machine_mode) (op)->mode) == mode));
2660}
2661
2662static inline bool
2663addsub_vm_operator_1 (rtx op ATTRIBUTE_UNUSED__attribute__ ((__unused__)), machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
2664#line 1764 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
2665{
2666 rtx op0, op1;
2667 int swapped;
2668 HOST_WIDE_INTlong mask;
2669 int nunits, elt;
2670
2671 op0 = XEXP (op, 0)(((op)->u.fld[0]).rt_rtx);
2672 op1 = XEXP (op, 1)(((op)->u.fld[1]).rt_rtx);
2673
2674 /* Sanity check. */
2675 if (GET_CODE (op0)((enum rtx_code) (op0)->code) == MINUS && GET_CODE (op1)((enum rtx_code) (op1)->code) == PLUS)
2676 swapped = 0;
2677 else if (GET_CODE (op0)((enum rtx_code) (op0)->code) == PLUS && GET_CODE (op1)((enum rtx_code) (op1)->code) == MINUS)
2678 swapped = 1;
2679 else
2680 gcc_unreachable ()(fancy_abort ("/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
, 1779, __FUNCTION__))
;
2681
2682 mask = INTVAL (XEXP (op, 2))(((((op)->u.fld[2]).rt_rtx))->u.hwint[0]);
2683 nunits = GET_MODE_NUNITS (mode)(mode_to_nunits (mode).coeffs[0]);
2684
2685 for (elt = 0; elt < nunits; elt++)
2686 {
2687 /* bit clear: take from op0, set: take from op1 */
2688 int bit = !(mask & (HOST_WIDE_INT_1U1UL << elt));
2689
2690 if (bit != ((elt & 1) ^ swapped))
2691 return false;
2692 }
2693
2694 return true;
2695}
2696
2697bool
2698addsub_vm_operator (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
2699{
2700 return ((GET_CODE (op)((enum rtx_code) (op)->code) == VEC_MERGE) && (
2701(addsub_vm_operator_1 (op, mode)))) && (
2702(mode == VOIDmode((void) 0, E_VOIDmode) || GET_MODE (op)((machine_mode) (op)->mode) == mode));
2703}
2704
2705static inline bool
2706addsub_vs_operator_1 (rtx op ATTRIBUTE_UNUSED__attribute__ ((__unused__)), machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
2707#line 1800 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
2708{
2709 rtx op0, op1;
2710 bool swapped;
2711 int nunits, elt;
2712
2713 op0 = XEXP (XEXP (op, 0), 0)((((((op)->u.fld[0]).rt_rtx))->u.fld[0]).rt_rtx);
2714 op1 = XEXP (XEXP (op, 0), 1)((((((op)->u.fld[0]).rt_rtx))->u.fld[1]).rt_rtx);
2715
2716 /* Sanity check. */
2717 if (GET_CODE (op0)((enum rtx_code) (op0)->code) == MINUS && GET_CODE (op1)((enum rtx_code) (op1)->code) == PLUS)
2718 swapped = false;
2719 else if (GET_CODE (op0)((enum rtx_code) (op0)->code) == PLUS && GET_CODE (op1)((enum rtx_code) (op1)->code) == MINUS)
2720 swapped = true;
2721 else
2722 gcc_unreachable ()(fancy_abort ("/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
, 1814, __FUNCTION__))
;
2723
2724 nunits = GET_MODE_NUNITS (mode)(mode_to_nunits (mode).coeffs[0]);
2725 if (XVECLEN (XEXP (op, 1), 0)((((((((op)->u.fld[1]).rt_rtx))->u.fld[0]).rt_rtvec))->
num_elem)
!= nunits)
2726 return false;
2727
2728 /* We already checked that permutation is suitable for addsub,
2729 so only look at the first element of the parallel. */
2730 elt = INTVAL (XVECEXP (XEXP (op, 1), 0, 0))((((((((((op)->u.fld[1]).rt_rtx))->u.fld[0]).rt_rtvec))
->elem[0]))->u.hwint[0])
;
2731
2732 return elt == (swapped ? nunits : 0);
2733}
2734
2735bool
2736addsub_vs_operator (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
2737{
2738 return (((GET_CODE (op)((enum rtx_code) (op)->code) == VEC_SELECT) && (GET_CODE (XEXP (op, 0))((enum rtx_code) ((((op)->u.fld[0]).rt_rtx))->code) == VEC_CONCAT)) && (
2739(addsub_vs_operator_1 (op, mode)))) && (
2740(mode == VOIDmode((void) 0, E_VOIDmode) || GET_MODE (op)((machine_mode) (op)->mode) == mode));
2741}
2742
2743static inline bool
2744addsub_vs_parallel_1 (rtx op ATTRIBUTE_UNUSED__attribute__ ((__unused__)), machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
2745#line 1831 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
2746{
2747 int nelt = XVECLEN (op, 0)(((((op)->u.fld[0]).rt_rtvec))->num_elem);
2748 int elt, i;
2749
2750 if (nelt < 2)
2751 return false;
2752
2753 /* Check that the permutation is suitable for addsub.
2754 For example, { 0 9 2 11 4 13 6 15 } or { 8 1 10 3 12 5 14 7 }. */
2755 elt = INTVAL (XVECEXP (op, 0, 0))(((((((op)->u.fld[0]).rt_rtvec))->elem[0]))->u.hwint
[0])
;
2756 if (elt == 0)
2757 {
2758 for (i = 1; i < nelt; ++i)
2759 if (INTVAL (XVECEXP (op, 0, i))(((((((op)->u.fld[0]).rt_rtvec))->elem[i]))->u.hwint
[0])
!= (i + (i & 1) * nelt))
2760 return false;
2761 }
2762 else if (elt == nelt)
2763 {
2764 for (i = 1; i < nelt; ++i)
2765 if (INTVAL (XVECEXP (op, 0, i))(((((((op)->u.fld[0]).rt_rtvec))->elem[i]))->u.hwint
[0])
!= (elt + i - (i & 1) * nelt))
2766 return false;
2767 }
2768 else
2769 return false;
2770
2771 return true;
2772}
2773
2774bool
2775addsub_vs_parallel (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
2776{
2777 return (((GET_CODE (op)((enum rtx_code) (op)->code) == PARALLEL) && (GET_CODE (XVECEXP (op, 0, 0))((enum rtx_code) ((((((op)->u.fld[0]).rt_rtvec))->elem[
0]))->code)
== CONST_INT)) && (
2778(addsub_vs_parallel_1 (op, mode)))) && (
2779(mode == VOIDmode((void) 0, E_VOIDmode) || GET_MODE (op)((machine_mode) (op)->mode) == mode));
2780}
2781
2782static inline bool
2783permvar_truncate_operand_1 (rtx op ATTRIBUTE_UNUSED__attribute__ ((__unused__)), machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
2784#line 1863 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
2785{
2786 int nelt = GET_MODE_NUNITS (mode)(mode_to_nunits (mode).coeffs[0]);
2787 int perm[128];
2788 int id;
2789
2790 if (!INTEGRAL_MODE_P (mode)(((enum mode_class) mode_class[mode]) == MODE_INT || ((enum mode_class
) mode_class[mode]) == MODE_PARTIAL_INT || ((enum mode_class)
mode_class[mode]) == MODE_COMPLEX_INT || ((enum mode_class) mode_class
[mode]) == MODE_VECTOR_BOOL || ((enum mode_class) mode_class[
mode]) == MODE_VECTOR_INT)
|| !VECTOR_MODE_P (mode)(((enum mode_class) mode_class[mode]) == MODE_VECTOR_BOOL || (
(enum mode_class) mode_class[mode]) == MODE_VECTOR_INT || ((enum
mode_class) mode_class[mode]) == MODE_VECTOR_FLOAT || ((enum
mode_class) mode_class[mode]) == MODE_VECTOR_FRACT || ((enum
mode_class) mode_class[mode]) == MODE_VECTOR_UFRACT || ((enum
mode_class) mode_class[mode]) == MODE_VECTOR_ACCUM || ((enum
mode_class) mode_class[mode]) == MODE_VECTOR_UACCUM)
)
3
Assuming the condition is true
4
Assuming the condition is false
5
Assuming the condition is true
6
Assuming the condition is false
7
Taking false branch
2791 return false;
2792
2793 if (nelt < 2)
8
Assuming 'nelt' is >= 2
9
Taking false branch
2794 return false;
2795
2796 if (!ix86_extract_perm_from_pool_constant (&perm[0], op))
10
Assuming the condition is false
11
Taking false branch
2797 return false;
2798
2799 id = exact_log2 (nelt);
12
Calling 'exact_log2'
15
Returning from 'exact_log2'
16
The value -1 is assigned to 'id'
2800
2801 /* Check that the permutation is suitable for pmovz{bw,wd,dq}.
2802 For example V16HImode to V8HImode
2803 { 0 2 4 6 8 10 12 14 * * * * * * * * }. */
2804 for (int i = 0; i != nelt / 2; i++)
17
Assuming the condition is true
18
Loop condition is true. Entering loop body
2805 if ((perm[i] & ((1 << id) - 1)) != i * 2)
19
The result of the left shift is undefined because the right operand is negative
2806 return false;
2807
2808 return true;
2809}
2810
2811bool
2812permvar_truncate_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
2813{
2814 return ((GET_CODE (op)((enum rtx_code) (op)->code) == MEM) && (
1
Assuming field 'code' is equal to MEM
2815(permvar_truncate_operand_1 (op, mode)))) && (
2
Calling 'permvar_truncate_operand_1'
2816(mode == VOIDmode((void) 0, E_VOIDmode) || GET_MODE (op)((machine_mode) (op)->mode) == mode));
2817}
2818
2819static inline bool
2820pshufb_truncv4siv4hi_operand_1 (rtx op ATTRIBUTE_UNUSED__attribute__ ((__unused__)), machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
2821#line 1893 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
2822{
2823 int perm[128];
2824
2825 if (mode != E_V16QImode)
2826 return false;
2827
2828 if (!ix86_extract_perm_from_pool_constant (&perm[0], op))
2829 return false;
2830
2831 /* Check that the permutation is suitable for pmovdw.
2832 For example V4SImode to V4HImode
2833 { 0 1 4 5 8 9 12 13 * * * * * * * * }.
2834 index = i % 2 + (i / 2) * 4. */
2835 for (int i = 0; i != 8; i++)
2836 {
2837 /* if (SRC2[(i * 8)+7] = 1) then DEST[(i*8)+7..(i*8)+0] := 0; */
2838 if (perm[i] & 128)
2839 return false;
2840
2841 if ((perm[i] & 15) != ((i & 1) + (i & 0xFE) * 2))
2842 return false;
2843 }
2844
2845 return true;
2846}
2847
2848bool
2849pshufb_truncv4siv4hi_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
2850{
2851 return ((GET_CODE (op)((enum rtx_code) (op)->code) == MEM) && (
2852(pshufb_truncv4siv4hi_operand_1 (op, mode)))) && (
2853(mode == VOIDmode((void) 0, E_VOIDmode) || GET_MODE (op)((machine_mode) (op)->mode) == mode));
2854}
2855
2856static inline bool
2857pshufb_truncv8hiv8qi_operand_1 (rtx op ATTRIBUTE_UNUSED__attribute__ ((__unused__)), machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
2858#line 1923 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
2859{
2860 int perm[128];
2861
2862 if (mode != E_V16QImode)
2863 return false;
2864
2865 if (!ix86_extract_perm_from_pool_constant (&perm[0], op))
2866 return false;
2867
2868 /* Check that the permutation is suitable for pmovwb.
2869 For example V16QImode to V8QImode
2870 { 0 2 4 6 8 10 12 14 * * * * * * * * }.
2871 index = i % 2 + (i / 2) * 4. */
2872 for (int i = 0; i != 8; i++)
2873 {
2874 /* if (SRC2[(i * 8)+7] = 1) then DEST[(i*8)+7..(i*8)+0] := 0; */
2875 if (perm[i] & 128)
2876 return false;
2877
2878 if ((perm[i] & 15) != i * 2)
2879 return false;
2880 }
2881
2882 return true;
2883}
2884
2885bool
2886pshufb_truncv8hiv8qi_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
2887{
2888 return ((GET_CODE (op)((enum rtx_code) (op)->code) == MEM) && (
2889(pshufb_truncv8hiv8qi_operand_1 (op, mode)))) && (
2890(mode == VOIDmode((void) 0, E_VOIDmode) || GET_MODE (op)((machine_mode) (op)->mode) == mode));
2891}
2892
2893static inline bool
2894pmovzx_parallel_1 (rtx op ATTRIBUTE_UNUSED__attribute__ ((__unused__)), machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
2895#line 1954 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
2896{
2897 int nelt = XVECLEN (op, 0)(((((op)->u.fld[0]).rt_rtvec))->num_elem);
2898 int elt, i;
2899
2900 if (nelt < 2)
2901 return false;
2902
2903 /* Check that the permutation is suitable for pmovz{bw,wd,dq}.
2904 For example { 0 16 1 17 2 18 3 19 4 20 5 21 6 22 7 23 }. */
2905 elt = INTVAL (XVECEXP (op, 0, 0))(((((((op)->u.fld[0]).rt_rtvec))->elem[0]))->u.hwint
[0])
;
2906 if (elt == 0)
2907 {
2908 for (i = 1; i < nelt; ++i)
2909 if ((i & 1) != 0)
2910 {
2911 if (INTVAL (XVECEXP (op, 0, i))(((((((op)->u.fld[0]).rt_rtvec))->elem[i]))->u.hwint
[0])
< nelt)
2912 return false;
2913 }
2914 else if (INTVAL (XVECEXP (op, 0, i))(((((((op)->u.fld[0]).rt_rtvec))->elem[i]))->u.hwint
[0])
!= i / 2)
2915 return false;
2916 }
2917 else
2918 return false;
2919
2920 return true;
2921}
2922
2923bool
2924pmovzx_parallel (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
2925{
2926 return (((GET_CODE (op)((enum rtx_code) (op)->code) == PARALLEL) && (GET_CODE (XVECEXP (op, 0, 0))((enum rtx_code) ((((((op)->u.fld[0]).rt_rtvec))->elem[
0]))->code)
== CONST_INT)) && (
2927(pmovzx_parallel_1 (op, mode)))) && (
2928(mode == VOIDmode((void) 0, E_VOIDmode) || GET_MODE (op)((machine_mode) (op)->mode) == mode));
2929}
2930
2931static inline bool
2932const_vector_duplicate_operand_1 (rtx op ATTRIBUTE_UNUSED__attribute__ ((__unused__)), machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
2933#line 1984 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
2934{
2935 rtx elt = XVECEXP (op, 0, 0)(((((op)->u.fld[0]).rt_rtvec))->elem[0]);
2936 int i, nelt = XVECLEN (op, 0)(((((op)->u.fld[0]).rt_rtvec))->num_elem);
2937
2938 for (i = 1; i < nelt; ++i)
2939 if (!rtx_equal_p (elt, XVECEXP (op, 0, i)(((((op)->u.fld[0]).rt_rtvec))->elem[i])))
2940 return false;
2941 return true;
2942}
2943
2944bool
2945const_vector_duplicate_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
2946{
2947 return ((GET_CODE (op)((enum rtx_code) (op)->code) == CONST_VECTOR) && (
2948(const_vector_duplicate_operand_1 (op, mode)))) && (
2949(mode == VOIDmode((void) 0, E_VOIDmode) || GET_MODE (op)((machine_mode) (op)->mode) == mode));
2950}
2951
2952static inline bool
2953avx_vbroadcast_operand_1 (rtx op ATTRIBUTE_UNUSED__attribute__ ((__unused__)), machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
2954#line 1998 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
2955{
2956 rtx elt = XVECEXP (op, 0, 0)(((((op)->u.fld[0]).rt_rtvec))->elem[0]);
2957 int i, nelt = XVECLEN (op, 0)(((((op)->u.fld[0]).rt_rtvec))->num_elem);
2958
2959 /* Don't bother checking there are the right number of operands,
2960 merely that they're all identical. */
2961 for (i = 1; i < nelt; ++i)
2962 if (XVECEXP (op, 0, i)(((((op)->u.fld[0]).rt_rtvec))->elem[i]) != elt)
2963 return false;
2964 return true;
2965}
2966
2967bool
2968avx_vbroadcast_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
2969{
2970 return (((GET_CODE (op)((enum rtx_code) (op)->code) == PARALLEL) && (GET_CODE (XVECEXP (op, 0, 0))((enum rtx_code) ((((((op)->u.fld[0]).rt_rtvec))->elem[
0]))->code)
== CONST_INT)) && (
2971(avx_vbroadcast_operand_1 (op, mode)))) && (
2972(mode == VOIDmode((void) 0, E_VOIDmode) || GET_MODE (op)((machine_mode) (op)->mode) == mode));
2973}
2974
2975static inline bool
2976palignr_operand_1 (rtx op ATTRIBUTE_UNUSED__attribute__ ((__unused__)), machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
2977#line 2014 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
2978{
2979 int elt = INTVAL (XVECEXP (op, 0, 0))(((((((op)->u.fld[0]).rt_rtvec))->elem[0]))->u.hwint
[0])
;
2980 int i, nelt = XVECLEN (op, 0)(((((op)->u.fld[0]).rt_rtvec))->num_elem);
2981
2982 /* Check that an order in the permutation is suitable for palignr.
2983 For example, {5 6 7 0 1 2 3 4} is "palignr 5, xmm, xmm". */
2984 for (i = 1; i < nelt; ++i)
2985 if (INTVAL (XVECEXP (op, 0, i))(((((((op)->u.fld[0]).rt_rtvec))->elem[i]))->u.hwint
[0])
!= ((elt + i) % nelt))
2986 return false;
2987 return true;
2988}
2989
2990bool
2991palignr_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
2992{
2993 return (((GET_CODE (op)((enum rtx_code) (op)->code) == PARALLEL) && (GET_CODE (XVECEXP (op, 0, 0))((enum rtx_code) ((((((op)->u.fld[0]).rt_rtvec))->elem[
0]))->code)
== CONST_INT)) && (
2994(palignr_operand_1 (op, mode)))) && (
2995(mode == VOIDmode((void) 0, E_VOIDmode) || GET_MODE (op)((machine_mode) (op)->mode) == mode));
2996}
2997
2998static inline bool
2999avx2_pblendw_operand_1 (rtx op ATTRIBUTE_UNUSED__attribute__ ((__unused__)), machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
3000#line 2029 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
3001{
3002 HOST_WIDE_INTlong val = INTVAL (op)((op)->u.hwint[0]);
3003 HOST_WIDE_INTlong low = val & 0xff;
3004 return val == ((low << 8) | low);
3005}
3006
3007bool
3008avx2_pblendw_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
3009{
3010 return (GET_CODE (op)((enum rtx_code) (op)->code) == CONST_INT) && (
3011(avx2_pblendw_operand_1 (op, mode)));
3012}
3013
3014bool
3015general_vector_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
3016{
3017 return (vector_operand (op, mode)) || ((GET_CODE (op)((enum rtx_code) (op)->code) == CONST_VECTOR) && (
3018(mode == VOIDmode((void) 0, E_VOIDmode) || GET_MODE (op)((machine_mode) (op)->mode) == mode)));
3019}
3020
3021bool
3022register_or_constm1_operand (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
3023{
3024 return (register_operand (op, mode)) || (((GET_CODE (op)((enum rtx_code) (op)->code) == CONST_INT) && (
3025#line 2044 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
3026(op == constm1_rtx(const_int_rtx[64 -1])))) && (
3027(mode == VOIDmode((void) 0, E_VOIDmode) || GET_MODE (op)((machine_mode) (op)->mode) == mode || GET_MODE (op)((machine_mode) (op)->mode) == VOIDmode((void) 0, E_VOIDmode))));
3028}
3029
3030static inline bool
3031save_multiple_1 (rtx op ATTRIBUTE_UNUSED__attribute__ ((__unused__)), machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
3032#line 2050 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
3033{
3034 const unsigned len = XVECLEN (op, 0)(((((op)->u.fld[0]).rt_rtvec))->num_elem);
3035 unsigned i;
3036
3037 /* Starting from end of vector, count register saves. */
3038 for (i = 0; i < len; ++i)
3039 {
3040 rtx src, dest, addr;
3041 rtx e = XVECEXP (op, 0, len - 1 - i)(((((op)->u.fld[0]).rt_rtvec))->elem[len - 1 - i]);
3042
3043 if (GET_CODE (e)((enum rtx_code) (e)->code) != SET)
3044 break;
3045
3046 src = SET_SRC (e)(((e)->u.fld[1]).rt_rtx);
3047 dest = SET_DEST (e)(((e)->u.fld[0]).rt_rtx);
3048
3049 if (!REG_P (src)(((enum rtx_code) (src)->code) == REG) || !MEM_P (dest)(((enum rtx_code) (dest)->code) == MEM))
3050 break;
3051
3052 addr = XEXP (dest, 0)(((dest)->u.fld[0]).rt_rtx);
3053
3054 /* Good if dest address is in RAX. */
3055 if (REG_P (addr)(((enum rtx_code) (addr)->code) == REG) && REGNO (addr)(rhs_regno(addr)) == AX_REG0)
3056 continue;
3057
3058 /* Good if dest address is offset of RAX. */
3059 if (GET_CODE (addr)((enum rtx_code) (addr)->code) == PLUS
3060 && REG_P (XEXP (addr, 0))(((enum rtx_code) ((((addr)->u.fld[0]).rt_rtx))->code) ==
REG)
3061 && REGNO (XEXP (addr, 0))(rhs_regno((((addr)->u.fld[0]).rt_rtx))) == AX_REG0)
3062 continue;
3063
3064 break;
3065 }
3066 return (i >= 12 && i <= 18);
3067}
3068
3069bool
3070save_multiple (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
3071{
3072 return ((GET_CODE (op)((enum rtx_code) (op)->code) == PARALLEL) && (
3073(save_multiple_1 (op, mode)))) && (
3074(mode == VOIDmode((void) 0, E_VOIDmode) || GET_MODE (op)((machine_mode) (op)->mode) == mode));
3075}
3076
3077static inline bool
3078restore_multiple_1 (rtx op ATTRIBUTE_UNUSED__attribute__ ((__unused__)), machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
3079#line 2091 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
3080{
3081 const unsigned len = XVECLEN (op, 0)(((((op)->u.fld[0]).rt_rtvec))->num_elem);
3082 unsigned i;
3083
3084 /* Starting from end of vector, count register restores. */
3085 for (i = 0; i < len; ++i)
3086 {
3087 rtx src, dest, addr;
3088 rtx e = XVECEXP (op, 0, len - 1 - i)(((((op)->u.fld[0]).rt_rtvec))->elem[len - 1 - i]);
3089
3090 if (GET_CODE (e)((enum rtx_code) (e)->code) != SET)
3091 break;
3092
3093 src = SET_SRC (e)(((e)->u.fld[1]).rt_rtx);
3094 dest = SET_DEST (e)(((e)->u.fld[0]).rt_rtx);
3095
3096 if (!MEM_P (src)(((enum rtx_code) (src)->code) == MEM) || !REG_P (dest)(((enum rtx_code) (dest)->code) == REG))
3097 break;
3098
3099 addr = XEXP (src, 0)(((src)->u.fld[0]).rt_rtx);
3100
3101 /* Good if src address is in RSI. */
3102 if (REG_P (addr)(((enum rtx_code) (addr)->code) == REG) && REGNO (addr)(rhs_regno(addr)) == SI_REG4)
3103 continue;
3104
3105 /* Good if src address is offset of RSI. */
3106 if (GET_CODE (addr)((enum rtx_code) (addr)->code) == PLUS
3107 && REG_P (XEXP (addr, 0))(((enum rtx_code) ((((addr)->u.fld[0]).rt_rtx))->code) ==
REG)
3108 && REGNO (XEXP (addr, 0))(rhs_regno((((addr)->u.fld[0]).rt_rtx))) == SI_REG4)
3109 continue;
3110
3111 break;
3112 }
3113 return (i >= 12 && i <= 18);
3114}
3115
3116bool
3117restore_multiple (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
3118{
3119 return ((GET_CODE (op)((enum rtx_code) (op)->code) == PARALLEL) && (
3120(restore_multiple_1 (op, mode)))) && (
3121(mode == VOIDmode((void) 0, E_VOIDmode) || GET_MODE (op)((machine_mode) (op)->mode) == mode));
3122}
3123
3124static inline bool
3125encodekey128_operation_1 (rtx op ATTRIBUTE_UNUSED__attribute__ ((__unused__)), machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
3126#line 2130 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
3127{
3128 unsigned i;
3129 rtx elt;
3130
3131 if (XVECLEN (op, 0)(((((op)->u.fld[0]).rt_rtvec))->num_elem) != 8)
3132 return false;
3133
3134 for(i = 0; i < 3; i++)
3135 {
3136 elt = XVECEXP (op, 0, i + 1)(((((op)->u.fld[0]).rt_rtvec))->elem[i + 1]);
3137 if (GET_CODE (elt)((enum rtx_code) (elt)->code) != SET
3138 || GET_CODE (SET_DEST (elt))((enum rtx_code) ((((elt)->u.fld[0]).rt_rtx))->code) != REG
3139 || GET_MODE (SET_DEST (elt))((machine_mode) ((((elt)->u.fld[0]).rt_rtx))->mode) != V2DImode((void) 0, E_V2DImode)
3140 || REGNO (SET_DEST (elt))(rhs_regno((((elt)->u.fld[0]).rt_rtx))) != GET_SSE_REGNO (i)((i) < 8 ? 20 + (i) : (i) < 16 ? 44 + (i) - 8 : 52 + (i
) - 16)
3141 || GET_CODE (SET_SRC (elt))((enum rtx_code) ((((elt)->u.fld[1]).rt_rtx))->code) != UNSPEC_VOLATILE
3142 || GET_MODE (SET_SRC (elt))((machine_mode) ((((elt)->u.fld[1]).rt_rtx))->mode) != V2DImode((void) 0, E_V2DImode)
3143 || XVECLEN(SET_SRC (elt), 0)((((((((elt)->u.fld[1]).rt_rtx))->u.fld[0]).rt_rtvec))->
num_elem)
!= 1
3144 || XVECEXP(SET_SRC (elt), 0, 0)((((((((elt)->u.fld[1]).rt_rtx))->u.fld[0]).rt_rtvec))->
elem[0])
!= const0_rtx(const_int_rtx[64]))
3145 return false;
3146 }
3147
3148 for(i = 4; i < 7; i++)
3149 {
3150 elt = XVECEXP (op, 0, i)(((((op)->u.fld[0]).rt_rtvec))->elem[i]);
3151 if (GET_CODE (elt)((enum rtx_code) (elt)->code) != CLOBBER
3152 || GET_MODE (elt)((machine_mode) (elt)->mode) != VOIDmode((void) 0, E_VOIDmode)
3153 || GET_CODE (XEXP (elt, 0))((enum rtx_code) ((((elt)->u.fld[0]).rt_rtx))->code) != REG
3154 || GET_MODE (XEXP (elt, 0))((machine_mode) ((((elt)->u.fld[0]).rt_rtx))->mode) != V2DImode((void) 0, E_V2DImode)
3155 || REGNO (XEXP (elt, 0))(rhs_regno((((elt)->u.fld[0]).rt_rtx))) != GET_SSE_REGNO (i)((i) < 8 ? 20 + (i) : (i) < 16 ? 44 + (i) - 8 : 52 + (i
) - 16)
)
3156 return false;
3157 }
3158
3159 elt = XVECEXP (op, 0, 7)(((((op)->u.fld[0]).rt_rtvec))->elem[7]);
3160 if (GET_CODE (elt)((enum rtx_code) (elt)->code) != CLOBBER
3161 || GET_MODE (elt)((machine_mode) (elt)->mode) != VOIDmode((void) 0, E_VOIDmode)
3162 || GET_CODE (XEXP (elt, 0))((enum rtx_code) ((((elt)->u.fld[0]).rt_rtx))->code) != REG
3163 || GET_MODE (XEXP (elt, 0))((machine_mode) ((((elt)->u.fld[0]).rt_rtx))->mode) != CCmode((void) 0, E_CCmode)
3164 || REGNO (XEXP (elt, 0))(rhs_regno((((elt)->u.fld[0]).rt_rtx))) != FLAGS_REG17)
3165 return false;
3166 return true;
3167}
3168
3169bool
3170encodekey128_operation (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
3171{
3172 return ((GET_CODE (op)((enum rtx_code) (op)->code) == PARALLEL) && (
3173(encodekey128_operation_1 (op, mode)))) && (
3174(mode == VOIDmode((void) 0, E_VOIDmode) || GET_MODE (op)((machine_mode) (op)->mode) == mode));
3175}
3176
3177static inline bool
3178encodekey256_operation_1 (rtx op ATTRIBUTE_UNUSED__attribute__ ((__unused__)), machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
3179#line 2174 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
3180{
3181 unsigned i;
3182 rtx elt;
3183
3184 if (XVECLEN (op, 0)(((((op)->u.fld[0]).rt_rtvec))->num_elem) != 9)
3185 return false;
3186
3187 elt = SET_SRC (XVECEXP (op, 0, 0))((((((((op)->u.fld[0]).rt_rtvec))->elem[0]))->u.fld[
1]).rt_rtx)
;
3188 elt = XVECEXP (elt, 0, 2)(((((elt)->u.fld[0]).rt_rtvec))->elem[2]);
3189 if (!REG_P (elt)(((enum rtx_code) (elt)->code) == REG)
3190 || REGNO(elt)(rhs_regno(elt)) != GET_SSE_REGNO (1)((1) < 8 ? 20 + (1) : (1) < 16 ? 44 + (1) - 8 : 52 + (1
) - 16)
)
3191 return false;
3192
3193 for(i = 0; i < 4; i++)
3194 {
3195 elt = XVECEXP (op, 0, i + 1)(((((op)->u.fld[0]).rt_rtvec))->elem[i + 1]);
3196 if (GET_CODE (elt)((enum rtx_code) (elt)->code) != SET
3197 || GET_CODE (SET_DEST (elt))((enum rtx_code) ((((elt)->u.fld[0]).rt_rtx))->code) != REG
3198 || GET_MODE (SET_DEST (elt))((machine_mode) ((((elt)->u.fld[0]).rt_rtx))->mode) != V2DImode((void) 0, E_V2DImode)
3199 || REGNO (SET_DEST (elt))(rhs_regno((((elt)->u.fld[0]).rt_rtx))) != GET_SSE_REGNO (i)((i) < 8 ? 20 + (i) : (i) < 16 ? 44 + (i) - 8 : 52 + (i
) - 16)
3200 || GET_CODE (SET_SRC (elt))((enum rtx_code) ((((elt)->u.fld[1]).rt_rtx))->code) != UNSPEC_VOLATILE
3201 || GET_MODE (SET_SRC (elt))((machine_mode) ((((elt)->u.fld[1]).rt_rtx))->mode) != V2DImode((void) 0, E_V2DImode)
3202 || XVECLEN(SET_SRC (elt), 0)((((((((elt)->u.fld[1]).rt_rtx))->u.fld[0]).rt_rtvec))->
num_elem)
!= 1
3203 || XVECEXP(SET_SRC (elt), 0, 0)((((((((elt)->u.fld[1]).rt_rtx))->u.fld[0]).rt_rtvec))->
elem[0])
!= const0_rtx(const_int_rtx[64]))
3204 return false;
3205 }
3206
3207 for(i = 4; i < 7; i++)
3208 {
3209 elt = XVECEXP (op, 0, i + 1)(((((op)->u.fld[0]).rt_rtvec))->elem[i + 1]);
3210 if (GET_CODE (elt)((enum rtx_code) (elt)->code) != CLOBBER
3211 || GET_MODE (elt)((machine_mode) (elt)->mode) != VOIDmode((void) 0, E_VOIDmode)
3212 || GET_CODE (XEXP (elt, 0))((enum rtx_code) ((((elt)->u.fld[0]).rt_rtx))->code) != REG
3213 || GET_MODE (XEXP (elt, 0))((machine_mode) ((((elt)->u.fld[0]).rt_rtx))->mode) != V2DImode((void) 0, E_V2DImode)
3214 || REGNO (XEXP (elt, 0))(rhs_regno((((elt)->u.fld[0]).rt_rtx))) != GET_SSE_REGNO (i)((i) < 8 ? 20 + (i) : (i) < 16 ? 44 + (i) - 8 : 52 + (i
) - 16)
)
3215 return false;
3216 }
3217
3218 elt = XVECEXP (op, 0, 8)(((((op)->u.fld[0]).rt_rtvec))->elem[8]);
3219 if (GET_CODE (elt)((enum rtx_code) (elt)->code) != CLOBBER
3220 || GET_MODE (elt)((machine_mode) (elt)->mode) != VOIDmode((void) 0, E_VOIDmode)
3221 || GET_CODE (XEXP (elt, 0))((enum rtx_code) ((((elt)->u.fld[0]).rt_rtx))->code) != REG
3222 || GET_MODE (XEXP (elt, 0))((machine_mode) ((((elt)->u.fld[0]).rt_rtx))->mode) != CCmode((void) 0, E_CCmode)
3223 || REGNO (XEXP (elt, 0))(rhs_regno((((elt)->u.fld[0]).rt_rtx))) != FLAGS_REG17)
3224 return false;
3225 return true;
3226}
3227
3228bool
3229encodekey256_operation (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
3230{
3231 return ((GET_CODE (op)((enum rtx_code) (op)->code) == PARALLEL) && (
3232(encodekey256_operation_1 (op, mode)))) && (
3233(mode == VOIDmode((void) 0, E_VOIDmode) || GET_MODE (op)((machine_mode) (op)->mode) == mode));
3234}
3235
3236static inline bool
3237aeswidekl_operation_1 (rtx op ATTRIBUTE_UNUSED__attribute__ ((__unused__)), machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
3238#line 2225 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/predicates.md"
3239{
3240 unsigned i;
3241 rtx elt;
3242
3243 for (i = 0; i < 8; i++)
3244 {
3245 elt = XVECEXP (op, 0, i + 1)(((((op)->u.fld[0]).rt_rtvec))->elem[i + 1]);
3246 if (GET_CODE (elt)((enum rtx_code) (elt)->code) != SET
3247 || GET_CODE (SET_DEST (elt))((enum rtx_code) ((((elt)->u.fld[0]).rt_rtx))->code) != REG
3248 || GET_MODE (SET_DEST (elt))((machine_mode) ((((elt)->u.fld[0]).rt_rtx))->mode) != V2DImode((void) 0, E_V2DImode)
3249 || REGNO (SET_DEST (elt))(rhs_regno((((elt)->u.fld[0]).rt_rtx))) != GET_SSE_REGNO (i)((i) < 8 ? 20 + (i) : (i) < 16 ? 44 + (i) - 8 : 52 + (i
) - 16)
3250 || GET_CODE (SET_SRC (elt))((enum rtx_code) ((((elt)->u.fld[1]).rt_rtx))->code) != UNSPEC_VOLATILE
3251 || GET_MODE (SET_SRC (elt))((machine_mode) ((((elt)->u.fld[1]).rt_rtx))->mode) != V2DImode((void) 0, E_V2DImode)
3252 || XVECLEN (SET_SRC (elt), 0)((((((((elt)->u.fld[1]).rt_rtx))->u.fld[0]).rt_rtvec))->
num_elem)
!= 1
3253 || REGNO (XVECEXP (SET_SRC (elt), 0, 0))(rhs_regno(((((((((elt)->u.fld[1]).rt_rtx))->u.fld[0]).
rt_rtvec))->elem[0])))
!= GET_SSE_REGNO (i)((i) < 8 ? 20 + (i) : (i) < 16 ? 44 + (i) - 8 : 52 + (i
) - 16)
)
3254 return false;
3255 }
3256 return true;
3257}
3258
3259bool
3260aeswidekl_operation (rtx op, machine_mode mode ATTRIBUTE_UNUSED__attribute__ ((__unused__)))
3261{
3262 return ((GET_CODE (op)((enum rtx_code) (op)->code) == PARALLEL) && (
3263(aeswidekl_operation_1 (op, mode)))) && (
3264(mode == VOIDmode((void) 0, E_VOIDmode) || GET_MODE (op)((machine_mode) (op)->mode) == mode));
3265}
3266
3267enum constraint_num
3268lookup_constraint_1 (const char *str)
3269{
3270 switch (str[0])
3271 {
3272 case '<':
3273 return CONSTRAINT__l;
3274 case '>':
3275 return CONSTRAINT__g;
3276 case 'A':
3277 return CONSTRAINT_A;
3278 case 'B':
3279 if (str[1] == 'g')
3280 return CONSTRAINT_Bg;
3281 if (str[1] == 'm')
3282 return CONSTRAINT_Bm;
3283 if (str[1] == 'c')
3284 return CONSTRAINT_Bc;
3285 if (str[1] == 'k')
3286 return CONSTRAINT_Bk;
3287 if (str[1] == 'n')
3288 return CONSTRAINT_Bn;
3289 if (str[1] == 'r')
3290 return CONSTRAINT_Br;
3291 if (str[1] == 's')
3292 return CONSTRAINT_Bs;
3293 if (str[1] == 'w')
3294 return CONSTRAINT_Bw;
3295 if (str[1] == 'z')
3296 return CONSTRAINT_Bz;
3297 if (str[1] == 'C')
3298 return CONSTRAINT_BC;
3299 if (str[1] == 'F')
3300 return CONSTRAINT_BF;
3301 if (str[1] == 'H')
3302 return CONSTRAINT_BH;
3303 if (str[1] == 'M')
3304 return CONSTRAINT_BM;
3305 if (str[1] == 'f')
3306 return CONSTRAINT_Bf;
3307 break;
3308 case 'C':
3309 return CONSTRAINT_C;
3310 case 'D':
3311 return CONSTRAINT_D;
3312 case 'E':
3313 return CONSTRAINT_E;
3314 case 'F':
3315 return CONSTRAINT_F;
3316 case 'G':
3317 return CONSTRAINT_G;
3318 case 'I':
3319 return CONSTRAINT_I;
3320 case 'J':
3321 return CONSTRAINT_J;
3322 case 'K':
3323 return CONSTRAINT_K;
3324 case 'L':
3325 return CONSTRAINT_L;
3326 case 'M':
3327 return CONSTRAINT_M;
3328 case 'N':
3329 return CONSTRAINT_N;
3330 case 'O':
3331 return CONSTRAINT_O;
3332 case 'Q':
3333 return CONSTRAINT_Q;
3334 case 'R':
3335 return CONSTRAINT_R;
3336 case 'S':
3337 return CONSTRAINT_S;
3338 case 'T':
3339 if (str[1] == 's')
3340 return CONSTRAINT_Ts;
3341 if (str[1] == 'v')
3342 return CONSTRAINT_Tv;
3343 break;
3344 case 'U':
3345 return CONSTRAINT_U;
3346 case 'V':
3347 return CONSTRAINT_V;
3348 case 'W':
3349 if (str[1] == 'w')
3350 return CONSTRAINT_Ww;
3351 if (str[1] == 'e')
3352 return CONSTRAINT_We;
3353 if (str[1] == 'z')
3354 return CONSTRAINT_Wz;
3355 if (str[1] == 'd')
3356 return CONSTRAINT_Wd;
3357 if (str[1] == 'f')
3358 return CONSTRAINT_Wf;
3359 if (str[1] == 'b')
3360 return CONSTRAINT_Wb;
3361 break;
3362 case 'X':
3363 return CONSTRAINT_X;
3364 case 'Y':
3365 if (str[1] == 'z')
3366 return CONSTRAINT_Yz;
3367 if (str[1] == 'd')
3368 return CONSTRAINT_Yd;
3369 if (str[1] == 'p')
3370 return CONSTRAINT_Yp;
3371 if (str[1] == 'a')
3372 return CONSTRAINT_Ya;
3373 if (str[1] == 'b')
3374 return CONSTRAINT_Yb;
3375 if (str[1] == 'f')
3376 return CONSTRAINT_Yf;
3377 if (str[1] == 'r')
3378 return CONSTRAINT_Yr;
3379 if (str[1] == 'v')
3380 return CONSTRAINT_Yv;
3381 if (str[1] == 'w')
3382 return CONSTRAINT_Yw;
3383 if (str[1] == 'W')
3384 return CONSTRAINT_YW;
3385 if (str[1] == 'k')
3386 return CONSTRAINT_Yk;
3387 break;
3388 case 'Z':
3389 return CONSTRAINT_Z;
3390 case 'a':
3391 return CONSTRAINT_a;
3392 case 'b':
3393 return CONSTRAINT_b;
3394 case 'c':
3395 return CONSTRAINT_c;
3396 case 'd':
3397 return CONSTRAINT_d;
3398 case 'e':
3399 return CONSTRAINT_e;
3400 case 'f':
3401 return CONSTRAINT_f;
3402 case 'i':
3403 return CONSTRAINT_i;
3404 case 'k':
3405 return CONSTRAINT_k;
3406 case 'l':
3407 return CONSTRAINT_l;
3408 case 'm':
3409 return CONSTRAINT_m;
3410 case 'n':
3411 return CONSTRAINT_n;
3412 case 'o':
3413 return CONSTRAINT_o;
3414 case 'p':
3415 return CONSTRAINT_p;
3416 case 'q':
3417 return CONSTRAINT_q;
3418 case 'r':
3419 return CONSTRAINT_r;
3420 case 's':
3421 return CONSTRAINT_s;
3422 case 't':
3423 return CONSTRAINT_t;
3424 case 'u':
3425 return CONSTRAINT_u;
3426 case 'v':
3427 return CONSTRAINT_v;
3428 case 'x':
3429 return CONSTRAINT_x;
3430 case 'y':
3431 return CONSTRAINT_y;
3432 default: break;
3433 }
3434 return CONSTRAINT__UNKNOWN;
3435}
3436
3437const unsigned char lookup_constraint_array[] = {
3438 CONSTRAINT__UNKNOWN,
3439 CONSTRAINT__UNKNOWN,
3440 CONSTRAINT__UNKNOWN,
3441 CONSTRAINT__UNKNOWN,
3442 CONSTRAINT__UNKNOWN,
3443 CONSTRAINT__UNKNOWN,
3444 CONSTRAINT__UNKNOWN,
3445 CONSTRAINT__UNKNOWN,
3446 CONSTRAINT__UNKNOWN,
3447 CONSTRAINT__UNKNOWN,
3448 CONSTRAINT__UNKNOWN,
3449 CONSTRAINT__UNKNOWN,
3450 CONSTRAINT__UNKNOWN,
3451 CONSTRAINT__UNKNOWN,
3452 CONSTRAINT__UNKNOWN,
3453 CONSTRAINT__UNKNOWN,
3454 CONSTRAINT__UNKNOWN,
3455 CONSTRAINT__UNKNOWN,
3456 CONSTRAINT__UNKNOWN,
3457 CONSTRAINT__UNKNOWN,
3458 CONSTRAINT__UNKNOWN,
3459 CONSTRAINT__UNKNOWN,
3460 CONSTRAINT__UNKNOWN,
3461 CONSTRAINT__UNKNOWN,
3462 CONSTRAINT__UNKNOWN,
3463 CONSTRAINT__UNKNOWN,
3464 CONSTRAINT__UNKNOWN,
3465 CONSTRAINT__UNKNOWN,
3466 CONSTRAINT__UNKNOWN,
3467 CONSTRAINT__UNKNOWN,
3468 CONSTRAINT__UNKNOWN,
3469 CONSTRAINT__UNKNOWN,
3470 CONSTRAINT__UNKNOWN,
3471 CONSTRAINT__UNKNOWN,
3472 CONSTRAINT__UNKNOWN,
3473 CONSTRAINT__UNKNOWN,
3474 CONSTRAINT__UNKNOWN,
3475 CONSTRAINT__UNKNOWN,
3476 CONSTRAINT__UNKNOWN,
3477 CONSTRAINT__UNKNOWN,
3478 CONSTRAINT__UNKNOWN,
3479 CONSTRAINT__UNKNOWN,
3480 CONSTRAINT__UNKNOWN,
3481 CONSTRAINT__UNKNOWN,
3482 CONSTRAINT__UNKNOWN,
3483 CONSTRAINT__UNKNOWN,
3484 CONSTRAINT__UNKNOWN,
3485 CONSTRAINT__UNKNOWN,
3486 CONSTRAINT__UNKNOWN,
3487 CONSTRAINT__UNKNOWN,
3488 CONSTRAINT__UNKNOWN,
3489 CONSTRAINT__UNKNOWN,
3490 CONSTRAINT__UNKNOWN,
3491 CONSTRAINT__UNKNOWN,
3492 CONSTRAINT__UNKNOWN,
3493 CONSTRAINT__UNKNOWN,
3494 CONSTRAINT__UNKNOWN,
3495 CONSTRAINT__UNKNOWN,
3496 CONSTRAINT__UNKNOWN,
3497 CONSTRAINT__UNKNOWN,
3498 MIN ((int) CONSTRAINT__l, (int) UCHAR_MAX)(((int) CONSTRAINT__l) < ((int) (127*2 +1)) ? ((int) CONSTRAINT__l
) : ((int) (127*2 +1)))
,
3499 CONSTRAINT__UNKNOWN,
3500 MIN ((int) CONSTRAINT__g, (int) UCHAR_MAX)(((int) CONSTRAINT__g) < ((int) (127*2 +1)) ? ((int) CONSTRAINT__g
) : ((int) (127*2 +1)))
,
3501 CONSTRAINT__UNKNOWN,
3502 CONSTRAINT__UNKNOWN,
3503 MIN ((int) CONSTRAINT_A, (int) UCHAR_MAX)(((int) CONSTRAINT_A) < ((int) (127*2 +1)) ? ((int) CONSTRAINT_A
) : ((int) (127*2 +1)))
,
3504 UCHAR_MAX(127*2 +1),
3505 MIN ((int) CONSTRAINT_C, (int) UCHAR_MAX)(((int) CONSTRAINT_C) < ((int) (127*2 +1)) ? ((int) CONSTRAINT_C
) : ((int) (127*2 +1)))
,
3506 MIN ((int) CONSTRAINT_D, (int) UCHAR_MAX)(((int) CONSTRAINT_D) < ((int) (127*2 +1)) ? ((int) CONSTRAINT_D
) : ((int) (127*2 +1)))
,
3507 MIN ((int) CONSTRAINT_E, (int) UCHAR_MAX)(((int) CONSTRAINT_E) < ((int) (127*2 +1)) ? ((int) CONSTRAINT_E
) : ((int) (127*2 +1)))
,
3508 MIN ((int) CONSTRAINT_F, (int) UCHAR_MAX)(((int) CONSTRAINT_F) < ((int) (127*2 +1)) ? ((int) CONSTRAINT_F
) : ((int) (127*2 +1)))
,
3509 MIN ((int) CONSTRAINT_G, (int) UCHAR_MAX)(((int) CONSTRAINT_G) < ((int) (127*2 +1)) ? ((int) CONSTRAINT_G
) : ((int) (127*2 +1)))
,
3510 CONSTRAINT__UNKNOWN,
3511 MIN ((int) CONSTRAINT_I, (int) UCHAR_MAX)(((int) CONSTRAINT_I) < ((int) (127*2 +1)) ? ((int) CONSTRAINT_I
) : ((int) (127*2 +1)))
,
3512 MIN ((int) CONSTRAINT_J, (int) UCHAR_MAX)(((int) CONSTRAINT_J) < ((int) (127*2 +1)) ? ((int) CONSTRAINT_J
) : ((int) (127*2 +1)))
,
3513 MIN ((int) CONSTRAINT_K, (int) UCHAR_MAX)(((int) CONSTRAINT_K) < ((int) (127*2 +1)) ? ((int) CONSTRAINT_K
) : ((int) (127*2 +1)))
,
3514 MIN ((int) CONSTRAINT_L, (int) UCHAR_MAX)(((int) CONSTRAINT_L) < ((int) (127*2 +1)) ? ((int) CONSTRAINT_L
) : ((int) (127*2 +1)))
,
3515 MIN ((int) CONSTRAINT_M, (int) UCHAR_MAX)(((int) CONSTRAINT_M) < ((int) (127*2 +1)) ? ((int) CONSTRAINT_M
) : ((int) (127*2 +1)))
,
3516 MIN ((int) CONSTRAINT_N, (int) UCHAR_MAX)(((int) CONSTRAINT_N) < ((int) (127*2 +1)) ? ((int) CONSTRAINT_N
) : ((int) (127*2 +1)))
,
3517 MIN ((int) CONSTRAINT_O, (int) UCHAR_MAX)(((int) CONSTRAINT_O) < ((int) (127*2 +1)) ? ((int) CONSTRAINT_O
) : ((int) (127*2 +1)))
,
3518 CONSTRAINT__UNKNOWN,
3519 MIN ((int) CONSTRAINT_Q, (int) UCHAR_MAX)(((int) CONSTRAINT_Q) < ((int) (127*2 +1)) ? ((int) CONSTRAINT_Q
) : ((int) (127*2 +1)))
,
3520 MIN ((int) CONSTRAINT_R, (int) UCHAR_MAX)(((int) CONSTRAINT_R) < ((int) (127*2 +1)) ? ((int) CONSTRAINT_R
) : ((int) (127*2 +1)))
,
3521 MIN ((int) CONSTRAINT_S, (int) UCHAR_MAX)(((int) CONSTRAINT_S) < ((int) (127*2 +1)) ? ((int) CONSTRAINT_S
) : ((int) (127*2 +1)))
,
3522 UCHAR_MAX(127*2 +1),
3523 MIN ((int) CONSTRAINT_U, (int) UCHAR_MAX)(((int) CONSTRAINT_U) < ((int) (127*2 +1)) ? ((int) CONSTRAINT_U
) : ((int) (127*2 +1)))
,
3524 MIN ((int) CONSTRAINT_V, (int) UCHAR_MAX)(((int) CONSTRAINT_V) < ((int) (127*2 +1)) ? ((int) CONSTRAINT_V
) : ((int) (127*2 +1)))
,
3525 UCHAR_MAX(127*2 +1),
3526 MIN ((int) CONSTRAINT_X, (int) UCHAR_MAX)(((int) CONSTRAINT_X) < ((int) (127*2 +1)) ? ((int) CONSTRAINT_X
) : ((int) (127*2 +1)))
,
3527 UCHAR_MAX(127*2 +1),
3528 MIN ((int) CONSTRAINT_Z, (int) UCHAR_MAX)(((int) CONSTRAINT_Z) < ((int) (127*2 +1)) ? ((int) CONSTRAINT_Z
) : ((int) (127*2 +1)))
,
3529 CONSTRAINT__UNKNOWN,
3530 CONSTRAINT__UNKNOWN,
3531 CONSTRAINT__UNKNOWN,
3532 CONSTRAINT__UNKNOWN,
3533 CONSTRAINT__UNKNOWN,
3534 CONSTRAINT__UNKNOWN,
3535 MIN ((int) CONSTRAINT_a, (int) UCHAR_MAX)(((int) CONSTRAINT_a) < ((int) (127*2 +1)) ? ((int) CONSTRAINT_a
) : ((int) (127*2 +1)))
,
3536 MIN ((int) CONSTRAINT_b, (int) UCHAR_MAX)(((int) CONSTRAINT_b) < ((int) (127*2 +1)) ? ((int) CONSTRAINT_b
) : ((int) (127*2 +1)))
,
3537 MIN ((int) CONSTRAINT_c, (int) UCHAR_MAX)(((int) CONSTRAINT_c) < ((int) (127*2 +1)) ? ((int) CONSTRAINT_c
) : ((int) (127*2 +1)))
,
3538 MIN ((int) CONSTRAINT_d, (int) UCHAR_MAX)(((int) CONSTRAINT_d) < ((int) (127*2 +1)) ? ((int) CONSTRAINT_d
) : ((int) (127*2 +1)))
,
3539 MIN ((int) CONSTRAINT_e, (int) UCHAR_MAX)(((int) CONSTRAINT_e) < ((int) (127*2 +1)) ? ((int) CONSTRAINT_e
) : ((int) (127*2 +1)))
,
3540 MIN ((int) CONSTRAINT_f, (int) UCHAR_MAX)(((int) CONSTRAINT_f) < ((int) (127*2 +1)) ? ((int) CONSTRAINT_f
) : ((int) (127*2 +1)))
,
3541 CONSTRAINT__UNKNOWN,
3542 CONSTRAINT__UNKNOWN,
3543 MIN ((int) CONSTRAINT_i, (int) UCHAR_MAX)(((int) CONSTRAINT_i) < ((int) (127*2 +1)) ? ((int) CONSTRAINT_i
) : ((int) (127*2 +1)))
,
3544 CONSTRAINT__UNKNOWN,
3545 MIN ((int) CONSTRAINT_k, (int) UCHAR_MAX)(((int) CONSTRAINT_k) < ((int) (127*2 +1)) ? ((int) CONSTRAINT_k
) : ((int) (127*2 +1)))
,
3546 MIN ((int) CONSTRAINT_l, (int) UCHAR_MAX)(((int) CONSTRAINT_l) < ((int) (127*2 +1)) ? ((int) CONSTRAINT_l
) : ((int) (127*2 +1)))
,
3547 MIN ((int) CONSTRAINT_m, (int) UCHAR_MAX)(((int) CONSTRAINT_m) < ((int) (127*2 +1)) ? ((int) CONSTRAINT_m
) : ((int) (127*2 +1)))
,
3548 MIN ((int) CONSTRAINT_n, (int) UCHAR_MAX)(((int) CONSTRAINT_n) < ((int) (127*2 +1)) ? ((int) CONSTRAINT_n
) : ((int) (127*2 +1)))
,
3549 MIN ((int) CONSTRAINT_o, (int) UCHAR_MAX)(((int) CONSTRAINT_o) < ((int) (127*2 +1)) ? ((int) CONSTRAINT_o
) : ((int) (127*2 +1)))
,
3550 MIN ((int) CONSTRAINT_p, (int) UCHAR_MAX)(((int) CONSTRAINT_p) < ((int) (127*2 +1)) ? ((int) CONSTRAINT_p
) : ((int) (127*2 +1)))
,
3551 MIN ((int) CONSTRAINT_q, (int) UCHAR_MAX)(((int) CONSTRAINT_q) < ((int) (127*2 +1)) ? ((int) CONSTRAINT_q
) : ((int) (127*2 +1)))
,
3552 MIN ((int) CONSTRAINT_r, (int) UCHAR_MAX)(((int) CONSTRAINT_r) < ((int) (127*2 +1)) ? ((int) CONSTRAINT_r
) : ((int) (127*2 +1)))
,
3553 MIN ((int) CONSTRAINT_s, (int) UCHAR_MAX)(((int) CONSTRAINT_s) < ((int) (127*2 +1)) ? ((int) CONSTRAINT_s
) : ((int) (127*2 +1)))
,
3554 MIN ((int) CONSTRAINT_t, (int) UCHAR_MAX)(((int) CONSTRAINT_t) < ((int) (127*2 +1)) ? ((int) CONSTRAINT_t
) : ((int) (127*2 +1)))
,
3555 MIN ((int) CONSTRAINT_u, (int) UCHAR_MAX)(((int) CONSTRAINT_u) < ((int) (127*2 +1)) ? ((int) CONSTRAINT_u
) : ((int) (127*2 +1)))
,
3556 MIN ((int) CONSTRAINT_v, (int) UCHAR_MAX)(((int) CONSTRAINT_v) < ((int) (127*2 +1)) ? ((int) CONSTRAINT_v
) : ((int) (127*2 +1)))
,
3557 CONSTRAINT__UNKNOWN,
3558 MIN ((int) CONSTRAINT_x, (int) UCHAR_MAX)(((int) CONSTRAINT_x) < ((int) (127*2 +1)) ? ((int) CONSTRAINT_x
) : ((int) (127*2 +1)))
,
3559 MIN ((int) CONSTRAINT_y, (int) UCHAR_MAX)(((int) CONSTRAINT_y) < ((int) (127*2 +1)) ? ((int) CONSTRAINT_y
) : ((int) (127*2 +1)))
,
3560 CONSTRAINT__UNKNOWN,
3561 CONSTRAINT__UNKNOWN,
3562 CONSTRAINT__UNKNOWN,
3563 CONSTRAINT__UNKNOWN,
3564 CONSTRAINT__UNKNOWN,
3565 CONSTRAINT__UNKNOWN,
3566 CONSTRAINT__UNKNOWN,
3567 CONSTRAINT__UNKNOWN,
3568 CONSTRAINT__UNKNOWN,
3569 CONSTRAINT__UNKNOWN,
3570 CONSTRAINT__UNKNOWN,
3571 CONSTRAINT__UNKNOWN,
3572 CONSTRAINT__UNKNOWN,
3573 CONSTRAINT__UNKNOWN,
3574 CONSTRAINT__UNKNOWN,
3575 CONSTRAINT__UNKNOWN,
3576 CONSTRAINT__UNKNOWN,
3577 CONSTRAINT__UNKNOWN,
3578 CONSTRAINT__UNKNOWN,
3579 CONSTRAINT__UNKNOWN,
3580 CONSTRAINT__UNKNOWN,
3581 CONSTRAINT__UNKNOWN,
3582 CONSTRAINT__UNKNOWN,
3583 CONSTRAINT__UNKNOWN,
3584 CONSTRAINT__UNKNOWN,
3585 CONSTRAINT__UNKNOWN,
3586 CONSTRAINT__UNKNOWN,
3587 CONSTRAINT__UNKNOWN,
3588 CONSTRAINT__UNKNOWN,
3589 CONSTRAINT__UNKNOWN,
3590 CONSTRAINT__UNKNOWN,
3591 CONSTRAINT__UNKNOWN,
3592 CONSTRAINT__UNKNOWN,
3593 CONSTRAINT__UNKNOWN,
3594 CONSTRAINT__UNKNOWN,
3595 CONSTRAINT__UNKNOWN,
3596 CONSTRAINT__UNKNOWN,
3597 CONSTRAINT__UNKNOWN,
3598 CONSTRAINT__UNKNOWN,
3599 CONSTRAINT__UNKNOWN,
3600 CONSTRAINT__UNKNOWN,
3601 CONSTRAINT__UNKNOWN,
3602 CONSTRAINT__UNKNOWN,
3603 CONSTRAINT__UNKNOWN,
3604 CONSTRAINT__UNKNOWN,
3605 CONSTRAINT__UNKNOWN,
3606 CONSTRAINT__UNKNOWN,
3607 CONSTRAINT__UNKNOWN,
3608 CONSTRAINT__UNKNOWN,
3609 CONSTRAINT__UNKNOWN,
3610 CONSTRAINT__UNKNOWN,
3611 CONSTRAINT__UNKNOWN,
3612 CONSTRAINT__UNKNOWN,
3613 CONSTRAINT__UNKNOWN,
3614 CONSTRAINT__UNKNOWN,
3615 CONSTRAINT__UNKNOWN,
3616 CONSTRAINT__UNKNOWN,
3617 CONSTRAINT__UNKNOWN,
3618 CONSTRAINT__UNKNOWN,
3619 CONSTRAINT__UNKNOWN,
3620 CONSTRAINT__UNKNOWN,
3621 CONSTRAINT__UNKNOWN,
3622 CONSTRAINT__UNKNOWN,
3623 CONSTRAINT__UNKNOWN,
3624 CONSTRAINT__UNKNOWN,
3625 CONSTRAINT__UNKNOWN,
3626 CONSTRAINT__UNKNOWN,
3627 CONSTRAINT__UNKNOWN,
3628 CONSTRAINT__UNKNOWN,
3629 CONSTRAINT__UNKNOWN,
3630 CONSTRAINT__UNKNOWN,
3631 CONSTRAINT__UNKNOWN,
3632 CONSTRAINT__UNKNOWN,
3633 CONSTRAINT__UNKNOWN,
3634 CONSTRAINT__UNKNOWN,
3635 CONSTRAINT__UNKNOWN,
3636 CONSTRAINT__UNKNOWN,
3637 CONSTRAINT__UNKNOWN,
3638 CONSTRAINT__UNKNOWN,
3639 CONSTRAINT__UNKNOWN,
3640 CONSTRAINT__UNKNOWN,
3641 CONSTRAINT__UNKNOWN,
3642 CONSTRAINT__UNKNOWN,
3643 CONSTRAINT__UNKNOWN,
3644 CONSTRAINT__UNKNOWN,
3645 CONSTRAINT__UNKNOWN,
3646 CONSTRAINT__UNKNOWN,
3647 CONSTRAINT__UNKNOWN,
3648 CONSTRAINT__UNKNOWN,
3649 CONSTRAINT__UNKNOWN,
3650 CONSTRAINT__UNKNOWN,
3651 CONSTRAINT__UNKNOWN,
3652 CONSTRAINT__UNKNOWN,
3653 CONSTRAINT__UNKNOWN,
3654 CONSTRAINT__UNKNOWN,
3655 CONSTRAINT__UNKNOWN,
3656 CONSTRAINT__UNKNOWN,
3657 CONSTRAINT__UNKNOWN,
3658 CONSTRAINT__UNKNOWN,
3659 CONSTRAINT__UNKNOWN,
3660 CONSTRAINT__UNKNOWN,
3661 CONSTRAINT__UNKNOWN,
3662 CONSTRAINT__UNKNOWN,
3663 CONSTRAINT__UNKNOWN,
3664 CONSTRAINT__UNKNOWN,
3665 CONSTRAINT__UNKNOWN,
3666 CONSTRAINT__UNKNOWN,
3667 CONSTRAINT__UNKNOWN,
3668 CONSTRAINT__UNKNOWN,
3669 CONSTRAINT__UNKNOWN,
3670 CONSTRAINT__UNKNOWN,
3671 CONSTRAINT__UNKNOWN,
3672 CONSTRAINT__UNKNOWN,
3673 CONSTRAINT__UNKNOWN,
3674 CONSTRAINT__UNKNOWN,
3675 CONSTRAINT__UNKNOWN,
3676 CONSTRAINT__UNKNOWN,
3677 CONSTRAINT__UNKNOWN,
3678 CONSTRAINT__UNKNOWN,
3679 CONSTRAINT__UNKNOWN,
3680 CONSTRAINT__UNKNOWN,
3681 CONSTRAINT__UNKNOWN,
3682 CONSTRAINT__UNKNOWN,
3683 CONSTRAINT__UNKNOWN,
3684 CONSTRAINT__UNKNOWN,
3685 CONSTRAINT__UNKNOWN,
3686 CONSTRAINT__UNKNOWN,
3687 CONSTRAINT__UNKNOWN,
3688 CONSTRAINT__UNKNOWN,
3689 CONSTRAINT__UNKNOWN,
3690 CONSTRAINT__UNKNOWN,
3691 CONSTRAINT__UNKNOWN,
3692 CONSTRAINT__UNKNOWN,
3693 CONSTRAINT__UNKNOWN
3694};
3695
3696enum reg_class
3697reg_class_for_constraint_1 (enum constraint_num c)
3698{
3699 switch (c)
3700 {
3701 case CONSTRAINT_r: return GENERAL_REGS;
3702 case CONSTRAINT_R: return LEGACY_REGS;
3703 case CONSTRAINT_q: return TARGET_64BIT((global_options.x_ix86_isa_flags & (1UL << 1)) != 0
)
? GENERAL_REGS : Q_REGS;
3704 case CONSTRAINT_Q: return Q_REGS;
3705 case CONSTRAINT_l: return INDEX_REGS;
3706 case CONSTRAINT_a: return AREG;
3707 case CONSTRAINT_b: return BREG;
3708 case CONSTRAINT_c: return CREG;
3709 case CONSTRAINT_d: return DREG;
3710 case CONSTRAINT_S: return SIREG;
3711 case CONSTRAINT_D: return DIREG;
3712 case CONSTRAINT_A: return AD_REGS;
3713 case CONSTRAINT_U: return CLOBBERED_REGS;
3714 case CONSTRAINT_f: return TARGET_80387((global_options.x_target_flags & (1U << 1)) != 0) || TARGET_FLOAT_RETURNS_IN_80387(((global_options.x_target_flags & (1U << 11)) != 0
) && ((global_options.x_target_flags & (1U <<
1)) != 0) && !((global_options.x_target_flags & (
1U << 12)) != 0))
? FLOAT_REGS : NO_REGS;
3715 case CONSTRAINT_t: return TARGET_80387((global_options.x_target_flags & (1U << 1)) != 0) || TARGET_FLOAT_RETURNS_IN_80387(((global_options.x_target_flags & (1U << 11)) != 0
) && ((global_options.x_target_flags & (1U <<
1)) != 0) && !((global_options.x_target_flags & (
1U << 12)) != 0))
? FP_TOP_REG : NO_REGS;
3716 case CONSTRAINT_u: return TARGET_80387((global_options.x_target_flags & (1U << 1)) != 0) || TARGET_FLOAT_RETURNS_IN_80387(((global_options.x_target_flags & (1U << 11)) != 0
) && ((global_options.x_target_flags & (1U <<
1)) != 0) && !((global_options.x_target_flags & (
1U << 12)) != 0))
? FP_SECOND_REG : NO_REGS;
3717 case CONSTRAINT_Yk: return TARGET_AVX512F((global_options.x_ix86_isa_flags & (1UL << 15)) !=
0)
? MASK_REGS : NO_REGS;
3718 case CONSTRAINT_k: return TARGET_AVX512F((global_options.x_ix86_isa_flags & (1UL << 15)) !=
0)
? ALL_MASK_REGS : NO_REGS;
3719 case CONSTRAINT_y: return TARGET_MMX((global_options.x_ix86_isa_flags & (1UL << 36)) !=
0)
? MMX_REGS : NO_REGS;
3720 case CONSTRAINT_x: return TARGET_SSE((global_options.x_ix86_isa_flags & (1UL << 50)) !=
0)
? SSE_REGS : NO_REGS;
3721 case CONSTRAINT_v: return TARGET_SSE((global_options.x_ix86_isa_flags & (1UL << 50)) !=
0)
? ALL_SSE_REGS : NO_REGS;
3722 case CONSTRAINT_Yz: return TARGET_SSE((global_options.x_ix86_isa_flags & (1UL << 50)) !=
0)
? SSE_FIRST_REG : NO_REGS;
3723 case CONSTRAINT_Yd: return TARGET_AVX512DQ((global_options.x_ix86_isa_flags & (1UL << 13)) !=
0)
? ALL_SSE_REGS : TARGET_SSE4_1((global_options.x_ix86_isa_flags & (1UL << 38)) !=
0)
? SSE_REGS : NO_REGS;
3724 case CONSTRAINT_Yp: return TARGET_PARTIAL_REG_STALLix86_tune_features[X86_TUNE_PARTIAL_REG_STALL] ? NO_REGS : GENERAL_REGS;
3725 case CONSTRAINT_Ya: return TARGET_ZERO_EXTEND_WITH_ANDix86_tune_features[X86_TUNE_ZERO_EXTEND_WITH_AND] && optimize_function_for_speed_p (cfun(cfun + 0))
3726 ? NO_REGS : GENERAL_REGS;
3727 case CONSTRAINT_Yb: return (!flag_pltglobal_options.x_flag_plt && HAVE_AS_IX86_TLS_GET_ADDR_GOT1) ? TLS_GOTBASE_REGS : BREG;
3728 case CONSTRAINT_Yf: return (ix86_fpmathglobal_options.x_ix86_fpmath & FPMATH_387) ? FLOAT_REGS : NO_REGS;
3729 case CONSTRAINT_Yr: return TARGET_SSE((global_options.x_ix86_isa_flags & (1UL << 50)) !=
0)
? (TARGET_AVOID_4BYTE_PREFIXESix86_tune_features[X86_TUNE_AVOID_4BYTE_PREFIXES] ? NO_REX_SSE_REGS : ALL_SSE_REGS) : NO_REGS;
3730 case CONSTRAINT_Yv: return TARGET_AVX512VL((global_options.x_ix86_isa_flags & (1UL << 20)) !=
0)
? ALL_SSE_REGS : TARGET_SSE((global_options.x_ix86_isa_flags & (1UL << 50)) !=
0)
? SSE_REGS : NO_REGS;
3731 case CONSTRAINT_Yw: return TARGET_AVX512BW((global_options.x_ix86_isa_flags & (1UL << 11)) !=
0)
&& TARGET_AVX512VL((global_options.x_ix86_isa_flags & (1UL << 20)) !=
0)
? ALL_SSE_REGS : TARGET_SSE((global_options.x_ix86_isa_flags & (1UL << 50)) !=
0)
? SSE_REGS : NO_REGS;
3732 case CONSTRAINT_YW: return TARGET_AVX512BW((global_options.x_ix86_isa_flags & (1UL << 11)) !=
0)
? ALL_SSE_REGS : TARGET_SSE((global_options.x_ix86_isa_flags & (1UL << 50)) !=
0)
? SSE_REGS : NO_REGS;
3733 default: break;
3734 }
3735 return NO_REGS;
3736}
3737
3738bool (*constraint_satisfied_p_array[]) (rtx) = {
3739 satisfies_constraint_I,
3740 satisfies_constraint_J,
3741 satisfies_constraint_K,
3742 satisfies_constraint_L,
3743 satisfies_constraint_M,
3744 satisfies_constraint_N,
3745 satisfies_constraint_O,
3746 satisfies_constraint_m,
3747 satisfies_constraint_o,
3748 satisfies_constraint_Bk,
3749 satisfies_constraint_Bm,
3750 satisfies_constraint_Bc,
3751 satisfies_constraint_Bn,
3752 satisfies_constraint_Br,
3753 satisfies_constraint_p,
3754 satisfies_constraint_Tv,
3755 satisfies_constraint_Ts,
3756 satisfies_constraint_Bz,
3757 satisfies_constraint_BH,
3758 satisfies_constraint_Wb,
3759 satisfies_constraint_Ww,
3760 satisfies_constraint_G,
3761 satisfies_constraint_e,
3762 satisfies_constraint_We,
3763 satisfies_constraint_Wz,
3764 satisfies_constraint_Wd,
3765 satisfies_constraint_Wf,
3766 satisfies_constraint_Z,
3767 satisfies_constraint_Bf,
3768 satisfies_constraint_V,
3769 satisfies_constraint__l,
3770 satisfies_constraint__g,
3771 satisfies_constraint_BF,
3772 satisfies_constraint_BM,
3773 satisfies_constraint_i,
3774 satisfies_constraint_s,
3775 satisfies_constraint_n,
3776 satisfies_constraint_E,
3777 satisfies_constraint_F,
3778 satisfies_constraint_X,
3779 satisfies_constraint_Bg,
3780 satisfies_constraint_Bs,
3781 satisfies_constraint_Bw,
3782 satisfies_constraint_BC,
3783 satisfies_constraint_C
3784};
3785
3786bool
3787insn_const_int_ok_for_constraint (HOST_WIDE_INTlong ival, enum constraint_num c)
3788{
3789 switch (c)
3790 {
3791 case CONSTRAINT_I:
3792 return
3793#line 267 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/constraints.md"
3794(IN_RANGE (ival, 0, 31)((unsigned long) (ival) - (unsigned long) (0) <= (unsigned
long) (31) - (unsigned long) (0))
);
3795
3796 case CONSTRAINT_J:
3797 return
3798#line 272 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/constraints.md"
3799(IN_RANGE (ival, 0, 63)((unsigned long) (ival) - (unsigned long) (0) <= (unsigned
long) (63) - (unsigned long) (0))
);
3800
3801 case CONSTRAINT_K:
3802 return
3803#line 277 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/constraints.md"
3804(IN_RANGE (ival, -128, 127)((unsigned long) (ival) - (unsigned long) (-128) <= (unsigned
long) (127) - (unsigned long) (-128))
);
3805
3806 case CONSTRAINT_L:
3807 return (
3808#line 283 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/constraints.md"
3809(ival == 0xff)) || ((
3810#line 284 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/constraints.md"
3811(ival == 0xffff)) || (
3812#line 285 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/constraints.md"
3813(ival == (HOST_WIDE_INTlong) 0xffffffff)));
3814
3815 case CONSTRAINT_M:
3816 return
3817#line 290 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/constraints.md"
3818(IN_RANGE (ival, 0, 3)((unsigned long) (ival) - (unsigned long) (0) <= (unsigned
long) (3) - (unsigned long) (0))
);
3819
3820 case CONSTRAINT_N:
3821 return
3822#line 296 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/constraints.md"
3823(IN_RANGE (ival, 0, 255)((unsigned long) (ival) - (unsigned long) (0) <= (unsigned
long) (255) - (unsigned long) (0))
);
3824
3825 case CONSTRAINT_O:
3826 return
3827#line 301 "/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/config/i386/constraints.md"
3828(IN_RANGE (ival, 0, 127)((unsigned long) (ival) - (unsigned long) (0) <= (unsigned
long) (127) - (unsigned long) (0))
);
3829
3830 default: break;
3831 }
3832 return false;
3833}
3834

/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/hwint.h

1/* HOST_WIDE_INT definitions for the GNU compiler.
2 Copyright (C) 1998-2023 Free Software Foundation, Inc.
3
4 This file is part of GCC.
5
6 Provide definitions for macros which depend on HOST_BITS_PER_INT
7 and HOST_BITS_PER_LONG. */
8
9#ifndef GCC_HWINT_H
10#define GCC_HWINT_H
11
12/* This describes the machine the compiler is hosted on. */
13#define HOST_BITS_PER_CHAR8 CHAR_BIT8
14#define HOST_BITS_PER_SHORT(8 * 2) (CHAR_BIT8 * SIZEOF_SHORT2)
15#define HOST_BITS_PER_INT(8 * 4) (CHAR_BIT8 * SIZEOF_INT4)
16#define HOST_BITS_PER_LONG(8 * 8) (CHAR_BIT8 * SIZEOF_LONG8)
17#define HOST_BITS_PER_PTR(8 * 8) (CHAR_BIT8 * SIZEOF_VOID_P8)
18
19/* The string that should be inserted into a printf style format to
20 indicate a "long" operand. */
21#ifndef HOST_LONG_FORMAT"l"
22#define HOST_LONG_FORMAT"l" "l"
23#endif
24
25/* The string that should be inserted into a printf style format to
26 indicate a "long long" operand. */
27#ifndef HOST_LONG_LONG_FORMAT"ll"
28#define HOST_LONG_LONG_FORMAT"ll" "ll"
29#endif
30
31/* If HAVE_LONG_LONG and SIZEOF_LONG_LONG aren't defined, but
32 GCC_VERSION >= 3000, assume this is the second or later stage of a
33 bootstrap, we do have long long, and it's 64 bits. (This is
34 required by C99; we do have some ports that violate that assumption
35 but they're all cross-compile-only.) Just in case, force a
36 constraint violation if that assumption is incorrect. */
37#if !defined HAVE_LONG_LONG1
38# if GCC_VERSION(4 * 1000 + 2) >= 3000
39# define HAVE_LONG_LONG1 1
40# define SIZEOF_LONG_LONG8 8
41extern char sizeof_long_long_must_be_8[sizeof (long long) == 8 ? 1 : -1];
42# endif
43#endif
44
45#ifdef HAVE_LONG_LONG1
46# define HOST_BITS_PER_LONGLONG(8 * 8) (CHAR_BIT8 * SIZEOF_LONG_LONG8)
47#endif
48
49/* Set HOST_WIDE_INT, this should be always 64 bits.
50 The underlying type is matched to that of int64_t and assumed
51 to be either long or long long. */
52
53#define HOST_BITS_PER_WIDE_INT64 64
54#if INT64_T_IS_LONG1
55# define HOST_WIDE_INTlong long
56# define HOST_WIDE_INT_C(X)XL X ## L
57#else
58# if HOST_BITS_PER_LONGLONG(8 * 8) == 64
59# define HOST_WIDE_INTlong long long
60# define HOST_WIDE_INT_C(X)XL X ## LL
61# else
62 #error "Unable to find a suitable type for HOST_WIDE_INT"
63# endif
64#endif
65
66#define HOST_WIDE_INT_UC(X)XUL HOST_WIDE_INT_C (X ## U)X ## UL
67#define HOST_WIDE_INT_00L HOST_WIDE_INT_C (0)0L
68#define HOST_WIDE_INT_0U0UL HOST_WIDE_INT_UC (0)0UL
69#define HOST_WIDE_INT_11L HOST_WIDE_INT_C (1)1L
70#define HOST_WIDE_INT_1U1UL HOST_WIDE_INT_UC (1)1UL
71#define HOST_WIDE_INT_M1-1L HOST_WIDE_INT_C (-1)-1L
72#define HOST_WIDE_INT_M1U-1UL HOST_WIDE_INT_UC (-1)-1UL
73
74/* This is a magic identifier which allows GCC to figure out the type
75 of HOST_WIDE_INT for %wd specifier checks. You must issue this
76 typedef before using the __asm_fprintf__ format attribute. */
77typedef HOST_WIDE_INTlong __gcc_host_wide_int__;
78
79/* Provide C99 <inttypes.h> style format definitions for 64bits. */
80#ifndef HAVE_INTTYPES_H1
81#if INT64_T_IS_LONG1
82# define GCC_PRI64 HOST_LONG_FORMAT"l"
83#else
84# define GCC_PRI64 HOST_LONG_LONG_FORMAT"ll"
85#endif
86#undef PRId64"l" "d"
87#define PRId64"l" "d" GCC_PRI64 "d"
88#undef PRIi64"l" "i"
89#define PRIi64"l" "i" GCC_PRI64 "i"
90#undef PRIo64"l" "o"
91#define PRIo64"l" "o" GCC_PRI64 "o"
92#undef PRIu64"l" "u"
93#define PRIu64"l" "u" GCC_PRI64 "u"
94#undef PRIx64"l" "x"
95#define PRIx64"l" "x" GCC_PRI64 "x"
96#undef PRIX64"l" "X"
97#define PRIX64"l" "X" GCC_PRI64 "X"
98#endif
99
100/* Various printf format strings for HOST_WIDE_INT. */
101
102#if INT64_T_IS_LONG1
103# define HOST_WIDE_INT_PRINT"l" HOST_LONG_FORMAT"l"
104# define HOST_WIDE_INT_PRINT_C"L" "L"
105#else
106# define HOST_WIDE_INT_PRINT"l" HOST_LONG_LONG_FORMAT"ll"
107# define HOST_WIDE_INT_PRINT_C"L" "LL"
108#endif
109
110#define HOST_WIDE_INT_PRINT_DEC"%" "l" "d" "%" PRId64"l" "d"
111#define HOST_WIDE_INT_PRINT_DEC_C"%" "l" "d" "L" "%" PRId64"l" "d" HOST_WIDE_INT_PRINT_C"L"
112#define HOST_WIDE_INT_PRINT_UNSIGNED"%" "l" "u" "%" PRIu64"l" "u"
113#define HOST_WIDE_INT_PRINT_HEX"%#" "l" "x" "%#" PRIx64"l" "x"
114#define HOST_WIDE_INT_PRINT_HEX_PURE"%" "l" "x" "%" PRIx64"l" "x"
115#define HOST_WIDE_INT_PRINT_DOUBLE_HEX"0x%" "l" "x" "%016" "l" "x" "0x%" PRIx64"l" "x" "%016" PRIx64"l" "x"
116#define HOST_WIDE_INT_PRINT_PADDED_HEX"%016" "l" "x" "%016" PRIx64"l" "x"
117
118/* Define HOST_WIDEST_FAST_INT to the widest integer type supported
119 efficiently in hardware. (That is, the widest integer type that fits
120 in a hardware register.) Normally this is "long" but on some hosts it
121 should be "long long" or "__int64". This is no convenient way to
122 autodetect this, so such systems must set a flag in config.host; see there
123 for details. */
124
125#ifdef USE_LONG_LONG_FOR_WIDEST_FAST_INT
126# ifdef HAVE_LONG_LONG1
127# define HOST_WIDEST_FAST_INTlong long long
128# define HOST_BITS_PER_WIDEST_FAST_INT(8 * 8) HOST_BITS_PER_LONGLONG(8 * 8)
129# else
130# error "Your host said it wanted to use long long but that does not exist"
131# endif
132#else
133# define HOST_WIDEST_FAST_INTlong long
134# define HOST_BITS_PER_WIDEST_FAST_INT(8 * 8) HOST_BITS_PER_LONG(8 * 8)
135#endif
136
137/* Inline functions operating on HOST_WIDE_INT. */
138
139/* Return X with all but the lowest bit masked off. */
140
141inline unsigned HOST_WIDE_INTlong
142least_bit_hwi (unsigned HOST_WIDE_INTlong x)
143{
144 return (x & -x);
145}
146
147/* True if X is zero or a power of two. */
148
149inline bool
150pow2_or_zerop (unsigned HOST_WIDE_INTlong x)
151{
152 return least_bit_hwi (x) == x;
153}
154
155/* True if X is a power of two. */
156
157inline bool
158pow2p_hwi (unsigned HOST_WIDE_INTlong x)
159{
160 return x && pow2_or_zerop (x);
161}
162
163#if GCC_VERSION(4 * 1000 + 2) < 3004
164
165extern int clz_hwi (unsigned HOST_WIDE_INTlong x);
166extern int ctz_hwi (unsigned HOST_WIDE_INTlong x);
167extern int ffs_hwi (unsigned HOST_WIDE_INTlong x);
168
169/* Return the number of set bits in X. */
170extern int popcount_hwi (unsigned HOST_WIDE_INTlong x);
171
172/* Return log2, or -1 if not exact. */
173extern int exact_log2 (unsigned HOST_WIDE_INTlong);
174
175/* Return floor of log2, with -1 for zero. */
176extern int floor_log2 (unsigned HOST_WIDE_INTlong);
177
178/* Return the smallest n such that 2**n >= X. */
179extern int ceil_log2 (unsigned HOST_WIDE_INTlong);
180
181#else /* GCC_VERSION >= 3004 */
182
183/* For convenience, define 0 -> word_size. */
184inline int
185clz_hwi (unsigned HOST_WIDE_INTlong x)
186{
187 if (x == 0)
188 return HOST_BITS_PER_WIDE_INT64;
189# if HOST_BITS_PER_WIDE_INT64 == HOST_BITS_PER_LONG(8 * 8)
190 return __builtin_clzl (x);
191# elif HOST_BITS_PER_WIDE_INT64 == HOST_BITS_PER_LONGLONG(8 * 8)
192 return __builtin_clzll (x);
193# else
194 return __builtin_clz (x);
195# endif
196}
197
198inline int
199ctz_hwi (unsigned HOST_WIDE_INTlong x)
200{
201 if (x == 0)
202 return HOST_BITS_PER_WIDE_INT64;
203# if HOST_BITS_PER_WIDE_INT64 == HOST_BITS_PER_LONG(8 * 8)
204 return __builtin_ctzl (x);
205# elif HOST_BITS_PER_WIDE_INT64 == HOST_BITS_PER_LONGLONG(8 * 8)
206 return __builtin_ctzll (x);
207# else
208 return __builtin_ctz (x);
209# endif
210}
211
212inline int
213ffs_hwi (unsigned HOST_WIDE_INTlong x)
214{
215# if HOST_BITS_PER_WIDE_INT64 == HOST_BITS_PER_LONG(8 * 8)
216 return __builtin_ffsl (x);
217# elif HOST_BITS_PER_WIDE_INT64 == HOST_BITS_PER_LONGLONG(8 * 8)
218 return __builtin_ffsll (x);
219# else
220 return __builtin_ffs (x);
221# endif
222}
223
224inline int
225popcount_hwi (unsigned HOST_WIDE_INTlong x)
226{
227# if HOST_BITS_PER_WIDE_INT64 == HOST_BITS_PER_LONG(8 * 8)
228 return __builtin_popcountl (x);
229# elif HOST_BITS_PER_WIDE_INT64 == HOST_BITS_PER_LONGLONG(8 * 8)
230 return __builtin_popcountll (x);
231# else
232 return __builtin_popcount (x);
233# endif
234}
235
236inline int
237floor_log2 (unsigned HOST_WIDE_INTlong x)
238{
239 return HOST_BITS_PER_WIDE_INT64 - 1 - clz_hwi (x);
240}
241
242inline int
243ceil_log2 (unsigned HOST_WIDE_INTlong x)
244{
245 return x == 0 ? 0 : floor_log2 (x - 1) + 1;
246}
247
248inline int
249exact_log2 (unsigned HOST_WIDE_INTlong x)
250{
251 return pow2p_hwi (x) ? ctz_hwi (x) : -1;
13
'?' condition is false
14
Returning the value -1
252}
253
254#endif /* GCC_VERSION >= 3004 */
255
256#define HOST_WIDE_INT_MIN(long) (1UL << (64 - 1)) (HOST_WIDE_INTlong) \
257 (HOST_WIDE_INT_1U1UL << (HOST_BITS_PER_WIDE_INT64 - 1))
258#define HOST_WIDE_INT_MAX(~((long) (1UL << (64 - 1)))) (~(HOST_WIDE_INT_MIN(long) (1UL << (64 - 1))))
259
260extern HOST_WIDE_INTlong abs_hwi (HOST_WIDE_INTlong);
261extern unsigned HOST_WIDE_INTlong absu_hwi (HOST_WIDE_INTlong);
262extern HOST_WIDE_INTlong gcd (HOST_WIDE_INTlong, HOST_WIDE_INTlong);
263extern HOST_WIDE_INTlong pos_mul_hwi (HOST_WIDE_INTlong, HOST_WIDE_INTlong);
264extern HOST_WIDE_INTlong mul_hwi (HOST_WIDE_INTlong, HOST_WIDE_INTlong);
265extern HOST_WIDE_INTlong least_common_multiple (HOST_WIDE_INTlong, HOST_WIDE_INTlong);
266
267/* Like ctz_hwi, except 0 when x == 0. */
268
269inline int
270ctz_or_zero (unsigned HOST_WIDE_INTlong x)
271{
272 return ffs_hwi (x) - 1;
273}
274
275/* Sign extend SRC starting from PREC. */
276
277inline HOST_WIDE_INTlong
278sext_hwi (HOST_WIDE_INTlong src, unsigned int prec)
279{
280 if (prec == HOST_BITS_PER_WIDE_INT64)
281 return src;
282 else
283#if defined (__GNUC__4)
284 {
285 /* Take the faster path if the implementation-defined bits it's relying
286 on are implemented the way we expect them to be. Namely, conversion
287 from unsigned to signed preserves bit pattern, and right shift of
288 a signed value propagates the sign bit.
289 We have to convert from signed to unsigned and back, because when left
290 shifting signed values, any overflow is undefined behavior. */
291 gcc_checking_assert (prec < HOST_BITS_PER_WIDE_INT)((void)(!(prec < 64) ? fancy_abort ("/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/hwint.h"
, 291, __FUNCTION__), 0 : 0))
;
292 int shift = HOST_BITS_PER_WIDE_INT64 - prec;
293 return ((HOST_WIDE_INTlong) ((unsigned HOST_WIDE_INTlong) src << shift)) >> shift;
294 }
295#else
296 {
297 /* Fall back to the slower, well defined path otherwise. */
298 gcc_checking_assert (prec < HOST_BITS_PER_WIDE_INT)((void)(!(prec < 64) ? fancy_abort ("/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/hwint.h"
, 298, __FUNCTION__), 0 : 0))
;
299 HOST_WIDE_INTlong sign_mask = HOST_WIDE_INT_11L << (prec - 1);
300 HOST_WIDE_INTlong value_mask = (HOST_WIDE_INT_1U1UL << prec) - HOST_WIDE_INT_1U1UL;
301 return (((src & value_mask) ^ sign_mask) - sign_mask);
302 }
303#endif
304}
305
306/* Zero extend SRC starting from PREC. */
307inline unsigned HOST_WIDE_INTlong
308zext_hwi (unsigned HOST_WIDE_INTlong src, unsigned int prec)
309{
310 if (prec == HOST_BITS_PER_WIDE_INT64)
311 return src;
312 else
313 {
314 gcc_checking_assert (prec < HOST_BITS_PER_WIDE_INT)((void)(!(prec < 64) ? fancy_abort ("/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/hwint.h"
, 314, __FUNCTION__), 0 : 0))
;
315 return src & ((HOST_WIDE_INT_1U1UL << prec) - 1);
316 }
317}
318
319/* Compute the absolute value of X. */
320
321inline HOST_WIDE_INTlong
322abs_hwi (HOST_WIDE_INTlong x)
323{
324 gcc_checking_assert (x != HOST_WIDE_INT_MIN)((void)(!(x != (long) (1UL << (64 - 1))) ? fancy_abort (
"/buildworker/marxinbox-gcc-clang-static-analyzer/build/gcc/hwint.h"
, 324, __FUNCTION__), 0 : 0))
;
325 return x >= 0 ? x : -x;
326}
327
328/* Compute the absolute value of X as an unsigned type. */
329
330inline unsigned HOST_WIDE_INTlong
331absu_hwi (HOST_WIDE_INTlong x)
332{
333 return x >= 0 ? (unsigned HOST_WIDE_INTlong)x : -(unsigned HOST_WIDE_INTlong)x;
334}
335
336/* Compute the sum of signed A and B and indicate in *OVERFLOW whether
337 that operation overflowed. */
338
339inline HOST_WIDE_INTlong
340add_hwi (HOST_WIDE_INTlong a, HOST_WIDE_INTlong b, bool *overflow)
341{
342#if GCC_VERSION(4 * 1000 + 2) < 11000
343 unsigned HOST_WIDE_INTlong result = a + (unsigned HOST_WIDE_INTlong)b;
344 if ((((result ^ a) & (result ^ b))
345 >> (HOST_BITS_PER_WIDE_INT64 - 1)) & 1)
346 *overflow = true;
347 else
348 *overflow = false;
349 return result;
350#else
351 HOST_WIDE_INTlong result;
352 *overflow = __builtin_add_overflow (a, b, &result);
353 return result;
354#endif
355}
356
357/* Compute the product of signed A and B and indicate in *OVERFLOW whether
358 that operation overflowed. */
359
360inline HOST_WIDE_INTlong
361mul_hwi (HOST_WIDE_INTlong a, HOST_WIDE_INTlong b, bool *overflow)
362{
363#if GCC_VERSION(4 * 1000 + 2) < 11000
364 unsigned HOST_WIDE_INTlong result = a * (unsigned HOST_WIDE_INTlong)b;
365 if ((a == -1 && b == HOST_WIDE_INT_MIN(long) (1UL << (64 - 1)))
366 || (a != 0 && (HOST_WIDE_INTlong)result / a != b))
367 *overflow = true;
368 else
369 *overflow = false;
370 return result;
371#else
372 HOST_WIDE_INTlong result;
373 *overflow = __builtin_mul_overflow (a, b, &result);
374 return result;
375#endif
376}
377
378#endif /* ! GCC_HWINT_H */