Skip to content

Unimplemented instruction in simarm64? #31559

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
mkustermann opened this issue Dec 6, 2017 · 1 comment
Closed

Unimplemented instruction in simarm64? #31559

mkustermann opened this issue Dec 6, 2017 · 1 comment
Assignees
Labels
area-vm Use area-vm for VM related issues, including code coverage, and the AOT and JIT backends.

Comments

@mkustermann
Copy link
Member

Reproduction:

% tools/build.py -mrelease -asimarm64,x64 runtime_kernel
...

% out/ReleaseX64/dart --dfe=out/ReleaseX64/gen/kernel-service.dart.snapshot --kernel-binaries=out/ReleaseX64 --strong --reify-generic-functions --limit-ints-to-64-bits tests/corelib_2/int_parse_radix_test.dart                 
% echo $?
0

% out/ReleaseSIMARM64/dart --dfe=out/ReleaseSIMARM64/gen/kernel-service.dart.snapshot --kernel-binaries=out/ReleaseSIMARM64 --strong --reify-generic-functions --limit-ints-to-64-bits tests/corelib_2/int_parse_radix_test.dart  
Simulator hit Unimplemented instruction: at 0x7f4239ac13f4, last_pc=0x7f4239ac13f0

sim> 
@mkustermann mkustermann added the area-vm Use area-vm for VM related issues, including code coverage, and the AOT and JIT backends. label Dec 6, 2017
@mkustermann mkustermann changed the title Unimplemented instruction in simarm64 Unimplemented instruction in simarm64? Dec 6, 2017
@alexmarkov
Copy link
Contributor

alexmarkov commented Dec 7, 2017

In debug mode

out/DebugSIMARM64/dart --dfe=out/DebugSIMARM64/gen/kernel-service.dart.snapshot --kernel-binaries=out/DebugSIMARM64 --strong --reify-generic-functions --limit-ints-to-64-bits tests/corelib_2/int_parse_radix_test.dart

It fails with an assertion in the assembler:

../../runtime/vm/compiler/assembler/assembler_arm64.h: 405: error: expected: ((imm & 0xfff) == 0) && (Utils::IsUint(12, imm >> 12))

Call stack:

#2  0x0000000000a78489 in dart::OS::Abort () at ../../runtime/vm/os_linux.cc:379
#3  0x0000000000dadb4b in dart::DynamicAssertionHelper::Fail (this=0x7ffff6738788, 
    format=<optimized out>) at ../../runtime/platform/assert.cc:42
#4  0x0000000000c10ccd in Operand (imm=-2, this=<optimized out>)
    at ../../runtime/vm/compiler/assembler/assembler_arm64.h:405
#5  dart::FlowGraphCompiler::CopyParameters (this=<optimized out>, 
    expect_type_args=<optimized out>, 
    check_arguments=<error reading variable: access outside bounds of object referenced via synthetic pointer>) at ../../runtime/vm/compiler/backend/flow_graph_compiler_arm64.cc:734
#6  0x0000000000c12152 in dart::FlowGraphCompiler::CompileGraph (this=0x7ffff6738a48)
    at ../../runtime/vm/compiler/backend/flow_graph_compiler_arm64.cc:1063
#7  0x0000000000d4a640 in dart::CompileParsedFunctionHelper::Compile (this=<optimized out>, 
    pipeline=0x1de0a20) at ../../runtime/vm/compiler/jit/compiler.cc:1212
#8  0x0000000000d4b864 in dart::CompileFunctionHelper (pipeline=0x1de0a20, function=..., 
    optimized=<optimized out>, osr_id=-1) at ../../runtime/vm/compiler/jit/compiler.cc:1344
#9  0x0000000000d4b1b8 in dart::Compiler::CompileFunction (thread=<optimized out>, function=...)
    at ../../runtime/vm/compiler/jit/compiler.cc:1531
#10 0x000000000093bd55 in dart::DartEntry::InvokeFunction (function=..., arguments=..., 
    arguments_descriptor=..., current_sp=140737328161008) at ../../runtime/vm/dart_entry.cc:122
#11 0x0000000000cef645 in dart::kernel::StreamingConstantEvaluator::RunFunction (
    this=0x7ffff673a450, function=..., arguments=..., names=...)
    at ../../runtime/vm/compiler/frontend/kernel_binary_flowgraph.cc:3266
#12 0x0000000000cef4d0 in dart::kernel::StreamingConstantEvaluator::RunFunction (
    this=<optimized out>, function=..., argument_count=<optimized out>, 

Code at flow_graph_compiler_arm64.cc:734

    __ and_(R8, R8,
            Operand(Smi::RawValue(
                ArgumentsDescriptor::PositionalCountField::mask_in_place())));

was added recently in a991c17.

It looks like the value of the mask is not a valid 12-bit immediate.

/cc @sjindel-google

@whesse whesse closed this as completed in e299963 Dec 7, 2017
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area-vm Use area-vm for VM related issues, including code coverage, and the AOT and JIT backends.
Projects
None yet
Development

No branches or pull requests

2 participants