[coco] Introduce defined in Shuffle (#1465)
author박종현/동작제어Lab(SR)/Staff Engineer/삼성전자 <jh1302.park@samsung.com>
Wed, 12 Sep 2018 06:03:48 +0000 (15:03 +0900)
committerGitHub Enterprise <noreply-CODE@samsung.com>
Wed, 12 Sep 2018 06:03:48 +0000 (15:03 +0900)
This commit extends Shuffle class with defined method.

This 'defined' method allows users to check whether a specified
element is specified as a target in Shuffle instruction without
using heavy range call.

Signed-off-by: Jonghyun Park <jh1302.park@samsung.com>
contrib/coco/core/include/coco/IR/Shuffle.h
contrib/coco/core/src/IR/Shuffle.test.cpp

index 4f63c11..6536612 100644 (file)
@@ -51,6 +51,10 @@ public:
   std::set<ElemID> range(void) const;
 
 public:
+  // @brief Return true if a given elem is updated after execution
+  bool defined(const ElemID &dst) const { return _content.find(dst) != _content.end(); }
+
+public:
   /**
    * Let M be the return of at(N). This means that N-th element in the destination
    * bag will be filled with the value of M-th element in the source bag.
index c637cf7..a3aa79b 100644 (file)
@@ -62,3 +62,13 @@ TEST_F(ShuffleTest, range)
   EXPECT_NE(range.count(coco::ElemID{2}), 0);
   EXPECT_NE(range.count(coco::ElemID{5}), 0);
 }
+
+TEST_F(ShuffleTest, defined)
+{
+  auto shuffle = allocate();
+
+  shuffle->insert(coco::ElemID{3}, coco::ElemID{2});
+
+  EXPECT_TRUE(shuffle->defined(coco::ElemID{2}));
+  EXPECT_FALSE(shuffle->defined(coco::ElemID{3}));
+}