[llvm] [IR2Vec] Exposing Embedding as an data type wrapped around std::vector<double> (PR #143197)
Snehasish Kumar via llvm-commits
llvm-commits at lists.llvm.org
Tue Jun 10 10:15:57 PDT 2025
================
@@ -32,89 +33,194 @@ class TestableEmbedder : public Embedder {
void computeEmbeddings() const override {}
void computeEmbeddings(const BasicBlock &BB) const override {}
using Embedder::lookupVocab;
- static void addVectors(Embedding &Dst, const Embedding &Src) {
- Embedder::addVectors(Dst, Src);
- }
- static void addScaledVector(Embedding &Dst, const Embedding &Src,
- float Factor) {
- Embedder::addScaledVector(Dst, Src, Factor);
- }
};
-TEST(IR2VecTest, CreateSymbolicEmbedder) {
- Vocab V = {{"foo", {1.0, 2.0}}};
-
- LLVMContext Ctx;
- Module M("M", Ctx);
- FunctionType *FTy = FunctionType::get(Type::getVoidTy(Ctx), false);
- Function *F = Function::Create(FTy, Function::ExternalLinkage, "f", M);
+TEST(EmbeddingTest, ConstructorsAndAccessors) {
----------------
snehasish wrote:
For multiple test cases within the same test, we usually use a separate scope. This avoids having to name these variables E1, E2 etc. and shortens their lifetime.
```
{
Embedding E;
EXPECT_TRUE(E.empty());
..
}
{
std::vector<double> Data = {1.0, 2.0, 3.0};
Embedding E(Data);
EXPECT_FALSE(E2.empty());
EXPECT_THAT(E2, testing::SizeIs(3));
}
```
https://github.com/llvm/llvm-project/pull/143197
More information about the llvm-commits
mailing list