diff --git a/scripts/mbedtls_dev/bignum_core.py b/scripts/mbedtls_dev/bignum_core.py
index e46364b..0d238e7 100644
--- a/scripts/mbedtls_dev/bignum_core.py
+++ b/scripts/mbedtls_dev/bignum_core.py
@@ -144,12 +144,12 @@
             yield cls(a_value, b_value, 32).create_test_case()
             yield cls(a_value, b_value, 64).create_test_case()
 
-class BignumCoreAddIf(BignumCoreOperationArchSplit):
-    """Test cases for bignum core add if."""
+class BignumCoreAddAndAddIf(BignumCoreOperationArchSplit):
+    """Test cases for bignum core add and add-if."""
     count = 0
     symbol = "+"
-    test_function = "mpi_core_add_if"
-    test_name = "mbedtls_mpi_core_add_if"
+    test_function = "mpi_core_add_and_add_if"
+    test_name = "mpi_core_add_and_add_if"
 
     def result(self) -> List[str]:
         result = self.int_a + self.int_b
diff --git a/tests/suites/test_suite_bignum_core.function b/tests/suites/test_suite_bignum_core.function
index fb5fe3a..1cd8b40 100644
--- a/tests/suites/test_suite_bignum_core.function
+++ b/tests/suites/test_suite_bignum_core.function
@@ -359,41 +359,52 @@
 /* END_CASE */
 
 /* BEGIN_CASE */
-void mpi_core_add_if( char * input_A, char * input_B,
-                      char * input_S, int carry )
+void mpi_core_add_and_add_if( char * input_A, char * input_B,
+                              char * input_S, int carry )
 {
     mbedtls_mpi_uint *A = NULL; /* first value to add */
-    size_t A_limbs;
     mbedtls_mpi_uint *B = NULL; /* second value to add */
-    size_t B_limbs;
     mbedtls_mpi_uint *S = NULL; /* expected result */
-    size_t S_limbs;
     mbedtls_mpi_uint *X = NULL; /* destination - the in/out first operand */
-    size_t X_limbs;
+    size_t A_limbs, B_limbs, S_limbs;
 
     TEST_EQUAL( 0, mbedtls_test_read_mpi_core( &A, &A_limbs, input_A ) );
     TEST_EQUAL( 0, mbedtls_test_read_mpi_core( &B, &B_limbs, input_B ) );
     TEST_EQUAL( 0, mbedtls_test_read_mpi_core( &S, &S_limbs, input_S ) );
-    X_limbs = S_limbs;
-    ASSERT_ALLOC( X, X_limbs );
 
-    /* add_if expects all operands to be the same length */
+    /* add and add_if expect all operands to be the same length */
     TEST_EQUAL( A_limbs, B_limbs );
     TEST_EQUAL( A_limbs, S_limbs );
     size_t limbs = A_limbs;
     size_t bytes = limbs * sizeof( *A );
 
+    ASSERT_ALLOC( X, limbs );
+
     /* The test cases have A <= B to avoid repetition, so we test A + B then,
      * if A != B, B + A. If A == B, we can test when A and B are aliased */
 
     /* A + B */
 
-    /* cond = 0 => X unchanged, no carry */
+    /* add => correct result and carry */
+    TEST_EQUAL( carry, mbedtls_mpi_core_add( X, A, B, limbs ) );
+    ASSERT_COMPARE( X, bytes, S, bytes );
+
+    /* add, alias output and first operand => correct result and carry */
+    memcpy( X, A, bytes );
+    TEST_EQUAL( carry, mbedtls_mpi_core_add( X, X, B, limbs ) );
+    ASSERT_COMPARE( X, bytes, S, bytes );
+
+    /* add, alias output and second operand => correct result and carry */
+    memcpy( X, B, bytes );
+    TEST_EQUAL( carry, mbedtls_mpi_core_add( X, A, X, limbs ) );
+    ASSERT_COMPARE( X, bytes, S, bytes );
+
+    /* add_if: cond = 0 => X unchanged, no carry */
     memcpy( X, A, bytes );
     TEST_EQUAL( 0, mbedtls_mpi_core_add_if( X, B, limbs, 0 ) );
     ASSERT_COMPARE( X, bytes, A, bytes );
 
-    /* cond = 1 => correct result and carry */
+    /* add_if: cond = 1 => correct result and carry */
     TEST_EQUAL( carry, mbedtls_mpi_core_add_if( X, B, limbs, 1 ) );
     ASSERT_COMPARE( X, bytes, S, bytes );
 
@@ -401,12 +412,21 @@
     {
         /* A == B, so test where A and B are aliased */
 
-        /* cond = 0 => X unchanged, no carry */
+        /* add => correct result and carry */
+        TEST_EQUAL( carry, mbedtls_mpi_core_add( X, A, A, limbs ) );
+        ASSERT_COMPARE( X, bytes, S, bytes );
+
+        /* add, output aliased to both operands => correct result and carry */
+        memcpy( X, A, bytes );
+        TEST_EQUAL( carry, mbedtls_mpi_core_add( X, X, X, limbs ) );
+        ASSERT_COMPARE( X, bytes, S, bytes );
+
+        /* add_if: cond = 0 => X unchanged, no carry */
         memcpy( X, B, bytes );
         TEST_EQUAL( 0, mbedtls_mpi_core_add_if( X, X, limbs, 0 ) );
         ASSERT_COMPARE( X, bytes, B, bytes );
 
-        /* cond = 1 => correct result and carry */
+        /* add_if: cond = 1 => correct result and carry */
         TEST_EQUAL( carry, mbedtls_mpi_core_add_if( X, X, limbs, 1 ) );
         ASSERT_COMPARE( X, bytes, S, bytes );
     }
@@ -414,12 +434,26 @@
     {
         /* A != B, so test B + A */
 
-        /* cond = 0 => d unchanged, no carry */
+        /* add => correct result and carry */
+        TEST_EQUAL( carry, mbedtls_mpi_core_add( X, B, A, limbs ) );
+        ASSERT_COMPARE( X, bytes, S, bytes );
+
+        /* add, alias output and first operand => correct result and carry */
+        memcpy( X, B, bytes );
+        TEST_EQUAL( carry, mbedtls_mpi_core_add( X, X, A, limbs ) );
+        ASSERT_COMPARE( X, bytes, S, bytes );
+
+        /* add, alias output and second operand => correct result and carry */
+        memcpy( X, A, bytes );
+        TEST_EQUAL( carry, mbedtls_mpi_core_add( X, B, X, limbs ) );
+        ASSERT_COMPARE( X, bytes, S, bytes );
+
+        /* add_if: cond = 0 => d unchanged, no carry */
         memcpy( X, B, bytes );
         TEST_EQUAL( 0, mbedtls_mpi_core_add_if( X, A, limbs, 0 ) );
         ASSERT_COMPARE( X, bytes, B, bytes );
 
-        /* cond = 1 => correct result and carry */
+        /* add_if: cond = 1 => correct result and carry */
         TEST_EQUAL( carry, mbedtls_mpi_core_add_if( X, A, limbs, 1 ) );
         ASSERT_COMPARE( X, bytes, S, bytes );
     }
