From 9a30780cca2b1e9a910d7e188cb73f353eae325e Mon Sep 17 00:00:00 2001
From: Hashim Sharif <hsharif3@tyler.cs.illinois.edu>
Date: Sat, 21 Nov 2020 00:33:21 -0600
Subject: [PATCH] Adding __visc_node_id intrinsic - untested

---
 llvm/include/llvm/IR/IntrinsicsVISC.td              | 3 +++
 llvm/lib/Transforms/GenVISC/GenVISC.cpp             | 9 +++++++++
 llvm/test/VISC/DNN_Benchmarks/common/include/visc.h | 4 ++++
 3 files changed, 16 insertions(+)

diff --git a/llvm/include/llvm/IR/IntrinsicsVISC.td b/llvm/include/llvm/IR/IntrinsicsVISC.td
index ab22372d80..404903648f 100644
--- a/llvm/include/llvm/IR/IntrinsicsVISC.td
+++ b/llvm/include/llvm/IR/IntrinsicsVISC.td
@@ -325,4 +325,7 @@ let TargetPrefix = "visc" in {
                                                             llvm_i32_ty,
                                                             llvm_i32_ty], []>;
 
+  def int_visc_node_id : Intrinsic<[llvm_ptr_ty], [llvm_i32_ty], []>;
+
+
 }
diff --git a/llvm/lib/Transforms/GenVISC/GenVISC.cpp b/llvm/lib/Transforms/GenVISC/GenVISC.cpp
index faab312087..65e09e716c 100644
--- a/llvm/lib/Transforms/GenVISC/GenVISC.cpp
+++ b/llvm/lib/Transforms/GenVISC/GenVISC.cpp
@@ -178,6 +178,9 @@ IS_VISC_CALL(tensor_tanh)
 IS_VISC_CALL(tensor_sigmoid)
 IS_VISC_CALL(tensor_softmax)
 
+IS_VISC_CALL(node_id)
+
+
 // Return the constant integer represented by value V
 static unsigned getNumericValue(Value* V) {
   assert(isa<ConstantInt>(V)
@@ -1308,6 +1311,12 @@ bool GenVISC::runOnModule(Module &M) {
       if (isVISCCall_tensor_softmax(I)) {
         ReplaceCallWithIntrinsic(I, Intrinsic::visc_tensor_softmax, &toBeErased);
       }
+
+      // New Intrinsic to set Node ID
+      if (isVISCCall_node_id(I)) {
+        ReplaceCallWithIntrinsic(I, Intrinsic::visc_node_id, &toBeErased);
+      }
+      
     }
 
     // Erase the __visc__node calls
diff --git a/llvm/test/VISC/DNN_Benchmarks/common/include/visc.h b/llvm/test/VISC/DNN_Benchmarks/common/include/visc.h
index 978f29e85a..9bf77b6ed6 100644
--- a/llvm/test/VISC/DNN_Benchmarks/common/include/visc.h
+++ b/llvm/test/VISC/DNN_Benchmarks/common/include/visc.h
@@ -112,6 +112,10 @@ void* __visc__tensor_map3(void*, void*, void*, void*);
 void* __visc__tensor_cosineT(void*);
 void* __visc__tensor_stencil(void*);
 
+// New HPVM intrinsic for Setting Node ID
+void* __visc__node_id(int);
+
+  
 #include <unistd.h>
 
 long get_global_id(int);
-- 
GitLab