LLVM 22.0.0git
Operations.h
Go to the documentation of this file.
1//===-- Operations.h - ----------------------------------------*- C++ -*-===//
2//
3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4// See https://llvm.org/LICENSE.txt for license information.
5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6//
7//===----------------------------------------------------------------------===//
8//
9// Implementations of common fuzzer operation descriptors for building an IR
10// mutator.
11//
12//===----------------------------------------------------------------------===//
13
14#ifndef LLVM_FUZZMUTATE_OPERATIONS_H
15#define LLVM_FUZZMUTATE_OPERATIONS_H
16
18#include "llvm/IR/InstrTypes.h"
19#include "llvm/IR/Instruction.h"
21
22namespace llvm {
23
24/// Getters for the default sets of operations, per general category.
25/// @{
26LLVM_ABI void describeFuzzerIntOps(std::vector<fuzzerop::OpDescriptor> &Ops);
27LLVM_ABI void describeFuzzerFloatOps(std::vector<fuzzerop::OpDescriptor> &Ops);
28LLVM_ABI void
29describeFuzzerControlFlowOps(std::vector<fuzzerop::OpDescriptor> &Ops);
30LLVM_ABI void
31describeFuzzerPointerOps(std::vector<fuzzerop::OpDescriptor> &Ops);
32LLVM_ABI void
33describeFuzzerAggregateOps(std::vector<fuzzerop::OpDescriptor> &Ops);
34LLVM_ABI void describeFuzzerVectorOps(std::vector<fuzzerop::OpDescriptor> &Ops);
35LLVM_ABI void
36describeFuzzerUnaryOperations(std::vector<fuzzerop::OpDescriptor> &Ops);
37LLVM_ABI void describeFuzzerOtherOps(std::vector<fuzzerop::OpDescriptor> &Ops);
38/// @}
39
40namespace fuzzerop {
41
42/// Descriptors for individual operations.
43/// @{
44LLVM_ABI OpDescriptor selectDescriptor(unsigned Weight);
45LLVM_ABI OpDescriptor fnegDescriptor(unsigned Weight);
46LLVM_ABI OpDescriptor binOpDescriptor(unsigned Weight,
48LLVM_ABI OpDescriptor cmpOpDescriptor(unsigned Weight,
51LLVM_ABI OpDescriptor splitBlockDescriptor(unsigned Weight);
52LLVM_ABI OpDescriptor gepDescriptor(unsigned Weight);
53LLVM_ABI OpDescriptor extractValueDescriptor(unsigned Weight);
54LLVM_ABI OpDescriptor insertValueDescriptor(unsigned Weight);
55LLVM_ABI OpDescriptor extractElementDescriptor(unsigned Weight);
56LLVM_ABI OpDescriptor insertElementDescriptor(unsigned Weight);
57LLVM_ABI OpDescriptor shuffleVectorDescriptor(unsigned Weight);
58
59/// @}
60
61} // namespace fuzzerop
62
63} // namespace llvm
64
65#endif // LLVM_FUZZMUTATE_OPERATIONS_H
#define LLVM_ABI
Definition: Compiler.h:213
Predicate
This enumeration lists the possible predicates for CmpInst subclasses.
Definition: InstrTypes.h:678
LLVM_ABI OpDescriptor extractValueDescriptor(unsigned Weight)
Definition: Operations.cpp:244
LLVM_ABI OpDescriptor splitBlockDescriptor(unsigned Weight)
Definition: Operations.cpp:166
LLVM_ABI OpDescriptor fnegDescriptor(unsigned Weight)
Definition: Operations.cpp:109
LLVM_ABI OpDescriptor cmpOpDescriptor(unsigned Weight, Instruction::OtherOps CmpOp, CmpInst::Predicate Pred)
Definition: Operations.cpp:148
LLVM_ABI OpDescriptor extractElementDescriptor(unsigned Weight)
Definition: Operations.cpp:316
LLVM_ABI OpDescriptor insertValueDescriptor(unsigned Weight)
Definition: Operations.cpp:304
LLVM_ABI OpDescriptor shuffleVectorDescriptor(unsigned Weight)
Definition: Operations.cpp:350
LLVM_ABI OpDescriptor selectDescriptor(unsigned Weight)
Descriptors for individual operations.
Definition: Operations.cpp:100
LLVM_ABI OpDescriptor insertElementDescriptor(unsigned Weight)
Definition: Operations.cpp:325
LLVM_ABI OpDescriptor binOpDescriptor(unsigned Weight, Instruction::BinaryOps Op)
Definition: Operations.cpp:116
LLVM_ABI OpDescriptor gepDescriptor(unsigned Weight)
Definition: Operations.cpp:198
This is an optimization pass for GlobalISel generic memory operations.
Definition: AddressRanges.h:18
LLVM_ABI void describeFuzzerIntOps(std::vector< fuzzerop::OpDescriptor > &Ops)
Getters for the default sets of operations, per general category.
Definition: Operations.cpp:18
LLVM_ABI void describeFuzzerOtherOps(std::vector< fuzzerop::OpDescriptor > &Ops)
Definition: Operations.cpp:80
LLVM_ABI void describeFuzzerAggregateOps(std::vector< fuzzerop::OpDescriptor > &Ops)
Definition: Operations.cpp:88
LLVM_ABI void describeFuzzerUnaryOperations(std::vector< fuzzerop::OpDescriptor > &Ops)
Definition: Operations.cpp:70
LLVM_ABI void describeFuzzerVectorOps(std::vector< fuzzerop::OpDescriptor > &Ops)
Definition: Operations.cpp:94
DWARFExpression::Operation Op
LLVM_ABI void describeFuzzerFloatOps(std::vector< fuzzerop::OpDescriptor > &Ops)
Definition: Operations.cpp:45
LLVM_ABI void describeFuzzerControlFlowOps(std::vector< fuzzerop::OpDescriptor > &Ops)
Definition: Operations.cpp:75
LLVM_ABI void describeFuzzerPointerOps(std::vector< fuzzerop::OpDescriptor > &Ops)
Definition: Operations.cpp:84