-
Notifications
You must be signed in to change notification settings - Fork 50
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
ureg: Reuse meta types between registers with the same field layout.
This makes it trivial for the optimizer to realize that a generic method operating on different registers with the same fields can be deduplicated, since they now use the exact same generic type parameters. (While testing PR #81, I noticed that the optimizer was intermittently creating multiple copies of inline(never) functions with the register address hard-coded; this change makes that impossible). Codegen diff: --- /tmp/old-9f68fe1b8c2218acce41fac1d49b76f9c55f4b73 2023-02-21 23:58:34.453745653 -0800 +++ /tmp/new-070db26dd29cb3804a14c2c8b760843c3d0c34cd 2023-02-21 23:59:17.069261052 -0800 @@ -23,10 +23,10 @@ [Nr] Name Type Addr Off Size ES Flg Lk Inf Al [ 1] .text PROGBITS 00000000 001000 001acf 00 AXM 0 0 16 00 .text target/riscv32imc-unknown-none-elf/debug/deps/hmac384-53a16658694a446f - [ 1] .text PROGBITS 00000000 001000 002dcc 00 AXM 0 0 16 + [ 1] .text PROGBITS 00000000 001000 002d8c 00 AXM 0 0 16 00 .text target/riscv32imc-unknown-none-elf/debug/deps/ecc384-29620b311093f9b3 - [ 1] .text PROGBITS 00000000 001000 0042f0 00 AXM 0 0 16 + [ 1] .text PROGBITS 00000000 001000 004390 00 AXM 0 0 16 00 .text target/riscv32imc-unknown-none-elf/debug/deps/doe-a6c703fbbd8279c3 [ 1] .text PROGBITS 00000000 001000 0001b0 00 AX 0 0 2 I looked at the disassembly for the ecc size regression, and this seems to be optimizer heuristics causing spooky action at a distance; the optimizer removed some of the keyvault code from the original Ecc384::sign() (I guess it figured out that the test-case didn't invoke it?), but not the new one.
- Loading branch information
Showing
11 changed files
with
372 additions
and
1,532 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.