diff --git a/llvm/projects/hpvm-tensor-rt/dnn_sources/src/promise/alexnet2_promise.cc b/llvm/projects/hpvm-tensor-rt/dnn_sources/src/promise/alexnet2_promise.cc
index b6cea42050cbc62247cbc96246c3f158c8af4b7e..6074dacf3f56e672ac5ca80eda572a53a58f1044 100644
--- a/llvm/projects/hpvm-tensor-rt/dnn_sources/src/promise/alexnet2_promise.cc
+++ b/llvm/projects/hpvm-tensor-rt/dnn_sources/src/promise/alexnet2_promise.cc
@@ -9,17 +9,36 @@
 #include "../../../tensor_runtime/include/tensor_runtime.h" 
 #include "../../include/utils.h" 
 
+
+int total_runs = 1;
+float bench_acc = 0;
+int to_skip = 5;
+
 int main(int argc, char* argv[]){ 
 
-  int total_runs = 1;
+
   if (argc > 1){
     total_runs = atoi(argv[1]);
   }
 
+  if (argc > 2){
+    bench_acc = atof(argv[2]);
+  }
+
+  if(argc > 3){
+    to_skip = atoi(argv[3]);   
+  }
+
+  
   llvm_hpvm_initTensorRt(1); 
 
+  int missed = 0;
   for (int i = 0 ; i < total_runs; i++){ 
 
+    if (missed >= to_skip){
+      break;           
+    }
+
     startMemTracking(); 
 
     int test_input_size = 1000; 
@@ -89,7 +108,10 @@ int main(int argc, char* argv[]){
     }
 
     final_accuracy = final_accuracy / batch_count; 
-    dumpFinalAccuracy(final_accuracy); 
+    dumpFinalAccuracy(final_accuracy);
+
+    if (final_accuracy < bench_acc)
+      missed += 1;
   }
 
 
diff --git a/llvm/projects/hpvm-tensor-rt/dnn_sources/src/promise/alexnet_promise.cc b/llvm/projects/hpvm-tensor-rt/dnn_sources/src/promise/alexnet_promise.cc
index dfc03b24d1f277eb9d65e5b9d808b1e7deab3ad0..0513723b5a4a36984e736b94ee82b9fc3fb2d1f9 100644
--- a/llvm/projects/hpvm-tensor-rt/dnn_sources/src/promise/alexnet_promise.cc
+++ b/llvm/projects/hpvm-tensor-rt/dnn_sources/src/promise/alexnet_promise.cc
@@ -10,18 +10,37 @@
 #include "../../include/utils.h" 
 
 
+int total_runs = 1;
+float bench_acc = 0;
+int to_skip = 5;
+
+
 int main(int argc, char* argv[]){ 
 
-  int total_runs = 1;
+
   if (argc > 1){
     total_runs = atoi(argv[1]);
   }
 
+  if (argc > 2){
+    bench_acc = atof(argv[2]);
+  }
+
+  if(argc > 3){
+    to_skip = atoi(argv[3]);   
+  }
+
   
   llvm_hpvm_initTensorRt(1); 
 
+
+  int missed = 0; 
   for (int i = 0 ; i < total_runs; i++){ 
 
+    if (missed >= to_skip){
+     break;           
+    }
+
     startMemTracking(); 
 
     int test_input_size = 1000; 
@@ -83,7 +102,11 @@ int main(int argc, char* argv[]){
     }
 
     final_accuracy = final_accuracy / batch_count; 
-    dumpFinalAccuracy(final_accuracy); 
+    dumpFinalAccuracy(final_accuracy);
+
+    
+    if (final_accuracy < bench_acc)
+      missed += 1;
   }
 
 
diff --git a/llvm/projects/hpvm-tensor-rt/dnn_sources/src/promise/lenet_promise.cc b/llvm/projects/hpvm-tensor-rt/dnn_sources/src/promise/lenet_promise.cc
index bfc29d7b9c50a0b01f825fe585561df2d17bb299..37a30c55002bd2fea2ac4054649869e5cf4b5c6f 100644
--- a/llvm/projects/hpvm-tensor-rt/dnn_sources/src/promise/lenet_promise.cc
+++ b/llvm/projects/hpvm-tensor-rt/dnn_sources/src/promise/lenet_promise.cc
@@ -14,6 +14,8 @@
 // Piped OpenTuner usage is now deprecated
 bool Opentuner_run = false;
 int total_runs = 1;
+float bench_acc = 0;
+int to_skip = 5;
 
 
 /* NOTE: Reference Architecture to use for profiling */
@@ -29,15 +31,17 @@ void testLenetTanh(){
 
   clearTensorMap();
 
+  int missed = 0;
   for(int i = 0; i < total_runs; i++){
 
+    if (missed >= to_skip){
+      break;           
+    }   
+
     void* input = readInputTensor("../model_params/lenet_params/datasets/t10k-images-idx3-ubyte",
 				  CUDNN_DATA_FLOAT,
 				  test_batch_size, 1, 28, 28);
 
-    // NOTE: Filter descriptors do NOT have batch size
-    // NOTE: First two dims are output channels (configurable), input channels (MUST match input channels)
-    // IMP: The output channels matches the trained model - not the Lenet arch proposed in Andrew Ng's class
     void* conv1_filter = readTrainedWeights("../model_params/lenet_keras/conv1.bin",
 					    float_type, 32, 1, 5, 5);    
     void* conv1_bias = readTrainedWeights("../model_params/lenet_keras/conv1_bias.bin",
@@ -56,25 +60,6 @@ void testLenetTanh(){
 					float_type, 1, 10, 1, 1);  
 
     
-    if(Opentuner_run){
-
-      char* myfifo = "/tmp/myfifo";
-      int fd = open(myfifo, O_RDONLY);
-
-      int ret_val = fcntl(fd, F_GETFD);
-      if(ret_val == -1){
-	printf("Invalid descriptor \n");
-	abort();
-      }
-
-      char str[100];
-      read(fd, str, 80);
-      if(strcmp(str, "stop_run") == 0){
-	abort();
-      }
-
-      close(fd);
-    }
 
     
     readOpenTunerFlags("promise_flags"); // Resets the OpenTuner counters
@@ -101,22 +86,10 @@ void testLenetTanh(){
 
     dumpFinalAccuracy(accuracy); 
 
-    
-    if(Opentuner_run){
 
-      char* myfifo = "/tmp/myfifo";
-      int fd_out = open(myfifo, O_WRONLY);
-      int ret_val = fcntl(fd_out, F_GETFD);
-      if(ret_val == -1){
-	printf("Invalid descriptor \n");
-	abort();
-      }
-      
-      const char* str = "completed***!\n\0";
-      write(fd_out, str, 80);
-      close(fd_out);
-    }
-    
+    if (accuracy < bench_acc)
+      missed += 1;
+        
   }
 
   dumpExecutionAccuracies(); 
@@ -130,6 +103,14 @@ int main(int argc, char* argv[]){
     total_runs = atoi(argv[1]);
   }
 
+  if (argc > 2){
+    bench_acc = atof(argv[2]);
+  }
+
+  if(argc > 3){
+    to_skip = atoi(argv[3]);   
+  }
+
 
   llvm_hpvm_initTensorRt(0);
 
@@ -140,3 +121,46 @@ int main(int argc, char* argv[]){
   return 0;
 }
 
+
+
+
+
+
+
+/*    if(Opentuner_run){
+
+      char* myfifo = "/tmp/myfifo";
+      int fd = open(myfifo, O_RDONLY);
+
+      int ret_val = fcntl(fd, F_GETFD);
+      if(ret_val == -1){
+      printf("Invalid descriptor \n");
+      abort();
+      }
+
+      char str[100];
+      read(fd, str, 80);
+      if(strcmp(str, "stop_run") == 0){
+      abort();
+      }
+
+      close(fd);
+      }
+*/
+
+
+/*    if(Opentuner_run){
+
+      char* myfifo = "/tmp/myfifo";
+      int fd_out = open(myfifo, O_WRONLY);
+      int ret_val = fcntl(fd_out, F_GETFD);
+      if(ret_val == -1){
+      printf("Invalid descriptor \n");
+      abort();
+      }
+      
+      const char* str = "completed***!\n\0";
+      write(fd_out, str, 80);
+      close(fd_out);
+      }
+*/
diff --git a/llvm/projects/hpvm-tensor-rt/dnn_sources/src/promise/mobilenet_promise.cc b/llvm/projects/hpvm-tensor-rt/dnn_sources/src/promise/mobilenet_promise.cc
index 19e54b5ee2b8bf680ef443bf95e9aeb0e545c615..9b82b3ea756d70f3ce93cfafebd304d25522ce43 100644
--- a/llvm/projects/hpvm-tensor-rt/dnn_sources/src/promise/mobilenet_promise.cc
+++ b/llvm/projects/hpvm-tensor-rt/dnn_sources/src/promise/mobilenet_promise.cc
@@ -9,17 +9,38 @@
 #include "../../../tensor_runtime/include/tensor_runtime.h" 
 #include "../../include/utils.h" 
 
+
+int total_runs = 1;
+float bench_acc = 0;
+int to_skip = 5;
+
+
 int main(int argc, char* argv[]){ 
 
-  int total_runs = 1;
+  
   if (argc > 1){
     total_runs = atoi(argv[1]);
   }
 
-  llvm_hpvm_initTensorRt(0); 
+  if (argc > 2){
+    bench_acc = atof(argv[2]);
+  }
+
+  if(argc > 3){
+    to_skip = atoi(argv[3]);   
+  }
+
+    
+  llvm_hpvm_initTensorRt(1); 
+
 
+  int missed = 0;
   for (int i = 0 ; i < total_runs; i++){ 
 
+    if (missed >= to_skip){
+      break;           
+    }
+
     startMemTracking(); 
 
     int test_input_size = 1000; 
@@ -29,7 +50,8 @@ int main(int argc, char* argv[]){
 
     for(int i = 0; i < batch_count; i++){ 
 
-      std::string dir_prefix = std::string("../../keras/data/mobilenet_test_5/"); 
+
+      std::string dir_prefix = std::string("../../keras/data/mobilenet_quant/"); 
       std::string input_path =  dir_prefix + std::string("input.bin"); 
       std::string labels_path =  dir_prefix + std::string("labels.bin"); 
       std::string conv2d_1_w_path =  dir_prefix + std::string("conv2d_1_w.bin"); 
@@ -313,89 +335,89 @@ int main(int argc, char* argv[]){
 
       void* input = readInputBatch(input_path.c_str(),0,start,end,3,32,32); 
 
-      void* var_0 = ConvLayer_PROMISE(input, -1.9892114, 2.126797, conv2d_1_w, -1.0851606, 1.451633, NULL, 0, 0, 1, 1, 1, 1, -1, 0, -1, -26.15982448577881, 25.103958129882812, 9); 
+      void* var_0 = ConvLayer_PROMISE(input, -1.9892114, 2.126797, conv2d_1_w, -2.196306920051575, 1.347581704139706, NULL, 0, 0, 1, 1, 1, 1, -1, 0, -1, -60.89275047302246, 51.99256916046146, 9); 
       void* var_1 = tensorBatchNorm(var_0, batch_normalization_1_gamma, batch_normalization_1_beta, batch_normalization_1_mean, batch_normalization_1_variance, 0.001); 
       void* var_2 = tensorRelu(var_1); 
       void* var_3 = tensorConvolution(var_2, depthwise_conv2d_1_w, 1, 1, 1, 1, 1, 32); 
       void* var_4 = tensorBatchNorm(var_3, batch_normalization_2_gamma, batch_normalization_2_beta, batch_normalization_2_mean, batch_normalization_2_variance, 0.001); 
       void* var_5 = tensorRelu(var_4); 
-      void* var_6 = ConvLayer_PROMISE(var_5, 0.0, 4.236004893779741, conv2d_2_w, -0.92661893, 1.2747382, NULL, 0, 0, 0, 0, 1, 1, -1, 0, -1, -4.845528128147125, 3.9501850628852857, 9); 
+      void* var_6 = ConvLayer_PROMISE(var_5, 0.0, 5.713541553974245, conv2d_2_w, -0.9317721160650253, 1.0774258937835774, NULL, 0, 0, 0, 0, 1, 1, -1, 0, -1, -6.518589503288269, 6.810842518806449, 9); 
       void* var_7 = tensorBatchNorm(var_6, batch_normalization_3_gamma, batch_normalization_3_beta, batch_normalization_3_mean, batch_normalization_3_variance, 0.001); 
       void* var_8 = tensorRelu(var_7); 
       void* var_9 = tensorConvolution(var_8, depthwise_conv2d_2_w, 1, 1, 2, 2, 1, 64); 
       void* var_10 = tensorBatchNorm(var_9, batch_normalization_4_gamma, batch_normalization_4_beta, batch_normalization_4_mean, batch_normalization_4_variance, 0.001); 
       void* var_11 = tensorRelu(var_10); 
-      void* var_12 = ConvLayer_PROMISE(var_11, 0.0, 3.331837462186821, conv2d_3_w, -0.6851696, 0.97514033, NULL, 0, 0, 0, 0, 1, 1, -1, 0, -1, -3.2466478753089905, 3.1737997651100134, 9); 
+      void* var_12 = ConvLayer_PROMISE(var_11, 0.0, 4.932139402866376, conv2d_3_w, -0.5316544661521911, 0.5753790403604531, NULL, 0, 0, 0, 0, 1, 1, -1, 0, -1, -4.482631235122681, 3.96730119752885, 9); 
       void* var_13 = tensorBatchNorm(var_12, batch_normalization_5_gamma, batch_normalization_5_beta, batch_normalization_5_mean, batch_normalization_5_variance, 0.001); 
       void* var_14 = tensorRelu(var_13); 
       void* var_15 = tensorConvolution(var_14, depthwise_conv2d_3_w, 1, 1, 1, 1, 1, 128); 
       void* var_16 = tensorBatchNorm(var_15, batch_normalization_6_gamma, batch_normalization_6_beta, batch_normalization_6_mean, batch_normalization_6_variance, 0.001); 
       void* var_17 = tensorRelu(var_16); 
-      void* var_18 = ConvLayer_PROMISE(var_17, 0.0, 3.101028444766998, conv2d_4_w, -0.44624555, 0.61994684, NULL, 0, 0, 0, 0, 1, 1, -1, 0, -1, -2.8684406340122224, 3.4094150185584997, 9); 
+      void* var_18 = ConvLayer_PROMISE(var_17, 0.0, 4.103263397693674, conv2d_4_w, -0.36234098821878435, 0.4076913900375366, NULL, 0, 0, 0, 0, 1, 1, -1, 0, -1, -4.04261828327179, 3.88677932929993, 9); 
       void* var_19 = tensorBatchNorm(var_18, batch_normalization_7_gamma, batch_normalization_7_beta, batch_normalization_7_mean, batch_normalization_7_variance, 0.001); 
       void* var_20 = tensorRelu(var_19); 
       void* var_21 = tensorConvolution(var_20, depthwise_conv2d_4_w, 1, 1, 2, 2, 1, 128); 
       void* var_22 = tensorBatchNorm(var_21, batch_normalization_8_gamma, batch_normalization_8_beta, batch_normalization_8_mean, batch_normalization_8_variance, 0.001); 
       void* var_23 = tensorRelu(var_22); 
-      void* var_24 = ConvLayer_PROMISE(var_23, 0.0, 4.277180709838866, conv2d_5_w, -0.47713536, 0.3870595, NULL, 0, 0, 0, 0, 1, 1, -1, 0, -1, -4.388716280460358, 3.3948878145218107, 9); 
+      void* var_24 = ConvLayer_PROMISE(var_23, 0.0, 5.383221302509475, conv2d_5_w, -0.3131200549006462, 0.29357679939270065, NULL, 0, 0, 0, 0, 1, 1, -1, 0, -1, -5.921469215393066, 4.338679324150087, 9); 
       void* var_25 = tensorBatchNorm(var_24, batch_normalization_9_gamma, batch_normalization_9_beta, batch_normalization_9_mean, batch_normalization_9_variance, 0.001); 
       void* var_26 = tensorRelu(var_25); 
       void* var_27 = tensorConvolution(var_26, depthwise_conv2d_5_w, 1, 1, 1, 1, 1, 256); 
       void* var_28 = tensorBatchNorm(var_27, batch_normalization_10_gamma, batch_normalization_10_beta, batch_normalization_10_mean, batch_normalization_10_variance, 0.001); 
       void* var_29 = tensorRelu(var_28); 
-      void* var_30 = ConvLayer_PROMISE(var_29, 0.0, 3.38968591213227, conv2d_6_w, -0.27188912, 0.38737836, NULL, 0, 0, 0, 0, 1, 1, -1, 0, -1, -3.039871279001236, 3.046174806356437, 9); 
+      void* var_30 = ConvLayer_PROMISE(var_29, 0.0, 4.316738154411368, conv2d_6_w, -0.23299247801303866, 0.2580290257930756, NULL, 0, 0, 0, 0, 1, 1, -1, 0, -1, -4.207789947509766, 3.932436970710759, 9); 
       void* var_31 = tensorBatchNorm(var_30, batch_normalization_11_gamma, batch_normalization_11_beta, batch_normalization_11_mean, batch_normalization_11_variance, 0.001); 
       void* var_32 = tensorRelu(var_31); 
       void* var_33 = tensorConvolution(var_32, depthwise_conv2d_6_w, 1, 1, 2, 2, 1, 256); 
       void* var_34 = tensorBatchNorm(var_33, batch_normalization_12_gamma, batch_normalization_12_beta, batch_normalization_12_mean, batch_normalization_12_variance, 0.001); 
       void* var_35 = tensorRelu(var_34); 
-      void* var_36 = ConvLayer_PROMISE(var_35, 0.0, 4.318326425552359, conv2d_7_w, -0.22026193, 0.26253384, NULL, 0, 0, 0, 0, 1, 1, -1, 0, -1, -3.6486071228981016, 3.1357058513164486, 9); 
+      void* var_36 = ConvLayer_PROMISE(var_35, 0.0, 5.830408106803901, conv2d_7_w, -0.20233777219057084, 0.18998308175802117, NULL, 0, 0, 0, 0, 1, 1, -1, 0, -1, -6.298286915779113, 4.848135117530843, 9); 
       void* var_37 = tensorBatchNorm(var_36, batch_normalization_13_gamma, batch_normalization_13_beta, batch_normalization_13_mean, batch_normalization_13_variance, 0.001); 
       void* var_38 = tensorRelu(var_37); 
       void* var_39 = tensorConvolution(var_38, depthwise_conv2d_7_w, 1, 1, 1, 1, 1, 512); 
       void* var_40 = tensorBatchNorm(var_39, batch_normalization_14_gamma, batch_normalization_14_beta, batch_normalization_14_mean, batch_normalization_14_variance, 0.001); 
       void* var_41 = tensorRelu(var_40); 
-      void* var_42 = ConvLayer_PROMISE(var_41, 0.0, 3.5547023189067835, conv2d_8_w, -0.20200194, 0.27563378, NULL, 0, 0, 0, 0, 1, 1, -1, 0, -1, -3.3069639313220978, 3.006637917757032, 9); 
+      void* var_42 = ConvLayer_PROMISE(var_41, 0.0, 4.446417809963227, conv2d_8_w, -0.17442735651135444, 0.17695830866694454, NULL, 0, 0, 0, 0, 1, 1, -1, 0, -1, -4.347910885810852, 3.6144364695549145, 9); 
       void* var_43 = tensorBatchNorm(var_42, batch_normalization_15_gamma, batch_normalization_15_beta, batch_normalization_15_mean, batch_normalization_15_variance, 0.001); 
       void* var_44 = tensorRelu(var_43); 
       void* var_45 = tensorConvolution(var_44, depthwise_conv2d_8_w, 1, 1, 1, 1, 1, 512); 
       void* var_46 = tensorBatchNorm(var_45, batch_normalization_16_gamma, batch_normalization_16_beta, batch_normalization_16_mean, batch_normalization_16_variance, 0.001); 
       void* var_47 = tensorRelu(var_46); 
-      void* var_48 = ConvLayer_PROMISE(var_47, 0.0, 3.5062010693550105, conv2d_9_w, -0.17277962, 0.21063991, NULL, 0, 0, 0, 0, 1, 1, -1, 0, -1, -2.691830636262894, 2.582372983694075, 9); 
+      void* var_48 = ConvLayer_PROMISE(var_47, 0.0, 4.518095604896667, conv2d_9_w, -0.14546796187758446, 0.15256431668996823, NULL, 0, 0, 0, 0, 1, 1, -1, 0, -1, -3.0287702755928043, 2.9487365779876953, 9); 
       void* var_49 = tensorBatchNorm(var_48, batch_normalization_17_gamma, batch_normalization_17_beta, batch_normalization_17_mean, batch_normalization_17_variance, 0.001); 
       void* var_50 = tensorRelu(var_49); 
       void* var_51 = tensorConvolution(var_50, depthwise_conv2d_9_w, 1, 1, 1, 1, 1, 512); 
       void* var_52 = tensorBatchNorm(var_51, batch_normalization_18_gamma, batch_normalization_18_beta, batch_normalization_18_mean, batch_normalization_18_variance, 0.001); 
       void* var_53 = tensorRelu(var_52); 
-      void* var_54 = ConvLayer_PROMISE(var_53, 0.0, 4.156345422267913, conv2d_10_w, -0.164539, 0.1991264, NULL, 0, 0, 0, 0, 1, 1, -1, 0, -1, -2.9234970450401305, 2.800861362218857, 9); 
+      void* var_54 = ConvLayer_PROMISE(var_53, 0.0, 6.348575634956407, conv2d_10_w, -0.13025874522328376, 0.13558243343234128, NULL, 0, 0, 0, 0, 1, 1, -1, 0, -1, -4.2293100805282595, 3.5315046372413645, 9); 
       void* var_55 = tensorBatchNorm(var_54, batch_normalization_19_gamma, batch_normalization_19_beta, batch_normalization_19_mean, batch_normalization_19_variance, 0.001); 
       void* var_56 = tensorRelu(var_55); 
       void* var_57 = tensorConvolution(var_56, depthwise_conv2d_10_w, 1, 1, 1, 1, 1, 512); 
       void* var_58 = tensorBatchNorm(var_57, batch_normalization_20_gamma, batch_normalization_20_beta, batch_normalization_20_mean, batch_normalization_20_variance, 0.001); 
       void* var_59 = tensorRelu(var_58); 
-      void* var_60 = ConvLayer_PROMISE(var_59, 0.0, 3.656778683662412, conv2d_11_w, -0.18202196, 0.1923372, NULL, 0, 0, 0, 0, 1, 1, -1, 0, -1, -2.8381178665161135, 3.2068653273582455, 9); 
+      void* var_60 = ConvLayer_PROMISE(var_59, 0.0, 5.221003110408843, conv2d_11_w, -0.11900172759592534, 0.12536374783515936, NULL, 0, 0, 0, 0, 1, 1, -1, 0, -1, -4.038203780174255, 4.004009407043483, 9); 
       void* var_61 = tensorBatchNorm(var_60, batch_normalization_21_gamma, batch_normalization_21_beta, batch_normalization_21_mean, batch_normalization_21_variance, 0.001); 
       void* var_62 = tensorRelu(var_61); 
       void* var_63 = tensorConvolution(var_62, depthwise_conv2d_11_w, 1, 1, 1, 1, 1, 512); 
       void* var_64 = tensorBatchNorm(var_63, batch_normalization_22_gamma, batch_normalization_22_beta, batch_normalization_22_mean, batch_normalization_22_variance, 0.001); 
       void* var_65 = tensorRelu(var_64); 
-      void* var_66 = ConvLayer_PROMISE(var_65, 0.0, 3.7428039026260356, conv2d_12_w, -0.16017516, 0.20817208, NULL, 0, 0, 0, 0, 1, 1, -1, 0, -1, -2.624585204124451, 3.482389675378794, 9); 
+      void* var_66 = ConvLayer_PROMISE(var_65, 0.0, 5.732498347759442, conv2d_12_w, -0.10839721685647964, 0.11625668607652187, NULL, 0, 0, 0, 0, 1, 1, -1, 0, -1, -3.3111015114784244, 4.462933233261136, 9); 
       void* var_67 = tensorBatchNorm(var_66, batch_normalization_23_gamma, batch_normalization_23_beta, batch_normalization_23_mean, batch_normalization_23_variance, 0.001); 
       void* var_68 = tensorRelu(var_67); 
       void* var_69 = tensorConvolution(var_68, depthwise_conv2d_12_w, 1, 1, 2, 2, 1, 512); 
       void* var_70 = tensorBatchNorm(var_69, batch_normalization_24_gamma, batch_normalization_24_beta, batch_normalization_24_mean, batch_normalization_24_variance, 0.001); 
       void* var_71 = tensorRelu(var_70); 
-      void* var_72 = ConvLayer_PROMISE(var_71, 0.0, 4.213704152107228, conv2d_13_w, -0.11207349, 0.13319267, NULL, 0, 0, 0, 0, 1, 1, -1, 0, -1, -2.3042326772212984, 4.052856867313354, 9); 
+      void* var_72 = ConvLayer_PROMISE(var_71, 0.0, 7.240498211860681, conv2d_13_w, -0.08623744961619377, 0.08859449951350662, NULL, 0, 0, 0, 0, 1, 1, -1, 0, -1, -4.175431394577027, 6.2043294754027345, 9); 
       void* var_73 = tensorBatchNorm(var_72, batch_normalization_25_gamma, batch_normalization_25_beta, batch_normalization_25_mean, batch_normalization_25_variance, 0.001); 
       void* var_74 = tensorRelu(var_73); 
       void* var_75 = tensorConvolution(var_74, depthwise_conv2d_13_w, 1, 1, 1, 1, 1, 1024); 
       void* var_76 = tensorBatchNorm(var_75, batch_normalization_26_gamma, batch_normalization_26_beta, batch_normalization_26_mean, batch_normalization_26_variance, 0.001); 
       void* var_77 = tensorRelu(var_76); 
-      void* var_78 = ConvLayer_PROMISE(var_77, 0.0, 3.4259072160720754, conv2d_14_w, -0.08910778, 0.09989126, NULL, 0, 0, 0, 0, 1, 1, -1, 0, -1, -9.591523356437683, 1.7863811397552434, 9); 
+      void* var_78 = ConvLayer_PROMISE(var_77, 0.0, 7.813958834648251, conv2d_14_w, -0.06813025139272214, 0.07002027779817581, NULL, 0, 0, 0, 0, 1, 1, -1, 0, -1, -10.920566423416137, 2.6442912578582534, 9); 
       void* var_79 = tensorBatchNorm(var_78, batch_normalization_27_gamma, batch_normalization_27_beta, batch_normalization_27_mean, batch_normalization_27_variance, 0.001); 
       void* var_80 = tensorRelu(var_79); 
       void* var_81 = tensorPooling(var_80,1,2,2,0,0,2,2); 
-      void* var_82 = FCLayer_PROMISE(var_81, 0.0, 1.271940953135491, dense_1_w, -0.22483952, 0.15173192, dense_1_b, -0.106048204, 0.16996701, -1, -5.430917320251465, 9.963713722228993, 9); 
+      void* var_82 = FCLayer_PROMISE(var_81, 0.0, 2.8692066650391013, dense_1_w, -0.22301019695401192, 0.1442659378200768, dense_1_b, -0.1654396, 0.23336112, -1, -12.245949958801269, 23.80532513427739, 9); 
       void* var_83 = tensorSoftmax(var_82); 
 
       uint8_t* labels = readLabelsBatch(labels_path.c_str(),start,end); 
@@ -409,7 +431,8 @@ int main(int argc, char* argv[]){
     final_accuracy = final_accuracy / batch_count; 
     dumpFinalAccuracy(final_accuracy); 
 
-
+    if (final_accuracy < bench_acc)
+     missed += 1;
   }
 
   dumpExecutionAccuracies(); 
diff --git a/llvm/projects/hpvm-tensor-rt/dnn_sources/src/promise/mobilenet_shallow_promise.cc b/llvm/projects/hpvm-tensor-rt/dnn_sources/src/promise/mobilenet_shallow_promise.cc
index 3c088e988a1aaaf25518dd427f5a749d9afd18f7..a485327a44bd86285f47c54e2f66097a76d8a501 100644
--- a/llvm/projects/hpvm-tensor-rt/dnn_sources/src/promise/mobilenet_shallow_promise.cc
+++ b/llvm/projects/hpvm-tensor-rt/dnn_sources/src/promise/mobilenet_shallow_promise.cc
@@ -9,18 +9,37 @@
 #include "../../../tensor_runtime/include/tensor_runtime.h" 
 #include "../../include/utils.h" 
 
+
+int total_runs = 1;
+float bench_acc = 0;
+int to_skip = 5;
+
+
 int main(int argc, char* argv[]){ 
 
-  int total_runs = 1;
+
   if (argc > 1){
     total_runs = atoi(argv[1]);
   }
 
+  if (argc > 2){
+    bench_acc = atof(argv[2]);
+  }
+
+  if(argc > 3){
+    to_skip = atoi(argv[3]);   
+  }
+
   
   llvm_hpvm_initTensorRt(0); 
 
+  int missed = 0;
   for (int i = 0 ; i < total_runs; i++){ 
 
+    if (missed >= to_skip){
+     break;           
+    }
+
     startMemTracking(); 
 
     int test_input_size = 1000; 
@@ -229,6 +248,8 @@ int main(int argc, char* argv[]){
     dumpFinalAccuracy(final_accuracy); 
 
 
+    if (final_accuracy < bench_acc)
+      missed += 1;
   }
 
   dumpExecutionAccuracies(); 
diff --git a/llvm/projects/hpvm-tensor-rt/dnn_sources/src/promise/resnet18_promise.cc b/llvm/projects/hpvm-tensor-rt/dnn_sources/src/promise/resnet18_promise.cc
index 95d2cdbbfdca1fb57103c516dd2aa887c7d2024e..cc0981dc7d1d75ce56388f3135fa0f89f8c688e3 100644
--- a/llvm/projects/hpvm-tensor-rt/dnn_sources/src/promise/resnet18_promise.cc
+++ b/llvm/projects/hpvm-tensor-rt/dnn_sources/src/promise/resnet18_promise.cc
@@ -9,17 +9,36 @@
 #include "../../../tensor_runtime/include/tensor_runtime.h" 
 #include "../../include/utils.h" 
 
+
+int total_runs = 1;
+float bench_acc = 0;
+int to_skip = 5;
+
+
 int main(int argc, char* argv[]){ 
 
-  int total_runs = 1;
   if (argc > 1){
     total_runs = atoi(argv[1]);
   }
 
+  if (argc > 2){
+    bench_acc = atof(argv[2]);
+  }
+
+  if(argc > 3){
+    to_skip = atoi(argv[3]);   
+  }
+
+
   llvm_hpvm_initTensorRt(1); 
 
+  int missed = 0; 
   for (int i = 0 ; i < total_runs; i++){ 
 
+    if (missed >= to_skip){
+     break;           
+    }
+
     startMemTracking(); 
 
     int test_input_size = 1000; 
@@ -182,6 +201,8 @@ int main(int argc, char* argv[]){
     dumpFinalAccuracy(final_accuracy); 
 
 
+    if (final_accuracy < bench_acc)
+      missed += 1;
   }
 
   dumpExecutionAccuracies(); 
diff --git a/llvm/projects/hpvm-tensor-rt/dnn_sources/src/promise/vgg16_cifar100_promise.cc b/llvm/projects/hpvm-tensor-rt/dnn_sources/src/promise/vgg16_cifar100_promise.cc
index 7944e34bfb26ee2a381f8af2d286f5f382da2982..ec5de9a5e2c2d66be44fdd99b83dd634d8f5b2f9 100644
--- a/llvm/projects/hpvm-tensor-rt/dnn_sources/src/promise/vgg16_cifar100_promise.cc
+++ b/llvm/projects/hpvm-tensor-rt/dnn_sources/src/promise/vgg16_cifar100_promise.cc
@@ -9,17 +9,38 @@
 #include "../../../tensor_runtime/include/tensor_runtime.h" 
 #include "../../include/utils.h" 
 
+
+
+int total_runs = 1;
+float bench_acc = 0;
+int to_skip = 5;
+
+
 int main(int argc, char* argv[]){ 
 
-  int total_runs = 1;
   if (argc > 1){
     total_runs = atoi(argv[1]);
   }
 
+  if (argc > 2){
+    bench_acc = atof(argv[2]);
+  }
+
+  if(argc > 3){
+    to_skip = atoi(argv[3]);   
+  }
+
+
   llvm_hpvm_initTensorRt(1); 
 
+  
+  int missed = 0; 
   for (int i = 0 ; i < total_runs; i++){ 
 
+   if (missed >= to_skip){
+     break;           
+   }
+
    startMemTracking(); 
 
    int test_input_size = 1000; 
@@ -125,7 +146,11 @@ int main(int argc, char* argv[]){
    }
 
    final_accuracy = final_accuracy / batch_count; 
-   dumpFinalAccuracy(final_accuracy); 
+   dumpFinalAccuracy(final_accuracy);
+
+
+   if (final_accuracy < bench_acc)
+     missed += 1;
  }
 
  dumpExecutionAccuracies(); 
diff --git a/llvm/projects/hpvm-tensor-rt/dnn_sources/src/promise/vgg16_cifar10_promise.cc b/llvm/projects/hpvm-tensor-rt/dnn_sources/src/promise/vgg16_cifar10_promise.cc
index 9ff6c3a92401439c4cb6e1ce957df0cfbbd267b4..798b5f67aa9636f8e7ad3b9d08b9fc8e53cb137d 100644
--- a/llvm/projects/hpvm-tensor-rt/dnn_sources/src/promise/vgg16_cifar10_promise.cc
+++ b/llvm/projects/hpvm-tensor-rt/dnn_sources/src/promise/vgg16_cifar10_promise.cc
@@ -9,18 +9,35 @@
 #include "../../../tensor_runtime/include/tensor_runtime.h" 
 #include "../../include/utils.h" 
 
-int main(int argc, char* argv[]){ 
 
- int total_runs = 1;
+int total_runs = 1;
+float bench_acc = 0;
+int to_skip = 5;
+
+
+int main(int argc, char* argv[]){ 
+   
  if (argc > 1){
    total_runs = atoi(argv[1]);
  }
- 
+
+ if (argc > 2){
+   bench_acc = atof(argv[2]);
+ }
+
+ if(argc > 3){
+   to_skip = atoi(argv[3]);   
+ }
 
  llvm_hpvm_initTensorRt(1); 
 
+ int missed = 0; 
  for (int i = 0 ; i < total_runs; i++){ 
 
+   if (missed >= to_skip){
+     break;           
+   }
+   
    startMemTracking(); 
 
    int test_input_size = 1000; 
@@ -132,6 +149,8 @@ int main(int argc, char* argv[]){
    dumpFinalAccuracy(final_accuracy); 
 
 
+   if (final_accuracy < bench_acc)
+     missed += 1;
  }
 
 
diff --git a/llvm/projects/hpvm-tensor-rt/opentuner/autotuner/measure_confidence2.py b/llvm/projects/hpvm-tensor-rt/opentuner/autotuner/measure_confidence2.py
index 36aff4ad0823ed85edeed5efe0fa783b5a639920..80e67a1bc372e6628404e9852c9f7809cbfd73be 100644
--- a/llvm/projects/hpvm-tensor-rt/opentuner/autotuner/measure_confidence2.py
+++ b/llvm/projects/hpvm-tensor-rt/opentuner/autotuner/measure_confidence2.py
@@ -20,6 +20,7 @@ def getAccuracy(file_name):
 
 
 total_runs = 60.0
+fails_allowed = 4
 skip_lines = 0
 
 
@@ -92,7 +93,7 @@ def do_multiple_runs2(binary_name, accuracy_threshold, confidence_threshold):
   total_acc = 0
 
   FNULL = open(os.devnull, 'wb')
-  p = subprocess.Popen([binary_name, str(int(total_runs))], stdout = FNULL)
+  p = subprocess.Popen([binary_name, str(int(total_runs)), str(accuracy_threshold), str(fails_allowed)], stdout = FNULL)
   p.wait()
 
   confidence, avg_acc = getConfidence("run_accuracies.txt", accuracy_threshold)