1c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot//===-- Operations.h - ----------------------------------------*- C++ -*-===// 2c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot// 3c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot// The LLVM Compiler Infrastructure 4c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot// 5c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot// This file is distributed under the University of Illinois Open Source 6c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot// License. See LICENSE.TXT for details. 7c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot// 8c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot//===----------------------------------------------------------------------===// 9c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot// 10c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot// Implementations of common fuzzer operation descriptors for building an IR 11c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot// mutator. 12c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot// 13c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot//===----------------------------------------------------------------------===// 14c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot 15c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot#ifndef LLVM_FUZZMUTATE_OPERATIONS_H 16c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot#define LLVM_FUZZMUTATE_OPERATIONS_H 17c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot 18c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot#include "llvm/FuzzMutate/OpDescriptor.h" 19c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot#include "llvm/IR/InstrTypes.h" 20c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot#include "llvm/IR/Instruction.h" 21c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot 22c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robotnamespace llvm { 23c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot 24c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot/// Getters for the default sets of operations, per general category. 25c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot/// @{ 26c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robotvoid describeFuzzerIntOps(std::vector<fuzzerop::OpDescriptor> &Ops); 27c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robotvoid describeFuzzerFloatOps(std::vector<fuzzerop::OpDescriptor> &Ops); 28c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robotvoid describeFuzzerControlFlowOps(std::vector<fuzzerop::OpDescriptor> &Ops); 29c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robotvoid describeFuzzerPointerOps(std::vector<fuzzerop::OpDescriptor> &Ops); 30c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robotvoid describeFuzzerAggregateOps(std::vector<fuzzerop::OpDescriptor> &Ops); 31c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robotvoid describeFuzzerVectorOps(std::vector<fuzzerop::OpDescriptor> &Ops); 32c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot/// @} 33c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot 34c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robotnamespace fuzzerop { 35c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot 36c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot/// Descriptors for individual operations. 37c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot/// @{ 38c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team RobotOpDescriptor binOpDescriptor(unsigned Weight, Instruction::BinaryOps Op); 39c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team RobotOpDescriptor cmpOpDescriptor(unsigned Weight, Instruction::OtherOps CmpOp, 40c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot CmpInst::Predicate Pred); 41c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team RobotOpDescriptor splitBlockDescriptor(unsigned Weight); 42c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team RobotOpDescriptor gepDescriptor(unsigned Weight); 43c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team RobotOpDescriptor extractValueDescriptor(unsigned Weight); 44c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team RobotOpDescriptor insertValueDescriptor(unsigned Weight); 45c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team RobotOpDescriptor extractElementDescriptor(unsigned Weight); 46c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team RobotOpDescriptor insertElementDescriptor(unsigned Weight); 47c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team RobotOpDescriptor shuffleVectorDescriptor(unsigned Weight); 48c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot/// @} 49c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot 50c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot} // end fuzzerop namespace 51c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot 52c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot} // end llvm namespace 53c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot 54c9cc9e7d29b8970d8ddb734c88fb62d01e0b727android-build-team Robot#endif // LLVM_FUZZMUTATE_OPERATIONS_H 55