LCOV - code coverage report
Current view: top level - objdir/gcc - tm-preds.h (source / functions) Hit Total Coverage
Test: gcc.info Lines: 38 42 90.5 %
Date: 2020-03-28 11:57:23 Functions: 5 5 100.0 %
Legend: Lines: hit not hit | Branches: + taken - not taken # not executed Branches: 0 0 -

           Branch data     Line data    Source code
       1                 :            : /* Generated automatically by the program 'build/genpreds'
       2                 :            :    from the machine description file '../../gcc/config/i386/i386.md'.  */
       3                 :            : 
       4                 :            : #ifndef GCC_TM_PREDS_H
       5                 :            : #define GCC_TM_PREDS_H
       6                 :            : 
       7                 :            : #ifdef HAVE_MACHINE_MODES
       8                 :            : extern int general_operand (rtx, machine_mode);
       9                 :            : extern int address_operand (rtx, machine_mode);
      10                 :            : extern int register_operand (rtx, machine_mode);
      11                 :            : extern int pmode_register_operand (rtx, machine_mode);
      12                 :            : extern int scratch_operand (rtx, machine_mode);
      13                 :            : extern int immediate_operand (rtx, machine_mode);
      14                 :            : extern int const_int_operand (rtx, machine_mode);
      15                 :            : extern int const_scalar_int_operand (rtx, machine_mode);
      16                 :            : extern int const_double_operand (rtx, machine_mode);
      17                 :            : extern int nonimmediate_operand (rtx, machine_mode);
      18                 :            : extern int nonmemory_operand (rtx, machine_mode);
      19                 :            : extern int push_operand (rtx, machine_mode);
      20                 :            : extern int pop_operand (rtx, machine_mode);
      21                 :            : extern int memory_operand (rtx, machine_mode);
      22                 :            : extern int indirect_operand (rtx, machine_mode);
      23                 :            : extern int ordered_comparison_operator (rtx, machine_mode);
      24                 :            : extern int comparison_operator (rtx, machine_mode);
      25                 :            : extern int any_fp_register_operand (rtx, machine_mode);
      26                 :            : extern int fp_register_operand (rtx, machine_mode);
      27                 :            : extern int general_reg_operand (rtx, machine_mode);
      28                 :            : extern int nonimmediate_gr_operand (rtx, machine_mode);
      29                 :            : extern int general_gr_operand (rtx, machine_mode);
      30                 :            : extern int mmx_reg_operand (rtx, machine_mode);
      31                 :            : extern int register_mmxmem_operand (rtx, machine_mode);
      32                 :            : extern int sse_reg_operand (rtx, machine_mode);
      33                 :            : extern int any_QIreg_operand (rtx, machine_mode);
      34                 :            : extern int QIreg_operand (rtx, machine_mode);
      35                 :            : extern int ext_QIreg_operand (rtx, machine_mode);
      36                 :            : extern int ax_reg_operand (rtx, machine_mode);
      37                 :            : extern int flags_reg_operand (rtx, machine_mode);
      38                 :            : extern int ext_register_operand (rtx, machine_mode);
      39                 :            : extern int int_nonimmediate_operand (rtx, machine_mode);
      40                 :            : extern int register_ssemem_operand (rtx, machine_mode);
      41                 :            : extern int nonimm_ssenomem_operand (rtx, machine_mode);
      42                 :            : extern int x87nonimm_ssenomem_operand (rtx, machine_mode);
      43                 :            : extern int register_sse4nonimm_operand (rtx, machine_mode);
      44                 :            : extern int symbol_operand (rtx, machine_mode);
      45                 :            : extern int x86_64_immediate_operand (rtx, machine_mode);
      46                 :            : extern int x86_64_zext_immediate_operand (rtx, machine_mode);
      47                 :            : extern int x86_64_hilo_int_operand (rtx, machine_mode);
      48                 :            : extern int x86_64_dwzext_immediate_operand (rtx, machine_mode);
      49                 :            : extern int x86_64_immediate_size_operand (rtx, machine_mode);
      50                 :            : extern int x86_64_general_operand (rtx, machine_mode);
      51                 :            : extern int x86_64_hilo_general_operand (rtx, machine_mode);
      52                 :            : extern int x86_64_sext_operand (rtx, machine_mode);
      53                 :            : extern int sext_operand (rtx, machine_mode);
      54                 :            : extern int x86_64_zext_operand (rtx, machine_mode);
      55                 :            : extern int x86_64_szext_general_operand (rtx, machine_mode);
      56                 :            : extern int x86_64_nonmemory_operand (rtx, machine_mode);
      57                 :            : extern int x86_64_szext_nonmemory_operand (rtx, machine_mode);
      58                 :            : extern int pic_32bit_operand (rtx, machine_mode);
      59                 :            : extern int x86_64_movabs_operand (rtx, machine_mode);
      60                 :            : extern int symbolic_operand (rtx, machine_mode);
      61                 :            : extern int local_symbolic_operand (rtx, machine_mode);
      62                 :            : extern int gotoff_operand (rtx, machine_mode);
      63                 :            : extern int tls_symbolic_operand (rtx, machine_mode);
      64                 :            : extern int tls_modbase_operand (rtx, machine_mode);
      65                 :            : extern int tls_address_pattern (rtx, machine_mode);
      66                 :            : extern int constant_call_address_operand (rtx, machine_mode);
      67                 :            : extern int call_register_no_elim_operand (rtx, machine_mode);
      68                 :            : extern int register_no_elim_operand (rtx, machine_mode);
      69                 :            : extern int index_register_operand (rtx, machine_mode);
      70                 :            : extern int general_no_elim_operand (rtx, machine_mode);
      71                 :            : extern int nonmemory_no_elim_operand (rtx, machine_mode);
      72                 :            : extern int indirect_branch_operand (rtx, machine_mode);
      73                 :            : extern int sibcall_memory_operand (rtx, machine_mode);
      74                 :            : extern int GOT_memory_operand (rtx, machine_mode);
      75                 :            : extern int call_insn_operand (rtx, machine_mode);
      76                 :            : extern int sibcall_insn_operand (rtx, machine_mode);
      77                 :            : extern int GOT32_symbol_operand (rtx, machine_mode);
      78                 :            : extern int const0_operand (rtx, machine_mode);
      79                 :            : extern int const1_operand (rtx, machine_mode);
      80                 :            : extern int constm1_operand (rtx, machine_mode);
      81                 :            : extern int const8_operand (rtx, machine_mode);
      82                 :            : extern int const128_operand (rtx, machine_mode);
      83                 :            : extern int const_32bit_mask (rtx, machine_mode);
      84                 :            : extern int const248_operand (rtx, machine_mode);
      85                 :            : extern int const123_operand (rtx, machine_mode);
      86                 :            : extern int const2367_operand (rtx, machine_mode);
      87                 :            : extern int const1248_operand (rtx, machine_mode);
      88                 :            : extern int const359_operand (rtx, machine_mode);
      89                 :            : extern int const_4_or_8_to_11_operand (rtx, machine_mode);
      90                 :            : extern int const48_operand (rtx, machine_mode);
      91                 :            : extern int const_0_to_1_operand (rtx, machine_mode);
      92                 :            : extern int const_0_to_3_operand (rtx, machine_mode);
      93                 :            : extern int const_0_to_4_operand (rtx, machine_mode);
      94                 :            : extern int const_0_to_5_operand (rtx, machine_mode);
      95                 :            : extern int const_0_to_7_operand (rtx, machine_mode);
      96                 :            : extern int const_0_to_15_operand (rtx, machine_mode);
      97                 :            : extern int const_0_to_31_operand (rtx, machine_mode);
      98                 :            : extern int const_0_to_63_operand (rtx, machine_mode);
      99                 :            : extern int const_0_to_255_operand (rtx, machine_mode);
     100                 :            : extern int const_0_to_255_mul_8_operand (rtx, machine_mode);
     101                 :            : extern int const_1_to_31_operand (rtx, machine_mode);
     102                 :            : extern int const_1_to_63_operand (rtx, machine_mode);
     103                 :            : extern int const_2_to_3_operand (rtx, machine_mode);
     104                 :            : extern int const_4_to_5_operand (rtx, machine_mode);
     105                 :            : extern int const_4_to_7_operand (rtx, machine_mode);
     106                 :            : extern int const_6_to_7_operand (rtx, machine_mode);
     107                 :            : extern int const_8_to_9_operand (rtx, machine_mode);
     108                 :            : extern int const_8_to_11_operand (rtx, machine_mode);
     109                 :            : extern int const_8_to_15_operand (rtx, machine_mode);
     110                 :            : extern int const_10_to_11_operand (rtx, machine_mode);
     111                 :            : extern int const_12_to_13_operand (rtx, machine_mode);
     112                 :            : extern int const_12_to_15_operand (rtx, machine_mode);
     113                 :            : extern int const_14_to_15_operand (rtx, machine_mode);
     114                 :            : extern int const_16_to_19_operand (rtx, machine_mode);
     115                 :            : extern int const_16_to_31_operand (rtx, machine_mode);
     116                 :            : extern int const_20_to_23_operand (rtx, machine_mode);
     117                 :            : extern int const_24_to_27_operand (rtx, machine_mode);
     118                 :            : extern int const_28_to_31_operand (rtx, machine_mode);
     119                 :            : extern int incdec_operand (rtx, machine_mode);
     120                 :            : extern int reg_or_pm1_operand (rtx, machine_mode);
     121                 :            : extern int shiftdi_operand (rtx, machine_mode);
     122                 :            : extern int ashldi_input_operand (rtx, machine_mode);
     123                 :            : extern int zero_extended_scalar_load_operand (rtx, machine_mode);
     124                 :            : extern int vector_all_ones_operand (rtx, machine_mode);
     125                 :            : extern int vector_memory_operand (rtx, machine_mode);
     126                 :            : extern int vector_operand (rtx, machine_mode);
     127                 :            : extern int nonimmediate_or_const_vector_operand (rtx, machine_mode);
     128                 :            : extern int nonimmediate_or_sse_const_operand (rtx, machine_mode);
     129                 :            : extern int reg_or_0_operand (rtx, machine_mode);
     130                 :            : extern int nonimm_or_0_operand (rtx, machine_mode);
     131                 :            : extern int norex_memory_operand (rtx, machine_mode);
     132                 :            : extern int SImode_address_operand (rtx, machine_mode);
     133                 :            : extern int address_no_seg_operand (rtx, machine_mode);
     134                 :            : extern int vsib_address_operand (rtx, machine_mode);
     135                 :            : extern int vsib_mem_operator (rtx, machine_mode);
     136                 :            : extern int aligned_operand (rtx, machine_mode);
     137                 :            : extern int memory_displacement_operand (rtx, machine_mode);
     138                 :            : extern int memory_displacement_only_operand (rtx, machine_mode);
     139                 :            : extern int long_memory_operand (rtx, machine_mode);
     140                 :            : extern int fcmov_comparison_operator (rtx, machine_mode);
     141                 :            : extern int sse_comparison_operator (rtx, machine_mode);
     142                 :            : extern int ix86_comparison_int_operator (rtx, machine_mode);
     143                 :            : extern int ix86_comparison_uns_operator (rtx, machine_mode);
     144                 :            : extern int bt_comparison_operator (rtx, machine_mode);
     145                 :            : extern int ix86_comparison_operator (rtx, machine_mode);
     146                 :            : extern int ix86_carry_flag_operator (rtx, machine_mode);
     147                 :            : extern int ix86_trivial_fp_comparison_operator (rtx, machine_mode);
     148                 :            : extern int ix86_fp_comparison_operator (rtx, machine_mode);
     149                 :            : extern int cmp_fp_expander_operand (rtx, machine_mode);
     150                 :            : extern int binary_fp_operator (rtx, machine_mode);
     151                 :            : extern int mult_operator (rtx, machine_mode);
     152                 :            : extern int div_operator (rtx, machine_mode);
     153                 :            : extern int plusminuslogic_operator (rtx, machine_mode);
     154                 :            : extern int arith_or_logical_operator (rtx, machine_mode);
     155                 :            : extern int commutative_operator (rtx, machine_mode);
     156                 :            : extern int promotable_binary_operator (rtx, machine_mode);
     157                 :            : extern int compare_operator (rtx, machine_mode);
     158                 :            : extern int misaligned_operand (rtx, machine_mode);
     159                 :            : extern int vzeroall_operation (rtx, machine_mode);
     160                 :            : extern int vzeroall_pattern (rtx, machine_mode);
     161                 :            : extern int vzeroupper_pattern (rtx, machine_mode);
     162                 :            : extern int addsub_vm_operator (rtx, machine_mode);
     163                 :            : extern int addsub_vs_operator (rtx, machine_mode);
     164                 :            : extern int addsub_vs_parallel (rtx, machine_mode);
     165                 :            : extern int avx_vbroadcast_operand (rtx, machine_mode);
     166                 :            : extern int palignr_operand (rtx, machine_mode);
     167                 :            : extern int avx2_pblendw_operand (rtx, machine_mode);
     168                 :            : extern int general_vector_operand (rtx, machine_mode);
     169                 :            : extern int register_or_constm1_operand (rtx, machine_mode);
     170                 :            : extern int save_multiple (rtx, machine_mode);
     171                 :            : extern int restore_multiple (rtx, machine_mode);
     172                 :            : #endif /* HAVE_MACHINE_MODES */
     173                 :            : 
     174                 :            : #define CONSTRAINT_NUM_DEFINED_P 1
     175                 :            : enum constraint_num
     176                 :            : {
     177                 :            :   CONSTRAINT__UNKNOWN = 0,
     178                 :            :   CONSTRAINT_r,
     179                 :            :   CONSTRAINT_R,
     180                 :            :   CONSTRAINT_q,
     181                 :            :   CONSTRAINT_Q,
     182                 :            :   CONSTRAINT_l,
     183                 :            :   CONSTRAINT_a,
     184                 :            :   CONSTRAINT_b,
     185                 :            :   CONSTRAINT_c,
     186                 :            :   CONSTRAINT_d,
     187                 :            :   CONSTRAINT_S,
     188                 :            :   CONSTRAINT_D,
     189                 :            :   CONSTRAINT_A,
     190                 :            :   CONSTRAINT_U,
     191                 :            :   CONSTRAINT_f,
     192                 :            :   CONSTRAINT_t,
     193                 :            :   CONSTRAINT_u,
     194                 :            :   CONSTRAINT_Yk,
     195                 :            :   CONSTRAINT_k,
     196                 :            :   CONSTRAINT_y,
     197                 :            :   CONSTRAINT_x,
     198                 :            :   CONSTRAINT_v,
     199                 :            :   CONSTRAINT_Yz,
     200                 :            :   CONSTRAINT_Yd,
     201                 :            :   CONSTRAINT_Yp,
     202                 :            :   CONSTRAINT_Ya,
     203                 :            :   CONSTRAINT_Yb,
     204                 :            :   CONSTRAINT_Yf,
     205                 :            :   CONSTRAINT_Yr,
     206                 :            :   CONSTRAINT_Yv,
     207                 :            :   CONSTRAINT_Yw,
     208                 :            :   CONSTRAINT_I,
     209                 :            :   CONSTRAINT_J,
     210                 :            :   CONSTRAINT_K,
     211                 :            :   CONSTRAINT_L,
     212                 :            :   CONSTRAINT_M,
     213                 :            :   CONSTRAINT_N,
     214                 :            :   CONSTRAINT_O,
     215                 :            :   CONSTRAINT_m,
     216                 :            :   CONSTRAINT_o,
     217                 :            :   CONSTRAINT_Bm,
     218                 :            :   CONSTRAINT_Bc,
     219                 :            :   CONSTRAINT_Bn,
     220                 :            :   CONSTRAINT_p,
     221                 :            :   CONSTRAINT_Tv,
     222                 :            :   CONSTRAINT_Ts,
     223                 :            :   CONSTRAINT_Bz,
     224                 :            :   CONSTRAINT_G,
     225                 :            :   CONSTRAINT_e,
     226                 :            :   CONSTRAINT_We,
     227                 :            :   CONSTRAINT_Wz,
     228                 :            :   CONSTRAINT_Wd,
     229                 :            :   CONSTRAINT_Wf,
     230                 :            :   CONSTRAINT_Z,
     231                 :            :   CONSTRAINT_Bf,
     232                 :            :   CONSTRAINT_V,
     233                 :            :   CONSTRAINT__l,
     234                 :            :   CONSTRAINT__g,
     235                 :            :   CONSTRAINT_i,
     236                 :            :   CONSTRAINT_s,
     237                 :            :   CONSTRAINT_n,
     238                 :            :   CONSTRAINT_E,
     239                 :            :   CONSTRAINT_F,
     240                 :            :   CONSTRAINT_X,
     241                 :            :   CONSTRAINT_Bg,
     242                 :            :   CONSTRAINT_Bs,
     243                 :            :   CONSTRAINT_Bw,
     244                 :            :   CONSTRAINT_BC,
     245                 :            :   CONSTRAINT_C,
     246                 :            :   CONSTRAINT__LIMIT
     247                 :            : };
     248                 :            : 
     249                 :            : extern enum constraint_num lookup_constraint_1 (const char *);
     250                 :            : extern const unsigned char lookup_constraint_array[];
     251                 :            : 
     252                 :            : /* Return the constraint at the beginning of P, or CONSTRAINT__UNKNOWN if it
     253                 :            :    isn't recognized.  */
     254                 :            : 
     255                 :            : static inline enum constraint_num
     256                 : 9666182300 : lookup_constraint (const char *p)
     257                 :            : {
     258                 : 9666182300 :   unsigned int index = lookup_constraint_array[(unsigned char) *p];
     259                 : 9666182300 :   return (index == UCHAR_MAX
     260                 : 9666182300 :           ? lookup_constraint_1 (p)
     261                 :  562035000 :           : (enum constraint_num) index);
     262                 :            : }
     263                 :            : 
     264                 :            : extern bool (*constraint_satisfied_p_array[]) (rtx);
     265                 :            : 
     266                 :            : /* Return true if X satisfies constraint C.  */
     267                 :            : 
     268                 :            : static inline bool
     269                 : 3298991000 : constraint_satisfied_p (rtx x, enum constraint_num c)
     270                 :            : {
     271                 : 3298991000 :   int i = (int) c - (int) CONSTRAINT_I;
     272                 : 3298991000 :   return i >= 0 && constraint_satisfied_p_array[i] (x);
     273                 :            : }
     274                 :            : 
     275                 :            : static inline bool
     276                 : 8591854300 : insn_extra_register_constraint (enum constraint_num c)
     277                 :            : {
     278                 : 8591854300 :   return c >= CONSTRAINT_r && c <= CONSTRAINT_Yw;
     279                 :            : }
     280                 :            : 
     281                 :            : static inline bool
     282                 : 2343746800 : insn_extra_memory_constraint (enum constraint_num c)
     283                 :            : {
     284                 : 2343746800 :   return c >= CONSTRAINT_m && c <= CONSTRAINT_o;
     285                 :            : }
     286                 :            : 
     287                 :            : static inline bool
     288                 :  137789251 : insn_extra_special_memory_constraint (enum constraint_num c)
     289                 :            : {
     290                 :  137789251 :   return c >= CONSTRAINT_Bm && c <= CONSTRAINT_Bn;
     291                 :            : }
     292                 :            : 
     293                 :            : static inline bool
     294                 : 2588149320 : insn_extra_address_constraint (enum constraint_num c)
     295                 :            : {
     296                 : 2588149320 :   return c >= CONSTRAINT_p && c <= CONSTRAINT_Ts;
     297                 :            : }
     298                 :            : 
     299                 :            : static inline void
     300                 :     181457 : insn_extra_constraint_allows_reg_mem (enum constraint_num c,
     301                 :            :                                       bool *allows_reg, bool *allows_mem)
     302                 :            : {
     303                 :     181457 :   if (c >= CONSTRAINT_Bz && c <= CONSTRAINT_Z)
     304                 :            :     return;
     305                 :       2070 :   if (c >= CONSTRAINT_Bf && c <= CONSTRAINT_Bf)
     306                 :            :     {
     307                 :          0 :       *allows_reg = true;
     308                 :          0 :       return;
     309                 :            :     }
     310                 :       2070 :   if (c >= CONSTRAINT_V && c <= CONSTRAINT__g)
     311                 :            :     {
     312                 :          0 :       *allows_mem = true;
     313                 :          0 :       return;
     314                 :            :     }
     315                 :       2070 :   (void) c;
     316                 :       2070 :   *allows_reg = true;
     317                 :       2070 :   *allows_mem = true;
     318                 :            : }
     319                 :            : 
     320                 :            : static inline size_t
     321                 :14805908700 : insn_constraint_len (char fc, const char *str ATTRIBUTE_UNUSED)
     322                 :            : {
     323                 :14805908700 :   switch (fc)
     324                 :            :     {
     325                 :            :     case 'B': return 2;
     326                 :            :     case 'T': return 2;
     327                 :            :     case 'W': return 2;
     328                 :            :     case 'Y': return 2;
     329                 :14532161900 :     default: break;
     330                 :            :     }
     331                 :14532161900 :   return 1;
     332                 :            : }
     333                 :            : 
     334                 :            : #define CONSTRAINT_LEN(c_,s_) insn_constraint_len (c_,s_)
     335                 :            : 
     336                 :            : extern enum reg_class reg_class_for_constraint_1 (enum constraint_num);
     337                 :            : 
     338                 :            : static inline enum reg_class
     339                 : 8591854300 : reg_class_for_constraint (enum constraint_num c)
     340                 :            : {
     341                 : 8591854300 :   if (insn_extra_register_constraint (c))
     342                 : 3939425540 :     return reg_class_for_constraint_1 (c);
     343                 :            :   return NO_REGS;
     344                 :            : }
     345                 :            : 
     346                 :            : extern bool insn_const_int_ok_for_constraint (HOST_WIDE_INT, enum constraint_num);
     347                 :            : #define CONST_OK_FOR_CONSTRAINT_P(v_,c_,s_) \
     348                 :            :     insn_const_int_ok_for_constraint (v_, lookup_constraint (s_))
     349                 :            : 
     350                 :            : enum constraint_type
     351                 :            : {
     352                 :            :   CT_REGISTER,
     353                 :            :   CT_CONST_INT,
     354                 :            :   CT_MEMORY,
     355                 :            :   CT_SPECIAL_MEMORY,
     356                 :            :   CT_ADDRESS,
     357                 :            :   CT_FIXED_FORM
     358                 :            : };
     359                 :            : 
     360                 :            : static inline enum constraint_type
     361                 : 4283345500 : get_constraint_type (enum constraint_num c)
     362                 :            : {
     363                 : 4283345500 :   if (c >= CONSTRAINT_Bm)
     364                 :            :     {
     365                 :  376666650 :       if (c >= CONSTRAINT_Bz)
     366                 :            :         return CT_FIXED_FORM;
     367                 :    3320461 :       if (c >= CONSTRAINT_p)
     368                 :            :         return CT_ADDRESS;
     369                 :     666798 :       return CT_SPECIAL_MEMORY;
     370                 :            :     }
     371                 : 3906663000 :   if (c >= CONSTRAINT_m)
     372                 :            :     return CT_MEMORY;
     373                 : 3477508700 :   if (c >= CONSTRAINT_I)
     374                 :    6373002 :     return CT_CONST_INT;
     375                 :            :   return CT_REGISTER;
     376                 :            : }
     377                 :            : #endif /* tm-preds.h */

Generated by: LCOV version 1.0

LCOV profile is generated on x86_64 machine using following configure options: configure --disable-bootstrap --enable-coverage=opt --enable-languages=c,c++,fortran,go,jit,lto --enable-host-shared. GCC test suite is run with the built compiler.