diff --git a/cgbn_stage1.cu b/cgbn_stage1.cu
index 77e66ef32c87fae26b56d0bd179c09b80198ffc3..61215a5e4635e82d69d7457ea013d6b026eea7bf 100644
--- a/cgbn_stage1.cu
+++ b/cgbn_stage1.cu
@@ -733,10 +733,18 @@ int cgbn_ecm_stage1(mpz_t *factors, int *array_found,
   typedef cgbn_params_t<8, 2048>  cgbn_params_2048;
   typedef cgbn_params_t<16, 3072> cgbn_params_3072;
   typedef cgbn_params_t<16, 4096> cgbn_params_4096;
+  typedef cgbn_params_t<16, 6144> cgbn_params_6144;
+  typedef cgbn_params_t<16, 8192> cgbn_params_8192;
+  typedef cgbn_params_t<32, 12288> cgbn_params_12288;
+  typedef cgbn_params_t<32, 20480> cgbn_params_20480;
   available_kernels.push_back((uint32_t)cgbn_params_1536::BITS);
   available_kernels.push_back((uint32_t)cgbn_params_2048::BITS);
   available_kernels.push_back((uint32_t)cgbn_params_3072::BITS);
   available_kernels.push_back((uint32_t)cgbn_params_4096::BITS);
+  available_kernels.push_back((uint32_t)cgbn_params_6144::BITS);
+  available_kernels.push_back((uint32_t)cgbn_params_8192::BITS);
+  available_kernels.push_back((uint32_t)cgbn_params_12288::BITS);
+  available_kernels.push_back((uint32_t)cgbn_params_20480::BITS);
 #endif
 
   /* Pointer to CUDA kernel. */
@@ -771,6 +779,18 @@ int cgbn_ecm_stage1(mpz_t *factors, int *array_found,
       } else if (BITS == cgbn_params_4096::BITS) {
         TPI = cgbn_params_4096::TPI;
         kernel = kernel_double_add<cgbn_params_4096>;
+      } else if (BITS == cgbn_params_6144::BITS) {
+        TPI = cgbn_params_6144::TPI;
+        kernel = kernel_double_add<cgbn_params_6144>;
+      } else if (BITS == cgbn_params_8192::BITS) {
+        TPI = cgbn_params_8192::TPI;
+        kernel = kernel_double_add<cgbn_params_8192>;
+      } else if (BITS == cgbn_params_12288::BITS) {
+        TPI = cgbn_params_12288::TPI;
+        kernel = kernel_double_add<cgbn_params_12288>;
+      } else if (BITS == cgbn_params_20480::BITS) {
+        TPI = cgbn_params_20480::TPI;
+        kernel = kernel_double_add<cgbn_params_20480>;
 #endif
       } else {
         outputf (OUTPUT_ERROR, "CGBN kernel not found for %d bits\n", BITS);
diff --git a/test.gpuecm b/test.gpuecm
index bb0c129e4dcf7e7a194bba19dd619d91b969f227..dad8089eca6b3330c433af4863866e160c6208b3 100755
--- a/test.gpuecm
+++ b/test.gpuecm
@@ -98,9 +98,10 @@ echo "2^512+1" | $ECM 587 0
 echo "2^1018-1" | $ECM -sigma 3:92 4 0
 checkcode $? 2
 
-# try 2^1019-1: should give an error
+# try 2^1019-1: should give an error (exit code 1)
+# EDIT: with CGBN it exits normally with no factor
 echo "2^1019-1" | $ECM -sigma 3:92 4 0
-checkcode $? 1
+checkcode $? 0
 
 # test for when stage 2 on CPU is needed
 echo "2^349-1" | $ECM -sigma 3:13 587 1261