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

[AArch64] Check all floating point convert instruction execution logic #367

Open
9 tasks
FinnWilkinson opened this issue Jan 8, 2024 · 1 comment
Open
9 tasks
Labels
0.9.7 Part of SimEng Release 0.9.7 bug Something isn't working

Comments

@FinnWilkinson
Copy link
Contributor

FinnWilkinson commented Jan 8, 2024

Akin to issue #365 , all floating point convert instructions should be double checked to a) ensure the execution logic is correct (i.e. using signed or unsigned types correctly), and b) add checks for ±nan and ±inf.

To do this, the ISA specification should be consulted along with custom c/c++/ (via insline asm) or assembly kernels to validate the results on hardware; then using these results to help write regression tests.

Instructions to check:

  • FCVTAS
  • FCVT
  • FCVTL
  • FCVTL2
  • FCVTN
  • FCVTN2
  • FCVTZS
  • SCVTF
  • UCVTF
@FinnWilkinson FinnWilkinson added bug Something isn't working 0.9.6 Part of SimEng Release 0.9.6 labels Jan 8, 2024
@jj16791
Copy link
Contributor

jj16791 commented Jan 8, 2024

Need to ensure we also account for the cases where the input value has a width greater than the destination register. In this case, it should be set to the max value of the destination register value.

An example taken from Arm Architecture Reference Manual for A-profile architecture:J1.3 Shared pseudocode:shared/functions/vector/UnsignedSatQ which is applicable for the fcvtzu instructions:

if i > 2^N - 1 then
    result = 2^N - 1; saturated = TRUE;
elsif i < 0 then
    result = 0; saturated = TRUE;
else
    result = i; saturated = FALSE;

It may be worth double checking this functionality on the XCI nodes/A64FX nodes/Local Apple Silicon

@FinnWilkinson FinnWilkinson removed the 0.9.6 Part of SimEng Release 0.9.6 label Jan 10, 2024
@FinnWilkinson FinnWilkinson added the 0.9.7 Part of SimEng Release 0.9.7 label Feb 15, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
0.9.7 Part of SimEng Release 0.9.7 bug Something isn't working
Projects
Status: ToDo
Development

No branches or pull requests

2 participants