mirror of
https://github.com/YosysHQ/yosys
synced 2025-04-07 01:54:10 +00:00
cxxrtl: Fix value::shl
This commit is contained in:
parent
1c8e58a736
commit
ff53f3d2b6
1
Makefile
1
Makefile
|
@ -888,6 +888,7 @@ endif
|
||||||
+cd tests/verilog && bash run-test.sh
|
+cd tests/verilog && bash run-test.sh
|
||||||
+cd tests/xprop && bash run-test.sh $(SEEDOPT)
|
+cd tests/xprop && bash run-test.sh $(SEEDOPT)
|
||||||
+cd tests/fmt && bash run-test.sh
|
+cd tests/fmt && bash run-test.sh
|
||||||
|
+cd tests/cxxrtl && bash run-test.sh
|
||||||
@echo ""
|
@echo ""
|
||||||
@echo " Passed \"make test\"."
|
@echo " Passed \"make test\"."
|
||||||
@echo ""
|
@echo ""
|
||||||
|
|
|
@ -419,6 +419,7 @@ struct value : public expr_base<value<Bits>> {
|
||||||
carry = (shift_bits == 0) ? 0
|
carry = (shift_bits == 0) ? 0
|
||||||
: data[n] >> (chunk::bits - shift_bits);
|
: data[n] >> (chunk::bits - shift_bits);
|
||||||
}
|
}
|
||||||
|
result.data[result.chunks - 1] &= result.msb_mask;
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
1
tests/cxxrtl/.gitignore
vendored
Normal file
1
tests/cxxrtl/.gitignore
vendored
Normal file
|
@ -0,0 +1 @@
|
||||||
|
cxxrtl-test-*
|
12
tests/cxxrtl/run-test.sh
Executable file
12
tests/cxxrtl/run-test.sh
Executable file
|
@ -0,0 +1,12 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
set -ex
|
||||||
|
|
||||||
|
run_subtest () {
|
||||||
|
local subtest=$1; shift
|
||||||
|
|
||||||
|
${CC:-gcc} -std=c++11 -o cxxrtl-test-${subtest} -I../../backends/cxxrtl/runtime test_${subtest}.cc -lstdc++
|
||||||
|
./cxxrtl-test-${subtest}
|
||||||
|
}
|
||||||
|
|
||||||
|
run_subtest value
|
15
tests/cxxrtl/test_value.cc
Normal file
15
tests/cxxrtl/test_value.cc
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
#include <cassert>
|
||||||
|
#include <cstdint>
|
||||||
|
|
||||||
|
#include "cxxrtl/cxxrtl.h"
|
||||||
|
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
{
|
||||||
|
// shl exceeding Bits should be masked
|
||||||
|
cxxrtl::value<6> a(1u);
|
||||||
|
cxxrtl::value<6> b(8u);
|
||||||
|
cxxrtl::value<6> c = a.shl(b);
|
||||||
|
assert(c.get<uint64_t>() == 0);
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in a new issue