Skip to content
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

C&S trigger a missing operand1 assertion #53

Open
branylagaffe opened this issue Sep 11, 2024 · 4 comments
Open

C&S trigger a missing operand1 assertion #53

branylagaffe opened this issue Sep 11, 2024 · 4 comments
Assignees

Comments

@branylagaffe
Copy link
Collaborator

C&S trigger a missing operand1 assertion

Description

C&S instruction may be badly decoded and then trigger an assertion failure.

Steps to Reproduce

  1. Use the latest 1c_MI snapshot

Actual Behavior

casa instruction have only one operand decoded instead of three.

@pooriaPoorsarvi
Copy link

found the issue in the internal dependency system for one of the operands of CAS (3rd operand). it was setting the internal dep arg to 0 which made one operand mark another one as ready (the first one that was waiting on read register finishing in an extra cycle). Just forcing it to be the correct arg after the fact fixed the issue, investigating more on why arg is being set wrong

@pooriaPoorsarvi
Copy link

uploaded the fix 0701031

@pooriaPoorsarvi
Copy link

The bug was caused by one of the actions in C&S (calculating address for RS), and there the operand was set to 1. now even though for the action RS is the only operand, that number is global (with respect to the scope of the instruction), hence the base should have been added (2), since RS is the 3'rd operand (1+2) for the CASA instruction that was being decoded.

@branylagaffe
Copy link
Collaborator Author

To be reviewed by @branylagaffe

branylagaffe added a commit that referenced this issue Oct 1, 2024
Found the issue in the internal dependency system for one of the
operands of CAS (3rd operand). It was setting the internal dep arg to 0
which made one operand mark another one as ready (the first one that was
waiting on read register finishing in an extra cycle). Just forcing it
to be the correct arg after the fact fixed the issue, investigating more
on why arg is being set wrong

Co-authored-by: Bryan Perdrizat <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

When branches are created from issues, their pull requests are automatically linked.

2 participants