//===-- llvm/FunctionProperties.def - File that describes Function Properties // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// // // This file contains descriptions of the various LLVM function properties. This // is used as a central place for enumerating the different function properties // and should eventually be the place to put comments about the function // properties. // //===----------------------------------------------------------------------===// // NOTE: NO INCLUDE GUARD DESIRED! // Provide definitions of macros so that users of this file do not have to // define everything to use it. // // Basic/Standard Properties #ifndef FUNCTION_PROPERTY #define FUNCTION_PROPERTY(Name, Description) #endif // Detailed Properties (only processed if DETAILED_FUNCTION_PROPERTY is defined) #ifndef DETAILED_FUNCTION_PROPERTY #define DETAILED_FUNCTION_PROPERTY(Name, Description) #endif FUNCTION_PROPERTY(BasicBlockCount, "Number of basic blocks") FUNCTION_PROPERTY(BlocksReachedFromConditionalInstruction, "Number of blocks reached from a conditional instruction, or " "that are 'cases' of a SwitchInstr") FUNCTION_PROPERTY(Uses, "Number of uses of this function, plus 1 if the " "function is callable outside the module") FUNCTION_PROPERTY(DirectCallsToDefinedFunctions, "Number of direct calls made from this function to other " "functions defined in this module") FUNCTION_PROPERTY(LoadInstCount, "Load Instruction Count") FUNCTION_PROPERTY(StoreInstCount, "Store Instruction Count") FUNCTION_PROPERTY(MaxLoopDepth, "Maximum Loop Depth in the Function") FUNCTION_PROPERTY(TopLevelLoopCount, "Number of Top Level Loops in the Function") FUNCTION_PROPERTY(TotalInstructionCount, "Number of instructions (of all types)") DETAILED_FUNCTION_PROPERTY(BasicBlocksWithSingleSuccessor, "Basic blocks with one successors") DETAILED_FUNCTION_PROPERTY(BasicBlocksWithTwoSuccessors, "Basic blocks with two successors") DETAILED_FUNCTION_PROPERTY(BasicBlocksWithMoreThanTwoSuccessors, "Basic blocks with more than two successors") DETAILED_FUNCTION_PROPERTY(BasicBlocksWithSinglePredecessor, "Basic blocks with one predecessors") DETAILED_FUNCTION_PROPERTY(BasicBlocksWithTwoPredecessors, "Basic blocks with two predecessors") DETAILED_FUNCTION_PROPERTY(BasicBlocksWithMoreThanTwoPredecessors, "Basic blocks with more than two predecessors") DETAILED_FUNCTION_PROPERTY(BigBasicBlocks, "Number of big basic blocks") DETAILED_FUNCTION_PROPERTY(MediumBasicBlocks, "Number of medium basic blocks") DETAILED_FUNCTION_PROPERTY(SmallBasicBlocks, "Number of small basic blocks") DETAILED_FUNCTION_PROPERTY(CastInstructionCount, "The number of cast instructions inside the function") DETAILED_FUNCTION_PROPERTY( FloatingPointInstructionCount, "The number of floating point instructions inside the function") DETAILED_FUNCTION_PROPERTY(IntegerInstructionCount, "The number of integer instructions inside the function") DETAILED_FUNCTION_PROPERTY(ConstantIntOperandCount, "Constant Int Operand Count") DETAILED_FUNCTION_PROPERTY(ConstantFPOperandCount, "Constant FP Operand Count") DETAILED_FUNCTION_PROPERTY(ConstantOperandCount, "Constant Operand Count") DETAILED_FUNCTION_PROPERTY(InstructionOperandCount, "Instruction Operand Count") DETAILED_FUNCTION_PROPERTY(BasicBlockOperandCount, "Basic Block Operand Count") DETAILED_FUNCTION_PROPERTY(GlobalValueOperandCount, "Global Value Operand Count") DETAILED_FUNCTION_PROPERTY(InlineAsmOperandCount, "Inline Asm Operand Count") DETAILED_FUNCTION_PROPERTY(ArgumentOperandCount, "Argument Operand Count") DETAILED_FUNCTION_PROPERTY(UnknownOperandCount, "Unknown Operand Count") DETAILED_FUNCTION_PROPERTY(CriticalEdgeCount, "Critical Edge Count") DETAILED_FUNCTION_PROPERTY(ControlFlowEdgeCount, "Number of basic block successors") DETAILED_FUNCTION_PROPERTY(UnconditionalBranchCount, "Number of unconditional branch instructions") DETAILED_FUNCTION_PROPERTY(ConditionalBranchCount, "Number of conditional branch instructions") DETAILED_FUNCTION_PROPERTY(BranchInstructionCount, "Number of branch instructions") DETAILED_FUNCTION_PROPERTY(BranchSuccessorCount, "Number of branch successors") DETAILED_FUNCTION_PROPERTY(SwitchInstructionCount, "Number of switch instructions") DETAILED_FUNCTION_PROPERTY(SwitchSuccessorCount, "Number of switch successors") DETAILED_FUNCTION_PROPERTY(IntrinsicCount, "Intrinsic Count") DETAILED_FUNCTION_PROPERTY(DirectCallCount, "Direct Call Count") DETAILED_FUNCTION_PROPERTY(IndirectCallCount, "Indirect Call Count") DETAILED_FUNCTION_PROPERTY(CallReturnsIntegerCount, "Call Returns Integer Count") DETAILED_FUNCTION_PROPERTY(CallReturnsFloatCount, "Call Returns Float Count") DETAILED_FUNCTION_PROPERTY(CallReturnsPointerCount, "Call Returns Pointer Count") DETAILED_FUNCTION_PROPERTY(CallReturnsVectorIntCount, "Call Returns Vector Int Count") DETAILED_FUNCTION_PROPERTY(CallReturnsVectorFloatCount, "Call Returns Vector Float Count") DETAILED_FUNCTION_PROPERTY(CallReturnsVectorPointerCount, "Call Returns Vector Pointer Count") DETAILED_FUNCTION_PROPERTY(CallWithManyArgumentsCount, "Call With Many Arguments Count") DETAILED_FUNCTION_PROPERTY(CallWithPointerArgumentCount, "Call With Pointer Argument Count") #undef FUNCTION_PROPERTY #undef DETAILED_FUNCTION_PROPERTY