]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
Add test cases for ADC/ADCS/SBC/SBCS. Pertains to #335496.
authorJulian Seward <jseward@acm.org>
Wed, 4 Jun 2014 13:13:05 +0000 (13:13 +0000)
committerJulian Seward <jseward@acm.org>
Wed, 4 Jun 2014 13:13:05 +0000 (13:13 +0000)
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13995

none/tests/arm64/integer.c

index 7addadaafe763ca6d91735273ec6caa8e791f6c3..f7987283a3e463f86a6aea90480ce2240bb10877 100644 (file)
@@ -1,6 +1,6 @@
 
 /* To compile:
-   aarch64-linux-gnu-gcc -Wall -g -O0 -o test_arm64_int test_arm64_int.c \
+   aarch64-linux-gnu-gcc -Wall -g -O0 -o integer none/tests/arm64/integer.c \
       -DTEST_BFM=1  # (or 0)
    The ubfm/sbfm/bfm tests are huge and take ages to compile and run.
    Set TEST_BFM to 0 to skip them.
@@ -243,6 +243,163 @@ printf("misc ad-hoc tests\n");
 TESTINST3("add x3, x4, x5", 12345, 6789, x3, x4, x5, 0);
 TESTINST3("add w3, w4, w5", 12345, 6789, x3, x4, x5, 0);
 
+
+TESTINST3("adc x3, x4, x5", 12345, 6789,                          x3,x4,x5,0);
+TESTINST3("adc x3, x4, x5", 12345, 6789,                          x3,x4,x5,1);
+TESTINST3("adc x3, x4, x5", 0, 0xffffffffffffffffULL,             x3,x4,x5,0);
+TESTINST3("adc x3, x4, x5", 0, 0xffffffffffffffffULL,             x3,x4,x5,1);
+TESTINST3("adc x3, x4, x5", 0x31415927ULL<<32, 0x27181728ULL<<32, x3,x4,x5,0);
+TESTINST3("adc x3, x4, x5", 0x31415927ULL<<32, 0x27181728ULL<<32, x3,x4,x5,1);
+TESTINST3("adc x3, x4, x5", 0x00000000ULL<<32, 0x00000000ULL<<32, x3,x4,x5,0);
+TESTINST3("adc x3, x4, x5", 0x00000000ULL<<32, 0x00000000ULL<<32, x3,x4,x5,1);
+TESTINST3("adc x3, x4, x5", 0x00000001ULL<<32, 0x00000000ULL<<32, x3,x4,x5,0);
+TESTINST3("adc x3, x4, x5", 0x00000001ULL<<32, 0x00000000ULL<<32, x3,x4,x5,1);
+TESTINST3("adc x3, x4, x5", 0x00000000ULL<<32, 0x00000001ULL<<32, x3,x4,x5,0);
+TESTINST3("adc x3, x4, x5", 0x00000000ULL<<32, 0x00000001ULL<<32, x3,x4,x5,1);
+TESTINST3("adc x3, x4, x5", 0x80000000ULL<<32, 0x00000000ULL<<32, x3,x4,x5,0);
+TESTINST3("adc x3, x4, x5", 0x80000000ULL<<32, 0x00000000ULL<<32, x3,x4,x5,1);
+TESTINST3("adc x3, x4, x5", 0x00000000ULL<<32, 0x80000000ULL<<32, x3,x4,x5,0);
+TESTINST3("adc x3, x4, x5", 0x00000000ULL<<32, 0x80000000ULL<<32, x3,x4,x5,1);
+TESTINST3("adc x3, x4, x5", 0x80000000ULL<<32, 0x80000000ULL<<32, x3,x4,x5,0);
+TESTINST3("adc x3, x4, x5", 0x80000000ULL<<32, 0x80000000ULL<<32, x3,x4,x5,1);
+
+TESTINST3("adc w3, w4, w5", 12345, 6789,            x3,x4,x5, 0);
+TESTINST3("adc w3, w4, w5", 12345, 6789,            x3,x4,x5, 1);
+TESTINST3("adc w3, w4, w5", 0, 0xffffffffULL,       x3,x4,x5, 0);
+TESTINST3("adc w3, w4, w5", 0, 0xffffffffULL,       x3,x4,x5, 1);
+TESTINST3("adc w3, w4, w5", 0x31415927, 0x27181728, x3,x4,x5, 0);
+TESTINST3("adc w3, w4, w5", 0x31415927, 0x27181728, x3,x4,x5, 1);
+TESTINST3("adc w3, w4, w5", 0x00000000, 0x00000000, x3,x4,x5, 0);
+TESTINST3("adc w3, w4, w5", 0x00000000, 0x00000000, x3,x4,x5, 1);
+TESTINST3("adc w3, w4, w5", 0x00000001, 0x00000000, x3,x4,x5, 0);
+TESTINST3("adc w3, w4, w5", 0x00000001, 0x00000000, x3,x4,x5, 1);
+TESTINST3("adc w3, w4, w5", 0x00000000, 0x00000001, x3,x4,x5, 0);
+TESTINST3("adc w3, w4, w5", 0x00000000, 0x00000001, x3,x4,x5, 1);
+TESTINST3("adc w3, w4, w5", 0x80000000, 0x00000000, x3,x4,x5, 0);
+TESTINST3("adc w3, w4, w5", 0x80000000, 0x00000000, x3,x4,x5, 1);
+TESTINST3("adc w3, w4, w5", 0x00000000, 0x80000000, x3,x4,x5, 0);
+TESTINST3("adc w3, w4, w5", 0x00000000, 0x80000000, x3,x4,x5, 1);
+TESTINST3("adc w3, w4, w5", 0x80000000, 0x80000000, x3,x4,x5, 0);
+TESTINST3("adc w3, w4, w5", 0x80000000, 0x80000000, x3,x4,x5, 1);
+
+
+TESTINST3("adcs x3, x4, x5", 12345, 6789,                          x3,x4,x5,0);
+TESTINST3("adcs x3, x4, x5", 12345, 6789,                          x3,x4,x5,1);
+TESTINST3("adcs x3, x4, x5", 0, 0xffffffffffffffffULL,             x3,x4,x5,0);
+TESTINST3("adcs x3, x4, x5", 0, 0xffffffffffffffffULL,             x3,x4,x5,1);
+TESTINST3("adcs x3, x4, x5", 0x31415927ULL<<32, 0x27181728ULL<<32, x3,x4,x5,0);
+TESTINST3("adcs x3, x4, x5", 0x31415927ULL<<32, 0x27181728ULL<<32, x3,x4,x5,1);
+TESTINST3("adcs x3, x4, x5", 0x00000000ULL<<32, 0x00000000ULL<<32, x3,x4,x5,0);
+TESTINST3("adcs x3, x4, x5", 0x00000000ULL<<32, 0x00000000ULL<<32, x3,x4,x5,1);
+TESTINST3("adcs x3, x4, x5", 0x00000001ULL<<32, 0x00000000ULL<<32, x3,x4,x5,0);
+TESTINST3("adcs x3, x4, x5", 0x00000001ULL<<32, 0x00000000ULL<<32, x3,x4,x5,1);
+TESTINST3("adcs x3, x4, x5", 0x00000000ULL<<32, 0x00000001ULL<<32, x3,x4,x5,0);
+TESTINST3("adcs x3, x4, x5", 0x00000000ULL<<32, 0x00000001ULL<<32, x3,x4,x5,1);
+TESTINST3("adcs x3, x4, x5", 0x80000000ULL<<32, 0x00000000ULL<<32, x3,x4,x5,0);
+TESTINST3("adcs x3, x4, x5", 0x80000000ULL<<32, 0x00000000ULL<<32, x3,x4,x5,1);
+TESTINST3("adcs x3, x4, x5", 0x00000000ULL<<32, 0x80000000ULL<<32, x3,x4,x5,0);
+TESTINST3("adcs x3, x4, x5", 0x00000000ULL<<32, 0x80000000ULL<<32, x3,x4,x5,1);
+TESTINST3("adcs x3, x4, x5", 0x80000000ULL<<32, 0x80000000ULL<<32, x3,x4,x5,0);
+TESTINST3("adcs x3, x4, x5", 0x80000000ULL<<32, 0x80000000ULL<<32, x3,x4,x5,1);
+
+TESTINST3("adcs w3, w4, w5", 12345, 6789,            x3,x4,x5, 0);
+TESTINST3("adcs w3, w4, w5", 12345, 6789,            x3,x4,x5, 1);
+TESTINST3("adcs w3, w4, w5", 0, 0xffffffffULL,       x3,x4,x5, 0);
+TESTINST3("adcs w3, w4, w5", 0, 0xffffffffULL,       x3,x4,x5, 1);
+TESTINST3("adcs w3, w4, w5", 0x31415927, 0x27181728, x3,x4,x5, 0);
+TESTINST3("adcs w3, w4, w5", 0x31415927, 0x27181728, x3,x4,x5, 1);
+TESTINST3("adcs w3, w4, w5", 0x00000000, 0x00000000, x3,x4,x5, 0);
+TESTINST3("adcs w3, w4, w5", 0x00000000, 0x00000000, x3,x4,x5, 1);
+TESTINST3("adcs w3, w4, w5", 0x00000001, 0x00000000, x3,x4,x5, 0);
+TESTINST3("adcs w3, w4, w5", 0x00000001, 0x00000000, x3,x4,x5, 1);
+TESTINST3("adcs w3, w4, w5", 0x00000000, 0x00000001, x3,x4,x5, 0);
+TESTINST3("adcs w3, w4, w5", 0x00000000, 0x00000001, x3,x4,x5, 1);
+TESTINST3("adcs w3, w4, w5", 0x80000000, 0x00000000, x3,x4,x5, 0);
+TESTINST3("adcs w3, w4, w5", 0x80000000, 0x00000000, x3,x4,x5, 1);
+TESTINST3("adcs w3, w4, w5", 0x00000000, 0x80000000, x3,x4,x5, 0);
+TESTINST3("adcs w3, w4, w5", 0x00000000, 0x80000000, x3,x4,x5, 1);
+TESTINST3("adcs w3, w4, w5", 0x80000000, 0x80000000, x3,x4,x5, 0);
+TESTINST3("adcs w3, w4, w5", 0x80000000, 0x80000000, x3,x4,x5, 1);
+
+
+TESTINST3("sbc x3, x4, x5", 12345, 6789,                          x3,x4,x5,0);
+TESTINST3("sbc x3, x4, x5", 12345, 6789,                          x3,x4,x5,1);
+TESTINST3("sbc x3, x4, x5", 0, 0xffffffffffffffffULL,             x3,x4,x5,0);
+TESTINST3("sbc x3, x4, x5", 0, 0xffffffffffffffffULL,             x3,x4,x5,1);
+TESTINST3("sbc x3, x4, x5", 0x31415927ULL<<32, 0x27181728ULL<<32, x3,x4,x5,0);
+TESTINST3("sbc x3, x4, x5", 0x31415927ULL<<32, 0x27181728ULL<<32, x3,x4,x5,1);
+TESTINST3("sbc x3, x4, x5", 0x00000000ULL<<32, 0x00000000ULL<<32, x3,x4,x5,0);
+TESTINST3("sbc x3, x4, x5", 0x00000000ULL<<32, 0x00000000ULL<<32, x3,x4,x5,1);
+TESTINST3("sbc x3, x4, x5", 0x00000001ULL<<32, 0x00000000ULL<<32, x3,x4,x5,0);
+TESTINST3("sbc x3, x4, x5", 0x00000001ULL<<32, 0x00000000ULL<<32, x3,x4,x5,1);
+TESTINST3("sbc x3, x4, x5", 0x00000000ULL<<32, 0x00000001ULL<<32, x3,x4,x5,0);
+TESTINST3("sbc x3, x4, x5", 0x00000000ULL<<32, 0x00000001ULL<<32, x3,x4,x5,1);
+TESTINST3("sbc x3, x4, x5", 0x80000000ULL<<32, 0x00000000ULL<<32, x3,x4,x5,0);
+TESTINST3("sbc x3, x4, x5", 0x80000000ULL<<32, 0x00000000ULL<<32, x3,x4,x5,1);
+TESTINST3("sbc x3, x4, x5", 0x00000000ULL<<32, 0x80000000ULL<<32, x3,x4,x5,0);
+TESTINST3("sbc x3, x4, x5", 0x00000000ULL<<32, 0x80000000ULL<<32, x3,x4,x5,1);
+TESTINST3("sbc x3, x4, x5", 0x80000000ULL<<32, 0x80000000ULL<<32, x3,x4,x5,0);
+TESTINST3("sbc x3, x4, x5", 0x80000000ULL<<32, 0x80000000ULL<<32, x3,x4,x5,1);
+
+TESTINST3("sbc w3, w4, w5", 12345, 6789,            x3,x4,x5, 0);
+TESTINST3("sbc w3, w4, w5", 12345, 6789,            x3,x4,x5, 1);
+TESTINST3("sbc w3, w4, w5", 0, 0xffffffffULL,       x3,x4,x5, 0);
+TESTINST3("sbc w3, w4, w5", 0, 0xffffffffULL,       x3,x4,x5, 1);
+TESTINST3("sbc w3, w4, w5", 0x31415927, 0x27181728, x3,x4,x5, 0);
+TESTINST3("sbc w3, w4, w5", 0x31415927, 0x27181728, x3,x4,x5, 1);
+TESTINST3("sbc w3, w4, w5", 0x00000000, 0x00000000, x3,x4,x5, 0);
+TESTINST3("sbc w3, w4, w5", 0x00000000, 0x00000000, x3,x4,x5, 1);
+TESTINST3("sbc w3, w4, w5", 0x00000001, 0x00000000, x3,x4,x5, 0);
+TESTINST3("sbc w3, w4, w5", 0x00000001, 0x00000000, x3,x4,x5, 1);
+TESTINST3("sbc w3, w4, w5", 0x00000000, 0x00000001, x3,x4,x5, 0);
+TESTINST3("sbc w3, w4, w5", 0x00000000, 0x00000001, x3,x4,x5, 1);
+TESTINST3("sbc w3, w4, w5", 0x80000000, 0x00000000, x3,x4,x5, 0);
+TESTINST3("sbc w3, w4, w5", 0x80000000, 0x00000000, x3,x4,x5, 1);
+TESTINST3("sbc w3, w4, w5", 0x00000000, 0x80000000, x3,x4,x5, 0);
+TESTINST3("sbc w3, w4, w5", 0x00000000, 0x80000000, x3,x4,x5, 1);
+TESTINST3("sbc w3, w4, w5", 0x80000000, 0x80000000, x3,x4,x5, 0);
+TESTINST3("sbc w3, w4, w5", 0x80000000, 0x80000000, x3,x4,x5, 1);
+
+
+TESTINST3("sbcs x3, x4, x5", 12345, 6789,                          x3,x4,x5,0);
+TESTINST3("sbcs x3, x4, x5", 12345, 6789,                          x3,x4,x5,1);
+TESTINST3("sbcs x3, x4, x5", 0, 0xffffffffffffffffULL,             x3,x4,x5,0);
+TESTINST3("sbcs x3, x4, x5", 0, 0xffffffffffffffffULL,             x3,x4,x5,1);
+TESTINST3("sbcs x3, x4, x5", 0x31415927ULL<<32, 0x27181728ULL<<32, x3,x4,x5,0);
+TESTINST3("sbcs x3, x4, x5", 0x31415927ULL<<32, 0x27181728ULL<<32, x3,x4,x5,1);
+TESTINST3("sbcs x3, x4, x5", 0x00000000ULL<<32, 0x00000000ULL<<32, x3,x4,x5,0);
+TESTINST3("sbcs x3, x4, x5", 0x00000000ULL<<32, 0x00000000ULL<<32, x3,x4,x5,1);
+TESTINST3("sbcs x3, x4, x5", 0x00000001ULL<<32, 0x00000000ULL<<32, x3,x4,x5,0);
+TESTINST3("sbcs x3, x4, x5", 0x00000001ULL<<32, 0x00000000ULL<<32, x3,x4,x5,1);
+TESTINST3("sbcs x3, x4, x5", 0x00000000ULL<<32, 0x00000001ULL<<32, x3,x4,x5,0);
+TESTINST3("sbcs x3, x4, x5", 0x00000000ULL<<32, 0x00000001ULL<<32, x3,x4,x5,1);
+TESTINST3("sbcs x3, x4, x5", 0x80000000ULL<<32, 0x00000000ULL<<32, x3,x4,x5,0);
+TESTINST3("sbcs x3, x4, x5", 0x80000000ULL<<32, 0x00000000ULL<<32, x3,x4,x5,1);
+TESTINST3("sbcs x3, x4, x5", 0x00000000ULL<<32, 0x80000000ULL<<32, x3,x4,x5,0);
+TESTINST3("sbcs x3, x4, x5", 0x00000000ULL<<32, 0x80000000ULL<<32, x3,x4,x5,1);
+TESTINST3("sbcs x3, x4, x5", 0x80000000ULL<<32, 0x80000000ULL<<32, x3,x4,x5,0);
+TESTINST3("sbcs x3, x4, x5", 0x80000000ULL<<32, 0x80000000ULL<<32, x3,x4,x5,1);
+
+TESTINST3("sbcs w3, w4, w5", 12345, 6789,            x3,x4,x5, 0);
+TESTINST3("sbcs w3, w4, w5", 12345, 6789,            x3,x4,x5, 1);
+TESTINST3("sbcs w3, w4, w5", 0, 0xffffffffULL,       x3,x4,x5, 0);
+TESTINST3("sbcs w3, w4, w5", 0, 0xffffffffULL,       x3,x4,x5, 1);
+TESTINST3("sbcs w3, w4, w5", 0x31415927, 0x27181728, x3,x4,x5, 0);
+TESTINST3("sbcs w3, w4, w5", 0x31415927, 0x27181728, x3,x4,x5, 1);
+TESTINST3("sbcs w3, w4, w5", 0x00000000, 0x00000000, x3,x4,x5, 0);
+TESTINST3("sbcs w3, w4, w5", 0x00000000, 0x00000000, x3,x4,x5, 1);
+TESTINST3("sbcs w3, w4, w5", 0x00000001, 0x00000000, x3,x4,x5, 0);
+TESTINST3("sbcs w3, w4, w5", 0x00000001, 0x00000000, x3,x4,x5, 1);
+TESTINST3("sbcs w3, w4, w5", 0x00000000, 0x00000001, x3,x4,x5, 0);
+TESTINST3("sbcs w3, w4, w5", 0x00000000, 0x00000001, x3,x4,x5, 1);
+TESTINST3("sbcs w3, w4, w5", 0x80000000, 0x00000000, x3,x4,x5, 0);
+TESTINST3("sbcs w3, w4, w5", 0x80000000, 0x00000000, x3,x4,x5, 1);
+TESTINST3("sbcs w3, w4, w5", 0x00000000, 0x80000000, x3,x4,x5, 0);
+TESTINST3("sbcs w3, w4, w5", 0x00000000, 0x80000000, x3,x4,x5, 1);
+TESTINST3("sbcs w3, w4, w5", 0x80000000, 0x80000000, x3,x4,x5, 0);
+TESTINST3("sbcs w3, w4, w5", 0x80000000, 0x80000000, x3,x4,x5, 1);
+
+
 TESTINST2("bfm x2, x4, #0, #63", 0x5555555555555555, x2, x4, 0);
 TESTINST2("bfm x2, x4, #0, #63", 0xaaaaaaaaaaaaaaaa, x2, x4, 0);