/* APPLE LOCAL file 6013597 */
/* These values represent the "overhead" cost in instructions (x1000) of each
   expression type, i.e. the cost of the tree without the costs of its
   subexpressions. The first set of costs was generated by adding annotations
   indicating the beginning and end of each GIMPLE tree to the assembler
   output of the cpu2000 and cpu2006 benchmark suites.  The remaining
   expression types were not present in these benchmarks, so the costs
   that were previously used in tree-inline.c are used here.

   Each cost is 1000 times the true estimated cost in instructions.  This is
   done to avoid the use of floating point arithmetic.
   tree-inline.c:estimate_num_insns compensates for this by dividing the
   number of instructions returned by tree-inline.c:estimate_num_insns_1 by
   1000.
 */

/* Instruction counts generated by analyzing cpu2000 and cpu2006 benchmark
   builds. */
NUM_INSNS_CASE(COMPLEX_CST,125)
NUM_INSNS_CASE(STRING_CST,400)
NUM_INSNS_CASE(VAR_DECL,17)
NUM_INSNS_CASE(COMPONENT_REF,24)
NUM_INSNS_CASE(INDIRECT_REF,425)
NUM_INSNS_CASE(ARRAY_REF,182)
NUM_INSNS_CASE(PLUS_EXPR,898)
NUM_INSNS_CASE(MINUS_EXPR,1641)
NUM_INSNS_CASE(MULT_EXPR,885)
NUM_INSNS_CASE(TRUNC_DIV_EXPR,3814)
NUM_INSNS_CASE(TRUNC_MOD_EXPR,5253)
NUM_INSNS_CASE(RDIV_EXPR,1909)
NUM_INSNS_CASE(EXACT_DIV_EXPR,823)
NUM_INSNS_CASE(FIX_TRUNC_EXPR,1506)
NUM_INSNS_CASE(FLOAT_EXPR,1746)
NUM_INSNS_CASE(NEGATE_EXPR,1702)
NUM_INSNS_CASE(MIN_EXPR,3220)
NUM_INSNS_CASE(MAX_EXPR,2706)
NUM_INSNS_CASE(ABS_EXPR,4032)
NUM_INSNS_CASE(LSHIFT_EXPR,1711)
NUM_INSNS_CASE(RSHIFT_EXPR,2617)
NUM_INSNS_CASE(RROTATE_EXPR,1272)
NUM_INSNS_CASE(BIT_IOR_EXPR,3469)
NUM_INSNS_CASE(BIT_XOR_EXPR,3597)
NUM_INSNS_CASE(BIT_AND_EXPR,2428)
NUM_INSNS_CASE(BIT_NOT_EXPR,2488)
NUM_INSNS_CASE(TRUTH_AND_EXPR,90)
NUM_INSNS_CASE(TRUTH_OR_EXPR,505)
NUM_INSNS_CASE(TRUTH_NOT_EXPR,864)
NUM_INSNS_CASE(LT_EXPR,1280)
NUM_INSNS_CASE(LE_EXPR,1441)
NUM_INSNS_CASE(GT_EXPR,2382)
NUM_INSNS_CASE(GE_EXPR,1250)
NUM_INSNS_CASE(EQ_EXPR,1776)
NUM_INSNS_CASE(NE_EXPR,1596)
NUM_INSNS_CASE(CONVERT_EXPR,172)
NUM_INSNS_CASE(NOP_EXPR,269)
NUM_INSNS_CASE(SAVE_EXPR,769)
NUM_INSNS_CASE(ADDR_EXPR,400)
NUM_INSNS_CASE(COMPLEX_EXPR,3411)
NUM_INSNS_CASE(TARGET_MEM_REF,50)
NUM_INSNS_CASE(SWITCH_EXPR,3839)

/* Instruction counts left over from the older version of tree-inline.c. */
/* Containers have no cost.  */
NUM_INSNS_CASE(TREE_LIST,0)
NUM_INSNS_CASE(TREE_VEC,0)
NUM_INSNS_CASE(BLOCK,0)
NUM_INSNS_CASE(BIT_FIELD_REF,0)
NUM_INSNS_CASE(ALIGN_INDIRECT_REF,0)
NUM_INSNS_CASE(MISALIGNED_INDIRECT_REF,0)
NUM_INSNS_CASE(ARRAY_RANGE_REF,0)
NUM_INSNS_CASE(OBJ_TYPE_REF,0)
NUM_INSNS_CASE(EXC_PTR_EXPR,0)
NUM_INSNS_CASE(FILTER_EXPR,0)
NUM_INSNS_CASE(COMPOUND_EXPR,0)
NUM_INSNS_CASE(BIND_EXPR,0)
NUM_INSNS_CASE(WITH_CLEANUP_EXPR,0)
NUM_INSNS_CASE(VIEW_CONVERT_EXPR,0)
NUM_INSNS_CASE(RANGE_EXPR,0)
NUM_INSNS_CASE(CASE_LABEL_EXPR,0)
NUM_INSNS_CASE(SSA_NAME,0)
NUM_INSNS_CASE(CATCH_EXPR,0)
NUM_INSNS_CASE(EH_FILTER_EXPR,0)
NUM_INSNS_CASE(STATEMENT_LIST,0)
NUM_INSNS_CASE(ERROR_MARK,0)
NUM_INSNS_CASE(NON_LVALUE_EXPR,0)
NUM_INSNS_CASE(FDESC_EXPR,0)
NUM_INSNS_CASE(VA_ARG_EXPR,0)
NUM_INSNS_CASE(TRY_CATCH_EXPR,0)
NUM_INSNS_CASE(TRY_FINALLY_EXPR,0)
NUM_INSNS_CASE(LABEL_EXPR,0)
NUM_INSNS_CASE(GOTO_EXPR,0)
NUM_INSNS_CASE(RETURN_EXPR,0)
NUM_INSNS_CASE(EXIT_EXPR,0)
NUM_INSNS_CASE(LOOP_EXPR,0)
NUM_INSNS_CASE(PHI_NODE,0)
NUM_INSNS_CASE(WITH_SIZE_EXPR,0)
NUM_INSNS_CASE(OMP_CLAUSE,0)
NUM_INSNS_CASE(OMP_RETURN,0)
NUM_INSNS_CASE(OMP_CONTINUE,0)

