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

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.