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

[RV64_DYNAREC] Added preliminary RVV infra and PXOR opcode for demonstration #1632

Merged
merged 5 commits into from
Jul 4, 2024

Conversation

ksco
Copy link
Collaborator

@ksco ksco commented Jul 3, 2024

No description provided.

struct {
uint8_t reg:7;
uint8_t single:1;
uint8_t reg:5;
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If there is only 16 regs then we have a problem, and cannot use fixed register position as for arm64, because that would leave 0 scratch register!
We need sommething more dynamic, like YMM handling on ARM64, because we need more than 16regs!

Copy link
Collaborator Author

@ksco ksco Jul 4, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

wait... it stores the native register number, not the sse register number, then there is 32 of them, and we need a uint16_t.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I reverted the change, sorry.

Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

reverted partly... 5bits should be enough yes.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

5 bits are not enough I think, because we use -1 to indicate the register is forgotten, so there needs at least 1 bit free to not conflict with -1.

Copy link
Owner

@ptitSeb ptitSeb Jul 4, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

then have a "isfree:1", it will be set to "1" when .v=-1

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

sorry not sure I followed, but what you suggested on "revert partly" is this?

       uint16_t reg:5;
        uint16_t vector:1;
        uint16_t single:1;
        uint16_t write:1;
        uint16_t isfree:1;
        uint16_t unused:7;

Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes. And this isfree need to be set to 0 when used...

@ksco
Copy link
Collaborator Author

ksco commented Jul 4, 2024

@ptitSeb please do another round of review, thanks.

@ptitSeb ptitSeb merged commit eb695d5 into ptitSeb:main Jul 4, 2024
34 checks passed
@ksco ksco deleted the vector branch July 4, 2024 10:43
Javier97sm pushed a commit to Javier97sm/box64 that referenced this pull request Aug 16, 2024
…tration (ptitSeb#1632)

* [RV64_DYNAREC] Added preliminary RVV infra and PXOR opcode for demonstration

* keep sse_cache_s uint8_t as suggested

* use xor to do the wrap

* revert

* better fallback
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

Successfully merging this pull request may close these issues.

2 participants