https://github.com/mit-plv/fiat-crypto
Tip revision: dd63ba33834de270f2f167ac4b91aeb34fce9a09 authored by Jason Gross on 09 October 2021, 02:20:20 UTC
Rearrange code a bit
Rearrange code a bit
Tip revision: dd63ba3
Crypto.Fancy.Barrett256.prod_barrett_red256_correct.expected
Barrett256.prod_barrett_red256_correct
: forall (cc_start_state : CC.state) (start_context : register -> Z)
(x xHigh RegMuLow scratchp1 scratchp2 scratchp3 scratchp4 scratchp5 extra_reg : register),
NoDup [x; xHigh; RegMuLow; scratchp1; scratchp2; scratchp3; scratchp4; scratchp5; extra_reg; RegMod; RegZero] ->
0 <= start_context x < 2 ^ Barrett256.machine_wordsize ->
0 <= start_context xHigh < Barrett256.M ->
start_context RegMuLow = Barrett256.muLow ->
start_context RegMod = Barrett256.M ->
start_context RegZero = 0 ->
CC.cc_m cc_start_state = cc_spec CC.M (start_context xHigh) ->
let X := start_context x + 2 ^ Barrett256.machine_wordsize * start_context xHigh in
interp reg_eqb wordmax cc_spec (MulMod x xHigh RegMuLow scratchp1 scratchp2 scratchp3 scratchp4 scratchp5) cc_start_state start_context =
X mod Barrett256.M