I am working with pseudocode taken from Exploration Tools (section "Arm A64 Instruction Set Architecture", button "Download XML").
bits(16) BFSub(bits(16) op1, bits(16) op2, FPCRType fpcr, boolean fpexc)
FPRounding rounding = FPRoundingMode(fpcr);
boolean done;
bits(32) result;
bits(32) op1_s = op1 : Zeros(16);
bits(32) op2_s = op2 : Zeros(16);
(type1,sign1,value1) = FPUnpack(op1_s, fpcr, fpexc);
(type2,sign2,value2) = FPUnpack(op2_s, fpcr, fpexc);
(done,result) = FPProcessNaNs(type1, type2, op1_s, op2_s, fpcr, fpexc);
Here we see that result is declared as bits(32) result.
bits(N) FPAdd(bits(N) op1, bits(N) op2, FPCRType fpcr, boolean fpexc)
assert N IN {16,32,64};
rounding = FPRoundingMode(fpcr);
(type1,sign1,value1) = FPUnpack(op1, fpcr, fpexc);
(type2,sign2,value2) = FPUnpack(op2, fpcr, fpexc);
(done,result) = FPProcessNaNs(type1, type2, op1, op2, fpcr, fpexc);
Here we see that result is not declared. Why? Is it a bug?
I use version 2022-09. But version 2023-03 has the same issue.
Here is the full path to the file:
ISA_A64_xml_A_profile-2022-09/ISA_A64_xml_A_profile-2022-09/xhtml/shared_pseudocode.html