Skip to content

Commit

Permalink
Add TC for extended features
Browse files Browse the repository at this point in the history
Signed-off-by: HyukWoo Park <[email protected]>
  • Loading branch information
clover2123 committed Jun 27, 2024
1 parent a5da576 commit 1c0b83d
Show file tree
Hide file tree
Showing 3 changed files with 45 additions and 16 deletions.
20 changes: 20 additions & 0 deletions .github/workflows/actions.yml
Original file line number Diff line number Diff line change
Expand Up @@ -252,6 +252,26 @@ jobs:
uses: mxschmitt/action-tmate@v3
timeout-minutes: 15

build-test-extended-feature:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
submodules: true
- name: Install Packages
run: |
sudo apt update
sudo apt install -y ninja-build gcc-multilib g++-multilib
- name: Build x64
env:
BUILD_OPTIONS: -DWALRUS_ARCH=x64 -DWALRUS_HOST=linux -DWALRUS_MODE=debug -DWALRUS_OUTPUT=shell -DWALRUS_EXTENDED_FEATURES=ON -GNinja
run: |
cmake -H. -Bout/extended $BUILD_OPTIONS
ninja -Cout/extended
- name: Run Tests
run: |
$RUNNER --engine="$GITHUB_WORKSPACE/out/extended/walrus" wasm-test-extended
build-test-performance:
runs-on: ubuntu-latest
steps:
Expand Down
24 changes: 8 additions & 16 deletions third_party/wabt/src/walrus/binary-reader-walrus.cc
Original file line number Diff line number Diff line change
Expand Up @@ -79,8 +79,7 @@ struct Label {
LabelKind kind;
};

static Features getFeatures()
{
static Features getFeatures() {
Features features;
features.enable_exceptions();
// TODO: should use command line flag for this (--enable-threads)
Expand Down Expand Up @@ -473,47 +472,40 @@ class BinaryReaderDelegateWalrus: public BinaryReaderDelegate {
Result OnOpcodeV128(v128 value) override {
return Result::Ok;
}
Result OnOpcodeBlockSig(Type sig_type) override
{
Result OnOpcodeBlockSig(Type sig_type) override {
if (WABT_UNLIKELY(m_externalDelegate->resumeGenerateByteCodeAfterNBlockEnd())) {
m_externalDelegate->setResumeGenerateByteCodeAfterNBlockEnd(m_externalDelegate->resumeGenerateByteCodeAfterNBlockEnd() + 1);
}
return Result::Ok;
}
Result OnOpcodeType(Type type) override
{
Result OnOpcodeType(Type type) override {
return Result::Ok;
}
Result OnAtomicLoadExpr(Opcode opcode, Index memidx, Address alignment_log2, Address offset) override
{
Result OnAtomicLoadExpr(Opcode opcode, Index memidx, Address alignment_log2, Address offset) override {
CHECK_RESULT(m_validator.OnAtomicLoad(GetLocation(), opcode, Var(memidx, GetLocation()), GetAlignment(alignment_log2), offset));
SHOULD_GENERATE_BYTECODE;
m_externalDelegate->OnAtomicLoadExpr(opcode, memidx, alignment_log2, offset);
return Result::Ok;
}
Result OnAtomicStoreExpr(Opcode opcode, Index memidx, Address alignment_log2, Address offset) override
{
Result OnAtomicStoreExpr(Opcode opcode, Index memidx, Address alignment_log2, Address offset) override {
CHECK_RESULT(m_validator.OnAtomicStore(GetLocation(), opcode, Var(memidx, GetLocation()), GetAlignment(alignment_log2), offset));
SHOULD_GENERATE_BYTECODE;
m_externalDelegate->OnAtomicStoreExpr(opcode, memidx, alignment_log2, offset);
return Result::Ok;
}
Result OnAtomicRmwExpr(Opcode opcode, Index memidx, Address alignment_log2, Address offset) override
{
Result OnAtomicRmwExpr(Opcode opcode, Index memidx, Address alignment_log2, Address offset) override {
CHECK_RESULT(m_validator.OnAtomicRmw(GetLocation(), opcode, Var(memidx, GetLocation()), GetAlignment(alignment_log2), offset));
SHOULD_GENERATE_BYTECODE;
m_externalDelegate->OnAtomicRmwExpr(opcode, memidx, alignment_log2, offset);
return Result::Ok;
}
Result OnAtomicRmwCmpxchgExpr(Opcode opcode, Index memidx, Address alignment_log2, Address offset) override
{
Result OnAtomicRmwCmpxchgExpr(Opcode opcode, Index memidx, Address alignment_log2, Address offset) override {
CHECK_RESULT(m_validator.OnAtomicRmwCmpxchg(GetLocation(), opcode, Var(memidx, GetLocation()), GetAlignment(alignment_log2), offset));
SHOULD_GENERATE_BYTECODE;
m_externalDelegate->OnAtomicCmpxchgExpr(opcode, memidx, alignment_log2, offset);
return Result::Ok;
}
Result OnAtomicWaitExpr(Opcode opcode, Index memidx, Address align_log2, Address offset) override
{
Result OnAtomicWaitExpr(Opcode opcode, Index memidx, Address align_log2, Address offset) override {
CHECK_RESULT(m_validator.OnAtomicWait(GetLocation(), opcode, Var(memidx, GetLocation()), GetAlignment(align_log2), offset));
abort();
return Result::Ok;
Expand Down
17 changes: 17 additions & 0 deletions tools/run-tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -154,6 +154,23 @@ def run_jit_tests(engine):
if fail_total > 0:
raise Exception("basic wasm-test-core failed")

@runner('wasm-test-extended', default=False)
def run_extended_tests(engine):
TEST_DIR = join(PROJECT_SOURCE_DIR, 'test', 'extended')

print('Running wasm-extended tests:')
xpass = glob(join(TEST_DIR, '**/*.wast'), recursive=True)
xpass_result = _run_wast_tests(engine, xpass, False)

tests_total = len(xpass)
fail_total = xpass_result
print('TOTAL: %d' % (tests_total))
print('%sPASS : %d%s' % (COLOR_GREEN, tests_total - fail_total, COLOR_RESET))
print('%sFAIL : %d%s' % (COLOR_RED, fail_total, COLOR_RESET))

if fail_total > 0:
raise Exception("wasm-test-extended failed")

def main():
parser = ArgumentParser(description='Walrus Test Suite Runner')
parser.add_argument('--engine', metavar='PATH', default=DEFAULT_WALRUS,
Expand Down

0 comments on commit 1c0b83d

Please sign in to comment.