diff options
Diffstat (limited to 'test/example/cpp-unit.cpp')
-rw-r--r-- | test/example/cpp-unit.cpp | 50 |
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() { |