LCOV - code coverage report
Current view: top level - /mnt/build/buildbot/bld/build-lcov/gcc - insn-preds.cc (source / functions) Coverage Total Hit
Test: gcc.info Lines: 0.0 % 1 0
Test Date: 2026-09-12 16:25:28 Functions: 0.0 % 1 0
Legend: Lines:     hit not hit

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

Generated by: LCOV version 2.4-beta

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,rust,m2 --enable-host-shared. GCC test suite is run with the built compiler.