summaryrefslogtreecommitdiff
path: root/test/example/cpp-unit.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'test/example/cpp-unit.cpp')
-rw-r--r--test/example/cpp-unit.cpp50
1 files changed, 50 insertions, 0 deletions
diff --git a/test/example/cpp-unit.cpp b/test/example/cpp-unit.cpp
index 3ab35d381..2c9b43de2 100644
--- a/test/example/cpp-unit.cpp
+++ b/test/example/cpp-unit.cpp
@@ -538,6 +538,56 @@ void test_bits() {
c0.value = Literal(int64_t(-1));
assert_equal(getMaxBits(&u), 32);
+ u.type = Type::i32;
+ c0.type = Type::i32;
+
+ u.op = ExtendS8Int32;
+ c0.value = Literal(int8_t(0));
+ assert_equal(getMaxBits(&u), 0);
+ c0.value = Literal(int8_t(127));
+ assert_equal(getMaxBits(&u), 7);
+ c0.value = Literal(int8_t(128));
+ assert_equal(getMaxBits(&u), 32);
+
+ u.op = ExtendS16Int32;
+ c0.value = Literal(int16_t(0));
+ assert_equal(getMaxBits(&u), 0);
+ c0.value = Literal(int16_t(0x7FFF));
+ assert_equal(getMaxBits(&u), 15);
+ c0.value = Literal(int16_t(0x8000));
+ assert_equal(getMaxBits(&u), 32);
+
+ u.type = Type::i64;
+ c0.type = Type::i32;
+
+ u.op = ExtendS8Int64;
+ c0.value = Literal(int8_t(0));
+ assert_equal(getMaxBits(&u), 0);
+ c0.value = Literal(int8_t(127));
+ assert_equal(getMaxBits(&u), 7);
+ c0.value = Literal(int8_t(128));
+ assert_equal(getMaxBits(&u), 64);
+
+ u.op = ExtendS16Int64;
+ c0.value = Literal(int16_t(0));
+ assert_equal(getMaxBits(&u), 0);
+ c0.value = Literal(int16_t(0x7FFF));
+ assert_equal(getMaxBits(&u), 15);
+ c0.value = Literal(int16_t(0x8000));
+ assert_equal(getMaxBits(&u), 64);
+
+ u.type = Type::i64;
+ c0.type = Type::i64;
+
+ u.op = ExtendS32Int64;
+ c0.value = Literal(int64_t(0));
+ assert_equal(getMaxBits(&u), 0);
+ c0.value = Literal(int64_t(0x7FFFFFFFLL));
+ assert_equal(getMaxBits(&u), 31);
+ c0.value = Literal(int64_t(0xFFFFFFFFLL));
+ assert_equal(getMaxBits(&u), 64);
+ c0.value = Literal(int64_t(-1LL));
+ assert_equal(getMaxBits(&u), 64);
}
void test_cost() {