diff --git a/llvm/include/llvm/Analysis/FunctionPropertiesAnalysis.h b/llvm/include/llvm/Analysis/FunctionPropertiesAnalysis.h index 06dbfc35a5294..f0b570dd792df 100644 --- a/llvm/include/llvm/Analysis/FunctionPropertiesAnalysis.h +++ b/llvm/include/llvm/Analysis/FunctionPropertiesAnalysis.h @@ -34,13 +34,13 @@ class FunctionPropertiesInfo { void reIncludeBB(const BasicBlock &BB); ir2vec::Embedding FunctionEmbedding = ir2vec::Embedding(0.0); - std::optional IR2VecVocab; + const ir2vec::Vocabulary *IR2VecVocab = nullptr; public: LLVM_ABI static FunctionPropertiesInfo getFunctionPropertiesInfo(const Function &F, const DominatorTree &DT, const LoopInfo &LI, - const IR2VecVocabResult *VocabResult); + const ir2vec::Vocabulary *Vocabulary); LLVM_ABI static FunctionPropertiesInfo getFunctionPropertiesInfo(Function &F, FunctionAnalysisManager &FAM); @@ -145,9 +145,7 @@ class FunctionPropertiesInfo { return FunctionEmbedding; } - const std::optional &getIR2VecVocab() const { - return IR2VecVocab; - } + const ir2vec::Vocabulary *getIR2VecVocab() const { return IR2VecVocab; } // Helper intended to be useful for unittests void setFunctionEmbeddingForTest(const ir2vec::Embedding &Embedding) { diff --git a/llvm/include/llvm/Analysis/IR2Vec.h b/llvm/include/llvm/Analysis/IR2Vec.h index f6c40d36f8026..eb9817a39dfd4 100644 --- a/llvm/include/llvm/Analysis/IR2Vec.h +++ b/llvm/include/llvm/Analysis/IR2Vec.h @@ -31,6 +31,7 @@ #include "llvm/ADT/DenseMap.h" #include "llvm/IR/PassManager.h" +#include "llvm/IR/Type.h" #include "llvm/Support/CommandLine.h" #include "llvm/Support/ErrorOr.h" #include "llvm/Support/JSON.h" @@ -42,10 +43,10 @@ class Module; class BasicBlock; class Instruction; class Function; -class Type; class Value; class raw_ostream; class LLVMContext; +class IR2VecVocabAnalysis; /// IR2Vec computes two kinds of embeddings: Symbolic and Flow-aware. /// Symbolic embeddings capture the "syntactic" and "statistical correlation" @@ -124,9 +125,73 @@ struct Embedding { using InstEmbeddingsMap = DenseMap; using BBEmbeddingsMap = DenseMap; -// FIXME: Current the keys are strings. This can be changed to -// use integers for cheaper lookups. -using Vocab = std::map; + +/// Class for storing and accessing the IR2Vec vocabulary. +/// Encapsulates all vocabulary-related constants, logic, and access methods. +class Vocabulary { + friend class llvm::IR2VecVocabAnalysis; + using VocabVector = std::vector; + VocabVector Vocab; + bool Valid = false; + +/// Operand kinds supported by IR2Vec Vocabulary +#define OPERAND_KINDS \ + OPERAND_KIND(FunctionID, "Function") \ + OPERAND_KIND(PointerID, "Pointer") \ + OPERAND_KIND(ConstantID, "Constant") \ + OPERAND_KIND(VariableID, "Variable") + + enum class OperandKind : unsigned { +#define OPERAND_KIND(Name, Str) Name, + OPERAND_KINDS +#undef OPERAND_KIND + MaxOperandKind + }; + +#undef OPERAND_KINDS + + /// Vocabulary layout constants +#define LAST_OTHER_INST(NUM) static constexpr unsigned MaxOpcodes = NUM; +#include "llvm/IR/Instruction.def" +#undef LAST_OTHER_INST + + static constexpr unsigned MaxTypes = Type::TypeID::TargetExtTyID + 1; + static constexpr unsigned MaxOperandKinds = + static_cast(OperandKind::MaxOperandKind); + + /// Helper function to get vocabulary key for a given OperandKind + static StringRef getVocabKeyForOperandKind(OperandKind Kind); + + /// Helper function to classify an operand into OperandKind + static OperandKind getOperandKind(const Value *Op); + + /// Helper function to get vocabulary key for a given TypeID + static StringRef getVocabKeyForTypeID(Type::TypeID TypeID); + +public: + Vocabulary() = default; + Vocabulary(VocabVector &&Vocab); + + bool isValid() const; + unsigned getDimension() const; + unsigned size() const; + + const ir2vec::Embedding &at(unsigned Position) const; + const ir2vec::Embedding &operator[](unsigned Opcode) const; + const ir2vec::Embedding &operator[](Type::TypeID TypeId) const; + const ir2vec::Embedding &operator[](const Value *Arg) const; + + /// Returns the string key for a given index position in the vocabulary. + /// This is useful for debugging or printing the vocabulary. Do not use this + /// for embedding generation as string based lookups are inefficient. + static StringRef getStringKey(unsigned Pos); + + /// Create a dummy vocabulary for testing purposes. + static VocabVector createDummyVocabForTest(unsigned Dim = 1); + + bool invalidate(Module &M, const PreservedAnalyses &PA, + ModuleAnalysisManager::Invalidator &Inv) const; +}; /// Embedder provides the interface to generate embeddings (vector /// representations) for instructions, basic blocks, and functions. The @@ -137,7 +202,7 @@ using Vocab = std::map; class Embedder { protected: const Function &F; - const Vocab &Vocabulary; + const Vocabulary &Vocab; /// Dimension of the vector representation; captured from the input vocabulary const unsigned Dimension; @@ -152,7 +217,7 @@ class Embedder { mutable BBEmbeddingsMap BBVecMap; mutable InstEmbeddingsMap InstVecMap; - Embedder(const Function &F, const Vocab &Vocabulary); + Embedder(const Function &F, const Vocabulary &Vocab); /// Helper function to compute embeddings. It generates embeddings for all /// the instructions and basic blocks in the function F. Logic of computing @@ -163,16 +228,12 @@ class Embedder { /// Specific to the kind of embeddings being computed. virtual void computeEmbeddings(const BasicBlock &BB) const = 0; - /// Lookup vocabulary for a given Key. If the key is not found, it returns a - /// zero vector. - Embedding lookupVocab(const std::string &Key) const; - public: virtual ~Embedder() = default; /// Factory method to create an Embedder object. static std::unique_ptr create(IR2VecKind Mode, const Function &F, - const Vocab &Vocabulary); + const Vocabulary &Vocab); /// Returns a map containing instructions and the corresponding embeddings for /// the function F if it has been computed. If not, it computes the embeddings @@ -198,56 +259,40 @@ class Embedder { /// representations obtained from the Vocabulary. class SymbolicEmbedder : public Embedder { private: - /// Utility function to compute the embedding for a given type. - Embedding getTypeEmbedding(const Type *Ty) const; - - /// Utility function to compute the embedding for a given operand. - Embedding getOperandEmbedding(const Value *Op) const; - void computeEmbeddings() const override; void computeEmbeddings(const BasicBlock &BB) const override; public: - SymbolicEmbedder(const Function &F, const Vocab &Vocabulary) - : Embedder(F, Vocabulary) { + SymbolicEmbedder(const Function &F, const Vocabulary &Vocab) + : Embedder(F, Vocab) { FuncVector = Embedding(Dimension, 0); } }; } // namespace ir2vec -/// Class for storing the result of the IR2VecVocabAnalysis. -class IR2VecVocabResult { - ir2vec::Vocab Vocabulary; - bool Valid = false; - -public: - IR2VecVocabResult() = default; - IR2VecVocabResult(ir2vec::Vocab &&Vocabulary); - - bool isValid() const { return Valid; } - const ir2vec::Vocab &getVocabulary() const; - unsigned getDimension() const; - bool invalidate(Module &M, const PreservedAnalyses &PA, - ModuleAnalysisManager::Invalidator &Inv) const; -}; - /// This analysis provides the vocabulary for IR2Vec. The vocabulary provides a /// mapping between an entity of the IR (like opcode, type, argument, etc.) and /// its corresponding embedding. class IR2VecVocabAnalysis : public AnalysisInfoMixin { - ir2vec::Vocab Vocabulary; + using VocabVector = std::vector; + using VocabMap = std::map; + VocabMap OpcVocab, TypeVocab, ArgVocab; + VocabVector Vocab; + + unsigned Dim = 0; Error readVocabulary(); Error parseVocabSection(StringRef Key, const json::Value &ParsedVocabValue, - ir2vec::Vocab &TargetVocab, unsigned &Dim); + VocabMap &TargetVocab, unsigned &Dim); + void generateNumMappedVocab(); void emitError(Error Err, LLVMContext &Ctx); public: static AnalysisKey Key; IR2VecVocabAnalysis() = default; - explicit IR2VecVocabAnalysis(const ir2vec::Vocab &Vocab); - explicit IR2VecVocabAnalysis(ir2vec::Vocab &&Vocab); - using Result = IR2VecVocabResult; + explicit IR2VecVocabAnalysis(const VocabVector &Vocab); + explicit IR2VecVocabAnalysis(VocabVector &&Vocab); + using Result = ir2vec::Vocabulary; Result run(Module &M, ModuleAnalysisManager &MAM); }; diff --git a/llvm/lib/Analysis/FunctionPropertiesAnalysis.cpp b/llvm/lib/Analysis/FunctionPropertiesAnalysis.cpp index dd4eb7f0df053..c52a6de2bb71e 100644 --- a/llvm/lib/Analysis/FunctionPropertiesAnalysis.cpp +++ b/llvm/lib/Analysis/FunctionPropertiesAnalysis.cpp @@ -242,20 +242,20 @@ FunctionPropertiesInfo FunctionPropertiesInfo::getFunctionPropertiesInfo( // We use the cached result of the IR2VecVocabAnalysis run by // InlineAdvisorAnalysis. If the IR2VecVocabAnalysis is not run, we don't // use IR2Vec embeddings. - auto VocabResult = FAM.getResult(F) - .getCachedResult(*F.getParent()); + auto Vocabulary = FAM.getResult(F) + .getCachedResult(*F.getParent()); return getFunctionPropertiesInfo(F, FAM.getResult(F), - FAM.getResult(F), VocabResult); + FAM.getResult(F), Vocabulary); } FunctionPropertiesInfo FunctionPropertiesInfo::getFunctionPropertiesInfo( const Function &F, const DominatorTree &DT, const LoopInfo &LI, - const IR2VecVocabResult *VocabResult) { + const ir2vec::Vocabulary *Vocabulary) { FunctionPropertiesInfo FPI; - if (VocabResult && VocabResult->isValid()) { - FPI.IR2VecVocab = VocabResult->getVocabulary(); - FPI.FunctionEmbedding = ir2vec::Embedding(VocabResult->getDimension(), 0.0); + if (Vocabulary && Vocabulary->isValid()) { + FPI.IR2VecVocab = Vocabulary; + FPI.FunctionEmbedding = ir2vec::Embedding(Vocabulary->getDimension(), 0.0); } for (const auto &BB : F) if (DT.isReachableFromEntry(&BB)) @@ -588,9 +588,9 @@ bool FunctionPropertiesUpdater::isUpdateValid(Function &F, return false; DominatorTree DT(F); LoopInfo LI(DT); - auto VocabResult = FAM.getResult(F) - .getCachedResult(*F.getParent()); + auto Vocabulary = FAM.getResult(F) + .getCachedResult(*F.getParent()); auto Fresh = - FunctionPropertiesInfo::getFunctionPropertiesInfo(F, DT, LI, VocabResult); + FunctionPropertiesInfo::getFunctionPropertiesInfo(F, DT, LI, Vocabulary); return FPI == Fresh; } diff --git a/llvm/lib/Analysis/IR2Vec.cpp b/llvm/lib/Analysis/IR2Vec.cpp index d5d27db8bd2bf..2423179960007 100644 --- a/llvm/lib/Analysis/IR2Vec.cpp +++ b/llvm/lib/Analysis/IR2Vec.cpp @@ -14,6 +14,7 @@ #include "llvm/Analysis/IR2Vec.h" #include "llvm/ADT/DepthFirstIterator.h" +#include "llvm/ADT/Sequence.h" #include "llvm/ADT/Statistic.h" #include "llvm/IR/CFG.h" #include "llvm/IR/Module.h" @@ -56,6 +57,9 @@ cl::opt ArgWeight("ir2vec-arg-weight", cl::Optional, cl::init(0.2), AnalysisKey IR2VecVocabAnalysis::Key; +// ==----------------------------------------------------------------------===// +// Local helper functions +//===----------------------------------------------------------------------===// namespace llvm::json { inline bool fromJSON(const llvm::json::Value &E, Embedding &Out, llvm::json::Path P) { @@ -126,35 +130,21 @@ void Embedding::print(raw_ostream &OS) const { // Embedder and its subclasses //===----------------------------------------------------------------------===// -Embedder::Embedder(const Function &F, const Vocab &Vocabulary) - : F(F), Vocabulary(Vocabulary), - Dimension(Vocabulary.begin()->second.size()), OpcWeight(::OpcWeight), - TypeWeight(::TypeWeight), ArgWeight(::ArgWeight) {} +Embedder::Embedder(const Function &F, const Vocabulary &Vocab) + : F(F), Vocab(Vocab), Dimension(Vocab.getDimension()), + OpcWeight(::OpcWeight), TypeWeight(::TypeWeight), ArgWeight(::ArgWeight) { +} std::unique_ptr Embedder::create(IR2VecKind Mode, const Function &F, - const Vocab &Vocabulary) { + const Vocabulary &Vocab) { switch (Mode) { case IR2VecKind::Symbolic: - return std::make_unique(F, Vocabulary); + return std::make_unique(F, Vocab); } llvm_unreachable("Unknown IR2Vec kind"); return nullptr; } -// FIXME: Currently lookups are string based. Use numeric Keys -// for efficiency -Embedding Embedder::lookupVocab(const std::string &Key) const { - Embedding Vec(Dimension, 0); - // FIXME: Use zero vectors in vocab and assert failure for - // unknown entities rather than silently returning zeroes here. - auto It = Vocabulary.find(Key); - if (It != Vocabulary.end()) - return It->second; - LLVM_DEBUG(errs() << "cannot find key in map : " << Key << "\n"); - ++VocabMissCounter; - return Vec; -} - const InstEmbeddingsMap &Embedder::getInstVecMap() const { if (InstVecMap.empty()) computeEmbeddings(); @@ -182,49 +172,16 @@ const Embedding &Embedder::getFunctionVector() const { return FuncVector; } -#define RETURN_LOOKUP_IF(CONDITION, KEY_STR) \ - if (CONDITION) \ - return lookupVocab(KEY_STR); - -Embedding SymbolicEmbedder::getTypeEmbedding(const Type *Ty) const { - RETURN_LOOKUP_IF(Ty->isVoidTy(), "voidTy"); - RETURN_LOOKUP_IF(Ty->isFloatingPointTy(), "floatTy"); - RETURN_LOOKUP_IF(Ty->isIntegerTy(), "integerTy"); - RETURN_LOOKUP_IF(Ty->isFunctionTy(), "functionTy"); - RETURN_LOOKUP_IF(Ty->isStructTy(), "structTy"); - RETURN_LOOKUP_IF(Ty->isArrayTy(), "arrayTy"); - RETURN_LOOKUP_IF(Ty->isPointerTy(), "pointerTy"); - RETURN_LOOKUP_IF(Ty->isVectorTy(), "vectorTy"); - RETURN_LOOKUP_IF(Ty->isEmptyTy(), "emptyTy"); - RETURN_LOOKUP_IF(Ty->isLabelTy(), "labelTy"); - RETURN_LOOKUP_IF(Ty->isTokenTy(), "tokenTy"); - RETURN_LOOKUP_IF(Ty->isMetadataTy(), "metadataTy"); - return lookupVocab("unknownTy"); -} - -Embedding SymbolicEmbedder::getOperandEmbedding(const Value *Op) const { - RETURN_LOOKUP_IF(isa(Op), "function"); - RETURN_LOOKUP_IF(isa(Op->getType()), "pointer"); - RETURN_LOOKUP_IF(isa(Op), "constant"); - return lookupVocab("variable"); -} - -#undef RETURN_LOOKUP_IF - void SymbolicEmbedder::computeEmbeddings(const BasicBlock &BB) const { Embedding BBVector(Dimension, 0); // We consider only the non-debug and non-pseudo instructions for (const auto &I : BB.instructionsWithoutDebug()) { - Embedding InstVector(Dimension, 0); - - // FIXME: Currently lookups are string based. Use numeric Keys - // for efficiency. - InstVector += lookupVocab(I.getOpcodeName()); - InstVector += getTypeEmbedding(I.getType()); - for (const auto &Op : I.operands()) { - InstVector += getOperandEmbedding(Op.get()); - } + Embedding ArgEmb(Dimension, 0); + for (const auto &Op : I.operands()) + ArgEmb += Vocab[Op]; + auto InstVector = + Vocab[I.getOpcode()] + Vocab[I.getType()->getTypeID()] + ArgEmb; InstVecMap[&I] = InstVector; BBVector += InstVector; } @@ -243,33 +200,165 @@ void SymbolicEmbedder::computeEmbeddings() const { } // ==----------------------------------------------------------------------===// -// IR2VecVocabResult and IR2VecVocabAnalysis +// Vocabulary //===----------------------------------------------------------------------===// -IR2VecVocabResult::IR2VecVocabResult(ir2vec::Vocab &&Vocabulary) - : Vocabulary(std::move(Vocabulary)), Valid(true) {} +Vocabulary::Vocabulary(VocabVector &&Vocab) + : Vocab(std::move(Vocab)), Valid(true) {} -const ir2vec::Vocab &IR2VecVocabResult::getVocabulary() const { +bool Vocabulary::isValid() const { + return Vocab.size() == MaxOpcodes + MaxTypes + MaxOperandKinds && Valid; +} + +unsigned Vocabulary::size() const { assert(Valid && "IR2Vec Vocabulary is invalid"); - return Vocabulary; + return Vocab.size(); } -unsigned IR2VecVocabResult::getDimension() const { +unsigned Vocabulary::getDimension() const { assert(Valid && "IR2Vec Vocabulary is invalid"); - return Vocabulary.begin()->second.size(); + return Vocab[0].size(); +} + +const Embedding &Vocabulary::at(unsigned Position) const { + assert(Position < Vocab.size() && "Position out of bounds in vocabulary"); + return Vocab[Position]; +} + +const Embedding &Vocabulary::operator[](unsigned Opcode) const { + assert(Opcode >= 1 && Opcode <= MaxOpcodes && "Invalid opcode"); + return Vocab[Opcode - 1]; +} + +const Embedding &Vocabulary::operator[](Type::TypeID TypeId) const { + assert(static_cast(TypeId) < MaxTypes && "Invalid type ID"); + return Vocab[MaxOpcodes + static_cast(TypeId)]; +} + +const ir2vec::Embedding &Vocabulary::operator[](const Value *Arg) const { + OperandKind ArgKind = getOperandKind(Arg); + return Vocab[MaxOpcodes + MaxTypes + static_cast(ArgKind)]; +} + +StringRef Vocabulary::getVocabKeyForTypeID(Type::TypeID TypeID) { + switch (TypeID) { + case Type::VoidTyID: + return "VoidTy"; + case Type::HalfTyID: + case Type::BFloatTyID: + case Type::FloatTyID: + case Type::DoubleTyID: + case Type::X86_FP80TyID: + case Type::FP128TyID: + case Type::PPC_FP128TyID: + return "FloatTy"; + case Type::IntegerTyID: + return "IntegerTy"; + case Type::FunctionTyID: + return "FunctionTy"; + case Type::StructTyID: + return "StructTy"; + case Type::ArrayTyID: + return "ArrayTy"; + case Type::PointerTyID: + case Type::TypedPointerTyID: + return "PointerTy"; + case Type::FixedVectorTyID: + case Type::ScalableVectorTyID: + return "VectorTy"; + case Type::LabelTyID: + return "LabelTy"; + case Type::TokenTyID: + return "TokenTy"; + case Type::MetadataTyID: + return "MetadataTy"; + case Type::X86_AMXTyID: + case Type::TargetExtTyID: + default: + return "UnknownTy"; + } +} + +// Operand kinds supported by IR2Vec - string mappings +#define OPERAND_KINDS \ + OPERAND_KIND(FunctionID, "Function") \ + OPERAND_KIND(PointerID, "Pointer") \ + OPERAND_KIND(ConstantID, "Constant") \ + OPERAND_KIND(VariableID, "Variable") + +StringRef Vocabulary::getVocabKeyForOperandKind(Vocabulary::OperandKind Kind) { + switch (Kind) { +#define OPERAND_KIND(Name, Str) \ + case Vocabulary::OperandKind::Name: \ + return Str; + OPERAND_KINDS +#undef OPERAND_KIND + case Vocabulary::OperandKind::MaxOperandKind: + llvm_unreachable("Invalid OperandKind"); + } + llvm_unreachable("Unknown OperandKind"); +} + +#undef OPERAND_KINDS + +Vocabulary::VocabVector Vocabulary::createDummyVocabForTest(unsigned Dim) { + VocabVector DummyVocab; + float DummyVal = 0.1f; + // Create a dummy vocabulary with entries for all opcodes, types, and + // operand + for (unsigned _ : seq(0u, Vocabulary::MaxOpcodes + Vocabulary::MaxTypes + + Vocabulary::MaxOperandKinds)) { + DummyVocab.push_back(Embedding(Dim, DummyVal)); + DummyVal += 0.1; + } + return DummyVocab; +} + +// Helper function to classify an operand into OperandKind +Vocabulary::OperandKind Vocabulary::getOperandKind(const Value *Op) { + if (isa(Op)) + return OperandKind::FunctionID; + if (isa(Op->getType())) + return OperandKind::PointerID; + if (isa(Op)) + return OperandKind::ConstantID; + return OperandKind::VariableID; +} + +StringRef Vocabulary::getStringKey(unsigned Pos) { + assert(Pos < MaxOpcodes + MaxTypes + MaxOperandKinds && + "Position out of bounds in vocabulary"); + // Opcode + if (Pos < MaxOpcodes) { +#define HANDLE_INST(NUM, OPCODE, CLASS) \ + if (Pos == NUM - 1) { \ + return #OPCODE; \ + } +#include "llvm/IR/Instruction.def" +#undef HANDLE_INST + } + // Type + if (Pos < MaxOpcodes + MaxTypes) + return getVocabKeyForTypeID(static_cast(Pos - MaxOpcodes)); + // Operand + return getVocabKeyForOperandKind( + static_cast(Pos - MaxOpcodes - MaxTypes)); } // For now, assume vocabulary is stable unless explicitly invalidated. -bool IR2VecVocabResult::invalidate( - Module &M, const PreservedAnalyses &PA, - ModuleAnalysisManager::Invalidator &Inv) const { +bool Vocabulary::invalidate(Module &M, const PreservedAnalyses &PA, + ModuleAnalysisManager::Invalidator &Inv) const { auto PAC = PA.getChecker(); return !(PAC.preservedWhenStateless()); } +// ==----------------------------------------------------------------------===// +// IR2VecVocabAnalysis +//===----------------------------------------------------------------------===// + Error IR2VecVocabAnalysis::parseVocabSection( - StringRef Key, const json::Value &ParsedVocabValue, - ir2vec::Vocab &TargetVocab, unsigned &Dim) { + StringRef Key, const json::Value &ParsedVocabValue, VocabMap &TargetVocab, + unsigned &Dim) { json::Path::Root Path(""); const json::Object *RootObj = ParsedVocabValue.getAsObject(); if (!RootObj) @@ -317,10 +406,9 @@ Error IR2VecVocabAnalysis::readVocabulary() { if (!ParsedVocabValue) return ParsedVocabValue.takeError(); - ir2vec::Vocab OpcodeVocab, TypeVocab, ArgVocab; unsigned OpcodeDim = 0, TypeDim = 0, ArgDim = 0; - if (auto Err = parseVocabSection("Opcodes", *ParsedVocabValue, OpcodeVocab, - OpcodeDim)) + if (auto Err = + parseVocabSection("Opcodes", *ParsedVocabValue, OpcVocab, OpcodeDim)) return Err; if (auto Err = @@ -335,26 +423,80 @@ Error IR2VecVocabAnalysis::readVocabulary() { return createStringError(errc::illegal_byte_sequence, "Vocabulary sections have different dimensions"); - auto scaleVocabSection = [](ir2vec::Vocab &Vocab, double Weight) { - for (auto &Entry : Vocab) - Entry.second *= Weight; - }; - scaleVocabSection(OpcodeVocab, OpcWeight); - scaleVocabSection(TypeVocab, TypeWeight); - scaleVocabSection(ArgVocab, ArgWeight); - - Vocabulary.insert(OpcodeVocab.begin(), OpcodeVocab.end()); - Vocabulary.insert(TypeVocab.begin(), TypeVocab.end()); - Vocabulary.insert(ArgVocab.begin(), ArgVocab.end()); + Dim = OpcodeDim; // All sections have the same dimension return Error::success(); } -IR2VecVocabAnalysis::IR2VecVocabAnalysis(const Vocab &Vocabulary) - : Vocabulary(Vocabulary) {} +void IR2VecVocabAnalysis::generateNumMappedVocab() { + +// Placeholder for handling missing entities in the vocabulary. +// Currently, we use a zero vector. In the future, we will throw an error to +// ensure that *all* known entities are present in the vocabulary. +#define HANDLE_MISSING_ENTITY(VAL) \ + { \ + LLVM_DEBUG(errs() << VAL \ + << " is not in vocabulary, using zero vector; This " \ + "would result in an error in future.\n"); \ + ++VocabMissCounter; \ + } + + // Handle Opcodes + std::vector NumericOpcodeEmbeddings(Vocabulary::MaxOpcodes, + Embedding(Dim, 0)); +#define HANDLE_INST(NUM, OPCODE, CLASS) \ + { \ + auto It = OpcVocab.find(#OPCODE); \ + if (It != OpcVocab.end()) \ + NumericOpcodeEmbeddings[NUM - 1] = It->second; \ + else \ + HANDLE_MISSING_ENTITY(#OPCODE); \ + } +#include "llvm/IR/Instruction.def" +#undef HANDLE_INST + Vocab.insert(Vocab.end(), NumericOpcodeEmbeddings.begin(), + NumericOpcodeEmbeddings.end()); + + // Handle Types using direct iteration through TypeID enum + // We iterate through all possible TypeID values and map them to embeddings + std::vector NumericTypeEmbeddings(Vocabulary::MaxTypes, + Embedding(Dim, 0)); + for (unsigned TypeID : seq(0u, Vocabulary::MaxTypes)) { + StringRef VocabKey = + Vocabulary::getVocabKeyForTypeID(static_cast(TypeID)); + if (auto It = TypeVocab.find(VocabKey.str()); It != TypeVocab.end()) { + NumericTypeEmbeddings[TypeID] = It->second; + continue; + } + HANDLE_MISSING_ENTITY(VocabKey.str()); + } + Vocab.insert(Vocab.end(), NumericTypeEmbeddings.begin(), + NumericTypeEmbeddings.end()); + + // Handle Arguments/Operands + std::vector NumericArgEmbeddings(Vocabulary::MaxOperandKinds, + Embedding(Dim, 0)); + for (unsigned OpKind : seq(0u, Vocabulary::MaxOperandKinds)) { + Vocabulary::OperandKind Kind = static_cast(OpKind); + StringRef VocabKey = Vocabulary::getVocabKeyForOperandKind(Kind); + auto It = ArgVocab.find(VocabKey.str()); + if (It != ArgVocab.end()) { + NumericArgEmbeddings[OpKind] = It->second; + continue; + } + HANDLE_MISSING_ENTITY(VocabKey.str()); + } + Vocab.insert(Vocab.end(), NumericArgEmbeddings.begin(), + NumericArgEmbeddings.end()); + +#undef HANDLE_MISSING_ENTITY +} + +IR2VecVocabAnalysis::IR2VecVocabAnalysis(const VocabVector &Vocab) + : Vocab(Vocab) {} -IR2VecVocabAnalysis::IR2VecVocabAnalysis(Vocab &&Vocabulary) - : Vocabulary(std::move(Vocabulary)) {} +IR2VecVocabAnalysis::IR2VecVocabAnalysis(VocabVector &&Vocab) + : Vocab(std::move(Vocab)) {} void IR2VecVocabAnalysis::emitError(Error Err, LLVMContext &Ctx) { handleAllErrors(std::move(Err), [&](const ErrorInfoBase &EI) { @@ -366,20 +508,33 @@ IR2VecVocabAnalysis::Result IR2VecVocabAnalysis::run(Module &M, ModuleAnalysisManager &AM) { auto Ctx = &M.getContext(); // If vocabulary is already populated by the constructor, use it. - if (!Vocabulary.empty()) - return IR2VecVocabResult(std::move(Vocabulary)); + if (!Vocab.empty()) + return Vocabulary(std::move(Vocab)); // Otherwise, try to read from the vocabulary file. if (VocabFile.empty()) { // FIXME: Use default vocabulary Ctx->emitError("IR2Vec vocabulary file path not specified"); - return IR2VecVocabResult(); // Return invalid result + return Vocabulary(); // Return invalid result } if (auto Err = readVocabulary()) { emitError(std::move(Err), *Ctx); - return IR2VecVocabResult(); + return Vocabulary(); } - return IR2VecVocabResult(std::move(Vocabulary)); + + // Scale the vocabulary sections based on the provided weights + auto scaleVocabSection = [](VocabMap &Vocab, double Weight) { + for (auto &Entry : Vocab) + Entry.second *= Weight; + }; + scaleVocabSection(OpcVocab, OpcWeight); + scaleVocabSection(TypeVocab, TypeWeight); + scaleVocabSection(ArgVocab, ArgWeight); + + // Generate the numeric lookup vocabulary + generateNumMappedVocab(); + + return Vocabulary(std::move(Vocab)); } // ==----------------------------------------------------------------------===// @@ -388,13 +543,12 @@ IR2VecVocabAnalysis::run(Module &M, ModuleAnalysisManager &AM) { PreservedAnalyses IR2VecPrinterPass::run(Module &M, ModuleAnalysisManager &MAM) { - auto IR2VecVocabResult = MAM.getResult(M); - assert(IR2VecVocabResult.isValid() && "IR2Vec Vocabulary is invalid"); + auto Vocabulary = MAM.getResult(M); + assert(Vocabulary.isValid() && "IR2Vec Vocabulary is invalid"); - auto Vocab = IR2VecVocabResult.getVocabulary(); for (Function &F : M) { std::unique_ptr Emb = - Embedder::create(IR2VecKind::Symbolic, F, Vocab); + Embedder::create(IR2VecKind::Symbolic, F, Vocabulary); if (!Emb) { OS << "Error creating IR2Vec embeddings \n"; continue; @@ -432,13 +586,13 @@ PreservedAnalyses IR2VecPrinterPass::run(Module &M, PreservedAnalyses IR2VecVocabPrinterPass::run(Module &M, ModuleAnalysisManager &MAM) { - auto IR2VecVocabResult = MAM.getResult(M); - assert(IR2VecVocabResult.isValid() && "IR2Vec Vocabulary is invalid"); + auto IR2VecVocabulary = MAM.getResult(M); + assert(IR2VecVocabulary.isValid() && "IR2Vec Vocabulary is invalid"); - auto Vocab = IR2VecVocabResult.getVocabulary(); - for (const auto &Entry : Vocab) { - OS << "Key: " << Entry.first << ": "; - Entry.second.print(OS); + // Print each entry + for (unsigned Pos = 0; Pos < IR2VecVocabulary.size(); ++Pos) { + OS << "Key: " << IR2VecVocabulary.getStringKey(Pos) << ": "; + IR2VecVocabulary.at(Pos).print(OS); } return PreservedAnalyses::all(); diff --git a/llvm/lib/Analysis/models/seedEmbeddingVocab75D.json b/llvm/lib/Analysis/models/seedEmbeddingVocab75D.json index a0d539afd5294..b8af4b4a5e8e6 100644 --- a/llvm/lib/Analysis/models/seedEmbeddingVocab75D.json +++ b/llvm/lib/Analysis/models/seedEmbeddingVocab75D.json @@ -1,72 +1,72 @@ { "Opcodes":{ - "add":[0.09571152, 0.08334279, 0.07070262, 0.14084256, 0.04825167, -0.12893851, -0.12180215, -0.07194936, -0.05329844, -0.28276998, 0.00202254, 0.07488817, -0.16139749, 0.07618549, -0.06084673, 0.10536429, -0.03031596, 0.16402271, 0.22730531, -0.0015432, 0.01986631, -0.15808797, 0.03030382, -0.04201249, 0.01689876, -0.30041003, -0.06479812, 0.1282431, -0.09032831, 0.14007935, -0.23540203, 0.00552223, 0.15325953, 0.13147154, -0.15204638, 0.1616615, 0.05758473, -0.1385157, 0.16438901, -0.14482859, 0.07895052, 0.18407233, 0.15283448, -0.00081216, -0.17934133, -0.16779658, 0.09044863, -0.18453072, -0.00552684, 0.01191218, 0.18504514, 0.13140059, -0.0174882, -0.18127315, 0.02269725, -0.02048657, 0.10858727, 0.0074029, 0.09485064, -0.13431476, 0.07491371, -0.17498694, -0.32914585, -0.14159656, -0.03594542, 0.04091231, 0.00298631, -0.08933277, -0.07178984, 0.04144038, 0.12151367, -0.09504163, 0.13691336, 0.07825345, 0.13958281], - "alloca":[0.12644756, -0.20912014, 0.07298578, 0.13963142, 0.03932726, -0.12778169, -0.13084207, -0.09090705, -0.01497083, 0.0646746, 0.14847252, 0.08546949, -0.11579383, 0.07812478, -0.16431178, 0.08578802, 0.06094746, -0.1239017, -0.02789196, -0.01074964, -0.1738938, -0.1629063, -0.07137732, -0.02845656, 0.1728318, 0.13779363, -0.06250989, 0.03479109, -0.08423121, 0.14009888, 0.09620709, -0.02287545, -0.04616966, -0.19591278, -0.19636007, 0.21825573, 0.07949521, -0.14614704, 0.17752613, -0.15099092, -0.04518029, 0.17774306, 0.18947133, -0.00197501, -0.12619424, -0.18458585, -0.09960615, 0.01162648, 0.21306573, 0.0468024, 0.201505, 0.09970672, 0.06599383, 0.17757463, -0.11899275, 0.10299123, 0.06038174, -0.07116731, -0.15743989, -0.1258558, 0.1535076, 0.01872367, -0.14336765, -0.19708565, -0.26796287, 0.02628843, -0.0009325, -0.08809827, -0.12970725, 0.17223337, -0.10651242, -0.09162157, 0.03264611, 0.0911452, 0.09506542], - "and":[-0.12902537, 0.07848564, 0.07048505, 0.13578993, 0.03570583, -0.1242408, -0.12619697, -0.06914084, -0.0515872, 0.13225996, 0.01673339, 0.0763608, 0.18325369, 0.07690141, -0.09591792, 0.10353354, -0.02401061, 0.16493416, 0.21942355, -0.00400911, 0.03811587, -0.15406959, -0.07134877, -0.02946596, -0.03854588, 0.28656727, -0.06625008, 0.12780443, -0.04631379, 0.13919763, -0.15808977, -0.00312698, 0.14692454, 0.18495218, -0.14863448, 0.13449706, 0.06471325, -0.13883992, 0.17630532, -0.16833898, 0.07391811, 0.17909151, 0.18229873, -0.00381102, -0.17680968, -0.1645554, 0.10016466, -0.07963493, 0.00130218, 0.05646244, 0.18222143, 0.10511146, -0.0191175, -0.08713559, 0.25423968, -0.02557301, 0.04319789, 0.03259414, 0.07209402, -0.13169754, 0.07424775, -0.17216511, -0.32057068, -0.13833733, -0.0658454, 0.02420194, -0.04393166, -0.08238692, -0.07023077, 0.04014502, 0.20101993, -0.09093616, 0.13076238, 0.09114857, -0.06483845], - "ashr":[0.16414718, -0.02078147, 0.07353837, 0.14210321, 0.08068018, -0.13586298, -0.15728961, -0.10365791, 0.00359197, 0.04608767, 0.35770142, 0.08003625, 0.00944533, 0.08471741, 0.05809571, 0.09202059, -0.18349345, 0.22169511, 0.24418135, 0.19192688, -0.1956347, -0.17401719, -0.07583863, -0.02781139, 0.0952112, -0.01444751, -0.27259794, 0.14392436, -0.13541143, 0.1410963, 0.04314299, -0.01641751, -0.05448177, -0.22287542, -0.2131822, 0.25112826, 0.06918604, -0.14414005, 0.060288, -0.09658266, -0.09122665, -0.02779044, 0.20349248, 0.0041391, 0.10610974, -0.20890503, -0.09881835, -0.07368057, 0.22467837, 0.00075097, 0.2147348, -0.02612463, -0.01696278, -0.0649786, 0.15041149, 0.02361087, 0.0211603, -0.03706622, 0.18296233, -0.14298625, 0.14614436, 0.02273145, 0.0209446, -0.21062987, 0.16911499, -0.03668665, 0.00197532, -0.09607943, -0.08398084, 0.02006913, 0.05739584, -0.07919859, 0.19634944, 0.11082727, -0.06584227], - "bitcast":[0.1675692, -0.12870269, 0.04048132, -0.1670965, -0.1279611, 0.02615386, -0.16829294, -0.09034907, 0.10913523, -0.07819421, 0.23986322, -0.05966561, 0.08410738, 0.19072439, 0.06047394, 0.02999627, -0.16747619, -0.06076627, -0.02673951, -0.1619169, 0.06443421, -0.13788716, -0.05644303, 0.01361013, -0.06858975, -0.06005004, 0.10011288, -0.05508338, -0.10613093, -0.11281271, -0.00758647, -0.12425531, 0.05333719, -0.16881412, -0.20088236, 0.06015657, -0.16405901, 0.06226884, 0.09171099, -0.09500738, 0.07907875, 0.0776544, -0.18457057, -0.11278627, -0.12111131, -0.10180638, 0.18328871, 0.18770072, 0.20346186, 0.10305139, -0.18344335, 0.10693213, -0.10920919, -0.05994263, 0.20354497, -0.03093485, 0.14214055, 0.00580597, 0.10480052, -0.09955201, -0.134185, -0.02904563, 0.00175069, 0.17646657, 0.01348841, -0.02030338, -0.06537742, 0.10032237, 0.15315783, 0.0102667, 0.07717734, -0.01060431, 0.14727928, -0.16261302, -0.06770234], - "br":[0.11499645, 0.0824301, 0.07218035, 0.13258332, -0.13419574, -0.12916718, -0.12626709, -0.06741403, -0.02857593, -0.2543893, 0.02193022, 0.0760875, -0.1562702, 0.07712954, 0.3149361, 0.10217083, -0.041038, 0.16601022, 0.01906607, -0.02043359, 0.05471838, -0.15233372, -0.06945753, -0.02313732, -0.07342829, 0.3331809, -0.05246306, -0.0269839, -0.05435036, 0.13908924, 0.32604694, 0.00170966, 0.14997493, 0.13026518, -0.14908995, 0.12238151, -0.06773318, -0.13566032, 0.16068587, -0.12842499, 0.04970508, 0.17827724, 0.09729939, -0.00447832, -0.1739753, -0.16429187, 0.09886666, -0.08058207, 0.00714044, 0.04585538, 0.13424252, 0.11376464, -0.01675582, 0.17901348, -0.00653374, -0.01570439, 0.13032894, 0.01734108, 0.16833901, -0.1173776, 0.07662185, -0.15942436, -0.21173944, -0.10505079, 0.0597497, 0.03491669, 0.00338842, -0.04969047, -0.07644061, 0.04528612, 0.254365, -0.09514527, 0.12015092, 0.08262096, -0.02352029], - "call":[0.10815012, -0.12419116, 0.18759736, -0.1905027, 0.01619313, -0.13483052, -0.12278763, -0.07051246, -0.0083437, 0.25107145, -0.16601063, 0.08127163, -0.17432374, -0.18380919, 0.24335551, 0.07208319, -0.04401246, 0.11606008, -0.02733191, 0.02098145, 0.019888, -0.13705409, -0.07569158, -0.03072285, 0.16870692, -0.09787013, -0.09340432, 0.01931342, -0.03557841, 0.14359893, -0.1592094, -0.00055867, 0.159316, 0.1099042, -0.11837319, 0.08741318, 0.03364393, -0.12831019, 0.10450637, -0.12699029, -0.20213994, 0.18390144, 0.11092624, -0.00209971, -0.13063665, 0.19996215, 0.09006448, -0.07840014, 0.22549215, 0.02587176, 0.13374338, 0.11009877, -0.01874998, -0.21446206, 0.02377797, -0.01036531, 0.05427047, 0.01418843, 0.00771817, -0.12639529, -0.10334941, -0.12244401, 0.30014148, -0.09857437, 0.21212636, 0.03429029, -0.04947309, 0.1023307, -0.07743628, 0.03006962, -0.24868701, -0.02357339, 0.11574048, 0.06895301, -0.363474], - "extractelement":[-1.62098512e-01, -2.00751424e-02, 1.71776459e-01, 1.38723463e-01, -1.60769299e-01, 9.30800363e-02, -1.24304645e-01, 1.45934001e-01, -5.04420400e-02, -7.54220188e-02, -5.30924797e-02, 8.55294541e-02, 1.17488159e-02, -1.82809234e-01, 9.37484950e-02, 8.38199258e-02, 1.26266479e-01, 9.31843743e-02, -2.26742271e-02, 6.50950940e-03, 5.02749532e-03, -1.14133619e-01, 1.80842891e-01, -9.63811725e-02, 1.67923152e-01, -5.84629439e-02, 1.04362026e-01, 8.92093012e-05, 7.93750137e-02, 1.39107972e-01, -8.40696543e-02, -1.59506593e-02, 1.99361086e-01, 1.93857521e-01, -1.46850392e-01, -1.78695560e-01, 9.88712162e-03, -1.40836969e-01, 1.77736521e-01, -1.61047727e-01, 3.51648539e-01, 1.79638579e-01, 1.49385989e-01, -6.06128015e-03, -1.72102928e-01, -1.81016047e-02, 1.01466164e-01, -1.28312945e-01, -8.05212185e-02, 6.28385469e-02, 1.15654446e-01, 1.91848025e-01, 3.03963851e-02, 3.55794169e-02, 1.40873834e-01, -1.44319711e-02, 1.85423180e-01, 1.16111919e-01, -7.47816712e-02, -1.14719503e-01, 1.02934733e-01, -1.83810964e-01, -2.64400076e-02, -8.99282843e-02, -1.90383971e-01, 7.31386840e-02, -4.36249487e-02, -4.71482053e-02, 1.07486300e-01, 1.09736443e-01, 4.15226035e-02, -1.42309800e-01, 8.96709636e-02, 6.64985999e-02, -6.13647103e-02], - "extractvalue":[0.08820406, -0.0182279, 0.01493346, -0.17219813, 0.02927338, -0.17379265, -0.05663937, -0.06805898, -0.21235467, -0.01969833, -0.15152055, -0.18049374, 0.01062911, 0.07935719, -0.01993761, 0.12405304, -0.03198355, 0.13872959, 0.18017697, -0.0100032, 0.22617207, -0.21553156, -0.18403597, 0.10906533, 0.17709404, 0.07438782, 0.0875822, -0.22567064, -0.00636844, 0.06691552, 0.05859367, -0.06149556, 0.15721355, 0.01889951, 0.2164152, -0.07916643, -0.03927743, -0.02665933, 0.13756634, -0.08835335, -0.01159343, -0.19749148, 0.09438482, -0.1696074, -0.18197437, 0.19907822, -0.20855112, 0.21903005, -0.2204043, -0.07439119, 0.1308343, 0.10343243, -0.10401972, 0.02784402, -0.12545246, -0.18498465, 0.02385085, 0.22105947, -0.01296441, 0.19779074, -0.09320201, -0.07345647, -0.06985376, -0.0657003, -0.15406364, 0.14981052, 0.01336148, 0.18544021, -0.07248794, 0.0511543, -0.00308717, 0.01915094, 0.079139, 0.19975829, -0.06093699], - "fadd":[0.0851364, -0.01757606, 0.20865884, 0.17407735, -0.17661206, 0.16181652, -0.11895371, -0.06142977, -0.05126655, 0.04448467, -0.03589934, 0.11921146, 0.0143434, -0.18255684, 0.05196553, 0.10967412, 0.15810761, 0.13785522, -0.01255003, -0.00134187, 0.03563518, -0.12446801, 0.18817455, -0.08609993, 0.1893248, 0.13434686, 0.25903776, -0.00467659, 0.09800702, 0.14749499, 0.03458502, -0.00238901, -0.1395337, 0.19306736, -0.11638073, 0.10491668, 0.04428702, 0.18128034, 0.1797104, -0.1929282, 0.07353631, 0.19062985, 0.10042762, -0.0040207, -0.18379262, 0.07060277, 0.09594815, -0.18272707, -0.12928157, 0.07631373, 0.13005428, 0.24108389, -0.01617561, -0.05803563, 0.02686582, -0.02223067, 0.21217403, 0.17594706, 0.00500477, -0.07345455, -0.08176229, -0.19486704, 0.02177307, -0.09052874, -0.14158368, 0.0890988, -0.06339125, -0.04612265, 0.10199347, 0.11777309, 0.07302366, -0.13303186, 0.09683178, 0.05031883, -0.05881981], - "fcmp":[1.02981135e-01, -2.43355539e-02, 5.85255250e-02, 1.09401904e-01, -1.87941462e-01, 1.74530044e-01, -1.20533399e-01, -8.64934921e-02, -5.54629341e-02, 1.41877215e-02, 4.80354428e-02, 1.56707644e-01, 2.56910548e-02, -1.94340080e-01, 5.11265621e-02, 8.82050097e-02, 1.67082191e-01, 1.14665776e-01, -2.00159680e-02, -1.82088744e-02, 2.09244549e-01, -1.15076765e-01, 2.03621030e-01, -8.38057026e-02, -4.32270877e-02, 6.39017820e-02, -6.50197491e-02, -2.72039324e-03, 8.68055448e-02, 1.25798717e-01, -4.21847135e-01, 2.64590848e-02, 1.56372517e-01, 2.14883089e-01, -1.12701654e-01, 9.43767577e-02, -1.97456375e-01, -1.72886148e-01, 2.04119727e-01, -1.56766623e-01, 7.38008767e-02, 2.05716744e-01, 3.48394439e-02, -2.48072352e-02, -2.03255862e-01, 5.07165631e-03, 1.12850599e-01, -1.94697857e-01, -6.29984289e-02, 8.21878910e-02, 1.23685144e-01, 1.40430763e-01, -2.20402889e-02, -6.55216798e-02, 2.90598303e-01, -7.66792744e-02, 2.16097474e-01, 6.28568381e-02, 2.69129931e-04, -1.17002167e-01, -1.60454452e-01, -2.07048669e-01, 2.62669493e-02, -9.61467475e-02, -1.88501909e-01, 8.80606323e-02, -5.39420024e-02, -5.08916602e-02, 1.09891914e-01, 1.21375419e-01, 5.10863326e-02, -1.43003076e-01, 8.39024931e-02, 9.51330177e-03, -6.65674359e-02], - "fdiv":[-0.14435205, -0.02003789, 0.07479589, 0.13465217, -0.18792528, 0.16504793, -0.12187403, 0.00537306, -0.04864043, 0.04958175, -0.14890797, 0.10156095, 0.01710029, -0.1809697, 0.06765524, 0.18452686, 0.16923915, 0.11264159, -0.01412142, -0.00287484, 0.01297035, 0.06755029, 0.18517323, -0.08975757, 0.16194478, 0.04174679, 0.10903918, 0.00072231, 0.10999232, 0.14989018, 0.05669819, -0.00733533, 0.20606744, 0.22580206, -0.14587933, 0.13480443, 0.05984581, -0.19580479, 0.20258778, -0.17146486, 0.07523733, 0.19139282, 0.03738374, -0.01550991, -0.21507922, 0.07425626, 0.10224851, -0.18437587, -0.06662318, 0.07977687, 0.12355862, 0.1434375, -0.01888226, 0.03870944, 0.07555477, -0.01191964, 0.23488866, 0.06922436, -0.07203218, -0.06884275, 0.07191673, -0.19515742, 0.02168754, -0.08983592, -0.20972523, 0.08903123, -0.05095004, -0.04967143, 0.0985181, 0.15771264, 0.09441628, -0.14769785, -0.16405083, 0.05066825, -0.058015], - "fmul":[-0.05690098, -0.02700638, 0.20705073, 0.16630849, -0.17719169, 0.16012336, -0.12955493, 0.19698587, -0.04035136, -0.03197788, 0.08116172, 0.1013689, 0.01416616, -0.17855197, 0.15503113, 0.13990149, 0.15355295, 0.12397105, -0.01912402, 0.01684221, 0.00669227, -0.11869009, 0.17604592, -0.05788622, 0.10467764, -0.0807798, 0.10300152, 0.10780353, 0.08334652, 0.1446782, 0.03546653, -0.00421023, 0.19682531, 0.19603632, -0.1466306, 0.12923796, 0.06296455, -0.14397427, 0.183406, -0.19625223, 0.08244827, 0.1860209, 0.10110238, -0.002166, -0.18034802, 0.06406105, 0.09568714, -0.17962225, -0.05463478, 0.04498994, 0.11928298, 0.1694295, -0.01222703, 0.14453876, 0.13506988, -0.01149808, 0.20273286, 0.05309585, -0.07139173, -0.07370458, 0.09957068, -0.19369006, 0.02577178, -0.09011577, -0.21375039, 0.07624438, -0.04969844, -0.04844297, 0.08409201, 0.11113621, 0.14570779, -0.13936704, 0.07202481, 0.05272412, -0.05747499], - "fneg":[-0.04075071, -0.09381824, 0.17104743, 0.0744117, -0.15771168, 0.16444896, -0.11586417, 0.00200867, 0.17323531, -0.10421973, -0.05619403, 0.07496857, 0.05573901, -0.18903743, 0.06586835, 0.03499747, 0.17244707, 0.02476844, -0.02552369, 0.00063759, 0.04312319, -0.04501259, 0.1850581, -0.14339973, -0.04433612, 0.01609048, 0.10461161, -0.12243931, 0.07718915, 0.15313269, 0.12116063, -0.03062805, 0.21040255, 0.21582894, -0.10389283, 0.09344483, -0.20219979, -0.20113027, 0.19945832, -0.17248249, 0.07845841, 0.19814597, 0.06085683, -0.02476168, -0.18729973, 0.0674377, 0.1058675, -0.04973035, -0.10124692, 0.12834774, 0.0900365, -0.17527112, 0.09901146, -0.05764115, 0.03708475, 0.13003437, 0.2325445, 0.19712777, -0.07403741, -0.05580256, 0.18192469, -0.19122703, -0.05592606, 0.09128745, -0.15161441, 0.08734331, -0.0963953, -0.0377482, 0.18287936, 0.16522603, 0.03490613, -0.13519889, 0.08505893, 0.02470117, -0.06158587], - "fpext":[0.1312062, -0.0272035, 0.1562131, 0.11956131, -0.18370572, 0.16904335, -0.18538451, -0.0905571, -0.05687085, -0.12067703, 0.15717801, 0.06977441, 0.04604319, -0.18692835, 0.07965986, 0.03840762, 0.17120989, 0.03048515, -0.02593113, -0.02722386, 0.0637762, -0.08012746, 0.03968937, -0.09751038, -0.04150679, -0.05797326, 0.09053179, -0.06100635, 0.01466092, 0.1521789, 0.0178679, 0.00468684, 0.09077137, 0.22244066, -0.21890686, 0.09471557, -0.18849488, 0.06589299, 0.20329474, -0.20006016, 0.06712949, 0.19578859, -0.00594554, -0.03142307, -0.18011327, 0.00516408, 0.18754548, -0.18884791, 0.2184627, 0.09512166, 0.07513344, 0.12641825, -0.0237517, -0.06020509, 0.15404698, -0.02384854, 0.22717056, 0.11279562, 0.16759154, -0.09342691, -0.09703359, -0.19393681, -0.06580188, 0.190172, -0.21666776, 0.09756065, -0.06633368, -0.04663929, 0.16539453, 0.16365078, 0.04338961, -0.1387515, 0.07042016, 0.03850469, -0.06256048], - "fptosi":[-0.09471355, -0.01413281, 0.20098655, 0.17478812, -0.0103814, 0.11870264, -0.10561193, 0.19406088, -0.04215302, 0.09856935, -0.05858651, 0.11069191, -0.02667271, -0.17638545, 0.00591833, 0.12538631, 0.1609231, 0.143028, 0.00411847, 0.06113226, -0.1577999, -0.12172183, 0.18763137, -0.04490714, 0.0262733, 0.12005143, 0.08305117, -0.00109107, 0.03972085, 0.13256785, 0.12486281, -0.00920427, 0.19794717, 0.13488762, -0.08073806, 0.11790548, -0.1865304, -0.18761554, 0.15602915, -0.1440169, -0.01538679, 0.18490645, 0.05900477, -0.01250085, -0.17872328, 0.07583775, 0.09906318, -0.16909951, -0.12062778, 0.03089247, 0.11974704, 0.23940024, -0.00561649, 0.03862159, 0.13437317, -0.0128777, 0.2149731, 0.07683202, -0.10922348, -0.04304254, -0.20104879, -0.16371554, -0.08326109, -0.08942039, -0.03989649, 0.07596397, 0.18141732, 0.08706582, -0.06605583, 0.09984156, -0.05919264, -0.13918152, -0.11102735, -0.04074531, -0.05989955], - "fptoui":[0.13186027, -0.02009563, 0.05399049, 0.22092278, 0.0764356, -0.12116565, -0.10575569, -0.08263665, -0.05279351, 0.00392524, -0.06554782, 0.15926358, 0.01012308, -0.18726377, 0.02134197, 0.12730621, -0.05603928, 0.1433069, -0.21253656, -0.1455532, 0.23767456, -0.13623604, 0.21878564, -0.05533312, -0.02895407, 0.03911315, -0.2773476, -0.00738798, 0.08483762, -0.14270262, 0.04603437, 0.21681121, -0.20425414, 0.12532364, -0.04144387, -0.1759266, 0.06860236, -0.14378744, 0.16322674, -0.09162073, -0.04966446, 0.1867569, 0.11250684, 0.04158355, -0.20126882, 0.0963328, 0.06281191, -0.17627244, -0.16096021, 0.00596877, 0.12892367, 0.2650723, 0.0032763, -0.05754196, 0.14840715, -0.09938947, 0.13039768, 0.04905574, -0.04759435, -0.18545668, -0.22984591, -0.22227132, -0.02666637, -0.09771203, -0.15587328, 0.07147411, 0.21007161, 0.09932306, -0.06597851, 0.04478595, -0.00686691, -0.14754876, -0.16366987, -0.22182341, -0.05699158], - "fptrunc":[0.1180348, -0.01865118, 0.19759397, 0.00099745, -0.20069243, 0.15863162, -0.10404988, -0.03822596, -0.04113388, 0.02389156, -0.15024376, 0.10156121, 0.01125149, -0.17805247, -0.01032893, 0.11541142, 0.16151612, 0.08652765, -0.01421094, -0.02742836, 0.03890061, 0.16992694, -0.19120258, -0.08296357, 0.16136265, 0.13252915, 0.08675185, -0.05066127, 0.14796199, 0.16224207, 0.07839199, -0.0724185, 0.17859218, 0.20112462, -0.11284997, 0.04566038, -0.19799039, -0.17690767, 0.18034197, -0.14002973, -0.0558032, 0.18783137, -0.14857374, -0.03776158, -0.21491641, 0.04907086, 0.10290487, -0.17882703, -0.06566726, 0.09571292, -0.1965507, 0.1673165, -0.03019422, 0.04259395, 0.10474471, -0.01224911, 0.2133804, 0.08484804, -0.01221132, -0.04942748, -0.06522352, -0.16705054, -0.07432696, -0.01365143, -0.14369024, 0.09237107, -0.06833915, -0.04292256, 0.10805372, 0.10829192, -0.04953781, -0.16152975, 0.08096681, 0.12343118, -0.04967185], - "freeze":[-0.10947239, 0.16156663, 0.0653074, -0.16102187, 0.05866997, -0.11313032, 0.18013522, 0.00849657, -0.13109621, 0.00250287, 0.12335391, -0.19474623, 0.00160397, 0.18526912, -0.02094408, 0.10131565, -0.17163642, 0.1624736, 0.20699912, 0.1198829, -0.15380894, -0.13946483, -0.0666218, -0.02034315, 0.06200019, 0.04227962, 0.07729523, 0.1244237, -0.07141764, 0.12154905, 0.0300131, 0.01618693, 0.13966976, 0.08918943, -0.07834358, 0.19349128, -0.06925047, -0.11661758, 0.01764905, -0.06631834, -0.19618054, 0.07797705, -0.18398666, -0.08675893, -0.14833811, -0.1468038, 0.18818453, -0.06729261, -0.00497526, -0.08958972, 0.16964634, -0.10325264, -0.10212341, -0.04745837, 0.12241088, -0.03629779, -0.00606445, 0.01766711, 0.0036858, -0.10732682, -0.13172524, -0.10182981, -0.06431175, -0.13082966, 0.04738441, 0.02668242, 0.15197244, -0.12880892, -0.06579075, 0.03165649, -0.00145413, -0.02683991, 0.13963282, -0.14597963, -0.05104417], - "fsub":[-0.15878558, -0.01853204, 0.07496438, 0.13546987, -0.1904581, 0.16564278, -0.1120265, -0.05418859, -0.08075086, 0.1190263, -0.030006, 0.07342444, 0.01767328, -0.18650489, 0.04966565, 0.17190282, 0.1616953, 0.10582477, -0.00931773, 0.00157398, 0.00862398, 0.08480153, 0.17171694, -0.0916861, 0.17196383, 0.03703162, 0.11399966, -0.12855959, 0.05810672, 0.15144408, 0.05618297, -0.00800864, 0.20814295, 0.20056027, -0.1153914, 0.10849892, -0.1970011, -0.1813781, 0.1921156, -0.16984123, 0.07333071, 0.19433162, -0.01313439, -0.02830642, -0.17687869, 0.05937865, 0.1070236, -0.18605019, -0.07227098, 0.10597191, 0.1225975, 0.12388534, -0.02131494, -0.02420847, 0.00146665, -0.01353394, 0.22151577, 0.19731705, -0.07575841, 0.08710405, -0.07411117, -0.17442936, -0.1831972, -0.0886184, -0.17084508, 0.10038229, -0.06385624, -0.04644644, 0.10368951, 0.12130242, 0.24595715, -0.14661786, 0.09260331, 0.0455667, -0.05950425], - "getelementptr":[0.09870283, 0.07089636, 0.07129486, 0.13141522, 0.0512748, -0.12164738, -0.10822044, -0.06830852, -0.03589667, 0.23281692, 0.00221914, 0.07347875, -0.14414017, -0.1762956, 0.2280886, 0.09720317, -0.02157139, 0.1186724, 0.16809724, 0.01354192, 0.00843806, -0.1289462, -0.06982945, -0.03921828, 0.11689314, -0.27946517, -0.06115843, 0.0435549, -0.04346889, 0.13182928, -0.13756175, -0.00165133, 0.14864644, 0.1256485, -0.10831792, 0.1638358, 0.05359713, -0.12713233, 0.15040766, -0.14046451, 0.06688947, 0.17097251, 0.11004995, 0.00303981, -0.17120391, -0.15561967, -0.0996208, -0.07566627, -0.0092614, 0.03340579, 0.12288038, 0.11154807, -0.01677553, 0.161112, 0.01968472, -0.01360116, 0.05185669, 0.03974737, 0.08288419, -0.11881893, 0.09566113, -0.14562541, 0.27193576, -0.08737413, -0.13493136, 0.06975145, -0.01905861, -0.04629398, -0.06382514, 0.03648283, 0.32102475, -0.07868497, 0.11246872, 0.06408555, 0.21986632], - "icmp":[0.10752141, 0.08221146, 0.07407488, 0.13139327, -0.17970721, 0.02754223, -0.13538423, -0.06698897, -0.02524848, 0.29738554, 0.00894943, 0.07728788, 0.01191065, 0.07896648, 0.26208735, 0.10498706, -0.03250087, 0.1684631, 0.23128033, 0.00553169, 0.05936556, -0.15531996, -0.06056314, -0.03261358, 0.09216364, -0.31626984, -0.07434817, 0.12870958, -0.08664963, 0.14354071, 0.2156426, -0.0043262, 0.16025512, 0.13890502, -0.153901, 0.12319393, 0.01295959, -0.14369431, 0.17033054, -0.12931693, 0.07678536, 0.19203088, 0.11493351, -0.00601692, -0.18671934, -0.16845967, 0.11059918, -0.08381938, -0.00690406, 0.04286021, 0.13590424, 0.12681794, -0.01967513, -0.21233313, 0.02998303, -0.01612004, 0.17794448, 0.02153118, 0.09134272, -0.12414944, 0.08073039, -0.17339677, -0.0417021, -0.1026428, -0.0270442, 0.02959586, -0.05658696, -0.05483485, -0.07289126, 0.036765, 0.20820136, -0.0922353, 0.1438483, 0.06928346, -0.37188163], - "insertelement":[-0.08810953, 0.19707826, 0.23040843, 0.15133125, -0.22085261, 0.18197243, -0.13767323, 0.00611759, -0.03750934, 0.05303819, -0.00140541, 0.13628025, 0.01222425, -0.19765897, 0.02197562, 0.17957552, 0.17369562, 0.13818526, -0.01018569, 0.07335348, -0.00122391, -0.05268616, 0.03798695, -0.07208619, 0.13593383, -0.08763747, 0.10625125, 0.12024429, -0.01286297, 0.16619073, 0.03609107, 0.00169814, 0.21330379, 0.22023544, -0.11971844, 0.23055589, -0.21922874, -0.18983133, 0.21032487, -0.19545083, 0.39695147, 0.2116961, 0.03465794, -0.01642283, -0.23929499, 0.05254361, 0.1186865, -0.20114459, -0.01001151, 0.06816892, 0.13270052, 0.13516793, -0.02193176, 0.13708963, 0.15222688, -0.01366894, 0.22591114, 0.07127486, -0.08461929, -0.08140475, 0.06961198, -0.18172547, 0.03001983, -0.09530003, -0.03038635, 0.09877217, -0.06264398, -0.06664777, 0.08449566, 0.13536829, 0.04701871, -0.1011354, 0.08900025, 0.0484806, -0.0840841], - "insertvalue":[-0.18927452, 0.0174884, -0.14182499, 0.13622768, 0.0860026, 0.09214608, 0.19103362, -0.21386355, -0.08520557, 0.0039752, 0.11396001, -0.20266375, 0.17875974, -0.19441572, 0.06652557, -0.1076987, -0.15872131, -0.20631677, -0.06141828, 0.01331364, 0.02354101, 0.08883859, 0.18617646, -0.1524484, -0.00485444, -0.06658852, -0.06168855, -0.15898797, 0.02933339, -0.19443747, -0.08171376, -0.10284599, -0.14775087, 0.20585667, -0.03085143, -0.20518455, 0.05644068, 0.18632361, -0.14686832, 0.03718346, 0.10764548, -0.01129938, 0.19590198, 0.02194332, -0.04761516, 0.0276675, 0.01006511, -0.05134218, -0.10854474, 0.23528893, 0.09621219, -0.17192629, 0.10312149, -0.14351319, 0.15347119, 0.19321586, -0.20537563, 0.19100618, 0.11280359, 0.07242113, 0.18901348, 0.19133772, 0.02062779, -0.07726028, 0.00578185, -0.02625765, -0.10374335, -0.02086248, 0.18915856, 0.00862997, 0.04699488, -0.0631949, 0.18942626, 0.01894571, 0.02351614], - "inttoptr":[0.04721976, 0.16880296, 0.06448112, -0.17660472, 0.02998716, -0.1156636, 0.13852204, -0.06320232, -0.03162635, -0.06644673, -0.136013, -0.06916367, -0.02801188, 0.10646518, 0.05828808, 0.03782522, -0.02227561, 0.02234134, 0.16369314, -0.08557447, 0.03853939, -0.14319475, -0.05599201, -0.01060566, -0.1136315, 0.0201032, 0.01836221, -0.05016, -0.1216938, 0.12626994, 0.03450989, -0.19574732, 0.14352062, -0.17880194, -0.13339539, -0.04630446, 0.03136644, -0.13006681, 0.1445991, -0.09556036, 0.09764113, 0.16694036, 0.09833785, 0.05145761, 0.17970908, -0.14575475, -0.13704927, -0.06876626, -0.00955433, -0.16089469, -0.14152728, 0.1012365, -0.18291287, -0.07371435, -0.13809073, 0.02210419, 0.090786, 0.02507522, 0.15311833, -0.11663677, 0.10619268, 0.1758742, -0.04052401, 0.19525726, 0.15682434, -0.19402866, 0.08792165, 0.19677114, 0.1986662, -0.2065629, 0.04007441, -0.01697999, 0.17015004, 0.07224851, -0.06042317], - "invoke":[0.11604629, -0.02348489, -0.11863736, -0.16840768, -0.01534824, -0.13232489, -0.09663513, -0.1576129, -0.2348036, 0.00802987, -0.0517984, -0.05321365, 0.01174416, -0.11655734, 0.05259984, -0.16816719, -0.09482966, -0.00228002, -0.12152751, -0.00498575, 0.03465938, -0.02950593, 0.04545004, -0.2172498, -0.07073424, -0.08918925, 0.0623108, -0.20881031, -0.04182759, -0.20031597, -0.1351732, 0.069332, -0.00361818, 0.11065516, 0.13967985, -0.08796342, -0.00256544, -0.11508698, 0.09178918, 0.2073513, 0.04010937, -0.07716485, 0.06940974, 0.20694868, -0.08160415, 0.1820004, -0.12159622, 0.04531517, -0.00216078, -0.11625812, -0.10868325, 0.11549117, 0.19036727, 0.0365869, -0.09580094, 0.22367325, 0.11756624, -0.2184826, 0.27060437, 0.14232084, 0.01686368, -0.10716032, 0.02151413, -0.02634864, 0.19014603, -0.22087607, -0.05267305, -0.2422757, -0.06234193, -0.0299236, 0.01296355, 0.0901266, 0.09916983, -0.00811885, -0.02482844], - "landingpad":[0.12086448, 0.16615215, -0.11424457, -0.08484724, -0.09069939, -0.15767984, 0.10221493, -0.17647022, -0.18533581, -0.02190816, 0.1541339, -0.15779817, 0.03144602, -0.10866319, -0.01497394, -0.1721984, -0.07559271, -0.11889227, -0.1177194, -0.02792813, 0.04734257, -0.03713308, -0.17093344, 0.17252314, 0.02917121, 0.01523044, -0.08545186, -0.20184867, -0.08280238, -0.04850229, 0.03705949, 0.07665683, 0.01846915, 0.00205453, 0.1709319, -0.10548064, -0.07096241, 0.12575251, -0.1177155, 0.17698564, 0.03965896, -0.10821396, 0.07917166, 0.17810985, 0.01715738, 0.16967225, -0.16826203, 0.16891196, -0.15257767, 0.10498544, -0.10490264, 0.06432237, 0.18670914, -0.00099873, -0.13853344, 0.21604276, 0.13351974, -0.15664832, -0.08585881, 0.1024329, 0.02737338, 0.11940238, -0.01797596, -0.00314033, 0.12023867, 0.11616865, 0.05652065, 0.1415307, -0.15827312, -0.03440882, 0.02146849, 0.01478402, -0.13532415, -0.02099262, 0.00462938], - "load":[0.06383128, 0.0803676, 0.07070765, 0.1284488, 0.053152, -0.11878661, -0.09626942, -0.05779593, -0.04309646, -0.31707463, -0.01623556, 0.0741919, -0.0051238, 0.07403108, -0.25466156, 0.09440999, -0.01665624, 0.14732535, 0.17144501, -0.00878042, 0.04688795, -0.15015227, -0.06462591, -0.04178058, -0.0378243, 0.33024567, -0.07477789, -0.04902143, -0.0476392, 0.13162148, -0.17537315, -0.01750547, 0.14473993, 0.1732234, -0.1423584, 0.11269526, 0.03678195, -0.1315726, 0.15341991, -0.10186778, 0.00435855, 0.16657132, 0.17959148, -0.00966169, -0.16982812, -0.02318787, 0.09485581, -0.07465204, -0.06222337, 0.01743078, 0.12776802, 0.09864764, -0.01487866, 0.03529362, 0.13232034, -0.01328148, 0.09440556, 0.06241368, 0.03618008, -0.11342508, 0.09918994, -0.15651965, -0.07195813, -0.09057574, -0.10321549, 0.06875013, -0.00129774, -0.04545839, -0.07164564, 0.05073486, 0.34142092, -0.08255292, 0.12089149, 0.08211686, 0.21363957], - "lshr":[0.1238757, -0.02033522, 0.05549098, 0.11646183, 0.08761991, -0.12349915, -0.18941326, -0.08920491, 0.09122052, 0.03471606, 0.2897465, 0.07269037, 0.01238082, 0.07473343, 0.02699653, 0.08085709, -0.04658483, 0.2076412, 0.22355735, -0.03676752, 0.18093167, -0.15845503, -0.0710993, -0.02861892, -0.24865082, -0.00123379, -0.23955399, 0.13371961, -0.11877617, 0.07246234, 0.01312172, 0.01923358, -0.04966315, 0.1200467, -0.2137276, 0.10946998, 0.07409713, -0.12598129, 0.02809012, -0.09355168, 0.06742698, 0.08053191, 0.18937954, 0.00296521, 0.10038757, -0.19544551, 0.08368544, -0.07828917, 0.20687084, 0.01422358, 0.19612609, 0.03323235, -0.01736557, -0.2952406, 0.15087438, -0.07250606, 0.01719518, -0.01060284, 0.16445734, -0.16287296, 0.07179926, -0.14751296, 0.02352273, -0.17620452, 0.12871586, 0.01027796, -0.00240841, -0.08637159, -0.07440444, 0.02873684, 0.05644969, -0.07749362, 0.17137784, 0.09177881, -0.06086624], - "mul":[9.14543942e-02, 7.25680292e-02, 1.87143609e-01, 1.56122670e-01, 8.18791837e-02, -1.13938227e-01, -1.17102735e-01, 1.78440675e-01, -5.71394851e-03, 3.98688577e-02, -1.22035742e-02, 9.62941721e-02, 9.87940375e-03, 6.54331893e-02, -1.18242744e-02, 1.01057030e-01, -3.37237865e-02, 1.82104349e-01, 1.98254153e-01, 4.89455797e-02, -1.38579145e-01, -1.43827185e-01, -7.30315745e-02, -2.81286202e-02, -3.69295813e-02, -7.32784346e-02, -7.52561465e-02, 1.15158796e-01, -8.05188417e-02, 1.22851163e-01, 1.18959583e-01, -6.19116612e-03, 1.14142060e-01, 1.15443885e-01, -1.32043362e-01, 1.91231743e-01, 6.71850219e-02, -1.18121214e-01, 1.39134541e-01, -9.38180089e-02, 7.00822175e-02, 1.52467072e-01, 1.72531351e-01, 2.39370289e-04, 8.84519666e-02, -1.74602866e-01, 7.58597329e-02, -7.24562407e-02, 2.30801646e-02, 2.31582299e-02, 1.77945897e-01, 2.19754413e-01, -1.05254715e-02, -5.34405783e-02, 1.28701046e-01, -8.88467114e-03, 2.39838846e-02, -2.52107698e-02, 4.09773886e-02, -1.43636853e-01, 9.37281698e-02, -1.36706889e-01, 3.18117648e-01, -1.72676995e-01, 9.86104552e-03, 1.59371197e-02, -2.31163911e-04, -7.84823969e-02, -7.37200677e-02, 3.27852108e-02, 1.85986701e-02, -7.93214887e-02, 1.19079717e-01, 9.70832258e-02, -5.25254011e-02], - "or":[-0.15830125, 0.08118854, 0.06019896, 0.1351512, 0.0696514, -0.12829824, -0.12040509, -0.07483122, -0.05365232, -0.21453764, 0.01100464, 0.07939477, 0.01512126, 0.07680329, 0.20671816, 0.10159217, -0.03416578, 0.18844754, 0.2232867, 0.00390219, 0.17268041, -0.16189471, -0.07818128, -0.02745846, -0.03785938, -0.28434664, -0.23963155, 0.13414037, -0.03098747, 0.1290441, -0.04272285, 0.00627589, 0.15120292, 0.13505426, -0.14509544, 0.1633035, 0.07651295, -0.1345261, 0.15650204, -0.10334036, 0.08041331, 0.17568573, 0.18555732, -0.00240171, 0.09882613, -0.1697568, 0.08491044, -0.07938255, -0.00502023, 0.04242367, 0.19246665, 0.10571583, -0.01717717, -0.0940207, 0.19319834, -0.06771892, 0.03723063, 0.00987004, 0.08289062, -0.14470372, 0.07547856, -0.14796427, 0.03079064, -0.18788183, -0.06784894, 0.02374648, 0.00680319, -0.08787614, -0.0762485, 0.04015802, -0.31986576, -0.08643831, 0.14352895, 0.1116055, -0.09564826], - "phi":[-0.17533, -0.14122052, 0.25121832, -0.20197222, -0.02265841, 0.08878156, -0.12254399, -0.05334119, 0.17813319, 0.25582585, -0.24652013, 0.08741698, -0.20831233, -0.12509026, -0.19707216, 0.15587404, -0.07037015, 0.00634299, 0.02692973, 0.20398706, 0.09076547, 0.2106457, 0.02665563, -0.01256549, 0.20547326, -0.01408568, -0.11248078, 0.17035946, 0.00720961, -0.24428545, -0.19424082, 0.02588499, -0.09168262, 0.12671804, -0.13895495, 0.11016023, 0.06885135, -0.1585114, 0.1442796, -0.09209647, -0.25246575, -0.18171434, 0.07803512, 0.01651475, -0.05719611, -0.18895395, 0.13336438, -0.09516547, 0.04140934, -0.13787958, 0.14149408, -0.15089944, -0.02157312, 0.2192603, 0.02856141, -0.05521443, 0.0077216, 0.2731221, -0.09575493, 0.2032519, -0.12885517, -0.18518618, 0.16917716, -0.11144329, 0.25175345, -0.30578047, -0.07883886, 0.14204925, 0.26059705, 0.01635692, -0.2599762, 0.1671248, 0.07727495, 0.06118969, 0.27382395], - "ptrtoint":[0.13572109, 0.07109733, -0.01410782, 0.13761328, 0.06249858, -0.12742682, -0.03786812, -0.08852433, -0.00890332, -0.12647949, -0.23919484, 0.07803643, -0.29866624, 0.07854372, 0.0690124, 0.08534926, -0.03230691, -0.11528994, 0.2259676, -0.09829737, 0.10256737, -0.16430771, -0.0642257, -0.01210832, -0.12542038, 0.01087978, -0.2651048, 0.10121775, -0.12749597, -0.00404411, 0.08437401, -0.01521534, -0.05364794, -0.20650637, -0.15205501, 0.16177334, 0.08448336, -0.13946855, 0.15794401, -0.08243193, -0.05839634, 0.17580664, 0.19553919, 0.02601502, 0.14116347, -0.17160966, -0.09532923, -0.07157483, 0.20540062, -0.00341362, 0.20416199, 0.09911527, -0.01078249, -0.0624228, 0.14551571, 0.07151687, 0.04763724, -0.02011446, 0.16194499, -0.18160547, 0.13115011, 0.01976459, -0.01537652, -0.19834353, -0.14665273, -0.20727639, 0.03673945, -0.09134132, -0.15628532, -0.04004635, -0.02747078, 0.14147465, 0.17462312, 0.11279432, -0.07561264], - "resume":[0.16280797, -0.14593223, -0.12683636, -0.1562535, -0.03300981, -0.13968605, 0.16718441, -0.19515003, 0.01863662, -0.05534162, -0.01442544, 0.0425216, 0.0093952, -0.16576275, 0.03578432, -0.15065056, -0.06406866, -0.16523188, -0.05909818, 0.06044476, -0.0871481, 0.15487999, -0.18122765, 0.1956721, -0.04706432, 0.08488349, 0.04219154, 0.02599989, -0.02276746, -0.18513387, 0.12803178, -0.09826294, -0.11191379, 0.04426758, 0.11935913, -0.14695078, -0.00907954, 0.15606298, -0.13066523, 0.01243626, 0.07249606, -0.13709828, 0.10189614, 0.18291259, -0.04105699, 0.1736963, -0.12169949, 0.09442408, 0.20398152, 0.22682573, -0.08286698, -0.13903227, 0.09133334, 0.03095248, 0.11325783, 0.1569758, -0.17479569, -0.12558746, -0.12676957, -0.12449513, 0.17823087, 0.16940698, -0.06061083, -0.1153774, 0.11211671, 0.03377679, -0.05404395, 0.10726969, -0.120761, 0.01132012, 0.00449077, 0.00602859, -0.13664234, 0.00466423, -0.02339442], - "ret":[0.14368142, 0.0712266, 0.05669672, 0.13478386, -0.14595962, -0.12663847, -0.12403987, -0.09207936, 0.00078773, -0.20975904, 0.08747889, 0.07683876, -0.14989862, -0.18156855, 0.38113984, 0.05973466, -0.05483145, 0.00884139, -0.013859, -0.03841434, 0.05703019, -0.04955313, 0.04577729, -0.05112582, -0.25303054, 0.13709044, -0.06985793, -0.04175208, -0.06085019, 0.12376258, 0.08259401, -0.01146284, 0.05020906, 0.18525098, -0.15137392, 0.07154816, 0.06121736, -0.14056544, 0.16508178, -0.12329083, 0.22687763, 0.17450114, 0.18714464, 0.01847176, -0.02590629, -0.15461633, 0.0910584, -0.07975882, 0.03339317, 0.08106077, 0.10348453, 0.12415495, -0.01464526, -0.20166221, 0.23424618, -0.0058443, 0.13251036, -0.01039419, 0.19171973, -0.14341427, 0.11032798, -0.17445254, -0.21265155, -0.11035369, 0.09180369, -0.01410731, -0.05983369, -0.0549278, 0.11081824, 0.02046819, -0.04516792, -0.09715447, 0.14870624, 0.05914663, 0.10917712], - "sdiv":[7.54674971e-02, 2.70023555e-01, 2.15832815e-01, 1.51102781e-01, 3.86169888e-02, -1.27587810e-01, -1.64553642e-01, 2.08858803e-01, 2.49577500e-03, 3.39335836e-02, 2.95089424e-01, 7.44504854e-02, 1.75000988e-02, 7.48216212e-02, 4.57024798e-02, 1.14481322e-01, -5.15110120e-02, 1.97094589e-01, 2.28497684e-01, 1.89727977e-01, -2.03567356e-01, -1.53853878e-01, -7.04708546e-02, -2.87290998e-02, -4.15551029e-02, -8.37634057e-02, 2.48096928e-01, 1.39052629e-01, -1.18507713e-01, 1.37168303e-01, 4.37297896e-02, -2.56327417e-04, 1.03771754e-01, 1.18692242e-01, -1.97971940e-01, 2.48502731e-01, 5.65373003e-02, -8.69503245e-02, -9.03292373e-03, -2.25797057e-01, 7.20400363e-02, 4.09315303e-02, 1.83778912e-01, -2.47538835e-03, -2.83727050e-02, -2.00868785e-01, 8.99481177e-02, -7.83472061e-02, 4.22467515e-02, 2.67557669e-02, 1.77338138e-01, -1.42202228e-02, -1.59657858e-02, -6.30925298e-02, 3.13569121e-02, -2.22823601e-02, 6.28621271e-03, -1.85963176e-02, 1.17826000e-01, -1.24646917e-01, 1.02576114e-01, -1.52709767e-01, 2.57164501e-02, -1.40907198e-01, 1.74567476e-01, 1.61048099e-02, -5.03884954e-03, -8.63459408e-02, -7.52566457e-02, 3.38615589e-02, 1.36013612e-01, -8.77554864e-02, 1.03453219e-01, 7.68808499e-02, -6.49084374e-02], - "select":[0.05093412, 0.07767349, 0.07669216, 0.1312176, 0.0579063, 0.1616888, -0.11760561, 0.00115628, -0.04131674, -0.29780418, -0.01691337, 0.0748211, 0.0864482, 0.07403006, 0.25878662, 0.10279866, -0.01487916, 0.15694329, 0.22207598, 0.01221279, 0.02520609, -0.1521685, -0.06417656, -0.03086487, 0.12268542, 0.3565569, -0.08125142, 0.1072576, -0.02930279, 0.14090922, -0.14309497, -0.00379189, 0.15369308, 0.12072479, -0.11386253, 0.17081785, 0.0359251, -0.13158213, 0.15140608, -0.08365479, 0.04333765, 0.17864218, 0.09735203, -0.01021584, -0.1817566, -0.17009453, 0.10480749, -0.07720621, -0.06324099, 0.01645014, 0.13028447, 0.10660475, -0.02038397, -0.05975712, 0.02713404, -0.01552912, 0.07295278, 0.05679769, 0.02740115, -0.11240587, 0.07162624, -0.15834542, -0.32627442, -0.08725446, -0.07952213, 0.07846557, -0.01865849, -0.04569499, -0.0728619, 0.0374458, -0.27716625, -0.07809193, 0.11488006, 0.06656368, -0.06777868], - "sext":[-0.03718835, 0.08533189, 0.21354397, 0.13909821, 0.04430787, -0.13043992, -0.12707381, 0.14811471, -0.01397946, -0.24312808, -0.01538438, 0.08007284, -0.20212536, 0.07967917, 0.16868502, 0.10560705, -0.01859606, 0.16425593, 0.23104599, 0.04822871, -0.15584451, -0.16572693, -0.07367796, -0.02386475, -0.04161641, -0.28961626, 0.26639512, 0.13398732, -0.09589424, 0.14068675, 0.16089684, -0.01488031, 0.16961882, 0.11251253, -0.15109386, 0.20157905, 0.04388804, -0.14243662, 0.17028852, -0.17495492, 0.08312923, 0.18138759, 0.19254005, -0.00167047, 0.1016985, -0.17693631, 0.09644604, -0.07967581, -0.01462245, 0.00063264, 0.19925497, 0.10426001, -0.01645718, -0.0897459, 0.02190982, -0.00871549, 0.03981987, 0.01151098, 0.07275884, -0.13166158, 0.11194995, -0.15796044, -0.02378252, -0.17802656, -0.05159309, 0.03235529, 0.00206553, -0.0869719, -0.07645953, 0.05517219, 0.01411109, -0.08648386, 0.1488923, 0.11236069, -0.14168048], - "shl":[-1.21411718e-01, 8.12682733e-02, 7.26464316e-02, 1.38484403e-01, 8.17928985e-02, -1.24320365e-01, -1.29878476e-01, 1.89510286e-01, -6.82524173e-03, 4.69798781e-02, 7.76179358e-02, 7.87331015e-02, -1.99450791e-01, 7.40546957e-02, 1.56282917e-01, 1.49098694e-01, -3.80089432e-02, 1.97095275e-01, 2.20074877e-01, 9.85120013e-02, -1.51519790e-01, -1.56306505e-01, -6.62787706e-02, -2.89262943e-02, -8.50795880e-02, -3.77611667e-01, -8.08443353e-02, 1.29505768e-01, -9.56492350e-02, 1.34987608e-01, 1.17273629e-01, -8.01561028e-03, 2.01825440e-01, 1.25738055e-01, -1.46153197e-01, 2.18217447e-01, 7.04046711e-02, -1.39466003e-01, 6.33412227e-02, -1.05604395e-01, 7.39852190e-02, 1.70712352e-01, 1.86249197e-01, 1.75760695e-04, 9.54905152e-02, -1.82715610e-01, 8.42701495e-02, -7.70764053e-02, 3.44463770e-04, 2.22381260e-02, 1.92770571e-01, 6.70530349e-02, -8.68750829e-03, -5.87612167e-02, 1.35470673e-01, -9.91571508e-03, 3.54958773e-02, -1.26978569e-02, 3.80189577e-03, -1.57232955e-01, 1.05788536e-01, -1.48979709e-01, -6.13744035e-02, -1.79459959e-01, 1.58743337e-02, 1.66407768e-02, 3.78276110e-02, -8.67255181e-02, -7.59592950e-02, 3.41174081e-02, -1.17456488e-01, -8.46017748e-02, 1.42491326e-01, 8.54357481e-02, -6.05630279e-02], - "shufflevector":[-1.64276063e-01, -1.40854018e-02, 2.16989160e-01, 1.48834497e-01, -1.81232363e-01, 1.71089604e-01, -1.51962206e-01, 9.34694987e-03, -6.01843521e-02, 1.57123819e-01, 1.49263054e-01, 1.57006048e-02, 8.54564831e-03, -1.46307275e-01, -9.97107551e-02, 2.03836277e-01, -1.10085299e-02, 1.58312604e-01, 3.98286656e-02, 1.22957818e-01, -4.54752985e-03, -1.51905298e-01, 2.56421398e-02, -9.66223106e-02, 1.35936990e-01, 1.13613196e-01, 8.88981670e-02, 1.39288589e-01, 2.35020537e-02, 1.54158428e-01, 1.38836756e-01, -7.45062644e-05, 1.85534820e-01, 2.31408417e-01, -1.86368376e-01, 2.18553007e-01, -1.25940442e-01, 6.19565435e-02, 2.09610596e-01, -2.28297710e-01, 2.30249181e-01, 1.89029738e-01, -6.89853504e-02, -3.19687016e-02, -1.80848792e-01, 4.24141204e-03, 1.89942136e-01, -1.91565320e-01, -2.52943840e-02, 5.65835461e-02, 1.32085189e-01, 1.23422973e-01, -2.14130040e-02, -2.95120943e-02, 1.43252522e-01, -2.44392790e-02, 1.89641267e-01, 3.69141959e-02, 5.39628556e-03, -1.15757883e-01, 6.42104596e-02, -2.11238548e-01, 1.83569789e-02, -9.20821503e-02, -9.48524103e-02, 8.56385827e-02, -5.02256379e-02, -8.02270398e-02, 8.46109912e-02, 7.74170980e-02, 3.27805057e-02, -1.08585857e-01, 1.16238609e-01, 5.87845854e-02, 1.14851862e-01], - "sitofp":[0.05548016, 0.16714495, 0.21498686, 0.14356636, -0.16821964, 0.16527581, -0.15967155, 0.21070401, -0.01250376, -0.11125261, -0.06026782, 0.07956001, -0.13129172, -0.18479359, 0.08652773, 0.08131526, 0.15925482, 0.08148654, -0.00736642, 0.19463325, -0.20742258, -0.11578189, 0.02654804, -0.08633579, -0.05612461, 0.01452674, 0.11379433, 0.03724489, -0.12955493, 0.15072383, -0.0232376, -0.01797887, 0.20284739, 0.20505717, -0.18686672, 0.25398365, -0.11697914, -0.09353511, 0.19472948, -0.18606324, 0.13722429, 0.19458178, 0.03767281, -0.01490554, -0.15784514, -0.0030121, 0.1061831, -0.18870111, -0.04370302, 0.06840985, 0.12218294, 0.133711, -0.01636076, -0.05479606, -0.09695652, -0.01025795, 0.2093504, 0.08853228, -0.07362932, -0.06125485, 0.10777287, -0.17920133, 0.03073885, -0.09303376, -0.18211918, 0.09700941, -0.05694851, -0.0481168, 0.10195274, 0.11961144, 0.14820483, -0.10259698, 0.07829086, 0.06143153, -0.06575584], - "srem":[0.12748273, -0.01354557, 0.07656507, 0.13586837, 0.09215222, -0.12957662, -0.22408909, 0.21526249, 0.0899937, 0.03087448, 0.23878594, 0.07816898, 0.0165252, 0.07721527, 0.0565106, 0.08858381, -0.13782543, 0.2185999, 0.2350998, 0.20486632, -0.22521928, -0.16895708, -0.07120457, -0.03142672, -0.193668, -0.06093899, 0.098878, 0.13780232, -0.13592266, 0.13956556, 0.03245056, -0.01644238, 0.1208498, 0.11854354, -0.20298819, 0.27215648, 0.06262159, -0.13207191, -0.22367987, 0.18101601, 0.07210222, -0.035157, 0.19500516, -0.0082911, 0.04821047, -0.2052546, 0.0944626, -0.08101162, 0.05265743, -0.00286297, 0.2012179, -0.02560825, -0.01475919, -0.06332223, -0.21597023, -0.00943558, 0.00891592, -0.04312498, 0.11415429, 0.08646774, 0.10881357, -0.15501237, 0.02134495, -0.15064926, 0.14675559, 0.01146032, 0.0020576, 0.09925999, -0.07733848, 0.03300545, 0.05376984, -0.08198962, 0.17412202, 0.08533774, -0.06574512], - "store":[0.09998547, 0.07416256, 0.06472399, 0.12126696, 0.03879403, -0.12036075, -0.11504382, -0.06913467, -0.03769127, -0.33070236, -0.00644616, 0.07156026, -0.02137089, 0.07216891, -0.05470073, 0.09415297, -0.04082007, 0.1056991, -0.0013265, -0.00926145, 0.04998971, -0.14578499, -0.05182505, -0.02615017, 0.08348413, 0.31976137, -0.07019657, -0.05163203, -0.04972167, 0.12658256, 0.04289434, -0.0016057, 0.14311627, 0.12263075, -0.13941614, 0.13760482, 0.04816094, -0.12741822, 0.14878556, -0.11523844, 0.05825484, 0.1649721, 0.09197503, -0.0012878, -0.1629092, -0.1414969, 0.09324066, -0.07395344, -0.00317431, 0.01789259, 0.12094813, 0.10764453, -0.01553114, 0.11882594, 0.02442449, -0.01568008, 0.11022279, 0.03307666, 0.08506706, -0.10825977, 0.06488108, -0.15164001, -0.30984077, -0.08653892, -0.06201477, 0.01810287, -0.04473237, -0.04719033, -0.06153039, 0.03287021, 0.29479045, -0.07162003, 0.13225412, 0.05114779, -0.33301073], - "sub":[-0.13264543, 0.07865644, 0.0717167, 0.1342318, 0.05076935, -0.12322044, -0.12266772, 0.00524008, -0.00201612, 0.05315073, 0.00274359, 0.0742974, 0.0123115, 0.07594631, 0.21857306, 0.10421466, -0.02275163, 0.17884067, 0.21873002, 0.00927466, 0.00893607, -0.154156, -0.06820294, -0.02856713, -0.03866831, -0.2793768, -0.06824332, 0.13080892, -0.08803294, 0.13524993, 0.21245252, -0.01117309, 0.20007995, 0.12509634, -0.14541206, 0.19173518, 0.0613077, -0.13841055, 0.15438707, -0.14274515, 0.07382213, 0.17015299, 0.18052574, -0.00206174, -0.15260881, -0.17803495, 0.08986183, -0.07603207, -0.0163452, 0.02869452, 0.186938, 0.07764658, -0.01459899, 0.10072613, 0.02469735, -0.01351501, 0.03415474, 0.0135162, 0.04113324, -0.12325168, 0.11012445, -0.14946231, 0.04155808, -0.1440628, -0.06376708, 0.01838643, 0.00198335, -0.07941123, -0.07066227, 0.0376416, 0.24301553, -0.0862716, 0.1351057, 0.0891021, -0.3352], - "switch":[-0.16398937, -0.1353046, 0.08524002, 0.1561178, -0.22488637, -0.14185904, -0.10160676, 0.17193311, -0.05567684, -0.01794963, -0.22830375, 0.08948597, 0.1698675, 0.08543108, -0.18870668, 0.13391507, 0.1591491, 0.21046144, 0.02533695, -0.05875827, -0.15551412, 0.19997434, 0.19250119, -0.03397122, -0.05150964, -0.15923595, 0.0701151, 0.14852029, -0.01560177, 0.15765266, -0.2304326, -0.01416684, -0.05115065, 0.12840182, -0.17300242, -0.03878057, 0.07419615, -0.16339742, 0.18437031, -0.14087205, -0.2714784, -0.17547078, -0.01152283, -0.00396952, 0.11226111, -0.18184493, 0.1166721, -0.09108577, 0.23214185, 0.07350235, 0.14699937, 0.08840676, -0.01411979, 0.2082167, -0.10539865, -0.01378542, 0.04486391, -0.01463741, 0.14504644, 0.19353367, 0.11889812, -0.19718692, -0.04798679, -0.12421229, 0.29124823, -0.32081923, -0.00218598, -0.1037329, -0.08444938, 0.04092982, -0.03067664, -0.1606894, 0.07095047, 0.08663001, 0.25936154], - "trunc":[0.11878826, 0.08377917, 0.05513672, 0.14270523, 0.07370453, -0.14921571, -0.16542384, -0.07493053, -0.00377195, -0.20950364, 0.12958477, 0.07888171, -0.00595982, 0.07865481, 0.16519356, 0.10834014, -0.04326443, 0.19355299, 0.23304398, 0.07385943, -0.11257231, -0.16919497, -0.082918, -0.0285878, -0.05886409, -0.25552744, 0.08462781, 0.13503358, -0.09682789, 0.12824969, 0.08024148, -0.01201469, 0.15677036, 0.14443342, -0.1907149, 0.23856063, -0.00528661, -0.14044978, 0.16222948, -0.10748056, 0.08127003, 0.17631039, 0.19577822, -0.01176626, 0.09836395, -0.16917923, 0.10726047, -0.10182234, 0.20931682, 0.04668214, 0.2017859, 0.11306392, -0.018347, -0.06246869, 0.24337131, -0.07117373, 0.03053473, -0.00658053, 0.03026612, -0.16877551, 0.10491424, -0.17555256, 0.14634104, -0.18189284, -0.11786141, 0.02876267, -0.00210879, -0.08721989, -0.07824761, 0.03958495, 0.20243248, -0.09376816, 0.11082744, 0.12096685, -0.12131985], - "udiv":[0.08154505, 0.17510523, -0.19362096, 0.08671232, 0.11330891, -0.19157314, -0.2145219, -0.06051004, 0.1371807, 0.04572224, -0.06733968, 0.07146493, 0.00681373, 0.07493957, -0.02997438, 0.08688152, -0.04591569, 0.23223788, 0.22175628, 0.01500544, 0.14273156, -0.16111672, -0.08531193, 0.19467805, -0.00517966, -0.06020893, -0.06077334, 0.13201268, -0.12358853, 0.00868457, 0.06033499, 0.01196855, 0.14756525, 0.11571166, -0.11228922, 0.13696799, 0.21417981, 0.20094916, -0.21627706, 0.18220317, -0.06209835, 0.1076472, 0.20395155, 0.00197578, 0.13577849, -0.20195886, 0.0833538, -0.07554612, 0.00410905, 0.00158071, 0.1938367, 0.02883399, -0.01710817, 0.03711469, 0.13843457, -0.06804645, -0.00379174, -0.00144552, 0.13146468, -0.18377277, 0.07351629, -0.14530504, 0.01042824, -0.1766743, 0.01462858, 0.01206683, -0.12541275, 0.09634796, -0.07832152, 0.02791307, 0.02765011, 0.19757621, 0.16267568, 0.12346987, -0.0413983], - "uitofp":[-0.15078814, 0.1826288, 0.11165173, 0.13953921, -0.1842304, 0.16399114, -0.11256697, -0.05694728, -0.04820754, -0.17459138, -0.12022546, 0.08202647, 0.05924561, -0.17365019, 0.1614662, 0.07272313, 0.14744736, 0.09281041, -0.00596566, -0.01817355, 0.09689283, -0.0900236, 0.03450679, -0.0848825, 0.17167987, -0.07416291, 0.09088556, 0.07786386, 0.08914284, 0.14832556, -0.07537761, 0.00234627, 0.15249911, 0.19451788, -0.15017514, 0.14780688, 0.11764529, -0.02274906, 0.1920297, -0.17293543, 0.22891366, 0.1852529, 0.0128901, -0.00331702, -0.18161494, -0.0123833, 0.10250985, -0.1877487, -0.02335341, 0.06747307, 0.12578565, 0.12541758, -0.01838141, -0.08433985, 0.26602918, -0.01791255, 0.18907419, 0.04615575, 0.22383852, -0.13418758, 0.07736338, -0.18702815, 0.06279426, -0.09547485, -0.14973089, 0.09295561, -0.04817062, -0.05371717, -0.01254407, 0.12052637, 0.14356695, -0.1381116, 0.17813013, 0.0863996, -0.10018482], - "unreachable":[1.6576199e-01, -1.7907834e-02, -5.7712890e-02, 9.4339609e-02, -9.3380272e-02, -1.9464681e-01, 7.7050277e-03, -1.9517663e-01, 2.6435368e-03, 9.1913566e-02, 1.3639191e-02, 7.0288680e-02, -3.2517979e-01, 7.4262276e-02, -8.9507200e-02, -1.7191246e-01, -5.2555885e-02, -1.4688279e-01, 1.0220077e-01, -4.8814032e-02, -1.3367063e-01, -6.1610699e-02, -1.8777388e-01, 2.0192388e-01, 1.7102915e-01, 1.3610463e-01, -2.6177135e-01, -3.3939917e-02, -5.4787207e-02, 1.1302987e-01, 1.0523112e-01, 8.6424664e-02, -3.6340270e-02, 4.7679577e-02, 1.0370419e-02, 3.9357133e-03, 1.5754176e-02, -4.6523277e-02, -1.2651871e-01, -5.0250064e-03, -2.1445632e-01, -1.5226135e-01, 1.7948903e-01, 1.9091401e-01, 1.1402745e-01, -1.9978039e-01, -8.4826022e-02, -3.7182060e-03, 2.1397528e-01, -1.9490053e-03, 3.8303059e-02, 5.5778958e-02, -1.1436568e-02, 7.7554718e-02, 3.7896037e-02, 7.5804755e-02, -1.7246161e-02, -1.4188807e-01, 4.9074650e-02, -1.9401214e-01, 1.9030276e-01, 1.1096356e-01, -1.5253071e-01, -1.9243342e-01, 1.6415399e-01, 2.7355237e-02, 7.6516271e-03, -9.3317330e-02, -1.7084104e-01, 3.9767768e-02, -1.1136789e-01, -9.4884530e-02, 2.1568926e-04, 1.3515340e-01, 8.2443848e-02], - "urem":[0.1196936, 0.18855006, -0.20257552, 0.01738752, 0.15161008, -0.14784957, -0.02992235, -0.0674265, 0.14330001, -0.00208072, -0.08096982, -0.06099883, 0.01042207, 0.1028357, 0.05679855, 0.08465453, -0.05227959, 0.21925992, 0.22556421, -0.059273, 0.1825322, 0.17631407, -0.08938511, -0.0277707, -0.2572769, -0.06195913, -0.24406035, 0.13713413, -0.13801506, 0.02009896, 0.02613169, 0.01552499, 0.14668229, 0.12454724, -0.14865053, 0.09922966, 0.2130675, -0.11827406, 0.01006878, -0.09671234, 0.06660412, 0.0945213, 0.20740281, 0.00239918, 0.14173026, -0.1632753, 0.08587474, -0.07923763, 0.02992029, 0.2015828, 0.2007573, -0.11056472, -0.01871637, -0.06330916, 0.14348209, -0.07483656, 0.00636646, -0.01837422, 0.17499712, -0.17495239, 0.07653105, -0.1475833, 0.02116938, -0.17941074, 0.1734715, -0.01114943, 0.03780977, -0.15019819, -0.07816306, -0.08282368, 0.05129486, 0.19702028, 0.18443331, 0.10329096, -0.06307837], - "xor":[0.10254283, 0.18058334, 0.05268734, 0.1032732, 0.10089786, -0.1597949, -0.11678528, -0.07392009, 0.00164178, -0.3411041, -0.05760791, 0.14810716, 0.01395016, 0.07759612, 0.0478027, 0.10309431, -0.04646098, 0.22321403, 0.22373965, -0.0018288, 0.20699704, -0.16503152, -0.18555428, -0.02829313, -0.04340088, -0.09629976, -0.07565032, 0.12829013, -0.1184216, 0.05327054, -0.2091556, 0.01997479, 0.14617224, 0.12249397, -0.11211042, 0.17021945, 0.21050954, -0.1381692, 0.0287271, -0.09731391, 0.07712973, 0.0957914, 0.19754209, 0.00280226, -0.22004068, -0.19650316, 0.08103254, -0.07884329, 0.01431314, 0.01774853, 0.20215395, 0.04173042, -0.01757454, -0.06132229, 0.14705223, -0.07607429, 0.01276137, -0.02355135, 0.1687547, -0.16499719, 0.07755739, -0.15042275, 0.04714211, -0.19073205, 0.01791589, 0.00800123, -0.00147503, -0.08897253, -0.07817551, 0.02938494, 0.07296588, -0.08095124, 0.19651005, 0.12599285, -0.06209126], - "zext":[0.07005657, 0.08003729, 0.07546207, 0.13528231, 0.02506938, -0.12476956, -0.14581475, 0.00614589, -0.00503257, -0.24861531, 0.09526423, 0.07557298, 0.01302374, 0.07628334, 0.04175617, 0.09726538, -0.02312024, 0.16171065, 0.22212435, 0.0079543, 0.07804493, -0.15814242, -0.06840046, -0.03052379, -0.0414926, 0.26214772, -0.07542547, 0.12756911, -0.08823611, 0.13954116, -0.18143456, -0.01209466, 0.15410358, 0.20636739, -0.1831482, 0.19437483, 0.06973958, -0.13698913, 0.19432417, -0.16362838, 0.09032086, 0.18127388, 0.18287036, -0.01740397, -0.17513882, -0.16302226, 0.10199076, -0.07994232, 0.029813, 0.04575716, 0.19189098, 0.10111669, -0.01755602, -0.0832833, 0.1540967, -0.01496344, 0.04155953, 0.00536162, 0.0699449, -0.13122603, 0.10352977, -0.18122241, 0.17052825, -0.15459219, -0.06903189, 0.05887637, -0.00081859, -0.08415917, -0.07304011, 0.08401199, -0.25388402, -0.09779947, 0.12506351, 0.09557163, -0.12431429] + "Add":[0.09571152, 0.08334279, 0.07070262, 0.14084256, 0.04825167, -0.12893851, -0.12180215, -0.07194936, -0.05329844, -0.28276998, 0.00202254, 0.07488817, -0.16139749, 0.07618549, -0.06084673, 0.10536429, -0.03031596, 0.16402271, 0.22730531, -0.0015432, 0.01986631, -0.15808797, 0.03030382, -0.04201249, 0.01689876, -0.30041003, -0.06479812, 0.1282431, -0.09032831, 0.14007935, -0.23540203, 0.00552223, 0.15325953, 0.13147154, -0.15204638, 0.1616615, 0.05758473, -0.1385157, 0.16438901, -0.14482859, 0.07895052, 0.18407233, 0.15283448, -0.00081216, -0.17934133, -0.16779658, 0.09044863, -0.18453072, -0.00552684, 0.01191218, 0.18504514, 0.13140059, -0.0174882, -0.18127315, 0.02269725, -0.02048657, 0.10858727, 0.0074029, 0.09485064, -0.13431476, 0.07491371, -0.17498694, -0.32914585, -0.14159656, -0.03594542, 0.04091231, 0.00298631, -0.08933277, -0.07178984, 0.04144038, 0.12151367, -0.09504163, 0.13691336, 0.07825345, 0.13958281], + "Alloca":[0.12644756, -0.20912014, 0.07298578, 0.13963142, 0.03932726, -0.12778169, -0.13084207, -0.09090705, -0.01497083, 0.0646746, 0.14847252, 0.08546949, -0.11579383, 0.07812478, -0.16431178, 0.08578802, 0.06094746, -0.1239017, -0.02789196, -0.01074964, -0.1738938, -0.1629063, -0.07137732, -0.02845656, 0.1728318, 0.13779363, -0.06250989, 0.03479109, -0.08423121, 0.14009888, 0.09620709, -0.02287545, -0.04616966, -0.19591278, -0.19636007, 0.21825573, 0.07949521, -0.14614704, 0.17752613, -0.15099092, -0.04518029, 0.17774306, 0.18947133, -0.00197501, -0.12619424, -0.18458585, -0.09960615, 0.01162648, 0.21306573, 0.0468024, 0.201505, 0.09970672, 0.06599383, 0.17757463, -0.11899275, 0.10299123, 0.06038174, -0.07116731, -0.15743989, -0.1258558, 0.1535076, 0.01872367, -0.14336765, -0.19708565, -0.26796287, 0.02628843, -0.0009325, -0.08809827, -0.12970725, 0.17223337, -0.10651242, -0.09162157, 0.03264611, 0.0911452, 0.09506542], + "And":[-0.12902537, 0.07848564, 0.07048505, 0.13578993, 0.03570583, -0.1242408, -0.12619697, -0.06914084, -0.0515872, 0.13225996, 0.01673339, 0.0763608, 0.18325369, 0.07690141, -0.09591792, 0.10353354, -0.02401061, 0.16493416, 0.21942355, -0.00400911, 0.03811587, -0.15406959, -0.07134877, -0.02946596, -0.03854588, 0.28656727, -0.06625008, 0.12780443, -0.04631379, 0.13919763, -0.15808977, -0.00312698, 0.14692454, 0.18495218, -0.14863448, 0.13449706, 0.06471325, -0.13883992, 0.17630532, -0.16833898, 0.07391811, 0.17909151, 0.18229873, -0.00381102, -0.17680968, -0.1645554, 0.10016466, -0.07963493, 0.00130218, 0.05646244, 0.18222143, 0.10511146, -0.0191175, -0.08713559, 0.25423968, -0.02557301, 0.04319789, 0.03259414, 0.07209402, -0.13169754, 0.07424775, -0.17216511, -0.32057068, -0.13833733, -0.0658454, 0.02420194, -0.04393166, -0.08238692, -0.07023077, 0.04014502, 0.20101993, -0.09093616, 0.13076238, 0.09114857, -0.06483845], + "AShr":[0.16414718, -0.02078147, 0.07353837, 0.14210321, 0.08068018, -0.13586298, -0.15728961, -0.10365791, 0.00359197, 0.04608767, 0.35770142, 0.08003625, 0.00944533, 0.08471741, 0.05809571, 0.09202059, -0.18349345, 0.22169511, 0.24418135, 0.19192688, -0.1956347, -0.17401719, -0.07583863, -0.02781139, 0.0952112, -0.01444751, -0.27259794, 0.14392436, -0.13541143, 0.1410963, 0.04314299, -0.01641751, -0.05448177, -0.22287542, -0.2131822, 0.25112826, 0.06918604, -0.14414005, 0.060288, -0.09658266, -0.09122665, -0.02779044, 0.20349248, 0.0041391, 0.10610974, -0.20890503, -0.09881835, -0.07368057, 0.22467837, 0.00075097, 0.2147348, -0.02612463, -0.01696278, -0.0649786, 0.15041149, 0.02361087, 0.0211603, -0.03706622, 0.18296233, -0.14298625, 0.14614436, 0.02273145, 0.0209446, -0.21062987, 0.16911499, -0.03668665, 0.00197532, -0.09607943, -0.08398084, 0.02006913, 0.05739584, -0.07919859, 0.19634944, 0.11082727, -0.06584227], + "BitCast":[0.1675692, -0.12870269, 0.04048132, -0.1670965, -0.1279611, 0.02615386, -0.16829294, -0.09034907, 0.10913523, -0.07819421, 0.23986322, -0.05966561, 0.08410738, 0.19072439, 0.06047394, 0.02999627, -0.16747619, -0.06076627, -0.02673951, -0.1619169, 0.06443421, -0.13788716, -0.05644303, 0.01361013, -0.06858975, -0.06005004, 0.10011288, -0.05508338, -0.10613093, -0.11281271, -0.00758647, -0.12425531, 0.05333719, -0.16881412, -0.20088236, 0.06015657, -0.16405901, 0.06226884, 0.09171099, -0.09500738, 0.07907875, 0.0776544, -0.18457057, -0.11278627, -0.12111131, -0.10180638, 0.18328871, 0.18770072, 0.20346186, 0.10305139, -0.18344335, 0.10693213, -0.10920919, -0.05994263, 0.20354497, -0.03093485, 0.14214055, 0.00580597, 0.10480052, -0.09955201, -0.134185, -0.02904563, 0.00175069, 0.17646657, 0.01348841, -0.02030338, -0.06537742, 0.10032237, 0.15315783, 0.0102667, 0.07717734, -0.01060431, 0.14727928, -0.16261302, -0.06770234], + "Br":[0.11499645, 0.0824301, 0.07218035, 0.13258332, -0.13419574, -0.12916718, -0.12626709, -0.06741403, -0.02857593, -0.2543893, 0.02193022, 0.0760875, -0.1562702, 0.07712954, 0.3149361, 0.10217083, -0.041038, 0.16601022, 0.01906607, -0.02043359, 0.05471838, -0.15233372, -0.06945753, -0.02313732, -0.07342829, 0.3331809, -0.05246306, -0.0269839, -0.05435036, 0.13908924, 0.32604694, 0.00170966, 0.14997493, 0.13026518, -0.14908995, 0.12238151, -0.06773318, -0.13566032, 0.16068587, -0.12842499, 0.04970508, 0.17827724, 0.09729939, -0.00447832, -0.1739753, -0.16429187, 0.09886666, -0.08058207, 0.00714044, 0.04585538, 0.13424252, 0.11376464, -0.01675582, 0.17901348, -0.00653374, -0.01570439, 0.13032894, 0.01734108, 0.16833901, -0.1173776, 0.07662185, -0.15942436, -0.21173944, -0.10505079, 0.0597497, 0.03491669, 0.00338842, -0.04969047, -0.07644061, 0.04528612, 0.254365, -0.09514527, 0.12015092, 0.08262096, -0.02352029], + "Call":[0.10815012, -0.12419116, 0.18759736, -0.1905027, 0.01619313, -0.13483052, -0.12278763, -0.07051246, -0.0083437, 0.25107145, -0.16601063, 0.08127163, -0.17432374, -0.18380919, 0.24335551, 0.07208319, -0.04401246, 0.11606008, -0.02733191, 0.02098145, 0.019888, -0.13705409, -0.07569158, -0.03072285, 0.16870692, -0.09787013, -0.09340432, 0.01931342, -0.03557841, 0.14359893, -0.1592094, -0.00055867, 0.159316, 0.1099042, -0.11837319, 0.08741318, 0.03364393, -0.12831019, 0.10450637, -0.12699029, -0.20213994, 0.18390144, 0.11092624, -0.00209971, -0.13063665, 0.19996215, 0.09006448, -0.07840014, 0.22549215, 0.02587176, 0.13374338, 0.11009877, -0.01874998, -0.21446206, 0.02377797, -0.01036531, 0.05427047, 0.01418843, 0.00771817, -0.12639529, -0.10334941, -0.12244401, 0.30014148, -0.09857437, 0.21212636, 0.03429029, -0.04947309, 0.1023307, -0.07743628, 0.03006962, -0.24868701, -0.02357339, 0.11574048, 0.06895301, -0.363474], + "ExtractElement":[-1.62098512e-01, -2.00751424e-02, 1.71776459e-01, 1.38723463e-01, -1.60769299e-01, 9.30800363e-02, -1.24304645e-01, 1.45934001e-01, -5.04420400e-02, -7.54220188e-02, -5.30924797e-02, 8.55294541e-02, 1.17488159e-02, -1.82809234e-01, 9.37484950e-02, 8.38199258e-02, 1.26266479e-01, 9.31843743e-02, -2.26742271e-02, 6.50950940e-03, 5.02749532e-03, -1.14133619e-01, 1.80842891e-01, -9.63811725e-02, 1.67923152e-01, -5.84629439e-02, 1.04362026e-01, 8.92093012e-05, 7.93750137e-02, 1.39107972e-01, -8.40696543e-02, -1.59506593e-02, 1.99361086e-01, 1.93857521e-01, -1.46850392e-01, -1.78695560e-01, 9.88712162e-03, -1.40836969e-01, 1.77736521e-01, -1.61047727e-01, 3.51648539e-01, 1.79638579e-01, 1.49385989e-01, -6.06128015e-03, -1.72102928e-01, -1.81016047e-02, 1.01466164e-01, -1.28312945e-01, -8.05212185e-02, 6.28385469e-02, 1.15654446e-01, 1.91848025e-01, 3.03963851e-02, 3.55794169e-02, 1.40873834e-01, -1.44319711e-02, 1.85423180e-01, 1.16111919e-01, -7.47816712e-02, -1.14719503e-01, 1.02934733e-01, -1.83810964e-01, -2.64400076e-02, -8.99282843e-02, -1.90383971e-01, 7.31386840e-02, -4.36249487e-02, -4.71482053e-02, 1.07486300e-01, 1.09736443e-01, 4.15226035e-02, -1.42309800e-01, 8.96709636e-02, 6.64985999e-02, -6.13647103e-02], + "ExtractValue":[0.08820406, -0.0182279, 0.01493346, -0.17219813, 0.02927338, -0.17379265, -0.05663937, -0.06805898, -0.21235467, -0.01969833, -0.15152055, -0.18049374, 0.01062911, 0.07935719, -0.01993761, 0.12405304, -0.03198355, 0.13872959, 0.18017697, -0.0100032, 0.22617207, -0.21553156, -0.18403597, 0.10906533, 0.17709404, 0.07438782, 0.0875822, -0.22567064, -0.00636844, 0.06691552, 0.05859367, -0.06149556, 0.15721355, 0.01889951, 0.2164152, -0.07916643, -0.03927743, -0.02665933, 0.13756634, -0.08835335, -0.01159343, -0.19749148, 0.09438482, -0.1696074, -0.18197437, 0.19907822, -0.20855112, 0.21903005, -0.2204043, -0.07439119, 0.1308343, 0.10343243, -0.10401972, 0.02784402, -0.12545246, -0.18498465, 0.02385085, 0.22105947, -0.01296441, 0.19779074, -0.09320201, -0.07345647, -0.06985376, -0.0657003, -0.15406364, 0.14981052, 0.01336148, 0.18544021, -0.07248794, 0.0511543, -0.00308717, 0.01915094, 0.079139, 0.19975829, -0.06093699], + "FAdd":[0.0851364, -0.01757606, 0.20865884, 0.17407735, -0.17661206, 0.16181652, -0.11895371, -0.06142977, -0.05126655, 0.04448467, -0.03589934, 0.11921146, 0.0143434, -0.18255684, 0.05196553, 0.10967412, 0.15810761, 0.13785522, -0.01255003, -0.00134187, 0.03563518, -0.12446801, 0.18817455, -0.08609993, 0.1893248, 0.13434686, 0.25903776, -0.00467659, 0.09800702, 0.14749499, 0.03458502, -0.00238901, -0.1395337, 0.19306736, -0.11638073, 0.10491668, 0.04428702, 0.18128034, 0.1797104, -0.1929282, 0.07353631, 0.19062985, 0.10042762, -0.0040207, -0.18379262, 0.07060277, 0.09594815, -0.18272707, -0.12928157, 0.07631373, 0.13005428, 0.24108389, -0.01617561, -0.05803563, 0.02686582, -0.02223067, 0.21217403, 0.17594706, 0.00500477, -0.07345455, -0.08176229, -0.19486704, 0.02177307, -0.09052874, -0.14158368, 0.0890988, -0.06339125, -0.04612265, 0.10199347, 0.11777309, 0.07302366, -0.13303186, 0.09683178, 0.05031883, -0.05881981], + "FCmp":[1.02981135e-01, -2.43355539e-02, 5.85255250e-02, 1.09401904e-01, -1.87941462e-01, 1.74530044e-01, -1.20533399e-01, -8.64934921e-02, -5.54629341e-02, 1.41877215e-02, 4.80354428e-02, 1.56707644e-01, 2.56910548e-02, -1.94340080e-01, 5.11265621e-02, 8.82050097e-02, 1.67082191e-01, 1.14665776e-01, -2.00159680e-02, -1.82088744e-02, 2.09244549e-01, -1.15076765e-01, 2.03621030e-01, -8.38057026e-02, -4.32270877e-02, 6.39017820e-02, -6.50197491e-02, -2.72039324e-03, 8.68055448e-02, 1.25798717e-01, -4.21847135e-01, 2.64590848e-02, 1.56372517e-01, 2.14883089e-01, -1.12701654e-01, 9.43767577e-02, -1.97456375e-01, -1.72886148e-01, 2.04119727e-01, -1.56766623e-01, 7.38008767e-02, 2.05716744e-01, 3.48394439e-02, -2.48072352e-02, -2.03255862e-01, 5.07165631e-03, 1.12850599e-01, -1.94697857e-01, -6.29984289e-02, 8.21878910e-02, 1.23685144e-01, 1.40430763e-01, -2.20402889e-02, -6.55216798e-02, 2.90598303e-01, -7.66792744e-02, 2.16097474e-01, 6.28568381e-02, 2.69129931e-04, -1.17002167e-01, -1.60454452e-01, -2.07048669e-01, 2.62669493e-02, -9.61467475e-02, -1.88501909e-01, 8.80606323e-02, -5.39420024e-02, -5.08916602e-02, 1.09891914e-01, 1.21375419e-01, 5.10863326e-02, -1.43003076e-01, 8.39024931e-02, 9.51330177e-03, -6.65674359e-02], + "FDiv":[-0.14435205, -0.02003789, 0.07479589, 0.13465217, -0.18792528, 0.16504793, -0.12187403, 0.00537306, -0.04864043, 0.04958175, -0.14890797, 0.10156095, 0.01710029, -0.1809697, 0.06765524, 0.18452686, 0.16923915, 0.11264159, -0.01412142, -0.00287484, 0.01297035, 0.06755029, 0.18517323, -0.08975757, 0.16194478, 0.04174679, 0.10903918, 0.00072231, 0.10999232, 0.14989018, 0.05669819, -0.00733533, 0.20606744, 0.22580206, -0.14587933, 0.13480443, 0.05984581, -0.19580479, 0.20258778, -0.17146486, 0.07523733, 0.19139282, 0.03738374, -0.01550991, -0.21507922, 0.07425626, 0.10224851, -0.18437587, -0.06662318, 0.07977687, 0.12355862, 0.1434375, -0.01888226, 0.03870944, 0.07555477, -0.01191964, 0.23488866, 0.06922436, -0.07203218, -0.06884275, 0.07191673, -0.19515742, 0.02168754, -0.08983592, -0.20972523, 0.08903123, -0.05095004, -0.04967143, 0.0985181, 0.15771264, 0.09441628, -0.14769785, -0.16405083, 0.05066825, -0.058015], + "FMul":[-0.05690098, -0.02700638, 0.20705073, 0.16630849, -0.17719169, 0.16012336, -0.12955493, 0.19698587, -0.04035136, -0.03197788, 0.08116172, 0.1013689, 0.01416616, -0.17855197, 0.15503113, 0.13990149, 0.15355295, 0.12397105, -0.01912402, 0.01684221, 0.00669227, -0.11869009, 0.17604592, -0.05788622, 0.10467764, -0.0807798, 0.10300152, 0.10780353, 0.08334652, 0.1446782, 0.03546653, -0.00421023, 0.19682531, 0.19603632, -0.1466306, 0.12923796, 0.06296455, -0.14397427, 0.183406, -0.19625223, 0.08244827, 0.1860209, 0.10110238, -0.002166, -0.18034802, 0.06406105, 0.09568714, -0.17962225, -0.05463478, 0.04498994, 0.11928298, 0.1694295, -0.01222703, 0.14453876, 0.13506988, -0.01149808, 0.20273286, 0.05309585, -0.07139173, -0.07370458, 0.09957068, -0.19369006, 0.02577178, -0.09011577, -0.21375039, 0.07624438, -0.04969844, -0.04844297, 0.08409201, 0.11113621, 0.14570779, -0.13936704, 0.07202481, 0.05272412, -0.05747499], + "FNeg":[-0.04075071, -0.09381824, 0.17104743, 0.0744117, -0.15771168, 0.16444896, -0.11586417, 0.00200867, 0.17323531, -0.10421973, -0.05619403, 0.07496857, 0.05573901, -0.18903743, 0.06586835, 0.03499747, 0.17244707, 0.02476844, -0.02552369, 0.00063759, 0.04312319, -0.04501259, 0.1850581, -0.14339973, -0.04433612, 0.01609048, 0.10461161, -0.12243931, 0.07718915, 0.15313269, 0.12116063, -0.03062805, 0.21040255, 0.21582894, -0.10389283, 0.09344483, -0.20219979, -0.20113027, 0.19945832, -0.17248249, 0.07845841, 0.19814597, 0.06085683, -0.02476168, -0.18729973, 0.0674377, 0.1058675, -0.04973035, -0.10124692, 0.12834774, 0.0900365, -0.17527112, 0.09901146, -0.05764115, 0.03708475, 0.13003437, 0.2325445, 0.19712777, -0.07403741, -0.05580256, 0.18192469, -0.19122703, -0.05592606, 0.09128745, -0.15161441, 0.08734331, -0.0963953, -0.0377482, 0.18287936, 0.16522603, 0.03490613, -0.13519889, 0.08505893, 0.02470117, -0.06158587], + "FPExt":[0.1312062, -0.0272035, 0.1562131, 0.11956131, -0.18370572, 0.16904335, -0.18538451, -0.0905571, -0.05687085, -0.12067703, 0.15717801, 0.06977441, 0.04604319, -0.18692835, 0.07965986, 0.03840762, 0.17120989, 0.03048515, -0.02593113, -0.02722386, 0.0637762, -0.08012746, 0.03968937, -0.09751038, -0.04150679, -0.05797326, 0.09053179, -0.06100635, 0.01466092, 0.1521789, 0.0178679, 0.00468684, 0.09077137, 0.22244066, -0.21890686, 0.09471557, -0.18849488, 0.06589299, 0.20329474, -0.20006016, 0.06712949, 0.19578859, -0.00594554, -0.03142307, -0.18011327, 0.00516408, 0.18754548, -0.18884791, 0.2184627, 0.09512166, 0.07513344, 0.12641825, -0.0237517, -0.06020509, 0.15404698, -0.02384854, 0.22717056, 0.11279562, 0.16759154, -0.09342691, -0.09703359, -0.19393681, -0.06580188, 0.190172, -0.21666776, 0.09756065, -0.06633368, -0.04663929, 0.16539453, 0.16365078, 0.04338961, -0.1387515, 0.07042016, 0.03850469, -0.06256048], + "FPToSI":[-0.09471355, -0.01413281, 0.20098655, 0.17478812, -0.0103814, 0.11870264, -0.10561193, 0.19406088, -0.04215302, 0.09856935, -0.05858651, 0.11069191, -0.02667271, -0.17638545, 0.00591833, 0.12538631, 0.1609231, 0.143028, 0.00411847, 0.06113226, -0.1577999, -0.12172183, 0.18763137, -0.04490714, 0.0262733, 0.12005143, 0.08305117, -0.00109107, 0.03972085, 0.13256785, 0.12486281, -0.00920427, 0.19794717, 0.13488762, -0.08073806, 0.11790548, -0.1865304, -0.18761554, 0.15602915, -0.1440169, -0.01538679, 0.18490645, 0.05900477, -0.01250085, -0.17872328, 0.07583775, 0.09906318, -0.16909951, -0.12062778, 0.03089247, 0.11974704, 0.23940024, -0.00561649, 0.03862159, 0.13437317, -0.0128777, 0.2149731, 0.07683202, -0.10922348, -0.04304254, -0.20104879, -0.16371554, -0.08326109, -0.08942039, -0.03989649, 0.07596397, 0.18141732, 0.08706582, -0.06605583, 0.09984156, -0.05919264, -0.13918152, -0.11102735, -0.04074531, -0.05989955], + "FPToUI":[0.13186027, -0.02009563, 0.05399049, 0.22092278, 0.0764356, -0.12116565, -0.10575569, -0.08263665, -0.05279351, 0.00392524, -0.06554782, 0.15926358, 0.01012308, -0.18726377, 0.02134197, 0.12730621, -0.05603928, 0.1433069, -0.21253656, -0.1455532, 0.23767456, -0.13623604, 0.21878564, -0.05533312, -0.02895407, 0.03911315, -0.2773476, -0.00738798, 0.08483762, -0.14270262, 0.04603437, 0.21681121, -0.20425414, 0.12532364, -0.04144387, -0.1759266, 0.06860236, -0.14378744, 0.16322674, -0.09162073, -0.04966446, 0.1867569, 0.11250684, 0.04158355, -0.20126882, 0.0963328, 0.06281191, -0.17627244, -0.16096021, 0.00596877, 0.12892367, 0.2650723, 0.0032763, -0.05754196, 0.14840715, -0.09938947, 0.13039768, 0.04905574, -0.04759435, -0.18545668, -0.22984591, -0.22227132, -0.02666637, -0.09771203, -0.15587328, 0.07147411, 0.21007161, 0.09932306, -0.06597851, 0.04478595, -0.00686691, -0.14754876, -0.16366987, -0.22182341, -0.05699158], + "FPTrunc":[0.1180348, -0.01865118, 0.19759397, 0.00099745, -0.20069243, 0.15863162, -0.10404988, -0.03822596, -0.04113388, 0.02389156, -0.15024376, 0.10156121, 0.01125149, -0.17805247, -0.01032893, 0.11541142, 0.16151612, 0.08652765, -0.01421094, -0.02742836, 0.03890061, 0.16992694, -0.19120258, -0.08296357, 0.16136265, 0.13252915, 0.08675185, -0.05066127, 0.14796199, 0.16224207, 0.07839199, -0.0724185, 0.17859218, 0.20112462, -0.11284997, 0.04566038, -0.19799039, -0.17690767, 0.18034197, -0.14002973, -0.0558032, 0.18783137, -0.14857374, -0.03776158, -0.21491641, 0.04907086, 0.10290487, -0.17882703, -0.06566726, 0.09571292, -0.1965507, 0.1673165, -0.03019422, 0.04259395, 0.10474471, -0.01224911, 0.2133804, 0.08484804, -0.01221132, -0.04942748, -0.06522352, -0.16705054, -0.07432696, -0.01365143, -0.14369024, 0.09237107, -0.06833915, -0.04292256, 0.10805372, 0.10829192, -0.04953781, -0.16152975, 0.08096681, 0.12343118, -0.04967185], + "Freeze":[-0.10947239, 0.16156663, 0.0653074, -0.16102187, 0.05866997, -0.11313032, 0.18013522, 0.00849657, -0.13109621, 0.00250287, 0.12335391, -0.19474623, 0.00160397, 0.18526912, -0.02094408, 0.10131565, -0.17163642, 0.1624736, 0.20699912, 0.1198829, -0.15380894, -0.13946483, -0.0666218, -0.02034315, 0.06200019, 0.04227962, 0.07729523, 0.1244237, -0.07141764, 0.12154905, 0.0300131, 0.01618693, 0.13966976, 0.08918943, -0.07834358, 0.19349128, -0.06925047, -0.11661758, 0.01764905, -0.06631834, -0.19618054, 0.07797705, -0.18398666, -0.08675893, -0.14833811, -0.1468038, 0.18818453, -0.06729261, -0.00497526, -0.08958972, 0.16964634, -0.10325264, -0.10212341, -0.04745837, 0.12241088, -0.03629779, -0.00606445, 0.01766711, 0.0036858, -0.10732682, -0.13172524, -0.10182981, -0.06431175, -0.13082966, 0.04738441, 0.02668242, 0.15197244, -0.12880892, -0.06579075, 0.03165649, -0.00145413, -0.02683991, 0.13963282, -0.14597963, -0.05104417], + "FSub":[-0.15878558, -0.01853204, 0.07496438, 0.13546987, -0.1904581, 0.16564278, -0.1120265, -0.05418859, -0.08075086, 0.1190263, -0.030006, 0.07342444, 0.01767328, -0.18650489, 0.04966565, 0.17190282, 0.1616953, 0.10582477, -0.00931773, 0.00157398, 0.00862398, 0.08480153, 0.17171694, -0.0916861, 0.17196383, 0.03703162, 0.11399966, -0.12855959, 0.05810672, 0.15144408, 0.05618297, -0.00800864, 0.20814295, 0.20056027, -0.1153914, 0.10849892, -0.1970011, -0.1813781, 0.1921156, -0.16984123, 0.07333071, 0.19433162, -0.01313439, -0.02830642, -0.17687869, 0.05937865, 0.1070236, -0.18605019, -0.07227098, 0.10597191, 0.1225975, 0.12388534, -0.02131494, -0.02420847, 0.00146665, -0.01353394, 0.22151577, 0.19731705, -0.07575841, 0.08710405, -0.07411117, -0.17442936, -0.1831972, -0.0886184, -0.17084508, 0.10038229, -0.06385624, -0.04644644, 0.10368951, 0.12130242, 0.24595715, -0.14661786, 0.09260331, 0.0455667, -0.05950425], + "GetElementPtr":[0.09870283, 0.07089636, 0.07129486, 0.13141522, 0.0512748, -0.12164738, -0.10822044, -0.06830852, -0.03589667, 0.23281692, 0.00221914, 0.07347875, -0.14414017, -0.1762956, 0.2280886, 0.09720317, -0.02157139, 0.1186724, 0.16809724, 0.01354192, 0.00843806, -0.1289462, -0.06982945, -0.03921828, 0.11689314, -0.27946517, -0.06115843, 0.0435549, -0.04346889, 0.13182928, -0.13756175, -0.00165133, 0.14864644, 0.1256485, -0.10831792, 0.1638358, 0.05359713, -0.12713233, 0.15040766, -0.14046451, 0.06688947, 0.17097251, 0.11004995, 0.00303981, -0.17120391, -0.15561967, -0.0996208, -0.07566627, -0.0092614, 0.03340579, 0.12288038, 0.11154807, -0.01677553, 0.161112, 0.01968472, -0.01360116, 0.05185669, 0.03974737, 0.08288419, -0.11881893, 0.09566113, -0.14562541, 0.27193576, -0.08737413, -0.13493136, 0.06975145, -0.01905861, -0.04629398, -0.06382514, 0.03648283, 0.32102475, -0.07868497, 0.11246872, 0.06408555, 0.21986632], + "ICmp":[0.10752141, 0.08221146, 0.07407488, 0.13139327, -0.17970721, 0.02754223, -0.13538423, -0.06698897, -0.02524848, 0.29738554, 0.00894943, 0.07728788, 0.01191065, 0.07896648, 0.26208735, 0.10498706, -0.03250087, 0.1684631, 0.23128033, 0.00553169, 0.05936556, -0.15531996, -0.06056314, -0.03261358, 0.09216364, -0.31626984, -0.07434817, 0.12870958, -0.08664963, 0.14354071, 0.2156426, -0.0043262, 0.16025512, 0.13890502, -0.153901, 0.12319393, 0.01295959, -0.14369431, 0.17033054, -0.12931693, 0.07678536, 0.19203088, 0.11493351, -0.00601692, -0.18671934, -0.16845967, 0.11059918, -0.08381938, -0.00690406, 0.04286021, 0.13590424, 0.12681794, -0.01967513, -0.21233313, 0.02998303, -0.01612004, 0.17794448, 0.02153118, 0.09134272, -0.12414944, 0.08073039, -0.17339677, -0.0417021, -0.1026428, -0.0270442, 0.02959586, -0.05658696, -0.05483485, -0.07289126, 0.036765, 0.20820136, -0.0922353, 0.1438483, 0.06928346, -0.37188163], + "InsertElement":[-0.08810953, 0.19707826, 0.23040843, 0.15133125, -0.22085261, 0.18197243, -0.13767323, 0.00611759, -0.03750934, 0.05303819, -0.00140541, 0.13628025, 0.01222425, -0.19765897, 0.02197562, 0.17957552, 0.17369562, 0.13818526, -0.01018569, 0.07335348, -0.00122391, -0.05268616, 0.03798695, -0.07208619, 0.13593383, -0.08763747, 0.10625125, 0.12024429, -0.01286297, 0.16619073, 0.03609107, 0.00169814, 0.21330379, 0.22023544, -0.11971844, 0.23055589, -0.21922874, -0.18983133, 0.21032487, -0.19545083, 0.39695147, 0.2116961, 0.03465794, -0.01642283, -0.23929499, 0.05254361, 0.1186865, -0.20114459, -0.01001151, 0.06816892, 0.13270052, 0.13516793, -0.02193176, 0.13708963, 0.15222688, -0.01366894, 0.22591114, 0.07127486, -0.08461929, -0.08140475, 0.06961198, -0.18172547, 0.03001983, -0.09530003, -0.03038635, 0.09877217, -0.06264398, -0.06664777, 0.08449566, 0.13536829, 0.04701871, -0.1011354, 0.08900025, 0.0484806, -0.0840841], + "InsertValue":[-0.18927452, 0.0174884, -0.14182499, 0.13622768, 0.0860026, 0.09214608, 0.19103362, -0.21386355, -0.08520557, 0.0039752, 0.11396001, -0.20266375, 0.17875974, -0.19441572, 0.06652557, -0.1076987, -0.15872131, -0.20631677, -0.06141828, 0.01331364, 0.02354101, 0.08883859, 0.18617646, -0.1524484, -0.00485444, -0.06658852, -0.06168855, -0.15898797, 0.02933339, -0.19443747, -0.08171376, -0.10284599, -0.14775087, 0.20585667, -0.03085143, -0.20518455, 0.05644068, 0.18632361, -0.14686832, 0.03718346, 0.10764548, -0.01129938, 0.19590198, 0.02194332, -0.04761516, 0.0276675, 0.01006511, -0.05134218, -0.10854474, 0.23528893, 0.09621219, -0.17192629, 0.10312149, -0.14351319, 0.15347119, 0.19321586, -0.20537563, 0.19100618, 0.11280359, 0.07242113, 0.18901348, 0.19133772, 0.02062779, -0.07726028, 0.00578185, -0.02625765, -0.10374335, -0.02086248, 0.18915856, 0.00862997, 0.04699488, -0.0631949, 0.18942626, 0.01894571, 0.02351614], + "IntToPtr":[0.04721976, 0.16880296, 0.06448112, -0.17660472, 0.02998716, -0.1156636, 0.13852204, -0.06320232, -0.03162635, -0.06644673, -0.136013, -0.06916367, -0.02801188, 0.10646518, 0.05828808, 0.03782522, -0.02227561, 0.02234134, 0.16369314, -0.08557447, 0.03853939, -0.14319475, -0.05599201, -0.01060566, -0.1136315, 0.0201032, 0.01836221, -0.05016, -0.1216938, 0.12626994, 0.03450989, -0.19574732, 0.14352062, -0.17880194, -0.13339539, -0.04630446, 0.03136644, -0.13006681, 0.1445991, -0.09556036, 0.09764113, 0.16694036, 0.09833785, 0.05145761, 0.17970908, -0.14575475, -0.13704927, -0.06876626, -0.00955433, -0.16089469, -0.14152728, 0.1012365, -0.18291287, -0.07371435, -0.13809073, 0.02210419, 0.090786, 0.02507522, 0.15311833, -0.11663677, 0.10619268, 0.1758742, -0.04052401, 0.19525726, 0.15682434, -0.19402866, 0.08792165, 0.19677114, 0.1986662, -0.2065629, 0.04007441, -0.01697999, 0.17015004, 0.07224851, -0.06042317], + "Invoke":[0.11604629, -0.02348489, -0.11863736, -0.16840768, -0.01534824, -0.13232489, -0.09663513, -0.1576129, -0.2348036, 0.00802987, -0.0517984, -0.05321365, 0.01174416, -0.11655734, 0.05259984, -0.16816719, -0.09482966, -0.00228002, -0.12152751, -0.00498575, 0.03465938, -0.02950593, 0.04545004, -0.2172498, -0.07073424, -0.08918925, 0.0623108, -0.20881031, -0.04182759, -0.20031597, -0.1351732, 0.069332, -0.00361818, 0.11065516, 0.13967985, -0.08796342, -0.00256544, -0.11508698, 0.09178918, 0.2073513, 0.04010937, -0.07716485, 0.06940974, 0.20694868, -0.08160415, 0.1820004, -0.12159622, 0.04531517, -0.00216078, -0.11625812, -0.10868325, 0.11549117, 0.19036727, 0.0365869, -0.09580094, 0.22367325, 0.11756624, -0.2184826, 0.27060437, 0.14232084, 0.01686368, -0.10716032, 0.02151413, -0.02634864, 0.19014603, -0.22087607, -0.05267305, -0.2422757, -0.06234193, -0.0299236, 0.01296355, 0.0901266, 0.09916983, -0.00811885, -0.02482844], + "LandingPad":[0.12086448, 0.16615215, -0.11424457, -0.08484724, -0.09069939, -0.15767984, 0.10221493, -0.17647022, -0.18533581, -0.02190816, 0.1541339, -0.15779817, 0.03144602, -0.10866319, -0.01497394, -0.1721984, -0.07559271, -0.11889227, -0.1177194, -0.02792813, 0.04734257, -0.03713308, -0.17093344, 0.17252314, 0.02917121, 0.01523044, -0.08545186, -0.20184867, -0.08280238, -0.04850229, 0.03705949, 0.07665683, 0.01846915, 0.00205453, 0.1709319, -0.10548064, -0.07096241, 0.12575251, -0.1177155, 0.17698564, 0.03965896, -0.10821396, 0.07917166, 0.17810985, 0.01715738, 0.16967225, -0.16826203, 0.16891196, -0.15257767, 0.10498544, -0.10490264, 0.06432237, 0.18670914, -0.00099873, -0.13853344, 0.21604276, 0.13351974, -0.15664832, -0.08585881, 0.1024329, 0.02737338, 0.11940238, -0.01797596, -0.00314033, 0.12023867, 0.11616865, 0.05652065, 0.1415307, -0.15827312, -0.03440882, 0.02146849, 0.01478402, -0.13532415, -0.02099262, 0.00462938], + "Load":[0.06383128, 0.0803676, 0.07070765, 0.1284488, 0.053152, -0.11878661, -0.09626942, -0.05779593, -0.04309646, -0.31707463, -0.01623556, 0.0741919, -0.0051238, 0.07403108, -0.25466156, 0.09440999, -0.01665624, 0.14732535, 0.17144501, -0.00878042, 0.04688795, -0.15015227, -0.06462591, -0.04178058, -0.0378243, 0.33024567, -0.07477789, -0.04902143, -0.0476392, 0.13162148, -0.17537315, -0.01750547, 0.14473993, 0.1732234, -0.1423584, 0.11269526, 0.03678195, -0.1315726, 0.15341991, -0.10186778, 0.00435855, 0.16657132, 0.17959148, -0.00966169, -0.16982812, -0.02318787, 0.09485581, -0.07465204, -0.06222337, 0.01743078, 0.12776802, 0.09864764, -0.01487866, 0.03529362, 0.13232034, -0.01328148, 0.09440556, 0.06241368, 0.03618008, -0.11342508, 0.09918994, -0.15651965, -0.07195813, -0.09057574, -0.10321549, 0.06875013, -0.00129774, -0.04545839, -0.07164564, 0.05073486, 0.34142092, -0.08255292, 0.12089149, 0.08211686, 0.21363957], + "LShr":[0.1238757, -0.02033522, 0.05549098, 0.11646183, 0.08761991, -0.12349915, -0.18941326, -0.08920491, 0.09122052, 0.03471606, 0.2897465, 0.07269037, 0.01238082, 0.07473343, 0.02699653, 0.08085709, -0.04658483, 0.2076412, 0.22355735, -0.03676752, 0.18093167, -0.15845503, -0.0710993, -0.02861892, -0.24865082, -0.00123379, -0.23955399, 0.13371961, -0.11877617, 0.07246234, 0.01312172, 0.01923358, -0.04966315, 0.1200467, -0.2137276, 0.10946998, 0.07409713, -0.12598129, 0.02809012, -0.09355168, 0.06742698, 0.08053191, 0.18937954, 0.00296521, 0.10038757, -0.19544551, 0.08368544, -0.07828917, 0.20687084, 0.01422358, 0.19612609, 0.03323235, -0.01736557, -0.2952406, 0.15087438, -0.07250606, 0.01719518, -0.01060284, 0.16445734, -0.16287296, 0.07179926, -0.14751296, 0.02352273, -0.17620452, 0.12871586, 0.01027796, -0.00240841, -0.08637159, -0.07440444, 0.02873684, 0.05644969, -0.07749362, 0.17137784, 0.09177881, -0.06086624], + "Mul":[9.14543942e-02, 7.25680292e-02, 1.87143609e-01, 1.56122670e-01, 8.18791837e-02, -1.13938227e-01, -1.17102735e-01, 1.78440675e-01, -5.71394851e-03, 3.98688577e-02, -1.22035742e-02, 9.62941721e-02, 9.87940375e-03, 6.54331893e-02, -1.18242744e-02, 1.01057030e-01, -3.37237865e-02, 1.82104349e-01, 1.98254153e-01, 4.89455797e-02, -1.38579145e-01, -1.43827185e-01, -7.30315745e-02, -2.81286202e-02, -3.69295813e-02, -7.32784346e-02, -7.52561465e-02, 1.15158796e-01, -8.05188417e-02, 1.22851163e-01, 1.18959583e-01, -6.19116612e-03, 1.14142060e-01, 1.15443885e-01, -1.32043362e-01, 1.91231743e-01, 6.71850219e-02, -1.18121214e-01, 1.39134541e-01, -9.38180089e-02, 7.00822175e-02, 1.52467072e-01, 1.72531351e-01, 2.39370289e-04, 8.84519666e-02, -1.74602866e-01, 7.58597329e-02, -7.24562407e-02, 2.30801646e-02, 2.31582299e-02, 1.77945897e-01, 2.19754413e-01, -1.05254715e-02, -5.34405783e-02, 1.28701046e-01, -8.88467114e-03, 2.39838846e-02, -2.52107698e-02, 4.09773886e-02, -1.43636853e-01, 9.37281698e-02, -1.36706889e-01, 3.18117648e-01, -1.72676995e-01, 9.86104552e-03, 1.59371197e-02, -2.31163911e-04, -7.84823969e-02, -7.37200677e-02, 3.27852108e-02, 1.85986701e-02, -7.93214887e-02, 1.19079717e-01, 9.70832258e-02, -5.25254011e-02], + "Or":[-0.15830125, 0.08118854, 0.06019896, 0.1351512, 0.0696514, -0.12829824, -0.12040509, -0.07483122, -0.05365232, -0.21453764, 0.01100464, 0.07939477, 0.01512126, 0.07680329, 0.20671816, 0.10159217, -0.03416578, 0.18844754, 0.2232867, 0.00390219, 0.17268041, -0.16189471, -0.07818128, -0.02745846, -0.03785938, -0.28434664, -0.23963155, 0.13414037, -0.03098747, 0.1290441, -0.04272285, 0.00627589, 0.15120292, 0.13505426, -0.14509544, 0.1633035, 0.07651295, -0.1345261, 0.15650204, -0.10334036, 0.08041331, 0.17568573, 0.18555732, -0.00240171, 0.09882613, -0.1697568, 0.08491044, -0.07938255, -0.00502023, 0.04242367, 0.19246665, 0.10571583, -0.01717717, -0.0940207, 0.19319834, -0.06771892, 0.03723063, 0.00987004, 0.08289062, -0.14470372, 0.07547856, -0.14796427, 0.03079064, -0.18788183, -0.06784894, 0.02374648, 0.00680319, -0.08787614, -0.0762485, 0.04015802, -0.31986576, -0.08643831, 0.14352895, 0.1116055, -0.09564826], + "PHI":[-0.17533, -0.14122052, 0.25121832, -0.20197222, -0.02265841, 0.08878156, -0.12254399, -0.05334119, 0.17813319, 0.25582585, -0.24652013, 0.08741698, -0.20831233, -0.12509026, -0.19707216, 0.15587404, -0.07037015, 0.00634299, 0.02692973, 0.20398706, 0.09076547, 0.2106457, 0.02665563, -0.01256549, 0.20547326, -0.01408568, -0.11248078, 0.17035946, 0.00720961, -0.24428545, -0.19424082, 0.02588499, -0.09168262, 0.12671804, -0.13895495, 0.11016023, 0.06885135, -0.1585114, 0.1442796, -0.09209647, -0.25246575, -0.18171434, 0.07803512, 0.01651475, -0.05719611, -0.18895395, 0.13336438, -0.09516547, 0.04140934, -0.13787958, 0.14149408, -0.15089944, -0.02157312, 0.2192603, 0.02856141, -0.05521443, 0.0077216, 0.2731221, -0.09575493, 0.2032519, -0.12885517, -0.18518618, 0.16917716, -0.11144329, 0.25175345, -0.30578047, -0.07883886, 0.14204925, 0.26059705, 0.01635692, -0.2599762, 0.1671248, 0.07727495, 0.06118969, 0.27382395], + "PtrToInt":[0.13572109, 0.07109733, -0.01410782, 0.13761328, 0.06249858, -0.12742682, -0.03786812, -0.08852433, -0.00890332, -0.12647949, -0.23919484, 0.07803643, -0.29866624, 0.07854372, 0.0690124, 0.08534926, -0.03230691, -0.11528994, 0.2259676, -0.09829737, 0.10256737, -0.16430771, -0.0642257, -0.01210832, -0.12542038, 0.01087978, -0.2651048, 0.10121775, -0.12749597, -0.00404411, 0.08437401, -0.01521534, -0.05364794, -0.20650637, -0.15205501, 0.16177334, 0.08448336, -0.13946855, 0.15794401, -0.08243193, -0.05839634, 0.17580664, 0.19553919, 0.02601502, 0.14116347, -0.17160966, -0.09532923, -0.07157483, 0.20540062, -0.00341362, 0.20416199, 0.09911527, -0.01078249, -0.0624228, 0.14551571, 0.07151687, 0.04763724, -0.02011446, 0.16194499, -0.18160547, 0.13115011, 0.01976459, -0.01537652, -0.19834353, -0.14665273, -0.20727639, 0.03673945, -0.09134132, -0.15628532, -0.04004635, -0.02747078, 0.14147465, 0.17462312, 0.11279432, -0.07561264], + "Resume":[0.16280797, -0.14593223, -0.12683636, -0.1562535, -0.03300981, -0.13968605, 0.16718441, -0.19515003, 0.01863662, -0.05534162, -0.01442544, 0.0425216, 0.0093952, -0.16576275, 0.03578432, -0.15065056, -0.06406866, -0.16523188, -0.05909818, 0.06044476, -0.0871481, 0.15487999, -0.18122765, 0.1956721, -0.04706432, 0.08488349, 0.04219154, 0.02599989, -0.02276746, -0.18513387, 0.12803178, -0.09826294, -0.11191379, 0.04426758, 0.11935913, -0.14695078, -0.00907954, 0.15606298, -0.13066523, 0.01243626, 0.07249606, -0.13709828, 0.10189614, 0.18291259, -0.04105699, 0.1736963, -0.12169949, 0.09442408, 0.20398152, 0.22682573, -0.08286698, -0.13903227, 0.09133334, 0.03095248, 0.11325783, 0.1569758, -0.17479569, -0.12558746, -0.12676957, -0.12449513, 0.17823087, 0.16940698, -0.06061083, -0.1153774, 0.11211671, 0.03377679, -0.05404395, 0.10726969, -0.120761, 0.01132012, 0.00449077, 0.00602859, -0.13664234, 0.00466423, -0.02339442], + "Ret":[0.14368142, 0.0712266, 0.05669672, 0.13478386, -0.14595962, -0.12663847, -0.12403987, -0.09207936, 0.00078773, -0.20975904, 0.08747889, 0.07683876, -0.14989862, -0.18156855, 0.38113984, 0.05973466, -0.05483145, 0.00884139, -0.013859, -0.03841434, 0.05703019, -0.04955313, 0.04577729, -0.05112582, -0.25303054, 0.13709044, -0.06985793, -0.04175208, -0.06085019, 0.12376258, 0.08259401, -0.01146284, 0.05020906, 0.18525098, -0.15137392, 0.07154816, 0.06121736, -0.14056544, 0.16508178, -0.12329083, 0.22687763, 0.17450114, 0.18714464, 0.01847176, -0.02590629, -0.15461633, 0.0910584, -0.07975882, 0.03339317, 0.08106077, 0.10348453, 0.12415495, -0.01464526, -0.20166221, 0.23424618, -0.0058443, 0.13251036, -0.01039419, 0.19171973, -0.14341427, 0.11032798, -0.17445254, -0.21265155, -0.11035369, 0.09180369, -0.01410731, -0.05983369, -0.0549278, 0.11081824, 0.02046819, -0.04516792, -0.09715447, 0.14870624, 0.05914663, 0.10917712], + "SDiv":[7.54674971e-02, 2.70023555e-01, 2.15832815e-01, 1.51102781e-01, 3.86169888e-02, -1.27587810e-01, -1.64553642e-01, 2.08858803e-01, 2.49577500e-03, 3.39335836e-02, 2.95089424e-01, 7.44504854e-02, 1.75000988e-02, 7.48216212e-02, 4.57024798e-02, 1.14481322e-01, -5.15110120e-02, 1.97094589e-01, 2.28497684e-01, 1.89727977e-01, -2.03567356e-01, -1.53853878e-01, -7.04708546e-02, -2.87290998e-02, -4.15551029e-02, -8.37634057e-02, 2.48096928e-01, 1.39052629e-01, -1.18507713e-01, 1.37168303e-01, 4.37297896e-02, -2.56327417e-04, 1.03771754e-01, 1.18692242e-01, -1.97971940e-01, 2.48502731e-01, 5.65373003e-02, -8.69503245e-02, -9.03292373e-03, -2.25797057e-01, 7.20400363e-02, 4.09315303e-02, 1.83778912e-01, -2.47538835e-03, -2.83727050e-02, -2.00868785e-01, 8.99481177e-02, -7.83472061e-02, 4.22467515e-02, 2.67557669e-02, 1.77338138e-01, -1.42202228e-02, -1.59657858e-02, -6.30925298e-02, 3.13569121e-02, -2.22823601e-02, 6.28621271e-03, -1.85963176e-02, 1.17826000e-01, -1.24646917e-01, 1.02576114e-01, -1.52709767e-01, 2.57164501e-02, -1.40907198e-01, 1.74567476e-01, 1.61048099e-02, -5.03884954e-03, -8.63459408e-02, -7.52566457e-02, 3.38615589e-02, 1.36013612e-01, -8.77554864e-02, 1.03453219e-01, 7.68808499e-02, -6.49084374e-02], + "Select":[0.05093412, 0.07767349, 0.07669216, 0.1312176, 0.0579063, 0.1616888, -0.11760561, 0.00115628, -0.04131674, -0.29780418, -0.01691337, 0.0748211, 0.0864482, 0.07403006, 0.25878662, 0.10279866, -0.01487916, 0.15694329, 0.22207598, 0.01221279, 0.02520609, -0.1521685, -0.06417656, -0.03086487, 0.12268542, 0.3565569, -0.08125142, 0.1072576, -0.02930279, 0.14090922, -0.14309497, -0.00379189, 0.15369308, 0.12072479, -0.11386253, 0.17081785, 0.0359251, -0.13158213, 0.15140608, -0.08365479, 0.04333765, 0.17864218, 0.09735203, -0.01021584, -0.1817566, -0.17009453, 0.10480749, -0.07720621, -0.06324099, 0.01645014, 0.13028447, 0.10660475, -0.02038397, -0.05975712, 0.02713404, -0.01552912, 0.07295278, 0.05679769, 0.02740115, -0.11240587, 0.07162624, -0.15834542, -0.32627442, -0.08725446, -0.07952213, 0.07846557, -0.01865849, -0.04569499, -0.0728619, 0.0374458, -0.27716625, -0.07809193, 0.11488006, 0.06656368, -0.06777868], + "SExt":[-0.03718835, 0.08533189, 0.21354397, 0.13909821, 0.04430787, -0.13043992, -0.12707381, 0.14811471, -0.01397946, -0.24312808, -0.01538438, 0.08007284, -0.20212536, 0.07967917, 0.16868502, 0.10560705, -0.01859606, 0.16425593, 0.23104599, 0.04822871, -0.15584451, -0.16572693, -0.07367796, -0.02386475, -0.04161641, -0.28961626, 0.26639512, 0.13398732, -0.09589424, 0.14068675, 0.16089684, -0.01488031, 0.16961882, 0.11251253, -0.15109386, 0.20157905, 0.04388804, -0.14243662, 0.17028852, -0.17495492, 0.08312923, 0.18138759, 0.19254005, -0.00167047, 0.1016985, -0.17693631, 0.09644604, -0.07967581, -0.01462245, 0.00063264, 0.19925497, 0.10426001, -0.01645718, -0.0897459, 0.02190982, -0.00871549, 0.03981987, 0.01151098, 0.07275884, -0.13166158, 0.11194995, -0.15796044, -0.02378252, -0.17802656, -0.05159309, 0.03235529, 0.00206553, -0.0869719, -0.07645953, 0.05517219, 0.01411109, -0.08648386, 0.1488923, 0.11236069, -0.14168048], + "Shl":[-1.21411718e-01, 8.12682733e-02, 7.26464316e-02, 1.38484403e-01, 8.17928985e-02, -1.24320365e-01, -1.29878476e-01, 1.89510286e-01, -6.82524173e-03, 4.69798781e-02, 7.76179358e-02, 7.87331015e-02, -1.99450791e-01, 7.40546957e-02, 1.56282917e-01, 1.49098694e-01, -3.80089432e-02, 1.97095275e-01, 2.20074877e-01, 9.85120013e-02, -1.51519790e-01, -1.56306505e-01, -6.62787706e-02, -2.89262943e-02, -8.50795880e-02, -3.77611667e-01, -8.08443353e-02, 1.29505768e-01, -9.56492350e-02, 1.34987608e-01, 1.17273629e-01, -8.01561028e-03, 2.01825440e-01, 1.25738055e-01, -1.46153197e-01, 2.18217447e-01, 7.04046711e-02, -1.39466003e-01, 6.33412227e-02, -1.05604395e-01, 7.39852190e-02, 1.70712352e-01, 1.86249197e-01, 1.75760695e-04, 9.54905152e-02, -1.82715610e-01, 8.42701495e-02, -7.70764053e-02, 3.44463770e-04, 2.22381260e-02, 1.92770571e-01, 6.70530349e-02, -8.68750829e-03, -5.87612167e-02, 1.35470673e-01, -9.91571508e-03, 3.54958773e-02, -1.26978569e-02, 3.80189577e-03, -1.57232955e-01, 1.05788536e-01, -1.48979709e-01, -6.13744035e-02, -1.79459959e-01, 1.58743337e-02, 1.66407768e-02, 3.78276110e-02, -8.67255181e-02, -7.59592950e-02, 3.41174081e-02, -1.17456488e-01, -8.46017748e-02, 1.42491326e-01, 8.54357481e-02, -6.05630279e-02], + "ShuffleVector":[-1.64276063e-01, -1.40854018e-02, 2.16989160e-01, 1.48834497e-01, -1.81232363e-01, 1.71089604e-01, -1.51962206e-01, 9.34694987e-03, -6.01843521e-02, 1.57123819e-01, 1.49263054e-01, 1.57006048e-02, 8.54564831e-03, -1.46307275e-01, -9.97107551e-02, 2.03836277e-01, -1.10085299e-02, 1.58312604e-01, 3.98286656e-02, 1.22957818e-01, -4.54752985e-03, -1.51905298e-01, 2.56421398e-02, -9.66223106e-02, 1.35936990e-01, 1.13613196e-01, 8.88981670e-02, 1.39288589e-01, 2.35020537e-02, 1.54158428e-01, 1.38836756e-01, -7.45062644e-05, 1.85534820e-01, 2.31408417e-01, -1.86368376e-01, 2.18553007e-01, -1.25940442e-01, 6.19565435e-02, 2.09610596e-01, -2.28297710e-01, 2.30249181e-01, 1.89029738e-01, -6.89853504e-02, -3.19687016e-02, -1.80848792e-01, 4.24141204e-03, 1.89942136e-01, -1.91565320e-01, -2.52943840e-02, 5.65835461e-02, 1.32085189e-01, 1.23422973e-01, -2.14130040e-02, -2.95120943e-02, 1.43252522e-01, -2.44392790e-02, 1.89641267e-01, 3.69141959e-02, 5.39628556e-03, -1.15757883e-01, 6.42104596e-02, -2.11238548e-01, 1.83569789e-02, -9.20821503e-02, -9.48524103e-02, 8.56385827e-02, -5.02256379e-02, -8.02270398e-02, 8.46109912e-02, 7.74170980e-02, 3.27805057e-02, -1.08585857e-01, 1.16238609e-01, 5.87845854e-02, 1.14851862e-01], + "SIToFP":[0.05548016, 0.16714495, 0.21498686, 0.14356636, -0.16821964, 0.16527581, -0.15967155, 0.21070401, -0.01250376, -0.11125261, -0.06026782, 0.07956001, -0.13129172, -0.18479359, 0.08652773, 0.08131526, 0.15925482, 0.08148654, -0.00736642, 0.19463325, -0.20742258, -0.11578189, 0.02654804, -0.08633579, -0.05612461, 0.01452674, 0.11379433, 0.03724489, -0.12955493, 0.15072383, -0.0232376, -0.01797887, 0.20284739, 0.20505717, -0.18686672, 0.25398365, -0.11697914, -0.09353511, 0.19472948, -0.18606324, 0.13722429, 0.19458178, 0.03767281, -0.01490554, -0.15784514, -0.0030121, 0.1061831, -0.18870111, -0.04370302, 0.06840985, 0.12218294, 0.133711, -0.01636076, -0.05479606, -0.09695652, -0.01025795, 0.2093504, 0.08853228, -0.07362932, -0.06125485, 0.10777287, -0.17920133, 0.03073885, -0.09303376, -0.18211918, 0.09700941, -0.05694851, -0.0481168, 0.10195274, 0.11961144, 0.14820483, -0.10259698, 0.07829086, 0.06143153, -0.06575584], + "SRem":[0.12748273, -0.01354557, 0.07656507, 0.13586837, 0.09215222, -0.12957662, -0.22408909, 0.21526249, 0.0899937, 0.03087448, 0.23878594, 0.07816898, 0.0165252, 0.07721527, 0.0565106, 0.08858381, -0.13782543, 0.2185999, 0.2350998, 0.20486632, -0.22521928, -0.16895708, -0.07120457, -0.03142672, -0.193668, -0.06093899, 0.098878, 0.13780232, -0.13592266, 0.13956556, 0.03245056, -0.01644238, 0.1208498, 0.11854354, -0.20298819, 0.27215648, 0.06262159, -0.13207191, -0.22367987, 0.18101601, 0.07210222, -0.035157, 0.19500516, -0.0082911, 0.04821047, -0.2052546, 0.0944626, -0.08101162, 0.05265743, -0.00286297, 0.2012179, -0.02560825, -0.01475919, -0.06332223, -0.21597023, -0.00943558, 0.00891592, -0.04312498, 0.11415429, 0.08646774, 0.10881357, -0.15501237, 0.02134495, -0.15064926, 0.14675559, 0.01146032, 0.0020576, 0.09925999, -0.07733848, 0.03300545, 0.05376984, -0.08198962, 0.17412202, 0.08533774, -0.06574512], + "Store":[0.09998547, 0.07416256, 0.06472399, 0.12126696, 0.03879403, -0.12036075, -0.11504382, -0.06913467, -0.03769127, -0.33070236, -0.00644616, 0.07156026, -0.02137089, 0.07216891, -0.05470073, 0.09415297, -0.04082007, 0.1056991, -0.0013265, -0.00926145, 0.04998971, -0.14578499, -0.05182505, -0.02615017, 0.08348413, 0.31976137, -0.07019657, -0.05163203, -0.04972167, 0.12658256, 0.04289434, -0.0016057, 0.14311627, 0.12263075, -0.13941614, 0.13760482, 0.04816094, -0.12741822, 0.14878556, -0.11523844, 0.05825484, 0.1649721, 0.09197503, -0.0012878, -0.1629092, -0.1414969, 0.09324066, -0.07395344, -0.00317431, 0.01789259, 0.12094813, 0.10764453, -0.01553114, 0.11882594, 0.02442449, -0.01568008, 0.11022279, 0.03307666, 0.08506706, -0.10825977, 0.06488108, -0.15164001, -0.30984077, -0.08653892, -0.06201477, 0.01810287, -0.04473237, -0.04719033, -0.06153039, 0.03287021, 0.29479045, -0.07162003, 0.13225412, 0.05114779, -0.33301073], + "Sub":[-0.13264543, 0.07865644, 0.0717167, 0.1342318, 0.05076935, -0.12322044, -0.12266772, 0.00524008, -0.00201612, 0.05315073, 0.00274359, 0.0742974, 0.0123115, 0.07594631, 0.21857306, 0.10421466, -0.02275163, 0.17884067, 0.21873002, 0.00927466, 0.00893607, -0.154156, -0.06820294, -0.02856713, -0.03866831, -0.2793768, -0.06824332, 0.13080892, -0.08803294, 0.13524993, 0.21245252, -0.01117309, 0.20007995, 0.12509634, -0.14541206, 0.19173518, 0.0613077, -0.13841055, 0.15438707, -0.14274515, 0.07382213, 0.17015299, 0.18052574, -0.00206174, -0.15260881, -0.17803495, 0.08986183, -0.07603207, -0.0163452, 0.02869452, 0.186938, 0.07764658, -0.01459899, 0.10072613, 0.02469735, -0.01351501, 0.03415474, 0.0135162, 0.04113324, -0.12325168, 0.11012445, -0.14946231, 0.04155808, -0.1440628, -0.06376708, 0.01838643, 0.00198335, -0.07941123, -0.07066227, 0.0376416, 0.24301553, -0.0862716, 0.1351057, 0.0891021, -0.3352], + "Switch":[-0.16398937, -0.1353046, 0.08524002, 0.1561178, -0.22488637, -0.14185904, -0.10160676, 0.17193311, -0.05567684, -0.01794963, -0.22830375, 0.08948597, 0.1698675, 0.08543108, -0.18870668, 0.13391507, 0.1591491, 0.21046144, 0.02533695, -0.05875827, -0.15551412, 0.19997434, 0.19250119, -0.03397122, -0.05150964, -0.15923595, 0.0701151, 0.14852029, -0.01560177, 0.15765266, -0.2304326, -0.01416684, -0.05115065, 0.12840182, -0.17300242, -0.03878057, 0.07419615, -0.16339742, 0.18437031, -0.14087205, -0.2714784, -0.17547078, -0.01152283, -0.00396952, 0.11226111, -0.18184493, 0.1166721, -0.09108577, 0.23214185, 0.07350235, 0.14699937, 0.08840676, -0.01411979, 0.2082167, -0.10539865, -0.01378542, 0.04486391, -0.01463741, 0.14504644, 0.19353367, 0.11889812, -0.19718692, -0.04798679, -0.12421229, 0.29124823, -0.32081923, -0.00218598, -0.1037329, -0.08444938, 0.04092982, -0.03067664, -0.1606894, 0.07095047, 0.08663001, 0.25936154], + "Trunc":[0.11878826, 0.08377917, 0.05513672, 0.14270523, 0.07370453, -0.14921571, -0.16542384, -0.07493053, -0.00377195, -0.20950364, 0.12958477, 0.07888171, -0.00595982, 0.07865481, 0.16519356, 0.10834014, -0.04326443, 0.19355299, 0.23304398, 0.07385943, -0.11257231, -0.16919497, -0.082918, -0.0285878, -0.05886409, -0.25552744, 0.08462781, 0.13503358, -0.09682789, 0.12824969, 0.08024148, -0.01201469, 0.15677036, 0.14443342, -0.1907149, 0.23856063, -0.00528661, -0.14044978, 0.16222948, -0.10748056, 0.08127003, 0.17631039, 0.19577822, -0.01176626, 0.09836395, -0.16917923, 0.10726047, -0.10182234, 0.20931682, 0.04668214, 0.2017859, 0.11306392, -0.018347, -0.06246869, 0.24337131, -0.07117373, 0.03053473, -0.00658053, 0.03026612, -0.16877551, 0.10491424, -0.17555256, 0.14634104, -0.18189284, -0.11786141, 0.02876267, -0.00210879, -0.08721989, -0.07824761, 0.03958495, 0.20243248, -0.09376816, 0.11082744, 0.12096685, -0.12131985], + "UDiv":[0.08154505, 0.17510523, -0.19362096, 0.08671232, 0.11330891, -0.19157314, -0.2145219, -0.06051004, 0.1371807, 0.04572224, -0.06733968, 0.07146493, 0.00681373, 0.07493957, -0.02997438, 0.08688152, -0.04591569, 0.23223788, 0.22175628, 0.01500544, 0.14273156, -0.16111672, -0.08531193, 0.19467805, -0.00517966, -0.06020893, -0.06077334, 0.13201268, -0.12358853, 0.00868457, 0.06033499, 0.01196855, 0.14756525, 0.11571166, -0.11228922, 0.13696799, 0.21417981, 0.20094916, -0.21627706, 0.18220317, -0.06209835, 0.1076472, 0.20395155, 0.00197578, 0.13577849, -0.20195886, 0.0833538, -0.07554612, 0.00410905, 0.00158071, 0.1938367, 0.02883399, -0.01710817, 0.03711469, 0.13843457, -0.06804645, -0.00379174, -0.00144552, 0.13146468, -0.18377277, 0.07351629, -0.14530504, 0.01042824, -0.1766743, 0.01462858, 0.01206683, -0.12541275, 0.09634796, -0.07832152, 0.02791307, 0.02765011, 0.19757621, 0.16267568, 0.12346987, -0.0413983], + "UIToFP":[-0.15078814, 0.1826288, 0.11165173, 0.13953921, -0.1842304, 0.16399114, -0.11256697, -0.05694728, -0.04820754, -0.17459138, -0.12022546, 0.08202647, 0.05924561, -0.17365019, 0.1614662, 0.07272313, 0.14744736, 0.09281041, -0.00596566, -0.01817355, 0.09689283, -0.0900236, 0.03450679, -0.0848825, 0.17167987, -0.07416291, 0.09088556, 0.07786386, 0.08914284, 0.14832556, -0.07537761, 0.00234627, 0.15249911, 0.19451788, -0.15017514, 0.14780688, 0.11764529, -0.02274906, 0.1920297, -0.17293543, 0.22891366, 0.1852529, 0.0128901, -0.00331702, -0.18161494, -0.0123833, 0.10250985, -0.1877487, -0.02335341, 0.06747307, 0.12578565, 0.12541758, -0.01838141, -0.08433985, 0.26602918, -0.01791255, 0.18907419, 0.04615575, 0.22383852, -0.13418758, 0.07736338, -0.18702815, 0.06279426, -0.09547485, -0.14973089, 0.09295561, -0.04817062, -0.05371717, -0.01254407, 0.12052637, 0.14356695, -0.1381116, 0.17813013, 0.0863996, -0.10018482], + "Unreachable":[1.6576199e-01, -1.7907834e-02, -5.7712890e-02, 9.4339609e-02, -9.3380272e-02, -1.9464681e-01, 7.7050277e-03, -1.9517663e-01, 2.6435368e-03, 9.1913566e-02, 1.3639191e-02, 7.0288680e-02, -3.2517979e-01, 7.4262276e-02, -8.9507200e-02, -1.7191246e-01, -5.2555885e-02, -1.4688279e-01, 1.0220077e-01, -4.8814032e-02, -1.3367063e-01, -6.1610699e-02, -1.8777388e-01, 2.0192388e-01, 1.7102915e-01, 1.3610463e-01, -2.6177135e-01, -3.3939917e-02, -5.4787207e-02, 1.1302987e-01, 1.0523112e-01, 8.6424664e-02, -3.6340270e-02, 4.7679577e-02, 1.0370419e-02, 3.9357133e-03, 1.5754176e-02, -4.6523277e-02, -1.2651871e-01, -5.0250064e-03, -2.1445632e-01, -1.5226135e-01, 1.7948903e-01, 1.9091401e-01, 1.1402745e-01, -1.9978039e-01, -8.4826022e-02, -3.7182060e-03, 2.1397528e-01, -1.9490053e-03, 3.8303059e-02, 5.5778958e-02, -1.1436568e-02, 7.7554718e-02, 3.7896037e-02, 7.5804755e-02, -1.7246161e-02, -1.4188807e-01, 4.9074650e-02, -1.9401214e-01, 1.9030276e-01, 1.1096356e-01, -1.5253071e-01, -1.9243342e-01, 1.6415399e-01, 2.7355237e-02, 7.6516271e-03, -9.3317330e-02, -1.7084104e-01, 3.9767768e-02, -1.1136789e-01, -9.4884530e-02, 2.1568926e-04, 1.3515340e-01, 8.2443848e-02], + "URem":[0.1196936, 0.18855006, -0.20257552, 0.01738752, 0.15161008, -0.14784957, -0.02992235, -0.0674265, 0.14330001, -0.00208072, -0.08096982, -0.06099883, 0.01042207, 0.1028357, 0.05679855, 0.08465453, -0.05227959, 0.21925992, 0.22556421, -0.059273, 0.1825322, 0.17631407, -0.08938511, -0.0277707, -0.2572769, -0.06195913, -0.24406035, 0.13713413, -0.13801506, 0.02009896, 0.02613169, 0.01552499, 0.14668229, 0.12454724, -0.14865053, 0.09922966, 0.2130675, -0.11827406, 0.01006878, -0.09671234, 0.06660412, 0.0945213, 0.20740281, 0.00239918, 0.14173026, -0.1632753, 0.08587474, -0.07923763, 0.02992029, 0.2015828, 0.2007573, -0.11056472, -0.01871637, -0.06330916, 0.14348209, -0.07483656, 0.00636646, -0.01837422, 0.17499712, -0.17495239, 0.07653105, -0.1475833, 0.02116938, -0.17941074, 0.1734715, -0.01114943, 0.03780977, -0.15019819, -0.07816306, -0.08282368, 0.05129486, 0.19702028, 0.18443331, 0.10329096, -0.06307837], + "Xor":[0.10254283, 0.18058334, 0.05268734, 0.1032732, 0.10089786, -0.1597949, -0.11678528, -0.07392009, 0.00164178, -0.3411041, -0.05760791, 0.14810716, 0.01395016, 0.07759612, 0.0478027, 0.10309431, -0.04646098, 0.22321403, 0.22373965, -0.0018288, 0.20699704, -0.16503152, -0.18555428, -0.02829313, -0.04340088, -0.09629976, -0.07565032, 0.12829013, -0.1184216, 0.05327054, -0.2091556, 0.01997479, 0.14617224, 0.12249397, -0.11211042, 0.17021945, 0.21050954, -0.1381692, 0.0287271, -0.09731391, 0.07712973, 0.0957914, 0.19754209, 0.00280226, -0.22004068, -0.19650316, 0.08103254, -0.07884329, 0.01431314, 0.01774853, 0.20215395, 0.04173042, -0.01757454, -0.06132229, 0.14705223, -0.07607429, 0.01276137, -0.02355135, 0.1687547, -0.16499719, 0.07755739, -0.15042275, 0.04714211, -0.19073205, 0.01791589, 0.00800123, -0.00147503, -0.08897253, -0.07817551, 0.02938494, 0.07296588, -0.08095124, 0.19651005, 0.12599285, -0.06209126], + "ZExt":[0.07005657, 0.08003729, 0.07546207, 0.13528231, 0.02506938, -0.12476956, -0.14581475, 0.00614589, -0.00503257, -0.24861531, 0.09526423, 0.07557298, 0.01302374, 0.07628334, 0.04175617, 0.09726538, -0.02312024, 0.16171065, 0.22212435, 0.0079543, 0.07804493, -0.15814242, -0.06840046, -0.03052379, -0.0414926, 0.26214772, -0.07542547, 0.12756911, -0.08823611, 0.13954116, -0.18143456, -0.01209466, 0.15410358, 0.20636739, -0.1831482, 0.19437483, 0.06973958, -0.13698913, 0.19432417, -0.16362838, 0.09032086, 0.18127388, 0.18287036, -0.01740397, -0.17513882, -0.16302226, 0.10199076, -0.07994232, 0.029813, 0.04575716, 0.19189098, 0.10111669, -0.01755602, -0.0832833, 0.1540967, -0.01496344, 0.04155953, 0.00536162, 0.0699449, -0.13122603, 0.10352977, -0.18122241, 0.17052825, -0.15459219, -0.06903189, 0.05887637, -0.00081859, -0.08415917, -0.07304011, 0.08401199, -0.25388402, -0.09779947, 0.12506351, 0.09557163, -0.12431429] }, "Types": { - "floatTy":[-0.04556743, 0.03822431, -0.08842288, -0.12055657, 0.0960574, 0.2371231, 0.09947137, 0.11064581, -0.12371849, -0.06109007, 0.06440615, 0.14924356, 0.13218448, -0.04400141, 0.01761996, -0.13240574, 0.21056518, -0.14215694, -0.14700417, -0.16416645, -0.07137518, 0.05240471, -0.10071051, 0.12556827, 0.08208757, 0.06504779, 0.1578807, -0.09501757, 0.00659264, -0.00527758, -0.01085964, -0.17290565, 0.00501871, -0.10288252, 0.09658113, -0.107755, -0.1718967, 0.16306138, -0.080802, 0.10203532, -0.02934794, -0.02899184, -0.17915869, -0.19883338, -0.05124965, 0.16747124, -0.05587617, 0.14325564, -0.18054038, -0.161391, -0.1149613, 0.01600737, -0.0704658, 0.01935361, -0.04516762, -0.1305524, 0.04487818, -0.07881694, -0.18929696, 0.05364102, -0.17827097, 0.09934752, -0.04212811, 0.15036745, -0.18782069, 0.19947147, 0.1102478, -0.1304183, 0.17145109, 0.22485495, 0.02270225, 0.08804839, -0.12520337, -0.07780997, 0.00057234], - "integerTy":[-0.02392217, 0.13147527, -0.12684862, -0.00286194, 0.18320721, -0.03383226, 0.10688385, 0.20315196, 0.16910973, 0.01749469, 0.09163074, 0.18359211, 0.08457439, 0.17821081, -0.01359864, -0.09173124, -0.1060688, -0.0317139, 0.089481, -0.13937937, 0.1258349, -0.00968946, -0.00211832, -0.13140695, -0.11206195, -0.0249014, -0.09646855, 0.16041876, -0.20260467, -0.1008801, -0.02906649, -0.148828, -0.01750175, -0.10806648, 0.10094456, -0.09347772, -0.11941694, 0.0714565, -0.13869469, 0.09965917, -0.02859109, -0.04663063, -0.03677037, -0.17767252, 0.19819601, -0.00728577, -0.07156438, 0.14130634, -0.16161495, -0.14514765, -0.0230404, 0.14609018, 0.12496789, -0.02587292, 0.06375326, -0.1703029, -0.14651431, -0.15148057, -0.11655853, 0.00689279, -0.21302195, 0.10692985, 0.00105841, 0.05685481, -0.05294221, 0.13358746, 0.17953119, 0.01200722, 0.00904744, 0.13893746, -0.01024614, 0.14703822, -0.08035436, 0.18355256, -0.00407319], - "pointerTy":[-5.16731367e-02, 1.41998947e-01, -1.03678465e-01, -2.35795856e-01, 1.67232469e-01, -3.50435115e-02, 1.31282926e-01, 8.77518952e-02, -1.61656141e-01, -1.89439468e-02, 6.89205006e-02, -1.47259831e-01, -1.85588151e-02, 1.95201755e-01, 1.53539265e-02, -1.11738130e-01, 7.46774301e-02, -1.60889581e-01, -1.51122361e-01, -1.64823771e-01, -7.43334070e-02, 1.79255735e-02, -8.14272910e-02, -1.60337687e-01, 7.73334429e-02, 1.45058706e-02, -1.51032144e-02, -1.70947760e-01, -1.48217022e-01, -7.63990656e-02, -8.62834305e-02, -1.66838810e-01, 4.88951942e-03, -1.25664428e-01, 1.13860749e-01, -2.08933145e-01, -1.30075082e-01, 7.92812705e-02, -7.94121996e-02, 1.08121462e-01, -2.62738355e-02, -4.07571979e-02, -9.88764390e-02, 1.00676276e-01, -2.82900538e-02, 7.71642849e-02, -2.50683606e-01, -1.28315210e-01, -1.78229675e-01, -2.19585538e-01, -8.51736143e-02, -1.43008991e-04, 1.66052416e-01, 6.89304620e-02, -1.85903355e-01, 1.39382124e-01, -1.14323251e-01, 6.72841072e-02, -1.73793092e-01, 1.37479026e-02, -6.61165267e-02, 1.28709331e-01, -3.70565802e-02, 1.15480699e-01, -1.72476366e-01, 1.86700657e-01, 1.71808466e-01, 1.25800788e-01, 1.42911309e-02, -1.19691528e-01, 1.48811145e-02, -1.66594520e-01, -1.34164989e-01, 1.62748635e-01, 3.45790684e-02], - "structTy":[-5.22783101e-02, 1.48193806e-01, -1.73157901e-01, -8.37061405e-02, 1.75303683e-01, 1.41080663e-01, 1.32847771e-01, 9.91027430e-02, -1.22380503e-01, -5.10943905e-02, 7.63119832e-02, -1.28850952e-01, 1.66698098e-01, 1.32489190e-01, -4.90079597e-02, -1.37256354e-01, 4.85256799e-02, -1.78637013e-01, -1.86148569e-01, -1.64286211e-01, -6.26875609e-02, 8.13696086e-02, -1.20131724e-01, -1.59142628e-01, 3.36435549e-02, 2.20832378e-02, -2.72354912e-02, -1.38390273e-01, -1.38179898e-01, -1.23813316e-01, -9.40988287e-02, -1.55397400e-01, -1.58612743e-01, -1.14575408e-01, 1.55034050e-01, -1.50801614e-01, -1.07854791e-01, 1.55085072e-01, -1.68802753e-01, 1.61272466e-01, -2.05100384e-02, -8.52123126e-02, -9.58884135e-02, -1.21472001e-01, 7.77167231e-02, 1.36054471e-01, 1.28906265e-01, 1.30557746e-01, -1.81647420e-01, 1.45003811e-01, -1.11549668e-01, -1.79680258e-01, 1.72399670e-01, 1.51102387e-04, -4.99001816e-02, 1.28895119e-01, -1.17917232e-01, -9.13353860e-02, -1.21147677e-01, 9.76096392e-02, -1.77910581e-01, 1.50892287e-01, -2.25245636e-02, 1.24061532e-01, -1.16433218e-01, -6.76782504e-02, 1.45374849e-01, 2.35193707e-02, -1.35173321e-01, 1.46973729e-01, -1.22685850e-01, 1.27605781e-01, -1.51997164e-01, 1.60292000e-01, 7.63390437e-02], - "vectorTy":[-0.03294902, 0.14949119, -0.09443742, 0.01450515, 0.19603784, 0.25139496, 0.07845286, 0.11937284, 0.16359204, 0.06099452, 0.09465881, -0.1069911, 0.09603978, 0.16709542, -0.00486909, -0.07722043, 0.22341618, -0.03857102, 0.09912027, -0.12520577, 0.13405597, 0.01585144, 0.08918274, -0.19392243, 0.02501151, 0.00475938, 0.15233898, 0.17524292, -0.19524728, -0.01515534, 0.08875454, -0.14749287, 0.01111115, -0.0826562, 0.09034086, -0.04994484, -0.10947519, 0.11695202, -0.15125127, 0.10647643, 0.03638166, -0.01116771, -0.14471221, -0.14233877, -0.05823282, 0.16917565, -0.06123812, -0.2417991, -0.17791323, -0.11769169, -0.07800104, -0.08785082, 0.11596312, -0.02590095, 0.06086191, -0.18129952, -0.15834333, -0.13579826, -0.14008556, 0.05263453, -0.1810565, 0.05645358, 0.05425795, 0.11036766, -0.15751451, 0.20713197, 0.15679651, -0.17410725, 0.00938685, 0.2128002, 0.05759892, 0.03854589, -0.12531556, 0.19853209, -0.00149427], - "voidTy":[0.01605093, -0.0537584, -0.20252232, -0.08176173, -0.01439075, -0.0382277, 0.15691687, -0.104895, 0.06642336, -0.06327856, 0.09566005, 0.1357376, -0.06892086, -0.00750719, 0.00474408, -0.20349212, -0.05127234, -0.17626588, -0.17354688, -0.18703477, -0.10801363, 0.09327657, 0.10076355, 0.12450968, -0.14411868, 0.09044765, 0.01168226, -0.15345524, -0.14508787, -0.04046924, 0.04365833, -0.11735097, -0.1433241, -0.1147697, 0.18176553, -0.18558215, -0.13961768, 0.12200661, -0.13001354, 0.16781498, 0.01012573, -0.09670691, -0.10543029, 0.09294511, 0.08037758, 0.14874886, -0.1797814, -0.12390587, -0.0998297, 0.12955485, -0.15814209, -0.03254232, 0.17421001, 0.10237212, -0.07504516, -0.112073, -0.11584745, -0.20020956, 0.11506493, 0.01263643, -0.10729685, 0.12432116, -0.1172537, 0.10430267, 0.06826, -0.06138111, 0.13390729, -0.1675781, 0.00966638, 0.13989863, -0.00030718, 0.10629188, -0.15517116, -0.08125519, 0.03691618] + "FloatTy":[-0.04556743, 0.03822431, -0.08842288, -0.12055657, 0.0960574, 0.2371231, 0.09947137, 0.11064581, -0.12371849, -0.06109007, 0.06440615, 0.14924356, 0.13218448, -0.04400141, 0.01761996, -0.13240574, 0.21056518, -0.14215694, -0.14700417, -0.16416645, -0.07137518, 0.05240471, -0.10071051, 0.12556827, 0.08208757, 0.06504779, 0.1578807, -0.09501757, 0.00659264, -0.00527758, -0.01085964, -0.17290565, 0.00501871, -0.10288252, 0.09658113, -0.107755, -0.1718967, 0.16306138, -0.080802, 0.10203532, -0.02934794, -0.02899184, -0.17915869, -0.19883338, -0.05124965, 0.16747124, -0.05587617, 0.14325564, -0.18054038, -0.161391, -0.1149613, 0.01600737, -0.0704658, 0.01935361, -0.04516762, -0.1305524, 0.04487818, -0.07881694, -0.18929696, 0.05364102, -0.17827097, 0.09934752, -0.04212811, 0.15036745, -0.18782069, 0.19947147, 0.1102478, -0.1304183, 0.17145109, 0.22485495, 0.02270225, 0.08804839, -0.12520337, -0.07780997, 0.00057234], + "IntegerTy":[-0.02392217, 0.13147527, -0.12684862, -0.00286194, 0.18320721, -0.03383226, 0.10688385, 0.20315196, 0.16910973, 0.01749469, 0.09163074, 0.18359211, 0.08457439, 0.17821081, -0.01359864, -0.09173124, -0.1060688, -0.0317139, 0.089481, -0.13937937, 0.1258349, -0.00968946, -0.00211832, -0.13140695, -0.11206195, -0.0249014, -0.09646855, 0.16041876, -0.20260467, -0.1008801, -0.02906649, -0.148828, -0.01750175, -0.10806648, 0.10094456, -0.09347772, -0.11941694, 0.0714565, -0.13869469, 0.09965917, -0.02859109, -0.04663063, -0.03677037, -0.17767252, 0.19819601, -0.00728577, -0.07156438, 0.14130634, -0.16161495, -0.14514765, -0.0230404, 0.14609018, 0.12496789, -0.02587292, 0.06375326, -0.1703029, -0.14651431, -0.15148057, -0.11655853, 0.00689279, -0.21302195, 0.10692985, 0.00105841, 0.05685481, -0.05294221, 0.13358746, 0.17953119, 0.01200722, 0.00904744, 0.13893746, -0.01024614, 0.14703822, -0.08035436, 0.18355256, -0.00407319], + "PointerTy":[-5.16731367e-02, 1.41998947e-01, -1.03678465e-01, -2.35795856e-01, 1.67232469e-01, -3.50435115e-02, 1.31282926e-01, 8.77518952e-02, -1.61656141e-01, -1.89439468e-02, 6.89205006e-02, -1.47259831e-01, -1.85588151e-02, 1.95201755e-01, 1.53539265e-02, -1.11738130e-01, 7.46774301e-02, -1.60889581e-01, -1.51122361e-01, -1.64823771e-01, -7.43334070e-02, 1.79255735e-02, -8.14272910e-02, -1.60337687e-01, 7.73334429e-02, 1.45058706e-02, -1.51032144e-02, -1.70947760e-01, -1.48217022e-01, -7.63990656e-02, -8.62834305e-02, -1.66838810e-01, 4.88951942e-03, -1.25664428e-01, 1.13860749e-01, -2.08933145e-01, -1.30075082e-01, 7.92812705e-02, -7.94121996e-02, 1.08121462e-01, -2.62738355e-02, -4.07571979e-02, -9.88764390e-02, 1.00676276e-01, -2.82900538e-02, 7.71642849e-02, -2.50683606e-01, -1.28315210e-01, -1.78229675e-01, -2.19585538e-01, -8.51736143e-02, -1.43008991e-04, 1.66052416e-01, 6.89304620e-02, -1.85903355e-01, 1.39382124e-01, -1.14323251e-01, 6.72841072e-02, -1.73793092e-01, 1.37479026e-02, -6.61165267e-02, 1.28709331e-01, -3.70565802e-02, 1.15480699e-01, -1.72476366e-01, 1.86700657e-01, 1.71808466e-01, 1.25800788e-01, 1.42911309e-02, -1.19691528e-01, 1.48811145e-02, -1.66594520e-01, -1.34164989e-01, 1.62748635e-01, 3.45790684e-02], + "StructTy":[-5.22783101e-02, 1.48193806e-01, -1.73157901e-01, -8.37061405e-02, 1.75303683e-01, 1.41080663e-01, 1.32847771e-01, 9.91027430e-02, -1.22380503e-01, -5.10943905e-02, 7.63119832e-02, -1.28850952e-01, 1.66698098e-01, 1.32489190e-01, -4.90079597e-02, -1.37256354e-01, 4.85256799e-02, -1.78637013e-01, -1.86148569e-01, -1.64286211e-01, -6.26875609e-02, 8.13696086e-02, -1.20131724e-01, -1.59142628e-01, 3.36435549e-02, 2.20832378e-02, -2.72354912e-02, -1.38390273e-01, -1.38179898e-01, -1.23813316e-01, -9.40988287e-02, -1.55397400e-01, -1.58612743e-01, -1.14575408e-01, 1.55034050e-01, -1.50801614e-01, -1.07854791e-01, 1.55085072e-01, -1.68802753e-01, 1.61272466e-01, -2.05100384e-02, -8.52123126e-02, -9.58884135e-02, -1.21472001e-01, 7.77167231e-02, 1.36054471e-01, 1.28906265e-01, 1.30557746e-01, -1.81647420e-01, 1.45003811e-01, -1.11549668e-01, -1.79680258e-01, 1.72399670e-01, 1.51102387e-04, -4.99001816e-02, 1.28895119e-01, -1.17917232e-01, -9.13353860e-02, -1.21147677e-01, 9.76096392e-02, -1.77910581e-01, 1.50892287e-01, -2.25245636e-02, 1.24061532e-01, -1.16433218e-01, -6.76782504e-02, 1.45374849e-01, 2.35193707e-02, -1.35173321e-01, 1.46973729e-01, -1.22685850e-01, 1.27605781e-01, -1.51997164e-01, 1.60292000e-01, 7.63390437e-02], + "VectorTy":[-0.03294902, 0.14949119, -0.09443742, 0.01450515, 0.19603784, 0.25139496, 0.07845286, 0.11937284, 0.16359204, 0.06099452, 0.09465881, -0.1069911, 0.09603978, 0.16709542, -0.00486909, -0.07722043, 0.22341618, -0.03857102, 0.09912027, -0.12520577, 0.13405597, 0.01585144, 0.08918274, -0.19392243, 0.02501151, 0.00475938, 0.15233898, 0.17524292, -0.19524728, -0.01515534, 0.08875454, -0.14749287, 0.01111115, -0.0826562, 0.09034086, -0.04994484, -0.10947519, 0.11695202, -0.15125127, 0.10647643, 0.03638166, -0.01116771, -0.14471221, -0.14233877, -0.05823282, 0.16917565, -0.06123812, -0.2417991, -0.17791323, -0.11769169, -0.07800104, -0.08785082, 0.11596312, -0.02590095, 0.06086191, -0.18129952, -0.15834333, -0.13579826, -0.14008556, 0.05263453, -0.1810565, 0.05645358, 0.05425795, 0.11036766, -0.15751451, 0.20713197, 0.15679651, -0.17410725, 0.00938685, 0.2128002, 0.05759892, 0.03854589, -0.12531556, 0.19853209, -0.00149427], + "VoidTy":[0.01605093, -0.0537584, -0.20252232, -0.08176173, -0.01439075, -0.0382277, 0.15691687, -0.104895, 0.06642336, -0.06327856, 0.09566005, 0.1357376, -0.06892086, -0.00750719, 0.00474408, -0.20349212, -0.05127234, -0.17626588, -0.17354688, -0.18703477, -0.10801363, 0.09327657, 0.10076355, 0.12450968, -0.14411868, 0.09044765, 0.01168226, -0.15345524, -0.14508787, -0.04046924, 0.04365833, -0.11735097, -0.1433241, -0.1147697, 0.18176553, -0.18558215, -0.13961768, 0.12200661, -0.13001354, 0.16781498, 0.01012573, -0.09670691, -0.10543029, 0.09294511, 0.08037758, 0.14874886, -0.1797814, -0.12390587, -0.0998297, 0.12955485, -0.15814209, -0.03254232, 0.17421001, 0.10237212, -0.07504516, -0.112073, -0.11584745, -0.20020956, 0.11506493, 0.01263643, -0.10729685, 0.12432116, -0.1172537, 0.10430267, 0.06826, -0.06138111, 0.13390729, -0.1675781, 0.00966638, 0.13989863, -0.00030718, 0.10629188, -0.15517116, -0.08125519, 0.03691618] }, "Arguments": { - "constant":[-0.2850312, -0.22839, 0.12669143, -0.0674703, -0.12639391, -0.00477266, 0.04786542, 0.06336267, 0.08660185, 0.12805316, -0.07146342, 0.21539183, -0.0624397, -0.02638953, -0.28688517, 0.28374302, 0.05338082, 0.05559688, -0.13133128, 0.12440272, -0.03583231, 0.29848817, 0.13930812, 0.15453401, 0.0538353, -0.06874479, 0.00262802, 0.27964258, 0.19028014, -0.16371843, -0.05762961, 0.20059372, -0.20804578, -0.06549844, 0.09732475, -0.01551855, 0.21226783, 0.05889762, -0.07560658, 0.11312829, -0.04594622, -0.27309528, -0.05293005, 0.18953343, 0.05463868, -0.31045213, -0.04364616, 0.11005993, 0.12489324, -0.05413342, -0.05814561, -0.26131225, -0.18863814, 0.31165487, -0.08796364, -0.19958755, -0.10849535, 0.14899114, -0.01385941, 0.29359573, -0.01349372, 0.0562498, 0.10977754, 0.08993197, 0.06231657, -0.13509868, -0.20968516, 0.03578237, 0.15356435, -0.17766887, -0.11509016, 0.06898113, -0.06665445, -0.14065051, 0.34711906], - "function":[-0.08280793, -0.18925415, -0.1866685, -0.04932962, 0.13478681, 0.203617, 0.05739383, 0.09856346, -0.17600478, 0.07619468, -0.12438924, -0.02529626, -0.07468224, 0.03905433, 0.11325707, -0.04229602, -0.16354711, -0.08952031, -0.15966323, 0.11114867, 0.07319006, 0.02678379, -0.13364255, 0.15032487, 0.0822423, 0.03195171, -0.00871139, -0.1128016, 0.19261838, -0.07204764, -0.05823177, 0.1990249, -0.2057403, -0.08260711, 0.09775644, -0.12436705, 0.15814295, 0.0463977, -0.0493853, 0.1450742, -0.07108644, -0.03192589, -0.11917686, -0.19753116, 0.09248564, 0.13522607, 0.16347136, 0.11065657, -0.0850426, -0.19110996, -0.15060848, -0.25829738, 0.11464069, -0.15613398, -0.07256057, 0.16283846, -0.11428182, -0.1879146, -0.10537492, 0.03637636, -0.02642156, 0.0344548, -0.00722412, 0.13349552, 0.05913915, 0.17941767, -0.20852967, 0.04403022, -0.13914339, -0.17848521, -0.07228794, 0.23070297, -0.11848032, -0.14098541, -0.23762096], - "label":[-0.06294985, -0.07393633, -0.07793023, 0.19617933, -0.25141802, -0.16856542, 0.05546749, 0.2207709, -0.12299901, -0.10727913, -0.04701709, -0.05162717, 0.2220566, 0.14470658, -0.07780463, -0.02452197, 0.21929401, 0.10171317, -0.09900579, -0.11624218, -0.21602261, 0.11818817, 0.23674524, -0.0676048, -0.15250057, -0.06562828, 0.14570533, -0.0063743, 0.12755615, 0.18377739, -0.05544094, -0.03191924, -0.12098482, -0.04439923, 0.0412157, -0.13413347, -0.03934726, 0.04211318, -0.02061427, 0.04409805, -0.06535667, -0.10373748, -0.11245634, -0.07654405, 0.1734968, -0.01024228, -0.05300638, 0.08171037, 0.1142247, 0.13233529, -0.04136537, -0.00692873, -0.13803534, 0.0900873, -0.18191165, 0.05589029, -0.05146271, -0.11442295, 0.17379795, 0.11092487, 0.18033165, 0.03263773, -0.09051663, 0.05547883, 0.09321848, -0.13325489, 0.07476224, -0.16582265, -0.14871986, -0.11099493, 0.08359679, -0.2101298, -0.05699859, -0.08379642, 0.10380454], - "pointer":[0.01122629, 0.03439064, 0.12280786, -0.03425089, 0.17276576, 0.21717595, 0.09126496, -0.17714174, 0.27793115, 0.08274158, -0.08821795, -0.16903219, -0.06300986, -0.23226759, 0.1235508, -0.11923615, -0.21793933, -0.17721081, 0.07182363, 0.27753174, 0.0920836, 0.06713749, -0.04808864, 0.15279293, 0.05296317, 0.04695908, -0.00205181, -0.14607918, 0.177891, -0.01903534, -0.05020404, 0.20370306, 0.03707821, -0.08771795, 0.10304545, 0.13130909, 0.18650576, 0.05210593, -0.09720453, 0.14389311, -0.05903525, 0.01644695, -0.11466363, 0.18700723, 0.07347484, 0.13623913, 0.13876125, 0.10103971, 0.11578573, -0.21065098, -0.07865446, -0.02068869, 0.16991298, -0.16359806, -0.07672877, 0.11908785, -0.14677979, 0.16077666, -0.21696989, 0.03678338, -0.02173937, 0.08764295, 0.18778177, 0.0974953, 0.05379327, -0.10313212, -0.2190201, 0.25079602, -0.1224342, -0.17659691, -0.10354815, 0.12724441, -0.11835013, -0.15596658, -0.262892], - "variable":[-0.00726075, -0.19133486, 0.11386976, -0.02404008, 0.18218324, 0.2147853, 0.05924276, -0.14287908, 0.2636781, 0.08127253, -0.08004244, -0.151082, -0.05468801, -0.14080277, 0.09922418, -0.09297107, -0.2022257, -0.0631255, 0.08962703, 0.2616532, -0.05850444, 0.00352755, -0.1646196, 0.12995376, 0.04720275, -0.04833887, 0.0210924, 0.23275656, 0.20620209, -0.01313339, -0.04938933, 0.18796188, 0.03722439, -0.0570973, 0.07931395, 0.12533784, 0.19275506, 0.04549298, -0.06122055, -0.27613187, -0.03735771, 0.0223406, -0.09128818, 0.15596932, -0.02494176, 0.10621183, -0.03121548, 0.09133425, 0.11494032, 0.1616893, -0.05987769, -0.01591593, -0.15986548, -0.13643607, -0.07331984, -0.21545175, -0.13974416, 0.14965075, -0.19167605, 0.03849319, -0.01465273, 0.04467848, 0.16016744, 0.08067682, 0.05409591, -0.1172289, -0.20374107, 0.21127956, 0.14046785, -0.15151982, -0.07432669, 0.1618207, -0.09742998, -0.14227344, 0.07137881] + "Constant":[-0.2850312, -0.22839, 0.12669143, -0.0674703, -0.12639391, -0.00477266, 0.04786542, 0.06336267, 0.08660185, 0.12805316, -0.07146342, 0.21539183, -0.0624397, -0.02638953, -0.28688517, 0.28374302, 0.05338082, 0.05559688, -0.13133128, 0.12440272, -0.03583231, 0.29848817, 0.13930812, 0.15453401, 0.0538353, -0.06874479, 0.00262802, 0.27964258, 0.19028014, -0.16371843, -0.05762961, 0.20059372, -0.20804578, -0.06549844, 0.09732475, -0.01551855, 0.21226783, 0.05889762, -0.07560658, 0.11312829, -0.04594622, -0.27309528, -0.05293005, 0.18953343, 0.05463868, -0.31045213, -0.04364616, 0.11005993, 0.12489324, -0.05413342, -0.05814561, -0.26131225, -0.18863814, 0.31165487, -0.08796364, -0.19958755, -0.10849535, 0.14899114, -0.01385941, 0.29359573, -0.01349372, 0.0562498, 0.10977754, 0.08993197, 0.06231657, -0.13509868, -0.20968516, 0.03578237, 0.15356435, -0.17766887, -0.11509016, 0.06898113, -0.06665445, -0.14065051, 0.34711906], + "Function":[-0.08280793, -0.18925415, -0.1866685, -0.04932962, 0.13478681, 0.203617, 0.05739383, 0.09856346, -0.17600478, 0.07619468, -0.12438924, -0.02529626, -0.07468224, 0.03905433, 0.11325707, -0.04229602, -0.16354711, -0.08952031, -0.15966323, 0.11114867, 0.07319006, 0.02678379, -0.13364255, 0.15032487, 0.0822423, 0.03195171, -0.00871139, -0.1128016, 0.19261838, -0.07204764, -0.05823177, 0.1990249, -0.2057403, -0.08260711, 0.09775644, -0.12436705, 0.15814295, 0.0463977, -0.0493853, 0.1450742, -0.07108644, -0.03192589, -0.11917686, -0.19753116, 0.09248564, 0.13522607, 0.16347136, 0.11065657, -0.0850426, -0.19110996, -0.15060848, -0.25829738, 0.11464069, -0.15613398, -0.07256057, 0.16283846, -0.11428182, -0.1879146, -0.10537492, 0.03637636, -0.02642156, 0.0344548, -0.00722412, 0.13349552, 0.05913915, 0.17941767, -0.20852967, 0.04403022, -0.13914339, -0.17848521, -0.07228794, 0.23070297, -0.11848032, -0.14098541, -0.23762096], + "Label":[-0.06294985, -0.07393633, -0.07793023, 0.19617933, -0.25141802, -0.16856542, 0.05546749, 0.2207709, -0.12299901, -0.10727913, -0.04701709, -0.05162717, 0.2220566, 0.14470658, -0.07780463, -0.02452197, 0.21929401, 0.10171317, -0.09900579, -0.11624218, -0.21602261, 0.11818817, 0.23674524, -0.0676048, -0.15250057, -0.06562828, 0.14570533, -0.0063743, 0.12755615, 0.18377739, -0.05544094, -0.03191924, -0.12098482, -0.04439923, 0.0412157, -0.13413347, -0.03934726, 0.04211318, -0.02061427, 0.04409805, -0.06535667, -0.10373748, -0.11245634, -0.07654405, 0.1734968, -0.01024228, -0.05300638, 0.08171037, 0.1142247, 0.13233529, -0.04136537, -0.00692873, -0.13803534, 0.0900873, -0.18191165, 0.05589029, -0.05146271, -0.11442295, 0.17379795, 0.11092487, 0.18033165, 0.03263773, -0.09051663, 0.05547883, 0.09321848, -0.13325489, 0.07476224, -0.16582265, -0.14871986, -0.11099493, 0.08359679, -0.2101298, -0.05699859, -0.08379642, 0.10380454], + "Pointer":[0.01122629, 0.03439064, 0.12280786, -0.03425089, 0.17276576, 0.21717595, 0.09126496, -0.17714174, 0.27793115, 0.08274158, -0.08821795, -0.16903219, -0.06300986, -0.23226759, 0.1235508, -0.11923615, -0.21793933, -0.17721081, 0.07182363, 0.27753174, 0.0920836, 0.06713749, -0.04808864, 0.15279293, 0.05296317, 0.04695908, -0.00205181, -0.14607918, 0.177891, -0.01903534, -0.05020404, 0.20370306, 0.03707821, -0.08771795, 0.10304545, 0.13130909, 0.18650576, 0.05210593, -0.09720453, 0.14389311, -0.05903525, 0.01644695, -0.11466363, 0.18700723, 0.07347484, 0.13623913, 0.13876125, 0.10103971, 0.11578573, -0.21065098, -0.07865446, -0.02068869, 0.16991298, -0.16359806, -0.07672877, 0.11908785, -0.14677979, 0.16077666, -0.21696989, 0.03678338, -0.02173937, 0.08764295, 0.18778177, 0.0974953, 0.05379327, -0.10313212, -0.2190201, 0.25079602, -0.1224342, -0.17659691, -0.10354815, 0.12724441, -0.11835013, -0.15596658, -0.262892], + "Variable":[-0.00726075, -0.19133486, 0.11386976, -0.02404008, 0.18218324, 0.2147853, 0.05924276, -0.14287908, 0.2636781, 0.08127253, -0.08004244, -0.151082, -0.05468801, -0.14080277, 0.09922418, -0.09297107, -0.2022257, -0.0631255, 0.08962703, 0.2616532, -0.05850444, 0.00352755, -0.1646196, 0.12995376, 0.04720275, -0.04833887, 0.0210924, 0.23275656, 0.20620209, -0.01313339, -0.04938933, 0.18796188, 0.03722439, -0.0570973, 0.07931395, 0.12533784, 0.19275506, 0.04549298, -0.06122055, -0.27613187, -0.03735771, 0.0223406, -0.09128818, 0.15596932, -0.02494176, 0.10621183, -0.03121548, 0.09133425, 0.11494032, 0.1616893, -0.05987769, -0.01591593, -0.15986548, -0.13643607, -0.07331984, -0.21545175, -0.13974416, 0.14965075, -0.19167605, 0.03849319, -0.01465273, 0.04467848, 0.16016744, 0.08067682, 0.05409591, -0.1172289, -0.20374107, 0.21127956, 0.14046785, -0.15151982, -0.07432669, 0.1618207, -0.09742998, -0.14227344, 0.07137881] } -} \ No newline at end of file +} diff --git a/llvm/test/Analysis/IR2Vec/Inputs/dummy_2D_vocab.json b/llvm/test/Analysis/IR2Vec/Inputs/dummy_2D_vocab.json index 0d0fc93b9e7ed..9b38f2eb6bb4a 100644 --- a/llvm/test/Analysis/IR2Vec/Inputs/dummy_2D_vocab.json +++ b/llvm/test/Analysis/IR2Vec/Inputs/dummy_2D_vocab.json @@ -1,11 +1,91 @@ { "Opcodes": { - "dummyOpc": [1, 2] + "Ret": [1, 2], + "Br": [3, 4], + "Switch": [5, 6], + "IndirectBr": [7, 8], + "Invoke": [9, 10], + "Resume": [11, 12], + "Unreachable": [13, 14], + "CleanupRet": [15, 16], + "CatchRet": [17, 18], + "CatchSwitch": [19, 20], + "CallBr": [21, 22], + "FNeg": [23, 24], + "Add": [25, 26], + "FAdd": [27, 28], + "Sub": [29, 30], + "FSub": [31, 32], + "Mul": [33, 34], + "FMul": [35, 36], + "UDiv": [37, 38], + "SDiv": [39, 40], + "FDiv": [41, 42], + "URem": [43, 44], + "SRem": [45, 46], + "FRem": [47, 48], + "Shl": [49, 50], + "LShr": [51, 52], + "AShr": [53, 54], + "And": [55, 56], + "Or": [57, 58], + "Xor": [59, 60], + "Alloca": [61, 62], + "Load": [63, 64], + "Store": [65, 66], + "GetElementPtr": [67, 68], + "Fence": [69, 70], + "AtomicCmpXchg": [71, 72], + "AtomicRMW": [73, 74], + "Trunc": [75, 76], + "ZExt": [77, 78], + "SExt": [79, 80], + "FPToUI": [81, 82], + "FPToSI": [83, 84], + "UIToFP": [85, 86], + "SIToFP": [87, 88], + "FPTrunc": [89, 90], + "FPExt": [91, 92], + "PtrToInt": [93, 94], + "IntToPtr": [95, 96], + "BitCast": [97, 98], + "AddrSpaceCast": [99, 100], + "CleanupPad": [101, 102], + "CatchPad": [103, 104], + "ICmp": [105, 106], + "FCmp": [107, 108], + "PHI": [109, 110], + "Call": [111, 112], + "Select": [113, 114], + "UserOp1": [115, 116], + "UserOp2": [117, 118], + "VAArg": [119, 120], + "ExtractElement": [121, 122], + "InsertElement": [123, 124], + "ShuffleVector": [125, 126], + "ExtractValue": [127, 128], + "InsertValue": [129, 130], + "LandingPad": [131, 132], + "Freeze": [133, 134] }, "Types": { - "dummyTy": [1, 2] + "FloatTy": [1, 2], + "VoidTy": [3, 4], + "LabelTy": [5, 6], + "MetadataTy": [7, 8], + "UnknownTy": [9, 10], + "TokenTy": [11, 12], + "IntegerTy": [13, 14], + "FunctionTy": [15, 16], + "PointerTy": [17, 18], + "StructTy": [19, 20], + "ArrayTy": [21, 22], + "VectorTy": [23, 24] }, "Arguments": { - "dummyArg": [1, 2] + "Function": [1, 2], + "Pointer": [3, 4], + "Constant": [5, 6], + "Variable": [7, 8] } } diff --git a/llvm/test/Analysis/IR2Vec/Inputs/dummy_3D_nonzero_arg_vocab.json b/llvm/test/Analysis/IR2Vec/Inputs/dummy_3D_nonzero_arg_vocab.json new file mode 100644 index 0000000000000..932b3a217b70c --- /dev/null +++ b/llvm/test/Analysis/IR2Vec/Inputs/dummy_3D_nonzero_arg_vocab.json @@ -0,0 +1,91 @@ +{ + "Opcodes": { + "Ret": [0, 0, 0], + "Br": [0, 0, 0], + "Switch": [0, 0, 0], + "IndirectBr": [0, 0, 0], + "Invoke": [0, 0, 0], + "Resume": [0, 0, 0], + "Unreachable": [0, 0, 0], + "CleanupRet": [0, 0, 0], + "CatchRet": [0, 0, 0], + "CatchSwitch": [0, 0, 0], + "CallBr": [0, 0, 0], + "FNeg": [0, 0, 0], + "Add": [0, 0, 0], + "FAdd": [0, 0, 0], + "Sub": [0, 0, 0], + "FSub": [0, 0, 0], + "Mul": [0, 0, 0], + "FMul": [0, 0, 0], + "UDiv": [0, 0, 0], + "SDiv": [0, 0, 0], + "FDiv": [0, 0, 0], + "URem": [0, 0, 0], + "SRem": [0, 0, 0], + "FRem": [0, 0, 0], + "Shl": [0, 0, 0], + "LShr": [0, 0, 0], + "AShr": [0, 0, 0], + "And": [0, 0, 0], + "Or": [0, 0, 0], + "Xor": [0, 0, 0], + "Alloca": [0, 0, 0], + "Load": [0, 0, 0], + "Store": [0, 0, 0], + "GetElementPtr": [0, 0, 0], + "Fence": [0, 0, 0], + "AtomicCmpXchg": [0, 0, 0], + "AtomicRMW": [0, 0, 0], + "Trunc": [0, 0, 0], + "ZExt": [0, 0, 0], + "SExt": [0, 0, 0], + "FPToUI": [0, 0, 0], + "FPToSI": [0, 0, 0], + "UIToFP": [0, 0, 0], + "SIToFP": [0, 0, 0], + "FPTrunc": [0, 0, 0], + "FPExt": [0, 0, 0], + "PtrToInt": [0, 0, 0], + "IntToPtr": [0, 0, 0], + "BitCast": [0, 0, 0], + "AddrSpaceCast": [0, 0, 0], + "CleanupPad": [0, 0, 0], + "CatchPad": [0, 0, 0], + "ICmp": [0, 0, 0], + "FCmp": [0, 0, 0], + "PHI": [0, 0, 0], + "Call": [0, 0, 0], + "Select": [0, 0, 0], + "UserOp1": [0, 0, 0], + "UserOp2": [0, 0, 0], + "VAArg": [0, 0, 0], + "ExtractElement": [0, 0, 0], + "InsertElement": [0, 0, 0], + "ShuffleVector": [0, 0, 0], + "ExtractValue": [0, 0, 0], + "InsertValue": [0, 0, 0], + "LandingPad": [0, 0, 0], + "Freeze": [0, 0, 0] + }, + "Types": { + "FloatTy": [0, 0, 0], + "VoidTy": [0, 0, 0], + "LabelTy": [0, 0, 0], + "MetadataTy": [0, 0, 0], + "UnknownTy": [0, 0, 0], + "TokenTy": [0, 0, 0], + "IntegerTy": [0, 0, 0], + "FunctionTy": [0, 0, 0], + "PointerTy": [0, 0, 0], + "StructTy": [0, 0, 0], + "ArrayTy": [0, 0, 0], + "VectorTy": [0, 0, 0] + }, + "Arguments": { + "Function": [1, 2, 3], + "Pointer": [4, 5, 6], + "Constant": [7, 8, 9], + "Variable": [10, 11, 12] + } +} diff --git a/llvm/test/Analysis/IR2Vec/Inputs/dummy_3D_nonzero_opc_vocab.json b/llvm/test/Analysis/IR2Vec/Inputs/dummy_3D_nonzero_opc_vocab.json new file mode 100644 index 0000000000000..19f3efee9f6a1 --- /dev/null +++ b/llvm/test/Analysis/IR2Vec/Inputs/dummy_3D_nonzero_opc_vocab.json @@ -0,0 +1,91 @@ +{ + "Opcodes": { + "Ret": [1, 2, 3], + "Br": [4, 5, 6], + "Switch": [7, 8, 9], + "IndirectBr": [10, 11, 12], + "Invoke": [13, 14, 15], + "Resume": [16, 17, 18], + "Unreachable": [19, 20, 21], + "CleanupRet": [22, 23, 24], + "CatchRet": [25, 26, 27], + "CatchSwitch": [28, 29, 30], + "CallBr": [31, 32, 33], + "FNeg": [34, 35, 36], + "Add": [37, 38, 39], + "FAdd": [40, 41, 42], + "Sub": [43, 44, 45], + "FSub": [46, 47, 48], + "Mul": [49, 50, 51], + "FMul": [52, 53, 54], + "UDiv": [55, 56, 57], + "SDiv": [58, 59, 60], + "FDiv": [61, 62, 63], + "URem": [64, 65, 66], + "SRem": [67, 68, 69], + "FRem": [70, 71, 72], + "Shl": [73, 74, 75], + "LShr": [76, 77, 78], + "AShr": [79, 80, 81], + "And": [82, 83, 84], + "Or": [85, 86, 87], + "Xor": [88, 89, 90], + "Alloca": [91, 92, 93], + "Load": [94, 95, 96], + "Store": [97, 98, 99], + "GetElementPtr": [100, 101, 102], + "Fence": [103, 104, 105], + "AtomicCmpXchg": [106, 107, 108], + "AtomicRMW": [109, 110, 111], + "Trunc": [112, 113, 114], + "ZExt": [115, 116, 117], + "SExt": [118, 119, 120], + "FPToUI": [121, 122, 123], + "FPToSI": [124, 125, 126], + "UIToFP": [127, 128, 129], + "SIToFP": [130, 131, 132], + "FPTrunc": [133, 134, 135], + "FPExt": [136, 137, 138], + "PtrToInt": [139, 140, 141], + "IntToPtr": [142, 143, 144], + "BitCast": [145, 146, 147], + "AddrSpaceCast": [148, 149, 150], + "CleanupPad": [151, 152, 153], + "CatchPad": [154, 155, 156], + "ICmp": [157, 158, 159], + "FCmp": [160, 161, 162], + "PHI": [163, 164, 165], + "Call": [166, 167, 168], + "Select": [169, 170, 171], + "UserOp1": [172, 173, 174], + "UserOp2": [175, 176, 177], + "VAArg": [178, 179, 180], + "ExtractElement": [181, 182, 183], + "InsertElement": [184, 185, 186], + "ShuffleVector": [187, 188, 189], + "ExtractValue": [190, 191, 192], + "InsertValue": [193, 194, 195], + "LandingPad": [196, 197, 198], + "Freeze": [199, 200, 201] + }, + "Types": { + "FloatTy": [0, 0, 0], + "VoidTy": [0, 0, 0], + "LabelTy": [0, 0, 0], + "MetadataTy": [0, 0, 0], + "UnknownTy": [0, 0, 0], + "TokenTy": [0, 0, 0], + "IntegerTy": [0, 0, 0], + "FunctionTy": [0, 0, 0], + "PointerTy": [0, 0, 0], + "StructTy": [0, 0, 0], + "ArrayTy": [0, 0, 0], + "VectorTy": [0, 0, 0] + }, + "Arguments": { + "Function": [0, 0, 0], + "Pointer": [0, 0, 0], + "Constant": [0, 0, 0], + "Variable": [0, 0, 0] + } +} diff --git a/llvm/test/Analysis/IR2Vec/Inputs/dummy_3D_nonzero_type_vocab.json b/llvm/test/Analysis/IR2Vec/Inputs/dummy_3D_nonzero_type_vocab.json new file mode 100644 index 0000000000000..bb97a491dfe8a --- /dev/null +++ b/llvm/test/Analysis/IR2Vec/Inputs/dummy_3D_nonzero_type_vocab.json @@ -0,0 +1,91 @@ +{ + "Opcodes": { + "Ret": [0, 0, 0], + "Br": [0, 0, 0], + "Switch": [0, 0, 0], + "IndirectBr": [0, 0, 0], + "Invoke": [0, 0, 0], + "Resume": [0, 0, 0], + "Unreachable": [0, 0, 0], + "CleanupRet": [0, 0, 0], + "CatchRet": [0, 0, 0], + "CatchSwitch": [0, 0, 0], + "CallBr": [0, 0, 0], + "FNeg": [0, 0, 0], + "Add": [0, 0, 0], + "FAdd": [0, 0, 0], + "Sub": [0, 0, 0], + "FSub": [0, 0, 0], + "Mul": [0, 0, 0], + "FMul": [0, 0, 0], + "UDiv": [0, 0, 0], + "SDiv": [0, 0, 0], + "FDiv": [0, 0, 0], + "URem": [0, 0, 0], + "SRem": [0, 0, 0], + "FRem": [0, 0, 0], + "Shl": [0, 0, 0], + "LShr": [0, 0, 0], + "AShr": [0, 0, 0], + "And": [0, 0, 0], + "Or": [0, 0, 0], + "Xor": [0, 0, 0], + "Alloca": [0, 0, 0], + "Load": [0, 0, 0], + "Store": [0, 0, 0], + "GetElementPtr": [0, 0, 0], + "Fence": [0, 0, 0], + "AtomicCmpXchg": [0, 0, 0], + "AtomicRMW": [0, 0, 0], + "Trunc": [0, 0, 0], + "ZExt": [0, 0, 0], + "SExt": [0, 0, 0], + "FPToUI": [0, 0, 0], + "FPToSI": [0, 0, 0], + "UIToFP": [0, 0, 0], + "SIToFP": [0, 0, 0], + "FPTrunc": [0, 0, 0], + "FPExt": [0, 0, 0], + "PtrToInt": [0, 0, 0], + "IntToPtr": [0, 0, 0], + "BitCast": [0, 0, 0], + "AddrSpaceCast": [0, 0, 0], + "CleanupPad": [0, 0, 0], + "CatchPad": [0, 0, 0], + "ICmp": [0, 0, 0], + "FCmp": [0, 0, 0], + "PHI": [0, 0, 0], + "Call": [0, 0, 0], + "Select": [0, 0, 0], + "UserOp1": [0, 0, 0], + "UserOp2": [0, 0, 0], + "VAArg": [0, 0, 0], + "ExtractElement": [0, 0, 0], + "InsertElement": [0, 0, 0], + "ShuffleVector": [0, 0, 0], + "ExtractValue": [0, 0, 0], + "InsertValue": [0, 0, 0], + "LandingPad": [0, 0, 0], + "Freeze": [0, 0, 0] + }, + "Types": { + "FloatTy": [1, 2, 3], + "VoidTy": [4, 5, 6], + "LabelTy": [7, 8, 9], + "MetadataTy": [10, 11, 12], + "UnknownTy": [13, 14, 15], + "TokenTy": [16, 17, 18], + "IntegerTy": [19, 20, 21], + "FunctionTy": [22, 23, 24], + "PointerTy": [25, 26, 27], + "StructTy": [28, 29, 30], + "ArrayTy": [31, 32, 33], + "VectorTy": [34, 35, 36] + }, + "Arguments": { + "Function": [0, 0, 0], + "Pointer": [0, 0, 0], + "Constant": [0, 0, 0], + "Variable": [0, 0, 0] + } +} diff --git a/llvm/test/Analysis/IR2Vec/Inputs/dummy_3D_vocab.json b/llvm/test/Analysis/IR2Vec/Inputs/dummy_3D_vocab.json deleted file mode 100644 index 3b662ab701681..0000000000000 --- a/llvm/test/Analysis/IR2Vec/Inputs/dummy_3D_vocab.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "Opcodes": { - "alloca": [1, 2, 3], - "load": [4, 5, 6], - "store": [7, 8, 9], - "add": [10, 11, 12], - "mul": [13, 14, 15] - }, - "Types": { - "dummyTy": [1, 1, 1] - }, - "Arguments": { - "dummyArg": [1, 1, 1] - } -} diff --git a/llvm/test/Analysis/IR2Vec/Inputs/reference_default_vocab_print.txt b/llvm/test/Analysis/IR2Vec/Inputs/reference_default_vocab_print.txt new file mode 100644 index 0000000000000..79fcf820d6a57 --- /dev/null +++ b/llvm/test/Analysis/IR2Vec/Inputs/reference_default_vocab_print.txt @@ -0,0 +1,92 @@ +Key: Ret: [ 1.00 2.00 ] +Key: Br: [ 3.00 4.00 ] +Key: Switch: [ 5.00 6.00 ] +Key: IndirectBr: [ 7.00 8.00 ] +Key: Invoke: [ 9.00 10.00 ] +Key: Resume: [ 11.00 12.00 ] +Key: Unreachable: [ 13.00 14.00 ] +Key: CleanupRet: [ 15.00 16.00 ] +Key: CatchRet: [ 17.00 18.00 ] +Key: CatchSwitch: [ 19.00 20.00 ] +Key: CallBr: [ 21.00 22.00 ] +Key: FNeg: [ 23.00 24.00 ] +Key: Add: [ 25.00 26.00 ] +Key: FAdd: [ 27.00 28.00 ] +Key: Sub: [ 29.00 30.00 ] +Key: FSub: [ 31.00 32.00 ] +Key: Mul: [ 33.00 34.00 ] +Key: FMul: [ 35.00 36.00 ] +Key: UDiv: [ 37.00 38.00 ] +Key: SDiv: [ 39.00 40.00 ] +Key: FDiv: [ 41.00 42.00 ] +Key: URem: [ 43.00 44.00 ] +Key: SRem: [ 45.00 46.00 ] +Key: FRem: [ 47.00 48.00 ] +Key: Shl: [ 49.00 50.00 ] +Key: LShr: [ 51.00 52.00 ] +Key: AShr: [ 53.00 54.00 ] +Key: And: [ 55.00 56.00 ] +Key: Or: [ 57.00 58.00 ] +Key: Xor: [ 59.00 60.00 ] +Key: Alloca: [ 61.00 62.00 ] +Key: Load: [ 63.00 64.00 ] +Key: Store: [ 65.00 66.00 ] +Key: GetElementPtr: [ 67.00 68.00 ] +Key: Fence: [ 69.00 70.00 ] +Key: AtomicCmpXchg: [ 71.00 72.00 ] +Key: AtomicRMW: [ 73.00 74.00 ] +Key: Trunc: [ 75.00 76.00 ] +Key: ZExt: [ 77.00 78.00 ] +Key: SExt: [ 79.00 80.00 ] +Key: FPToUI: [ 81.00 82.00 ] +Key: FPToSI: [ 83.00 84.00 ] +Key: UIToFP: [ 85.00 86.00 ] +Key: SIToFP: [ 87.00 88.00 ] +Key: FPTrunc: [ 89.00 90.00 ] +Key: FPExt: [ 91.00 92.00 ] +Key: PtrToInt: [ 93.00 94.00 ] +Key: IntToPtr: [ 95.00 96.00 ] +Key: BitCast: [ 97.00 98.00 ] +Key: AddrSpaceCast: [ 99.00 100.00 ] +Key: CleanupPad: [ 101.00 102.00 ] +Key: CatchPad: [ 103.00 104.00 ] +Key: ICmp: [ 105.00 106.00 ] +Key: FCmp: [ 107.00 108.00 ] +Key: PHI: [ 109.00 110.00 ] +Key: Call: [ 111.00 112.00 ] +Key: Select: [ 113.00 114.00 ] +Key: UserOp1: [ 115.00 116.00 ] +Key: UserOp2: [ 117.00 118.00 ] +Key: VAArg: [ 119.00 120.00 ] +Key: ExtractElement: [ 121.00 122.00 ] +Key: InsertElement: [ 123.00 124.00 ] +Key: ShuffleVector: [ 125.00 126.00 ] +Key: ExtractValue: [ 127.00 128.00 ] +Key: InsertValue: [ 129.00 130.00 ] +Key: LandingPad: [ 131.00 132.00 ] +Key: Freeze: [ 133.00 134.00 ] +Key: FloatTy: [ 0.50 1.00 ] +Key: FloatTy: [ 0.50 1.00 ] +Key: FloatTy: [ 0.50 1.00 ] +Key: FloatTy: [ 0.50 1.00 ] +Key: FloatTy: [ 0.50 1.00 ] +Key: FloatTy: [ 0.50 1.00 ] +Key: FloatTy: [ 0.50 1.00 ] +Key: VoidTy: [ 1.50 2.00 ] +Key: LabelTy: [ 2.50 3.00 ] +Key: MetadataTy: [ 3.50 4.00 ] +Key: UnknownTy: [ 4.50 5.00 ] +Key: TokenTy: [ 5.50 6.00 ] +Key: IntegerTy: [ 6.50 7.00 ] +Key: FunctionTy: [ 7.50 8.00 ] +Key: PointerTy: [ 8.50 9.00 ] +Key: StructTy: [ 9.50 10.00 ] +Key: ArrayTy: [ 10.50 11.00 ] +Key: VectorTy: [ 11.50 12.00 ] +Key: VectorTy: [ 11.50 12.00 ] +Key: PointerTy: [ 8.50 9.00 ] +Key: UnknownTy: [ 4.50 5.00 ] +Key: Function: [ 0.20 0.40 ] +Key: Pointer: [ 0.60 0.80 ] +Key: Constant: [ 1.00 1.20 ] +Key: Variable: [ 1.40 1.60 ] diff --git a/llvm/test/Analysis/IR2Vec/Inputs/reference_wtd1_vocab_print.txt b/llvm/test/Analysis/IR2Vec/Inputs/reference_wtd1_vocab_print.txt new file mode 100644 index 0000000000000..584bd315117c8 --- /dev/null +++ b/llvm/test/Analysis/IR2Vec/Inputs/reference_wtd1_vocab_print.txt @@ -0,0 +1,92 @@ +Key: Ret: [ 0.50 1.00 ] +Key: Br: [ 1.50 2.00 ] +Key: Switch: [ 2.50 3.00 ] +Key: IndirectBr: [ 3.50 4.00 ] +Key: Invoke: [ 4.50 5.00 ] +Key: Resume: [ 5.50 6.00 ] +Key: Unreachable: [ 6.50 7.00 ] +Key: CleanupRet: [ 7.50 8.00 ] +Key: CatchRet: [ 8.50 9.00 ] +Key: CatchSwitch: [ 9.50 10.00 ] +Key: CallBr: [ 10.50 11.00 ] +Key: FNeg: [ 11.50 12.00 ] +Key: Add: [ 12.50 13.00 ] +Key: FAdd: [ 13.50 14.00 ] +Key: Sub: [ 14.50 15.00 ] +Key: FSub: [ 15.50 16.00 ] +Key: Mul: [ 16.50 17.00 ] +Key: FMul: [ 17.50 18.00 ] +Key: UDiv: [ 18.50 19.00 ] +Key: SDiv: [ 19.50 20.00 ] +Key: FDiv: [ 20.50 21.00 ] +Key: URem: [ 21.50 22.00 ] +Key: SRem: [ 22.50 23.00 ] +Key: FRem: [ 23.50 24.00 ] +Key: Shl: [ 24.50 25.00 ] +Key: LShr: [ 25.50 26.00 ] +Key: AShr: [ 26.50 27.00 ] +Key: And: [ 27.50 28.00 ] +Key: Or: [ 28.50 29.00 ] +Key: Xor: [ 29.50 30.00 ] +Key: Alloca: [ 30.50 31.00 ] +Key: Load: [ 31.50 32.00 ] +Key: Store: [ 32.50 33.00 ] +Key: GetElementPtr: [ 33.50 34.00 ] +Key: Fence: [ 34.50 35.00 ] +Key: AtomicCmpXchg: [ 35.50 36.00 ] +Key: AtomicRMW: [ 36.50 37.00 ] +Key: Trunc: [ 37.50 38.00 ] +Key: ZExt: [ 38.50 39.00 ] +Key: SExt: [ 39.50 40.00 ] +Key: FPToUI: [ 40.50 41.00 ] +Key: FPToSI: [ 41.50 42.00 ] +Key: UIToFP: [ 42.50 43.00 ] +Key: SIToFP: [ 43.50 44.00 ] +Key: FPTrunc: [ 44.50 45.00 ] +Key: FPExt: [ 45.50 46.00 ] +Key: PtrToInt: [ 46.50 47.00 ] +Key: IntToPtr: [ 47.50 48.00 ] +Key: BitCast: [ 48.50 49.00 ] +Key: AddrSpaceCast: [ 49.50 50.00 ] +Key: CleanupPad: [ 50.50 51.00 ] +Key: CatchPad: [ 51.50 52.00 ] +Key: ICmp: [ 52.50 53.00 ] +Key: FCmp: [ 53.50 54.00 ] +Key: PHI: [ 54.50 55.00 ] +Key: Call: [ 55.50 56.00 ] +Key: Select: [ 56.50 57.00 ] +Key: UserOp1: [ 57.50 58.00 ] +Key: UserOp2: [ 58.50 59.00 ] +Key: VAArg: [ 59.50 60.00 ] +Key: ExtractElement: [ 60.50 61.00 ] +Key: InsertElement: [ 61.50 62.00 ] +Key: ShuffleVector: [ 62.50 63.00 ] +Key: ExtractValue: [ 63.50 64.00 ] +Key: InsertValue: [ 64.50 65.00 ] +Key: LandingPad: [ 65.50 66.00 ] +Key: Freeze: [ 66.50 67.00 ] +Key: FloatTy: [ 0.50 1.00 ] +Key: FloatTy: [ 0.50 1.00 ] +Key: FloatTy: [ 0.50 1.00 ] +Key: FloatTy: [ 0.50 1.00 ] +Key: FloatTy: [ 0.50 1.00 ] +Key: FloatTy: [ 0.50 1.00 ] +Key: FloatTy: [ 0.50 1.00 ] +Key: VoidTy: [ 1.50 2.00 ] +Key: LabelTy: [ 2.50 3.00 ] +Key: MetadataTy: [ 3.50 4.00 ] +Key: UnknownTy: [ 4.50 5.00 ] +Key: TokenTy: [ 5.50 6.00 ] +Key: IntegerTy: [ 6.50 7.00 ] +Key: FunctionTy: [ 7.50 8.00 ] +Key: PointerTy: [ 8.50 9.00 ] +Key: StructTy: [ 9.50 10.00 ] +Key: ArrayTy: [ 10.50 11.00 ] +Key: VectorTy: [ 11.50 12.00 ] +Key: VectorTy: [ 11.50 12.00 ] +Key: PointerTy: [ 8.50 9.00 ] +Key: UnknownTy: [ 4.50 5.00 ] +Key: Function: [ 0.50 1.00 ] +Key: Pointer: [ 1.50 2.00 ] +Key: Constant: [ 2.50 3.00 ] +Key: Variable: [ 3.50 4.00 ] diff --git a/llvm/test/Analysis/IR2Vec/Inputs/reference_wtd2_vocab_print.txt b/llvm/test/Analysis/IR2Vec/Inputs/reference_wtd2_vocab_print.txt new file mode 100644 index 0000000000000..2727c85075efe --- /dev/null +++ b/llvm/test/Analysis/IR2Vec/Inputs/reference_wtd2_vocab_print.txt @@ -0,0 +1,92 @@ +Key: Ret: [ 0.10 0.20 ] +Key: Br: [ 0.30 0.40 ] +Key: Switch: [ 0.50 0.60 ] +Key: IndirectBr: [ 0.70 0.80 ] +Key: Invoke: [ 0.90 1.00 ] +Key: Resume: [ 1.10 1.20 ] +Key: Unreachable: [ 1.30 1.40 ] +Key: CleanupRet: [ 1.50 1.60 ] +Key: CatchRet: [ 1.70 1.80 ] +Key: CatchSwitch: [ 1.90 2.00 ] +Key: CallBr: [ 2.10 2.20 ] +Key: FNeg: [ 2.30 2.40 ] +Key: Add: [ 2.50 2.60 ] +Key: FAdd: [ 2.70 2.80 ] +Key: Sub: [ 2.90 3.00 ] +Key: FSub: [ 3.10 3.20 ] +Key: Mul: [ 3.30 3.40 ] +Key: FMul: [ 3.50 3.60 ] +Key: UDiv: [ 3.70 3.80 ] +Key: SDiv: [ 3.90 4.00 ] +Key: FDiv: [ 4.10 4.20 ] +Key: URem: [ 4.30 4.40 ] +Key: SRem: [ 4.50 4.60 ] +Key: FRem: [ 4.70 4.80 ] +Key: Shl: [ 4.90 5.00 ] +Key: LShr: [ 5.10 5.20 ] +Key: AShr: [ 5.30 5.40 ] +Key: And: [ 5.50 5.60 ] +Key: Or: [ 5.70 5.80 ] +Key: Xor: [ 5.90 6.00 ] +Key: Alloca: [ 6.10 6.20 ] +Key: Load: [ 6.30 6.40 ] +Key: Store: [ 6.50 6.60 ] +Key: GetElementPtr: [ 6.70 6.80 ] +Key: Fence: [ 6.90 7.00 ] +Key: AtomicCmpXchg: [ 7.10 7.20 ] +Key: AtomicRMW: [ 7.30 7.40 ] +Key: Trunc: [ 7.50 7.60 ] +Key: ZExt: [ 7.70 7.80 ] +Key: SExt: [ 7.90 8.00 ] +Key: FPToUI: [ 8.10 8.20 ] +Key: FPToSI: [ 8.30 8.40 ] +Key: UIToFP: [ 8.50 8.60 ] +Key: SIToFP: [ 8.70 8.80 ] +Key: FPTrunc: [ 8.90 9.00 ] +Key: FPExt: [ 9.10 9.20 ] +Key: PtrToInt: [ 9.30 9.40 ] +Key: IntToPtr: [ 9.50 9.60 ] +Key: BitCast: [ 9.70 9.80 ] +Key: AddrSpaceCast: [ 9.90 10.00 ] +Key: CleanupPad: [ 10.10 10.20 ] +Key: CatchPad: [ 10.30 10.40 ] +Key: ICmp: [ 10.50 10.60 ] +Key: FCmp: [ 10.70 10.80 ] +Key: PHI: [ 10.90 11.00 ] +Key: Call: [ 11.10 11.20 ] +Key: Select: [ 11.30 11.40 ] +Key: UserOp1: [ 11.50 11.60 ] +Key: UserOp2: [ 11.70 11.80 ] +Key: VAArg: [ 11.90 12.00 ] +Key: ExtractElement: [ 12.10 12.20 ] +Key: InsertElement: [ 12.30 12.40 ] +Key: ShuffleVector: [ 12.50 12.60 ] +Key: ExtractValue: [ 12.70 12.80 ] +Key: InsertValue: [ 12.90 13.00 ] +Key: LandingPad: [ 13.10 13.20 ] +Key: Freeze: [ 13.30 13.40 ] +Key: FloatTy: [ 0.00 0.00 ] +Key: FloatTy: [ 0.00 0.00 ] +Key: FloatTy: [ 0.00 0.00 ] +Key: FloatTy: [ 0.00 0.00 ] +Key: FloatTy: [ 0.00 0.00 ] +Key: FloatTy: [ 0.00 0.00 ] +Key: FloatTy: [ 0.00 0.00 ] +Key: VoidTy: [ 0.00 0.00 ] +Key: LabelTy: [ 0.00 0.00 ] +Key: MetadataTy: [ 0.00 0.00 ] +Key: UnknownTy: [ 0.00 0.00 ] +Key: TokenTy: [ 0.00 0.00 ] +Key: IntegerTy: [ 0.00 0.00 ] +Key: FunctionTy: [ 0.00 0.00 ] +Key: PointerTy: [ 0.00 0.00 ] +Key: StructTy: [ 0.00 0.00 ] +Key: ArrayTy: [ 0.00 0.00 ] +Key: VectorTy: [ 0.00 0.00 ] +Key: VectorTy: [ 0.00 0.00 ] +Key: PointerTy: [ 0.00 0.00 ] +Key: UnknownTy: [ 0.00 0.00 ] +Key: Function: [ 0.00 0.00 ] +Key: Pointer: [ 0.00 0.00 ] +Key: Constant: [ 0.00 0.00 ] +Key: Variable: [ 0.00 0.00 ] diff --git a/llvm/test/Analysis/IR2Vec/basic.ll b/llvm/test/Analysis/IR2Vec/basic.ll index ed65ff46dc953..cb0544fb19860 100644 --- a/llvm/test/Analysis/IR2Vec/basic.ll +++ b/llvm/test/Analysis/IR2Vec/basic.ll @@ -1,57 +1,79 @@ -; RUN: opt -passes='print' -o /dev/null -ir2vec-vocab-path=%S/Inputs/dummy_3D_vocab.json %s 2>&1 | FileCheck %s -check-prefix=3D-CHECK -; RUN: opt -passes='print' -o /dev/null -ir2vec-vocab-path=%S/Inputs/dummy_5D_vocab.json %s 2>&1 | FileCheck %s -check-prefix=5D-CHECK +; RUN: opt -passes='print' -o /dev/null -ir2vec-vocab-path=%S/Inputs/dummy_3D_nonzero_opc_vocab.json %s 2>&1 | FileCheck %s -check-prefix=3D-CHECK-OPC +; RUN: opt -passes='print' -o /dev/null -ir2vec-vocab-path=%S/Inputs/dummy_3D_nonzero_type_vocab.json %s 2>&1 | FileCheck %s -check-prefix=3D-CHECK-TYPE +; RUN: opt -passes='print' -o /dev/null -ir2vec-vocab-path=%S/Inputs/dummy_3D_nonzero_arg_vocab.json %s 2>&1 | FileCheck %s -check-prefix=3D-CHECK-ARG ; RUN: not opt -passes='print' -o /dev/null -ir2vec-vocab-path=%S/Inputs/incorrect_vocab1.json %s 2>&1 | FileCheck %s -check-prefix=INCORRECT-VOCAB1-CHECK ; RUN: not opt -passes='print' -o /dev/null -ir2vec-vocab-path=%S/Inputs/incorrect_vocab2.json %s 2>&1 | FileCheck %s -check-prefix=INCORRECT-VOCAB2-CHECK ; RUN: not opt -passes='print' -o /dev/null -ir2vec-vocab-path=%S/Inputs/incorrect_vocab3.json %s 2>&1 | FileCheck %s -check-prefix=INCORRECT-VOCAB3-CHECK ; RUN: not opt -passes='print' -o /dev/null -ir2vec-vocab-path=%S/Inputs/incorrect_vocab4.json %s 2>&1 | FileCheck %s -check-prefix=INCORRECT-VOCAB4-CHECK -define dso_local i32 @abc(i32 %0, i32 %1) { +define dso_local noundef float @_Z3abcif(i32 noundef %a, float noundef %b) #0 { entry: - %3 = alloca i32, align 4 - %4 = alloca i32, align 4 - store i32 %0, ptr %3, align 4 - store i32 %1, ptr %4, align 4 - %5 = load i32, ptr %3, align 4 - %6 = load i32, ptr %4, align 4 - %7 = load i32, ptr %3, align 4 - %8 = mul nsw i32 %6, %7 - %9 = add nsw i32 %5, %8 - ret i32 %9 + %a.addr = alloca i32, align 4 + %b.addr = alloca float, align 4 + store i32 %a, ptr %a.addr, align 4 + store float %b, ptr %b.addr, align 4 + %0 = load i32, ptr %a.addr, align 4 + %1 = load i32, ptr %a.addr, align 4 + %mul = mul nsw i32 %0, %1 + %conv = sitofp i32 %mul to float + %2 = load float, ptr %b.addr, align 4 + %add = fadd float %conv, %2 + ret float %add } -; 3D-CHECK: IR2Vec embeddings for function abc: -; 3D-CHECK-NEXT: Function vector: [ 51.00 60.00 69.00 ] -; 3D-CHECK-NEXT: Basic block vectors: -; 3D-CHECK-NEXT: Basic block: entry: -; 3D-CHECK-NEXT: [ 51.00 60.00 69.00 ] -; 3D-CHECK-NEXT: Instruction vectors: -; 3D-CHECK-NEXT: Instruction: %2 = alloca i32, align 4 [ 1.00 2.00 3.00 ] -; 3D-CHECK-NEXT: Instruction: %3 = alloca i32, align 4 [ 1.00 2.00 3.00 ] -; 3D-CHECK-NEXT: Instruction: store i32 %0, ptr %2, align 4 [ 7.00 8.00 9.00 ] -; 3D-CHECK-NEXT: Instruction: store i32 %1, ptr %3, align 4 [ 7.00 8.00 9.00 ] -; 3D-CHECK-NEXT: Instruction: %4 = load i32, ptr %2, align 4 [ 4.00 5.00 6.00 ] -; 3D-CHECK-NEXT: Instruction: %5 = load i32, ptr %3, align 4 [ 4.00 5.00 6.00 ] -; 3D-CHECK-NEXT: Instruction: %6 = load i32, ptr %2, align 4 [ 4.00 5.00 6.00 ] -; 3D-CHECK-NEXT: Instruction: %7 = mul nsw i32 %5, %6 [ 13.00 14.00 15.00 ] -; 3D-CHECK-NEXT: Instruction: %8 = add nsw i32 %4, %7 [ 10.00 11.00 12.00 ] -; 3D-CHECK-NEXT: Instruction: ret i32 %8 [ 0.00 0.00 0.00 ] +; 3D-CHECK-OPC: IR2Vec embeddings for function _Z3abcif: +; 3D-CHECK-OPC-NEXT: Function vector: [ 878.00 889.00 900.00 ] +; 3D-CHECK-OPC-NEXT: Basic block vectors: +; 3D-CHECK-OPC-NEXT: Basic block: entry: +; 3D-CHECK-OPC-NEXT: [ 878.00 889.00 900.00 ] +; 3D-CHECK-OPC-NEXT: Instruction vectors: +; 3D-CHECK-OPC-NEXT: Instruction: %a.addr = alloca i32, align 4 [ 91.00 92.00 93.00 ] +; 3D-CHECK-OPC-NEXT: Instruction: %b.addr = alloca float, align 4 [ 91.00 92.00 93.00 ] +; 3D-CHECK-OPC-NEXT: Instruction: store i32 %a, ptr %a.addr, align 4 [ 97.00 98.00 99.00 ] +; 3D-CHECK-OPC-NEXT: Instruction: store float %b, ptr %b.addr, align 4 [ 97.00 98.00 99.00 ] +; 3D-CHECK-OPC-NEXT: Instruction: %0 = load i32, ptr %a.addr, align 4 [ 94.00 95.00 96.00 ] +; 3D-CHECK-OPC-NEXT: Instruction: %1 = load i32, ptr %a.addr, align 4 [ 94.00 95.00 96.00 ] +; 3D-CHECK-OPC-NEXT: Instruction: %mul = mul nsw i32 %0, %1 [ 49.00 50.00 51.00 ] +; 3D-CHECK-OPC-NEXT: Instruction: %conv = sitofp i32 %mul to float [ 130.00 131.00 132.00 ] +; 3D-CHECK-OPC-NEXT: Instruction: %2 = load float, ptr %b.addr, align 4 [ 94.00 95.00 96.00 ] +; 3D-CHECK-OPC-NEXT: Instruction: %add = fadd float %conv, %2 [ 40.00 41.00 42.00 ] +; 3D-CHECK-OPC-NEXT: Instruction: ret float %add [ 1.00 2.00 3.00 ] -; 5D-CHECK: IR2Vec embeddings for function abc: -; 5D-CHECK-NEXT: Function vector: [ 16.50 22.00 27.50 61.50 72.95 ] -; 5D-CHECK-NEXT: Basic block vectors: -; 5D-CHECK-NEXT: Basic block: entry: -; 5D-CHECK-NEXT: [ 16.50 22.00 27.50 61.50 72.95 ] -; 5D-CHECK-NEXT: Instruction vectors: -; 5D-CHECK-NEXT: Instruction: %2 = alloca i32, align 4 [ -0.10 -0.20 -0.30 1.00 2.00 ] -; 5D-CHECK-NEXT: Instruction: %3 = alloca i32, align 4 [ -0.10 -0.20 -0.30 1.00 2.00 ] -; 5D-CHECK-NEXT: Instruction: store i32 %0, ptr %2, align 4 [ -0.30 0.20 0.70 9.20 10.80 ] -; 5D-CHECK-NEXT: Instruction: store i32 %1, ptr %3, align 4 [ -0.30 0.20 0.70 9.20 10.80 ] -; 5D-CHECK-NEXT: Instruction: %4 = load i32, ptr %2, align 4 [ -0.30 -0.10 0.10 5.10 6.05 ] -; 5D-CHECK-NEXT: Instruction: %5 = load i32, ptr %3, align 4 [ -0.30 -0.10 0.10 5.10 6.05 ] -; 5D-CHECK-NEXT: Instruction: %6 = load i32, ptr %2, align 4 [ -0.30 -0.10 0.10 5.10 6.05 ] -; 5D-CHECK-NEXT: Instruction: %7 = mul nsw i32 %5, %6 [ 12.90 14.80 16.70 2.50 2.95 ] -; 5D-CHECK-NEXT: Instruction: %8 = add nsw i32 %4, %7 [ -0.10 0.70 1.50 13.70 15.25 ] -; 5D-CHECK-NEXT: Instruction: ret i32 %8 [ 5.40 6.80 8.20 9.60 11.00 ] +; 3D-CHECK-TYPE: IR2Vec embeddings for function _Z3abcif: +; 3D-CHECK-TYPE-NEXT: Function vector: [ 61.00 66.50 72.00 ] +; 3D-CHECK-TYPE-NEXT: Basic block vectors: +; 3D-CHECK-TYPE-NEXT: Basic block: entry: +; 3D-CHECK-TYPE-NEXT: [ 61.00 66.50 72.00 ] +; 3D-CHECK-TYPE-NEXT: Instruction vectors: +; 3D-CHECK-TYPE-NEXT: Instruction: %a.addr = alloca i32, align 4 [ 12.50 13.00 13.50 ] +; 3D-CHECK-TYPE-NEXT: Instruction: %b.addr = alloca float, align 4 [ 12.50 13.00 13.50 ] +; 3D-CHECK-TYPE-NEXT: Instruction: store i32 %a, ptr %a.addr, align 4 [ 2.00 2.50 3.00 ] +; 3D-CHECK-TYPE-NEXT: Instruction: store float %b, ptr %b.addr, align 4 [ 2.00 2.50 3.00 ] +; 3D-CHECK-TYPE-NEXT: Instruction: %0 = load i32, ptr %a.addr, align 4 [ 9.50 10.00 10.50 ] +; 3D-CHECK-TYPE-NEXT: Instruction: %1 = load i32, ptr %a.addr, align 4 [ 9.50 10.00 10.50 ] +; 3D-CHECK-TYPE-NEXT: Instruction: %mul = mul nsw i32 %0, %1 [ 9.50 10.00 10.50 ] +; 3D-CHECK-TYPE-NEXT: Instruction: %conv = sitofp i32 %mul to float [ 0.50 1.00 1.50 ] +; 3D-CHECK-TYPE-NEXT: Instruction: %2 = load float, ptr %b.addr, align 4 [ 0.50 1.00 1.50 ] +; 3D-CHECK-TYPE-NEXT: Instruction: %add = fadd float %conv, %2 [ 0.50 1.00 1.50 ] +; 3D-CHECK-TYPE-NEXT: Instruction: ret float %add [ 2.00 2.50 3.00 ] + +; 3D-CHECK-ARG: IR2Vec embeddings for function _Z3abcif: +; 3D-CHECK-ARG-NEXT: Function vector: [ 22.80 25.80 28.80 ] +; 3D-CHECK-ARG-NEXT: Basic block vectors: +; 3D-CHECK-ARG-NEXT: Basic block: entry: +; 3D-CHECK-ARG-NEXT: [ 22.80 25.80 28.80 ] +; 3D-CHECK-ARG-NEXT: Instruction vectors: +; 3D-CHECK-ARG-NEXT: Instruction: %a.addr = alloca i32, align 4 [ 1.40 1.60 1.80 ] +; 3D-CHECK-ARG-NEXT: Instruction: %b.addr = alloca float, align 4 [ 1.40 1.60 1.80 ] +; 3D-CHECK-ARG-NEXT: Instruction: store i32 %a, ptr %a.addr, align 4 [ 2.80 3.20 3.60 ] +; 3D-CHECK-ARG-NEXT: Instruction: store float %b, ptr %b.addr, align 4 [ 2.80 3.20 3.60 ] +; 3D-CHECK-ARG-NEXT: Instruction: %0 = load i32, ptr %a.addr, align 4 [ 0.80 1.00 1.20 ] +; 3D-CHECK-ARG-NEXT: Instruction: %1 = load i32, ptr %a.addr, align 4 [ 0.80 1.00 1.20 ] +; 3D-CHECK-ARG-NEXT: Instruction: %mul = mul nsw i32 %0, %1 [ 4.00 4.40 4.80 ] +; 3D-CHECK-ARG-NEXT: Instruction: %conv = sitofp i32 %mul to float [ 2.00 2.20 2.40 ] +; 3D-CHECK-ARG-NEXT: Instruction: %2 = load float, ptr %b.addr, align 4 [ 0.80 1.00 1.20 ] +; 3D-CHECK-ARG-NEXT: Instruction: %add = fadd float %conv, %2 [ 4.00 4.40 4.80 ] +; 3D-CHECK-ARG-NEXT: Instruction: ret float %add [ 2.00 2.20 2.40 ] ; INCORRECT-VOCAB1-CHECK: error: Error reading vocabulary: Missing 'Opcodes' section in vocabulary file diff --git a/llvm/test/Analysis/IR2Vec/dbg-inst.ll b/llvm/test/Analysis/IR2Vec/dbg-inst.ll index 0f486b0ba6a52..e26a2c093b5e2 100644 --- a/llvm/test/Analysis/IR2Vec/dbg-inst.ll +++ b/llvm/test/Analysis/IR2Vec/dbg-inst.ll @@ -1,4 +1,4 @@ -; RUN: opt -passes='print' -o /dev/null -ir2vec-vocab-path=%S/Inputs/dummy_3D_vocab.json %s 2>&1 | FileCheck %s +; RUN: opt -passes='print' -o /dev/null -ir2vec-vocab-path=%S/Inputs/dummy_3D_nonzero_opc_vocab.json %s 2>&1 | FileCheck %s define void @bar2(ptr %foo) { store i32 0, ptr %foo, align 4 @@ -9,5 +9,5 @@ define void @bar2(ptr %foo) { declare void @llvm.dbg.value(metadata, i64, metadata, metadata) nounwind readnone ; CHECK: Instruction vectors: -; CHECK-NEXT: Instruction: store i32 0, ptr %foo, align 4 [ 7.00 8.00 9.00 ] -; CHECK-NEXT: Instruction: ret void [ 0.00 0.00 0.00 ] +; CHECK-NEXT: Instruction: store i32 0, ptr %foo, align 4 [ 97.00 98.00 99.00 ] +; CHECK-NEXT: Instruction: ret void [ 1.00 2.00 3.00 ] diff --git a/llvm/test/Analysis/IR2Vec/if-else.ll b/llvm/test/Analysis/IR2Vec/if-else.ll index b1c64224e5328..fe532479086d3 100644 --- a/llvm/test/Analysis/IR2Vec/if-else.ll +++ b/llvm/test/Analysis/IR2Vec/if-else.ll @@ -1,4 +1,4 @@ -; RUN: opt -passes='print' -o /dev/null -ir2vec-vocab-path=%S/Inputs/dummy_3D_vocab.json %s 2>&1 | FileCheck %s +; RUN: opt -passes='print' -o /dev/null -ir2vec-vocab-path=%S/Inputs/dummy_3D_nonzero_opc_vocab.json %s 2>&1 | FileCheck %s define dso_local i32 @abc(i32 noundef %a, i32 noundef %b) #0 { entry: @@ -29,10 +29,10 @@ return: ; preds = %if.else, %if.then ; CHECK: Basic block vectors: ; CHECK-NEXT: Basic block: entry: -; CHECK-NEXT: [ 25.00 32.00 39.00 ] +; CHECK-NEXT: [ 816.00 825.00 834.00 ] ; CHECK-NEXT: Basic block: if.then: -; CHECK-NEXT: [ 11.00 13.00 15.00 ] +; CHECK-NEXT: [ 195.00 198.00 201.00 ] ; CHECK-NEXT: Basic block: if.else: -; CHECK-NEXT: [ 11.00 13.00 15.00 ] +; CHECK-NEXT: [ 195.00 198.00 201.00 ] ; CHECK-NEXT: Basic block: return: -; CHECK-NEXT: [ 4.00 5.00 6.00 ] +; CHECK-NEXT: [ 95.00 97.00 99.00 ] diff --git a/llvm/test/Analysis/IR2Vec/unreachable.ll b/llvm/test/Analysis/IR2Vec/unreachable.ll index 370fe6881d6ce..b0e3e49978018 100644 --- a/llvm/test/Analysis/IR2Vec/unreachable.ll +++ b/llvm/test/Analysis/IR2Vec/unreachable.ll @@ -1,4 +1,4 @@ -; RUN: opt -passes='print' -o /dev/null -ir2vec-vocab-path=%S/Inputs/dummy_3D_vocab.json %s 2>&1 | FileCheck %s +; RUN: opt -passes='print' -o /dev/null -ir2vec-vocab-path=%S/Inputs/dummy_3D_nonzero_opc_vocab.json %s 2>&1 | FileCheck %s define dso_local i32 @abc(i32 noundef %a, i32 noundef %b) #0 { entry: @@ -33,10 +33,10 @@ return: ; preds = %if.else, %if.then ; CHECK: Basic block vectors: ; CHECK-NEXT: Basic block: entry: -; CHECK-NEXT: [ 25.00 32.00 39.00 ] +; CHECK-NEXT: [ 816.00 825.00 834.00 ] ; CHECK-NEXT: Basic block: if.then: -; CHECK-NEXT: [ 11.00 13.00 15.00 ] +; CHECK-NEXT: [ 195.00 198.00 201.00 ] ; CHECK-NEXT: Basic block: if.else: -; CHECK-NEXT: [ 11.00 13.00 15.00 ] +; CHECK-NEXT: [ 195.00 198.00 201.00 ] ; CHECK-NEXT: Basic block: return: -; CHECK-NEXT: [ 4.00 5.00 6.00 ] +; CHECK-NEXT: [ 95.00 97.00 99.00 ] diff --git a/llvm/test/Analysis/IR2Vec/vocab-test.ll b/llvm/test/Analysis/IR2Vec/vocab-test.ll index fbccb504a232f..3ddb2cd78807f 100644 --- a/llvm/test/Analysis/IR2Vec/vocab-test.ll +++ b/llvm/test/Analysis/IR2Vec/vocab-test.ll @@ -1,20 +1,13 @@ -; RUN: opt -passes='print' -o /dev/null -ir2vec-vocab-path=%S/Inputs/dummy_2D_vocab.json %s 2>&1 | FileCheck %s -check-prefix=VOCAB-CHECK -; RUN: opt -passes='print' -o /dev/null -ir2vec-vocab-path=%S/Inputs/dummy_2D_vocab.json -ir2vec-opc-weight=0.5 -ir2vec-type-weight=0.5 -ir2vec-arg-weight=0.5 %s 2>&1 | FileCheck %s -check-prefix=WT1-VOCAB-CHECK -; RUN: opt -passes='print' -o /dev/null -ir2vec-vocab-path=%S/Inputs/dummy_2D_vocab.json -ir2vec-opc-weight=0.1 -ir2vec-type-weight=0 -ir2vec-arg-weight=0 %s 2>&1 | FileCheck %s -check-prefix=WT2-VOCAB-CHECK +; RUN: opt -passes='print' -S -o /dev/null -ir2vec-vocab-path=%S/Inputs/dummy_2D_vocab.json %s 2> %t1.log +; RUN: diff %S/Inputs/reference_default_vocab_print.txt %t1.log + +; RUN: opt -passes='print' -o /dev/null -ir2vec-vocab-path=%S/Inputs/dummy_2D_vocab.json -ir2vec-opc-weight=0.5 -ir2vec-type-weight=0.5 -ir2vec-arg-weight=0.5 %s 2> %t2.log +; RUN: diff %S/Inputs/reference_wtd1_vocab_print.txt %t2.log + +; RUN: opt -passes='print' -o /dev/null -ir2vec-vocab-path=%S/Inputs/dummy_2D_vocab.json -ir2vec-opc-weight=0.1 -ir2vec-type-weight=0 -ir2vec-arg-weight=0 %s 2> %t3.log +; RUN: diff %S/Inputs/reference_wtd2_vocab_print.txt %t3.log define dso_local void @test() { entry: ret void } - -; VOCAB-CHECK: Key: dummyArg: [ 0.20 0.40 ] -; VOCAB-CHECK-NEXT: Key: dummyOpc: [ 1.00 2.00 ] -; VOCAB-CHECK-NEXT: Key: dummyTy: [ 0.50 1.00 ] - -; WT1-VOCAB-CHECK: Key: dummyArg: [ 0.50 1.00 ] -; WT1-VOCAB-CHECK-NEXT: Key: dummyOpc: [ 0.50 1.00 ] -; WT1-VOCAB-CHECK-NEXT: Key: dummyTy: [ 0.50 1.00 ] - -; WT2-VOCAB-CHECK: Key: dummyArg: [ 0.00 0.00 ] -; WT2-VOCAB-CHECK-NEXT: Key: dummyOpc: [ 0.10 0.20 ] -; WT2-VOCAB-CHECK-NEXT: Key: dummyTy: [ 0.00 0.00 ] diff --git a/llvm/unittests/Analysis/FunctionPropertiesAnalysisTest.cpp b/llvm/unittests/Analysis/FunctionPropertiesAnalysisTest.cpp index ca4f5d0f63026..8ade03d909a97 100644 --- a/llvm/unittests/Analysis/FunctionPropertiesAnalysisTest.cpp +++ b/llvm/unittests/Analysis/FunctionPropertiesAnalysisTest.cpp @@ -42,8 +42,9 @@ namespace { class FunctionPropertiesAnalysisTest : public testing::Test { public: FunctionPropertiesAnalysisTest() { - createTestVocabulary(1); - MAM.registerPass([&] { return IR2VecVocabAnalysis(Vocabulary); }); + auto VocabVector = ir2vec::Vocabulary::createDummyVocabForTest(1); + MAM.registerPass([&] { return IR2VecVocabAnalysis(VocabVector); }); + IR2VecVocab = ir2vec::Vocabulary(std::move(VocabVector)); MAM.registerPass([&] { return PassInstrumentationAnalysis(); }); FAM.registerPass([&] { return ModuleAnalysisManagerFunctionProxy(MAM); }); FAM.registerPass([&] { return DominatorTreeAnalysis(); }); @@ -60,34 +61,12 @@ class FunctionPropertiesAnalysisTest : public testing::Test { float OriginalTypeWeight = ir2vec::TypeWeight; float OriginalArgWeight = ir2vec::ArgWeight; - void createTestVocabulary(unsigned Dim) { - llvm::SmallVector SampleEntities = { - "add", "sub", "mul", "icmp", "br", - "ret", "store", "load", "alloca", "phi", - "call", "voidTy", "floatTy", "integerTy", "functionTy", - "structTy", "arrayTy", "pointerTy", "vectorTy", "emptyTy", - "labelTy", "tokenTy", "metadataTy", "unknownTy", "function", - "pointer", "constant", "variable", "getelementptr", "invoke", - "landingpad", "resume", "catch", "cleanup"}; - float EmbVal = 0.1; - - // Helper lambda to add entries to the vocabulary - auto addEntry = [&](std::string key) { - Vocabulary[key] = ir2vec::Embedding(Dim, EmbVal); - EmbVal += 0.1; - }; - - for (auto &Name : SampleEntities) - addEntry(Name); - return; - } - protected: std::unique_ptr DT; std::unique_ptr LI; FunctionAnalysisManager FAM; ModuleAnalysisManager MAM; - ir2vec::Vocab Vocabulary; + ir2vec::Vocabulary IR2VecVocab; void TearDown() override { // Restore original IR2Vec weights @@ -127,7 +106,7 @@ class FunctionPropertiesAnalysisTest : public testing::Test { } std::unique_ptr createEmbedder(const Function &F) { - auto Emb = ir2vec::Embedder::create(IR2VecKind::Symbolic, F, Vocabulary); + auto Emb = ir2vec::Embedder::create(IR2VecKind::Symbolic, F, IR2VecVocab); EXPECT_TRUE(static_cast(Emb)); return std::move(Emb); } diff --git a/llvm/unittests/Analysis/IR2VecTest.cpp b/llvm/unittests/Analysis/IR2VecTest.cpp index 50eb7f73c6f50..f584aad822459 100644 --- a/llvm/unittests/Analysis/IR2VecTest.cpp +++ b/llvm/unittests/Analysis/IR2VecTest.cpp @@ -8,7 +8,7 @@ #include "llvm/Analysis/IR2Vec.h" #include "llvm/IR/Constants.h" -#include "llvm/IR/Function.h" +#include "llvm/IR/Instruction.h" #include "llvm/IR/Instructions.h" #include "llvm/IR/LLVMContext.h" #include "llvm/IR/Module.h" @@ -29,10 +29,9 @@ namespace { class TestableEmbedder : public Embedder { public: - TestableEmbedder(const Function &F, const Vocab &V) : Embedder(F, V) {} + TestableEmbedder(const Function &F, const Vocabulary &V) : Embedder(F, V) {} void computeEmbeddings() const override {} void computeEmbeddings(const BasicBlock &BB) const override {} - using Embedder::lookupVocab; }; TEST(EmbeddingTest, ConstructorsAndAccessors) { @@ -227,7 +226,7 @@ TEST(EmbeddingTest, MismatchedDimensionsApproximatelyEqual) { #endif // GTEST_HAS_DEATH_TEST TEST(IR2VecTest, CreateSymbolicEmbedder) { - Vocab V = {{"foo", {1.0, 2.0}}}; + Vocabulary V = Vocabulary(Vocabulary::createDummyVocabForTest()); LLVMContext Ctx; Module M("M", Ctx); @@ -239,7 +238,7 @@ TEST(IR2VecTest, CreateSymbolicEmbedder) { } TEST(IR2VecTest, CreateInvalidMode) { - Vocab V = {{"foo", {1.0, 2.0}}}; + Vocabulary V = Vocabulary(Vocabulary::createDummyVocabForTest()); LLVMContext Ctx; Module M("M", Ctx); @@ -258,23 +257,6 @@ TEST(IR2VecTest, CreateInvalidMode) { #endif // NDEBUG } -TEST(IR2VecTest, LookupVocab) { - Vocab V = {{"foo", {1.0, 2.0}}, {"bar", {3.0, 4.0}}}; - LLVMContext Ctx; - Module M("M", Ctx); - FunctionType *FTy = FunctionType::get(Type::getVoidTy(Ctx), false); - Function *F = Function::Create(FTy, Function::ExternalLinkage, "f", M); - - TestableEmbedder E(*F, V); - auto V_foo = E.lookupVocab("foo"); - EXPECT_EQ(V_foo.size(), 2u); - EXPECT_THAT(V_foo, ElementsAre(1.0, 2.0)); - - auto V_missing = E.lookupVocab("missing"); - EXPECT_EQ(V_missing.size(), 2u); - EXPECT_THAT(V_missing, ElementsAre(0.0, 0.0)); -} - TEST(IR2VecTest, ZeroDimensionEmbedding) { Embedding E1; Embedding E2; @@ -285,28 +267,10 @@ TEST(IR2VecTest, ZeroDimensionEmbedding) { EXPECT_TRUE(E1.empty()); } -TEST(IR2VecTest, IR2VecVocabResultValidity) { - // Default constructed is invalid - IR2VecVocabResult invalidResult; - EXPECT_FALSE(invalidResult.isValid()); -#if GTEST_HAS_DEATH_TEST -#ifndef NDEBUG - EXPECT_DEATH(invalidResult.getVocabulary(), "IR2Vec Vocabulary is invalid"); - EXPECT_DEATH(invalidResult.getDimension(), "IR2Vec Vocabulary is invalid"); -#endif // NDEBUG -#endif // GTEST_HAS_DEATH_TEST - - // Valid vocab - Vocab V = {{"foo", {1.0, 2.0}}, {"bar", {3.0, 4.0}}}; - IR2VecVocabResult validResult(std::move(V)); - EXPECT_TRUE(validResult.isValid()); - EXPECT_EQ(validResult.getDimension(), 2u); -} - // Fixture for IR2Vec tests requiring IR setup. class IR2VecTestFixture : public ::testing::Test { protected: - Vocab V; + Vocabulary V; LLVMContext Ctx; std::unique_ptr M; Function *F = nullptr; @@ -315,11 +279,7 @@ class IR2VecTestFixture : public ::testing::Test { Instruction *RetInst = nullptr; void SetUp() override { - V = {{"add", {1.0, 2.0}}, - {"integerTy", {0.25, 0.25}}, - {"constant", {0.04, 0.06}}, - {"variable", {0.0, 0.0}}, - {"unknownTy", {0.0, 0.0}}}; + V = Vocabulary(Vocabulary::createDummyVocabForTest(2)); // Setup IR M = std::make_unique("TestM", Ctx); @@ -349,13 +309,8 @@ TEST_F(IR2VecTestFixture, GetInstVecMap) { EXPECT_EQ(InstMap.at(AddInst).size(), 2u); EXPECT_EQ(InstMap.at(RetInst).size(), 2u); - // Check values for add: {1.29, 2.31} - EXPECT_THAT(InstMap.at(AddInst), - ElementsAre(DoubleNear(1.29, 1e-6), DoubleNear(2.31, 1e-6))); - - // Check values for ret: {0.0, 0.}; Neither ret nor voidTy are present in - // vocab - EXPECT_THAT(InstMap.at(RetInst), ElementsAre(0.0, 0.0)); + EXPECT_TRUE(InstMap.at(AddInst).approximatelyEquals(Embedding(2, 27.6))); + EXPECT_TRUE(InstMap.at(RetInst).approximatelyEquals(Embedding(2, 16.8))); } TEST_F(IR2VecTestFixture, GetBBVecMap) { @@ -368,10 +323,9 @@ TEST_F(IR2VecTestFixture, GetBBVecMap) { EXPECT_TRUE(BBMap.count(BB)); EXPECT_EQ(BBMap.at(BB).size(), 2u); - // BB vector should be sum of add and ret: {1.29, 2.31} + {0.0, 0.0} = - // {1.29, 2.31} - EXPECT_THAT(BBMap.at(BB), - ElementsAre(DoubleNear(1.29, 1e-6), DoubleNear(2.31, 1e-6))); + // BB vector should be sum of add and ret: {27.6, 27.6} + {16.8, 16.8} = + // {44.4, 44.4} + EXPECT_TRUE(BBMap.at(BB).approximatelyEquals(Embedding(2, 44.4))); } TEST_F(IR2VecTestFixture, GetBBVector) { @@ -381,8 +335,7 @@ TEST_F(IR2VecTestFixture, GetBBVector) { const auto &BBVec = Emb->getBBVector(*BB); EXPECT_EQ(BBVec.size(), 2u); - EXPECT_THAT(BBVec, - ElementsAre(DoubleNear(1.29, 1e-6), DoubleNear(2.31, 1e-6))); + EXPECT_TRUE(BBVec.approximatelyEquals(Embedding(2, 44.4))); } TEST_F(IR2VecTestFixture, GetFunctionVector) { @@ -393,32 +346,147 @@ TEST_F(IR2VecTestFixture, GetFunctionVector) { EXPECT_EQ(FuncVec.size(), 2u); - // Function vector should match BB vector (only one BB): {1.29, 2.31} - EXPECT_THAT(FuncVec, - ElementsAre(DoubleNear(1.29, 1e-6), DoubleNear(2.31, 1e-6))); + // Function vector should match BB vector (only one BB): {44.4, 44.4} + EXPECT_TRUE(FuncVec.approximatelyEquals(Embedding(2, 44.4))); +} + +static constexpr unsigned MAX_OPCODES = 67; +static constexpr unsigned MAX_TYPES = 21; +static constexpr unsigned MAX_OPERANDS = 4; + +TEST(IR2VecVocabularyTest, DummyVocabTest) { + for (unsigned Dim = 1; Dim <= 10; ++Dim) { + auto VocabVec = Vocabulary::createDummyVocabForTest(Dim); + + // All embeddings should have the same dimension + for (const auto &Emb : VocabVec) + EXPECT_EQ(Emb.size(), Dim); + + // Should have the correct total number of embeddings + EXPECT_EQ(VocabVec.size(), MAX_OPCODES + MAX_TYPES + MAX_OPERANDS); + + auto ExpectedVocab = VocabVec; + + IR2VecVocabAnalysis VocabAnalysis(std::move(VocabVec)); + LLVMContext TestCtx; + Module TestMod("TestModuleForVocabAnalysis", TestCtx); + ModuleAnalysisManager MAM; + Vocabulary Result = VocabAnalysis.run(TestMod, MAM); + EXPECT_TRUE(Result.isValid()); + EXPECT_EQ(Result.getDimension(), Dim); + EXPECT_EQ(Result.size(), MAX_OPCODES + MAX_TYPES + MAX_OPERANDS); + + for (size_t i = 0; i < VocabVec.size(); ++i) + EXPECT_TRUE(Result.at(i).approximatelyEquals(ExpectedVocab[i], 0.01)); + } +} + +TEST(IR2VecVocabularyTest, StringKeyGeneration) { + EXPECT_EQ(Vocabulary::getStringKey(0), "Ret"); + EXPECT_EQ(Vocabulary::getStringKey(12), "Add"); + + StringRef HalfTypeKey = Vocabulary::getStringKey(MAX_OPCODES + 0); + StringRef FloatTypeKey = Vocabulary::getStringKey(MAX_OPCODES + 2); + StringRef VoidTypeKey = Vocabulary::getStringKey(MAX_OPCODES + 7); + StringRef IntTypeKey = Vocabulary::getStringKey(MAX_OPCODES + 12); + + EXPECT_EQ(HalfTypeKey, "FloatTy"); + EXPECT_EQ(FloatTypeKey, "FloatTy"); + EXPECT_EQ(VoidTypeKey, "VoidTy"); + EXPECT_EQ(IntTypeKey, "IntegerTy"); + + StringRef FuncArgKey = Vocabulary::getStringKey(MAX_OPCODES + MAX_TYPES + 0); + StringRef PtrArgKey = Vocabulary::getStringKey(MAX_OPCODES + MAX_TYPES + 1); + EXPECT_EQ(FuncArgKey, "Function"); + EXPECT_EQ(PtrArgKey, "Pointer"); } -TEST(IR2VecTest, IR2VecVocabAnalysisWithPrepopulatedVocab) { - Vocab InitialVocab = {{"key1", {1.1, 2.2}}, {"key2", {3.3, 4.4}}}; - Vocab ExpectedVocab = InitialVocab; - unsigned ExpectedDim = InitialVocab.begin()->second.size(); +TEST(IR2VecVocabularyTest, VocabularyDimensions) { + { + Vocabulary V(Vocabulary::createDummyVocabForTest(1)); + EXPECT_TRUE(V.isValid()); + EXPECT_EQ(V.getDimension(), 1u); + } + + { + Vocabulary V(Vocabulary::createDummyVocabForTest(5)); + EXPECT_TRUE(V.isValid()); + EXPECT_EQ(V.getDimension(), 5u); + } + + { + Vocabulary V(Vocabulary::createDummyVocabForTest(10)); + EXPECT_TRUE(V.isValid()); + EXPECT_EQ(V.getDimension(), 10u); + } +} - IR2VecVocabAnalysis VocabAnalysis(std::move(InitialVocab)); +#if GTEST_HAS_DEATH_TEST +#ifndef NDEBUG +TEST(IR2VecVocabularyTest, InvalidAccess) { + Vocabulary V(Vocabulary::createDummyVocabForTest(2)); - LLVMContext TestCtx; - Module TestMod("TestModuleForVocabAnalysis", TestCtx); - ModuleAnalysisManager MAM; - IR2VecVocabResult Result = VocabAnalysis.run(TestMod, MAM); + EXPECT_DEATH(V.at(1000), "Position out of bounds in vocabulary"); - EXPECT_TRUE(Result.isValid()); - ASSERT_FALSE(Result.getVocabulary().empty()); - EXPECT_EQ(Result.getDimension(), ExpectedDim); + EXPECT_DEATH(V[0u], "Invalid opcode"); - const auto &ResultVocab = Result.getVocabulary(); - EXPECT_EQ(ResultVocab.size(), ExpectedVocab.size()); - for (const auto &pair : ExpectedVocab) { - EXPECT_TRUE(ResultVocab.count(pair.first)); - EXPECT_THAT(ResultVocab.at(pair.first), ElementsAreArray(pair.second)); + EXPECT_DEATH(V[100u], "Invalid opcode"); +} +#endif // NDEBUG +#endif // GTEST_HAS_DEATH_TEST + +TEST(IR2VecVocabularyTest, TypeIDStringKeyMapping) { + EXPECT_EQ(Vocabulary::getStringKey(MAX_OPCODES + + static_cast(Type::VoidTyID)), + "VoidTy"); + EXPECT_EQ(Vocabulary::getStringKey(MAX_OPCODES + + static_cast(Type::IntegerTyID)), + "IntegerTy"); + EXPECT_EQ(Vocabulary::getStringKey(MAX_OPCODES + + static_cast(Type::FloatTyID)), + "FloatTy"); + EXPECT_EQ(Vocabulary::getStringKey(MAX_OPCODES + + static_cast(Type::PointerTyID)), + "PointerTy"); + EXPECT_EQ(Vocabulary::getStringKey(MAX_OPCODES + + static_cast(Type::FunctionTyID)), + "FunctionTy"); + EXPECT_EQ(Vocabulary::getStringKey(MAX_OPCODES + + static_cast(Type::StructTyID)), + "StructTy"); + EXPECT_EQ(Vocabulary::getStringKey(MAX_OPCODES + + static_cast(Type::ArrayTyID)), + "ArrayTy"); + EXPECT_EQ(Vocabulary::getStringKey( + MAX_OPCODES + static_cast(Type::FixedVectorTyID)), + "VectorTy"); + EXPECT_EQ(Vocabulary::getStringKey(MAX_OPCODES + + static_cast(Type::LabelTyID)), + "LabelTy"); + EXPECT_EQ(Vocabulary::getStringKey(MAX_OPCODES + + static_cast(Type::TokenTyID)), + "TokenTy"); + EXPECT_EQ(Vocabulary::getStringKey(MAX_OPCODES + + static_cast(Type::MetadataTyID)), + "MetadataTy"); +} + +TEST(IR2VecVocabularyTest, InvalidVocabularyConstruction) { + std::vector InvalidVocab; + InvalidVocab.push_back(Embedding(2, 1.0)); + InvalidVocab.push_back(Embedding(2, 2.0)); + + Vocabulary V(std::move(InvalidVocab)); + EXPECT_FALSE(V.isValid()); + + { + Vocabulary InvalidResult; + EXPECT_FALSE(InvalidResult.isValid()); +#if GTEST_HAS_DEATH_TEST +#ifndef NDEBUG + EXPECT_DEATH(InvalidResult.getDimension(), "IR2Vec Vocabulary is invalid"); +#endif // NDEBUG +#endif // GTEST_HAS_DEATH_TEST } }