Split floating-point operations into four steps.

1. Load operands from register and convert it into a form suitable for host.
2. Execute operations specified by opcode.
3. Normalize Nans if host and guest architctures handled them differently.
4. Encode results as required by RISC-V (if host doesn't do that).

Bug: 265372622

Test: berberis_host_tests/berberis_host_tests

Change-Id: I5e4566577ef0d747147a5a7e26345b80fa7c8446
4 files changed
tree: 674f4f0dc92cc0a6cf1f98cdcd6bd6f9ba9f9cf1
  1. assembler/
  2. base/
  3. calling_conventions/
  4. decoder/
  5. exec_region/
  6. guest_state/
  7. interpreter/
  8. intrinsics/
  9. kernel_api/
  10. program_runner/
  11. runtime/
  12. runtime_primitives/
  13. test_utils/
  14. tiny_loader/
  15. tools/
  16. .clang-format
  17. Android.bp
  18. OWNERS
  19. PREUPLOAD.cfg
  20. README.md
README.md

Berberis: dynamic binary translator to run Android apps with riscv64 native code on x86_64 devices or emulators.