[llvm-commits] [llvm-gcc-4.2] r55667 - /llvm-gcc-4.2/trunk/gcc/treecode-num-insns.def

Bill Wendling isanbard at gmail.com
Tue Sep 2 14:58:19 PDT 2008


Author: void
Date: Tue Sep  2 16:58:18 2008
New Revision: 55667

URL: http://llvm.org/viewvc/llvm-project?rev=55667&view=rev
Log:
List of overhead costs in instructions.

Added:
    llvm-gcc-4.2/trunk/gcc/treecode-num-insns.def

Added: llvm-gcc-4.2/trunk/gcc/treecode-num-insns.def
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/treecode-num-insns.def?rev=55667&view=auto

==============================================================================
--- llvm-gcc-4.2/trunk/gcc/treecode-num-insns.def (added)
+++ llvm-gcc-4.2/trunk/gcc/treecode-num-insns.def Tue Sep  2 16:58:18 2008
@@ -0,0 +1,158 @@
+/* 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)





More information about the llvm-commits mailing list