m |
|
Line 1: |
Line 1: |
| {{CMenu:CTools|}} | | {{CMenu:CTools|}} |
| | | |
- | '''List of static program features available in MILEPOST GCC:''' | + | '''List of static program features available for MILEPOST GCC:''' |
| | | |
- | {| border="1" cellpadding="5" cellspacing="0" |
| + | * [[CTools:MilepostGCC:Documentation:MILEPOST_V2.1|MILEPOST GCC V2.1] |
- | |-
| + | * [[CTools:MilepostGCC:Documentation:MILEPOST_V1.0|MILEPOST GCC V1.0] |
- | | ft1
| + | |
- | | Number of basic blocks in the method
| + | |
- | |-
| + | |
- | | ft2
| + | |
- | | Number of basic blocks with a single successor
| + | |
- | |-
| + | |
- | | ft3
| + | |
- | | Number of basic blocks with two successors
| + | |
- | |-
| + | |
- | | ft4
| + | |
- | | Number of basic blocks with more then two successors
| + | |
- | |-
| + | |
- | | ft5
| + | |
- | | Number of basic blocks with a single predecessor
| + | |
- | |-
| + | |
- | | ft6
| + | |
- | | Number of basic blocks with two predecessors
| + | |
- | |-
| + | |
- | | ft7
| + | |
- | | Number of basic blocks with more then two predecessors
| + | |
- | |-
| + | |
- | | ft8
| + | |
- | | Number of basic blocks with a single predecessor and a single successor
| + | |
- | |-
| + | |
- | | ft9
| + | |
- | | Number of basic blocks with a single predecessor and two successors
| + | |
- | |-
| + | |
- | | ft10
| + | |
- | | Number of basic blocks with a two predecessors and one successor
| + | |
- | |-
| + | |
- | | ft11
| + | |
- | | Number of basic blocks with two successors and two predecessors
| + | |
- | |-
| + | |
- | | ft12
| + | |
- | | Number of basic blocks with more then two successors and more then two predecessors
| + | |
- | |-
| + | |
- | | ft13
| + | |
- | | Number of basic blocks with number of instructions less then 15
| + | |
- | |-
| + | |
- | | ft14
| + | |
- | | Number of basic blocks with number of instructions in the interval [15, 500]
| + | |
- | |-
| + | |
- | | ft15
| + | |
- | | Number of basic blocks with number of instructions greater then 500
| + | |
- | |-
| + | |
- | | ft16
| + | |
- | | Number of edges in the control flow graph
| + | |
- | |-
| + | |
- | | ft17
| + | |
- | | Number of critical edges in the control flow graph
| + | |
- | |-
| + | |
- | | ft18
| + | |
- | | Number of abnormal edges in the control flow graph
| + | |
- | |-
| + | |
- | | ft19
| + | |
- | | Number of direct calls in the method
| + | |
- | |-
| + | |
- | | ft20
| + | |
- | | Number of conditional branches in the method
| + | |
- | |-
| + | |
- | | ft21
| + | |
- | | Number of assignment instructions in the method
| + | |
- | |-
| + | |
- | | ft21
| + | |
- | | Number of unconditional branches in the method
| + | |
- | |-
| + | |
- | | ft22
| + | |
- | | Number of binary integer operations in the method
| + | |
- | |-
| + | |
- | | ft23
| + | |
- | | Number of binary floating point operations in the method
| + | |
- | |-
| + | |
- | | ft24
| + | |
- | | Number of instructions in the method
| + | |
- | |-
| + | |
- | | ft25
| + | |
- | | Average of number of instructions in basic blocks
| + | |
- | |-
| + | |
- | | ft26
| + | |
- | | Average of number of phi-nodes at the beginning of a basic block
| + | |
- | |-
| + | |
- | | ft27
| + | |
- | | Average of arguments for a phi-node
| + | |
- | |-
| + | |
- | | ft28
| + | |
- | | Number of basic blocks with no phi nodes
| + | |
- | |-
| + | |
- | | ft29
| + | |
- | | Number of basic blocks with phi nodes in the interval [0, 3]
| + | |
- | |-
| + | |
- | | ft30
| + | |
- | | Number of basic blocks with more then 3 phi nodes
| + | |
- | |-
| + | |
- | | ft31
| + | |
- | | Number of basic block where total number of arguments for all phi-nodes is in greater then 5
| + | |
- | |-
| + | |
- | | ft32
| + | |
- | | Number of basic block where total number of arguments for all phi-nodes is in the interval [1, 5]
| + | |
- | |-
| + | |
- | | ft33
| + | |
- | | Number of switch instructions in the method
| + | |
- | |-
| + | |
- | | ft34
| + | |
- | | Number of unary operations in the method
| + | |
- | |-
| + | |
- | | ft35
| + | |
- | | Number of instruction that do pointer arithmetic in the method
| + | |
- | |-
| + | |
- | | ft36
| + | |
- | | Number of indirect references via pointers ("*" in C)
| + | |
- | |-
| + | |
- | | ft37
| + | |
- | | Number of times the address of a variables is taken ("\&" in C)
| + | |
- | |-
| + | |
- | | ft38
| + | |
- | | Number of times the address of a function is taken ("\&" in C)
| + | |
- | |-
| + | |
- | | ft39
| + | |
- | | Number of indirect calls (i.e. done via pointers) in the method
| + | |
- | |-
| + | |
- | | ft40
| + | |
- | | Number of assignment instructions with the left operand an integer constant in the method
| + | |
- | |-
| + | |
- | | ft41
| + | |
- | | Number of binary operations with one of the operands an integer constant in the method
| + | |
- | |-
| + | |
- | | ft42
| + | |
- | | Number of calls with pointers as arguments
| + | |
- | |-
| + | |
- | | ft42
| + | |
- | | Number of calls with the number of arguments is greater then 4
| + | |
- | |-
| + | |
- | | ft44
| + | |
- | | Number of calls that return a pointer
| + | |
- | |-
| + | |
- | | ft45
| + | |
- | | Number of calls that return an integer
| + | |
- | |-
| + | |
- | | ft46
| + | |
- | | Number of occurrences of integer constant zero
| + | |
- | |-
| + | |
- | | ft47
| + | |
- | | Number of occurrences of 32-bit integer constants
| + | |
- | |-
| + | |
- | | ft48
| + | |
- | | Number of occurrences of integer constant one
| + | |
- | |-
| + | |
- | | ft49
| + | |
- | | Number of occurrences of 64-bit integer constants
| + | |
- | |-
| + | |
- | | ft50
| + | |
- | | Number of references of a local variables in the method
| + | |
- | |-
| + | |
- | | ft51
| + | |
- | | Number of references (def/use) of static/extern variables in the method
| + | |
- | |-
| + | |
- | | ft52
| + | |
- | | Number of local variables referred in the method
| + | |
- | |-
| + | |
- | | ft53
| + | |
- | | Number of static/extern variables referred in the method
| + | |
- | |-
| + | |
- | | ft54
| + | |
- | | Number of local variables that are pointers in the method
| + | |
- | |-
| + | |
- | | ft55
| + | |
- | | Number of static/extern variables that are pointers in the method
| + | |
- | |}
| + | |
- | | + | |
- | Mircea Namolaru (IBM) developed the first version of the feature extractor for MILEPOST GCC and Grigori Fursin (INRIA) integrated it within the [[CTools:MilepostGCC|MILEPOST GCC]] and cTuning framework together with the machine learning support to predict good optimizations.
| + | |
- | We are currently extending feature extractor to improve program characterization and mapping with beneficial optimizations.
| + | |
- | | + | |
- | * [[CTools:MilepostGCC:StaticFeatures:Extensions|Extensions (on-going)]] | + | |