/* Assign a cost of 0 to certain rare tree codes of type tcc_reference. */
NUM_INSNS_CASE(REALPART_EXPR,0)
NUM_INSNS_CASE(IMAGPART_EXPR,0)

/* Assign cost of 1 to usual operations. */
NUM_INSNS_CASE(COND_EXPR,1000)
NUM_INSNS_CASE(VEC_COND_EXPR,1000)
NUM_INSNS_CASE(FIX_CEIL_EXPR,1000)
NUM_INSNS_CASE(FIX_FLOOR_EXPR,1000)
NUM_INSNS_CASE(FIX_ROUND_EXPR,1000)
NUM_INSNS_CASE(LROTATE_EXPR,1000)
NUM_INSNS_CASE(VEC_LSHIFT_EXPR,1000)
NUM_INSNS_CASE(VEC_RSHIFT_EXPR,1000)
NUM_INSNS_CASE(TRUTH_ANDIF_EXPR,1000)
NUM_INSNS_CASE(TRUTH_ORIF_EXPR,1000)
NUM_INSNS_CASE(TRUTH_XOR_EXPR,1000)
NUM_INSNS_CASE(ORDERED_EXPR,1000)
NUM_INSNS_CASE(UNORDERED_EXPR,1000)
NUM_INSNS_CASE(UNLT_EXPR,1000)
NUM_INSNS_CASE(UNLE_EXPR,1000)
NUM_INSNS_CASE(UNGT_EXPR,1000)
NUM_INSNS_CASE(UNGE_EXPR,1000)
NUM_INSNS_CASE(UNEQ_EXPR,1000)
NUM_INSNS_CASE(LTGT_EXPR,1000)
NUM_INSNS_CASE(CONJ_EXPR,1000)
NUM_INSNS_CASE(PREDECREMENT_EXPR,1000)
NUM_INSNS_CASE(PREINCREMENT_EXPR,1000)
NUM_INSNS_CASE(POSTDECREMENT_EXPR,1000)
NUM_INSNS_CASE(POSTINCREMENT_EXPR,1000)
NUM_INSNS_CASE(ASM_EXPR,1000)
NUM_INSNS_CASE(REALIGN_LOAD_EXPR,1000)
NUM_INSNS_CASE(REDUC_MAX_EXPR,1000)
NUM_INSNS_CASE(REDUC_MIN_EXPR,1000)
NUM_INSNS_CASE(REDUC_PLUS_EXPR,1000)
NUM_INSNS_CASE(WIDEN_SUM_EXPR,1000)
NUM_INSNS_CASE(DOT_PROD_EXPR,1000)
NUM_INSNS_CASE(WIDEN_MULT_EXPR,1000)
NUM_INSNS_CASE(RESX_EXPR,1000)

/* Few special cases of expensive operations.  This is useful to avoid
   inlining on functions having too many of these. */
NUM_INSNS_CASE(CEIL_DIV_EXPR,10000)
NUM_INSNS_CASE(FLOOR_DIV_EXPR,10000)
NUM_INSNS_CASE(ROUND_DIV_EXPR,10000)
NUM_INSNS_CASE(CEIL_MOD_EXPR,10000)
NUM_INSNS_CASE(FLOOR_MOD_EXPR,10000)
NUM_INSNS_CASE(ROUND_MOD_EXPR,10000)

/* OpenMP directives are generally very expensive. */
NUM_INSNS_CASE(OMP_PARALLEL,40000)
NUM_INSNS_CASE(OMP_FOR,40000)
NUM_INSNS_CASE(OMP_SECTIONS,40000)
NUM_INSNS_CASE(OMP_SINGLE,40000)
NUM_INSNS_CASE(OMP_SECTION,40000)
NUM_INSNS_CASE(OMP_MASTER,40000)
NUM_INSNS_CASE(OMP_ORDERED,40000)
NUM_INSNS_CASE(OMP_CRITICAL,40000)
NUM_INSNS_CASE(OMP_ATOMIC,40000)
