[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