PTO-SCALAR-MODEL-ALU-SEMANTICS
PTO-SCALAR-MODEL-ALU-SEMANTICSASL pseudocode
The complete ASL owner is shown directly below.
// PTO-UNIT: {"id":"PTO-SCALAR-MODEL-ALU-SEMANTICS","surface":"scalar","classification":["model","alu","semantics"],"depends_on":["PTO-SCALAR-MODEL-TYPES-OPERANDS"]}// PTO-REQ-SCALAR-ALU-001: PTO integer, logic, and shift value rules.
pure func MultiplyWord(left: Word, right: Word) => Wordbegin var result: Word = Zeros{PTO_XLEN}; for bit_index = 0 to PTO_XLEN - 1 do if right[bit_index] == '1' then result = result + LSL(left, bit_index); end; end; return result;end;
pure func DivideWordUnsigned(dividend: Word, divisor: Word) => Wordbegin assert !IsZero(divisor); var quotient: Word = Zeros{PTO_XLEN}; var remainder: bits(PTO_XLEN + 1) = Zeros{PTO_XLEN + 1}; let extended_divisor: bits(PTO_XLEN + 1) = ZeroExtend{PTO_XLEN + 1}(divisor); for bit_index = PTO_XLEN - 1 downto 0 do remainder = LSL(remainder, 1); remainder[0] = dividend[bit_index]; if UInt(remainder) >= UInt(extended_divisor) then remainder = remainder - extended_divisor; quotient[bit_index] = '1'; end; end; return quotient;end;
pure func ScalarDivideUnsigned(dividend: Word, divisor: Word) => Wordbegin if IsZero(divisor) then return Zeros{PTO_XLEN}; else return DivideWordUnsigned(dividend, divisor); end;end;
pure func ScalarRemainderUnsigned(dividend: Word, divisor: Word) => Wordbegin if IsZero(divisor) then return dividend; end; let quotient = DivideWordUnsigned(dividend, divisor); return dividend - MultiplyWord(quotient, divisor);end;
pure func ScalarDivideSigned(dividend: Word, divisor: Word) => Wordbegin if IsZero(divisor) then return Zeros{PTO_XLEN}; end; let dividend_negative = dividend[PTO_XLEN - 1] == '1'; let divisor_negative = divisor[PTO_XLEN - 1] == '1'; let dividend_magnitude = if dividend_negative then Zeros{PTO_XLEN} - dividend else dividend; let divisor_magnitude = if divisor_negative then Zeros{PTO_XLEN} - divisor else divisor; let magnitude = DivideWordUnsigned(dividend_magnitude, divisor_magnitude); if dividend_negative != divisor_negative then return Zeros{PTO_XLEN} - magnitude; else return magnitude; end;end;
pure func ScalarRemainderSigned(dividend: Word, divisor: Word) => Wordbegin if IsZero(divisor) then return dividend; end; let quotient = ScalarDivideSigned(dividend, divisor); return dividend - MultiplyWord(quotient, divisor);end;
pure func ScalarDivideUnsignedW(dividend: Word, divisor: Word) => Wordbegin let dividend32 = ZeroExtend{PTO_XLEN}(dividend[31:0]); let divisor32 = ZeroExtend{PTO_XLEN}(divisor[31:0]); let quotient = ScalarDivideUnsigned(dividend32, divisor32); return SignExtend{PTO_XLEN}(quotient[31:0]);end;
pure func ScalarRemainderUnsignedW(dividend: Word, divisor: Word) => Wordbegin let dividend32 = ZeroExtend{PTO_XLEN}(dividend[31:0]); let divisor32 = ZeroExtend{PTO_XLEN}(divisor[31:0]); let remainder = ScalarRemainderUnsigned(dividend32, divisor32); return SignExtend{PTO_XLEN}(remainder[31:0]);end;
pure func ScalarDivideSignedW(dividend: Word, divisor: Word) => Wordbegin let dividend32 = SignExtend{PTO_XLEN}(dividend[31:0]); let divisor32 = SignExtend{PTO_XLEN}(divisor[31:0]); let quotient = ScalarDivideSigned(dividend32, divisor32); return SignExtend{PTO_XLEN}(quotient[31:0]);end;
pure func ScalarRemainderSignedW(dividend: Word, divisor: Word) => Wordbegin let dividend32 = SignExtend{PTO_XLEN}(dividend[31:0]); let divisor32 = SignExtend{PTO_XLEN}(divisor[31:0]); let remainder = ScalarRemainderSigned(dividend32, divisor32); return SignExtend{PTO_XLEN}(remainder[31:0]);end;
pure func ScalarMultiplyW(left: Word, right: Word) => Wordbegin let left32 = ZeroExtend{PTO_XLEN}(left[31:0]); let right32 = ZeroExtend{PTO_XLEN}(right[31:0]); let product = MultiplyWord(left32, right32); return SignExtend{PTO_XLEN}(product[31:0]);end;
pure func MultiplyWideUnsigned(left: Word, right: Word) => DoubleWordbegin var result: DoubleWord = Zeros{PTO_XLEN * 2}; let extended_left: DoubleWord = ZeroExtend{PTO_XLEN * 2}(left); for bit_index = 0 to PTO_XLEN - 1 do if right[bit_index] == '1' then result = result + LSL(extended_left, bit_index); end; end; return result;end;
pure func MultiplyWideSigned(left: Word, right: Word) => DoubleWordbegin let left_negative = left[PTO_XLEN - 1] == '1'; let right_negative = right[PTO_XLEN - 1] == '1'; let left_magnitude = if left_negative then Zeros{PTO_XLEN} - left else left; let right_magnitude = if right_negative then Zeros{PTO_XLEN} - right else right; let magnitude = MultiplyWideUnsigned(left_magnitude, right_magnitude); if left_negative != right_negative then return Zeros{PTO_XLEN * 2} - magnitude; else return magnitude; end;end;
pure func RotateRightWord(value: Word, amount: integer {0..63}) => Wordbegin if amount == 0 then return value; else return LSR(value, amount) OR LSL(value, PTO_XLEN - amount); end;end;
pure func RotateLeftWord(value: Word, amount: integer {0..63}) => Wordbegin if amount == 0 then return value; else return LSL(value, amount) OR LSR(value, PTO_XLEN - amount); end;end;
pure func ExtractBitfield(value: Word, width: integer {1..64}, offset: integer {0..63}, signed_result: boolean) => Wordbegin let rotated = RotateRightWord(value, offset); var result: Word = Zeros{PTO_XLEN}; for bit_index = 0 to width - 1 do result[bit_index] = rotated[bit_index]; end; if signed_result && result[width - 1] == '1' then for bit_index = width to PTO_XLEN - 1 do result[bit_index] = '1'; end; end; return result;end;
pure func CountBitfield(value: Word, width: integer {1..64}, offset: integer {0..63}, leading: boolean, population: boolean) => Wordbegin let field = ExtractBitfield(value, width, offset, FALSE); var count: integer = 0; if population then for bit_index = 0 to width - 1 do if field[bit_index] == '1' then count = count + 1; end; end; elsif leading then var searching = TRUE; for bit_index = 0 to width - 1 do let selected = (width - 1) - bit_index; if searching && field[selected] == '0' then count = count + 1; else searching = FALSE; end; end; else var searching = TRUE; for bit_index = 0 to width - 1 do if searching && field[bit_index] == '0' then count = count + 1; else searching = FALSE; end; end; end; assert count <= 64; return NaturalToWord(count as integer {0..262144});end;
pure func ModifyBitfield(value: Word, width: integer {1..64}, offset: integer {0..63}, set_bits: boolean) => Wordbegin var rotated = RotateRightWord(value, offset); for bit_index = 0 to width - 1 do rotated[bit_index] = if set_bits then '1' else '0'; end; return RotateLeftWord(rotated, offset);end;
pure func ReverseBitfieldBytes(value: Word, width: integer {1..64}, offset: integer {0..63}) => Wordbegin if width MOD 8 != 0 then return Zeros{PTO_XLEN}; end; let field = ExtractBitfield(value, width, offset, FALSE); let byte_count = width DIV 8; var result: Word = Zeros{PTO_XLEN}; for byte_index = 0 to byte_count - 1 do result[(((byte_count - 1) - byte_index) * 8) +: 8] = field[(byte_index * 8) +: 8]; end; return result;end;
pure func ScalarMultiplyAdd(addend: Word, left: Word, right: Word) => Wordbegin return addend + MultiplyWord(left, right);end;
pure func ScalarMultiplyAddW(addend: Word, left: Word, right: Word) => Wordbegin let product = MultiplyWord(left, right); let result: bits(32) = product[31:0] + addend[31:0]; return SignExtend{PTO_XLEN}(result);end;
pure func ScalarConditionalSelect(predicate: Word, selected_true: Word, selected_false: Word) => Wordbegin if !IsZero(predicate) then return selected_true; else return selected_false; end;end;
pure func ApplyScalarRightModifier(value: Word, modifier: ScalarRightModifier, logical_family: boolean) => Wordbegin case modifier of when ScalarRight_None => return value; when ScalarRight_SignedWord => return SignExtend{PTO_XLEN}(value[31:0]); when ScalarRight_UnsignedWord => return ZeroExtend{PTO_XLEN}(value[31:0]); when ScalarRight_NegateOrNot => if logical_family then return NOT(value); else return Zeros{PTO_XLEN} - value; end; end;end;
pure func ApplyRestrictedCompareModifier(value: Word, modifier: ScalarRightModifier) => Wordbegin if modifier == ScalarRight_NegateOrNot then return value; else return ApplyScalarRightModifier(value, modifier, FALSE); end;end;
pure func ApplySelectModifier(value: Word, modifier: ScalarRightModifier) => Wordbegin if modifier == ScalarRight_NegateOrNot then return Zeros{PTO_XLEN} - value; else return value; end;end;
pure func PrepareScalarRight(value: Word, modifier: ScalarRightModifier, shift_amount: integer {0..63}, logical_family: boolean) => Wordbegin return LSL(ApplyScalarRightModifier(value, modifier, logical_family), shift_amount);end;
pure func MaterializeLUI(immediate: bits(20)) => Wordbegin return LSL(SignExtend{PTO_XLEN}(immediate), 12);end;
pure func MaterializeLongSigned(immediate: bits(32)) => Wordbegin return SignExtend{PTO_XLEN}(immediate);end;
pure func MaterializeLongUpper(immediate: bits(32)) => Wordbegin return LSL(ZeroExtend{PTO_XLEN}(immediate), 32);end;
pure func MaterializeLongUnsigned(immediate: bits(32)) => Wordbegin return ZeroExtend{PTO_XLEN}(immediate);end;
// The move primitive is explicit so catalog handler identity and decoded// operand-to-effect binding do not rely on an unrelated modifier helper.pure func MoveScalarValue(value: Word) => Wordbegin return value;end;
pure func ExtendScalarValue(value: Word, width: integer {8,16,32}, signed_result: boolean) => Wordbegin case width of when 8 => if signed_result then return SignExtend{PTO_XLEN}(value[7:0]); else return ZeroExtend{PTO_XLEN}(value[7:0]); end; when 16 => if signed_result then return SignExtend{PTO_XLEN}(value[15:0]); else return ZeroExtend{PTO_XLEN}(value[15:0]); end; when 32 => if signed_result then return SignExtend{PTO_XLEN}(value[31:0]); else return ZeroExtend{PTO_XLEN}(value[31:0]); end; end;end;
pure func ScalarMultiplyImmediateAdd(left: Word, right: Word, immediate: bits(19), subtract: boolean) => Wordbegin let product = MultiplyWord(right, ZeroExtend{PTO_XLEN}(immediate)); if subtract then return left - product; else return left + product; end;end;
pure func InsertBitfield(base: Word, source: Word, first: integer {0..63}, last: integer {0..63}) => Wordbegin let width: integer = (((last - first) + 64) MOD 64) + 1; var result = base; for bit_index = 0 to width - 1 do let destination = ((first + bit_index) MOD 64) as integer {0..63}; result[destination] = source[bit_index]; end; return result;end;
func ExecuteConcatenatePair(destination_low: Reg5Selector, destination_high: Reg5Selector, left: Word, right: Word, shift_amount: integer {0..127})begin let low = InstructionContractLowResult_HL_CCAT( left, right, shift_amount); let high = InstructionContractHighResult_HL_CCAT( left, right, shift_amount); WriteScalarDestination(destination_low, low); WriteScalarDestination(destination_high, high);end;
func ExecuteConcatenatePairW(destination_low: Reg5Selector, destination_high: Reg5Selector, left: Word, right: Word, shift_amount: integer {0..127})begin let low = InstructionContractLowResult_HL_CCATW( left, right, shift_amount); let high = InstructionContractHighResult_HL_CCATW( left, right, shift_amount); WriteScalarDestination(destination_low, low); WriteScalarDestination(destination_high, high);end;
func ExecuteScalarDividePair(destination_quotient: Reg5Selector, destination_remainder: Reg5Selector, left: Word, right: Word, signed_operation: boolean)begin let quotient = if signed_operation then ScalarDivideSigned(left, right) else ScalarDivideUnsigned(left, right); let remainder = if signed_operation then ScalarRemainderSigned(left, right) else ScalarRemainderUnsigned(left, right); WriteScalarDestination(destination_quotient, quotient); WriteScalarDestination(destination_remainder, remainder);end;
func ExecuteScalarRemainderPair(destination_remainder: Reg5Selector, destination_quotient: Reg5Selector, left: Word, right: Word, signed_operation: boolean)begin let quotient = if signed_operation then ScalarDivideSigned(left, right) else ScalarDivideUnsigned(left, right); let remainder = if signed_operation then ScalarRemainderSigned(left, right) else ScalarRemainderUnsigned(left, right); WriteScalarDestination(destination_remainder, remainder); WriteScalarDestination(destination_quotient, quotient);end;
func ExecuteScalarDividePairW(destination_quotient: Reg5Selector, destination_remainder: Reg5Selector, left: Word, right: Word, signed_operation: boolean)begin let quotient = if signed_operation then ScalarDivideSignedW(left, right) else ScalarDivideUnsignedW(left, right); let remainder = if signed_operation then ScalarRemainderSignedW(left, right) else ScalarRemainderUnsignedW(left, right); WriteScalarDestination(destination_quotient, quotient); WriteScalarDestination(destination_remainder, remainder);end;
func ExecuteScalarRemainderPairW(destination_remainder: Reg5Selector, destination_quotient: Reg5Selector, left: Word, right: Word, signed_operation: boolean)begin let quotient = if signed_operation then ScalarDivideSignedW(left, right) else ScalarDivideUnsignedW(left, right); let remainder = if signed_operation then ScalarRemainderSignedW(left, right) else ScalarRemainderUnsignedW(left, right); WriteScalarDestination(destination_remainder, remainder); WriteScalarDestination(destination_quotient, quotient);end;
func ExecuteScalarMultiplyPair(destination_low: Reg5Selector, destination_high: Reg5Selector, left: Word, right: Word, signed_operation: boolean)begin let product = if signed_operation then MultiplyWideSigned(left, right) else MultiplyWideUnsigned(left, right); WriteScalarDestination(destination_low, product[63:0]); WriteScalarDestination(destination_high, product[127:64]);end;
func ExecuteScalarMultiplyAddPair(destination_low: Reg5Selector, destination_high: Reg5Selector, addend: Word, left: Word, right: Word, word_operation: boolean)begin let effective_addend = if word_operation then SignExtend{PTO_XLEN}(addend[31:0]) else addend; let effective_left = if word_operation then SignExtend{PTO_XLEN}(left[31:0]) else left; let effective_right = if word_operation then SignExtend{PTO_XLEN}(right[31:0]) else right; let product = MultiplyWideSigned(effective_left, effective_right); let accumulator = product + SignExtend{PTO_XLEN * 2}(effective_addend); if word_operation then WriteScalarDestination( destination_low, SignExtend{PTO_XLEN}(accumulator[31:0])); WriteScalarDestination( destination_high, SignExtend{PTO_XLEN}(accumulator[63:32])); else WriteScalarDestination(destination_low, accumulator[63:0]); WriteScalarDestination(destination_high, accumulator[127:64]); end;end;
pure func NaturalToWord(value: integer {0..262144}) => Wordbegin var result: Word = Zeros{PTO_XLEN}; for step = 1 to value looplimit 262145 do result = result + 1; end; return result;end;
pure func ScalarBinary(op: ScalarBinaryOperation, left: Word, right: Word) => Wordbegin case op of when ScalarBinary_ADD => return left + right; when ScalarBinary_SUB => return left - right; when ScalarBinary_AND => return left AND right; when ScalarBinary_OR => return left OR right; when ScalarBinary_XOR => return left XOR right; when ScalarBinary_SLL => return LSL(left, UInt(right[5:0])); when ScalarBinary_SRL => return LSR(left, UInt(right[5:0])); when ScalarBinary_SRA => return ASR(left, UInt(right[5:0])); when ScalarBinary_MIN => if SInt(left) < SInt(right) then return left; else return right; end; when ScalarBinary_MINU => if UInt(left) < UInt(right) then return left; else return right; end; when ScalarBinary_MAX => if SInt(left) > SInt(right) then return left; else return right; end; when ScalarBinary_MAXU => if UInt(left) > UInt(right) then return left; else return right; end; end;end;
pure func ScalarBinaryW(op: ScalarBinaryOperation, left: Word, right: Word) => Wordbegin let left32: bits(32) = left[31:0]; let right32: bits(32) = right[31:0]; var result32: bits(32); case op of when ScalarBinary_ADD => result32 = left32 + right32; when ScalarBinary_SUB => result32 = left32 - right32; when ScalarBinary_AND => result32 = left32 AND right32; when ScalarBinary_OR => result32 = left32 OR right32; when ScalarBinary_XOR => result32 = left32 XOR right32; when ScalarBinary_SLL => result32 = LSL(left32, UInt(right[4:0])); when ScalarBinary_SRL => result32 = LSR(left32, UInt(right[4:0])); when ScalarBinary_SRA => result32 = ASR(left32, UInt(right[4:0])); otherwise => assert FALSE; end; return SignExtend{PTO_XLEN}(result32);end;
func ExecuteScalarBinary(op: ScalarBinaryOperation, destination: GPRIndex, source_left: GPRIndex, source_right: GPRIndex)begin let left = ReadGPR(source_left); let right = ReadGPR(source_right); let result = ScalarBinary(op, left, right); WriteGPR(destination, result);end;
Architecture behavior
This internal model unit is documented through its normative ASL/NDF owners and validation evidence; it has no reader-guide migration target.
NDF clauses
Bodies come from owning ASL. Dragging or buttons change only this page-session view order.
No NDF clause is attached to this unit.
Evidence index
15 matching entries
Executable evidence10
materialization, move, and control forms resolve queue selectors
- surfaceSCALAR
- ownerPTO-SCALAR-MODEL-ALU-SEMANTICS
- categoryEXECUTION
- case004
Show exact test source
Sources and references
- Complete stable ID
PTO-AVS-SCALAR-ALU-CONTROL-ALIAS-EXEC-004- Path
tests/asl/scalar/model/alu/semantics/scalar-exec-alu-control-alias-004.asl- Kind / role
- execution
- Pass condition
- materialization, move, control, and implicit queue assertions hold
- SHA-256
7deb6f22ba07e2d7816988cd46db6fe2baebdfa7f68c7e80422ea3e74119768a
scalar ALU GPR aliases snapshot sources before destination writes
- surfaceSCALAR
- ownerPTO-SCALAR-MODEL-ALU-SEMANTICS
- categoryEXECUTION
- case001
Show exact test source
Sources and references
- Complete stable ID
PTO-AVS-SCALAR-ALU-GPR-ALIAS-EXEC-001- Path
tests/asl/scalar/model/alu/semantics/scalar-exec-alu-alias-matrix-001.asl- Kind / role
- execution
- Pass condition
- GPR overlap, zero, and discard-destination assertions hold
- SHA-256
d6169122913c70a70484bd3bdaffe717eef5213b2effa13fe01d52bed89669a1
ternary, bitfield, and select operations snapshot overlapping operands
- surfaceSCALAR
- ownerPTO-SCALAR-MODEL-ALU-SEMANTICS
- categoryEXECUTION
- case003
Show exact test source
Sources and references
- Complete stable ID
PTO-AVS-SCALAR-ALU-MULTI-ALIAS-EXEC-003- Path
tests/asl/scalar/model/alu/semantics/scalar-exec-alu-multi-alias-003.asl- Kind / role
- execution
- Pass condition
- ternary, bitfield, and select alias assertions hold
- SHA-256
4fd371542d5ef8137c75f8675442735fb959e276aae1e28645dfe828df4a4b1b
pair-result operations snapshot sources before ordered destinations
- surfaceSCALAR
- ownerPTO-SCALAR-MODEL-ALU-SEMANTICS
- categoryEXECUTION
- case005
Show exact test source
Sources and references
- Complete stable ID
PTO-AVS-SCALAR-ALU-PAIR-ALIAS-EXEC-005- Path
tests/asl/scalar/model/alu/semantics/scalar-exec-alu-pair-alias-005.asl- Kind / role
- execution
- Pass condition
- GPR and queue pair-result alias assertions hold
- SHA-256
71b5ee4ea1364a14400e3f50542907b9b3178fa4084c5f59bebf79922af4e6be
scalar ALU queue operands snapshot every T and U source position
- surfaceSCALAR
- ownerPTO-SCALAR-MODEL-ALU-SEMANTICS
- categoryEXECUTION
- case002
Show exact test source
Sources and references
- Complete stable ID
PTO-AVS-SCALAR-ALU-QUEUE-ALIAS-EXEC-002- Path
tests/asl/scalar/model/alu/semantics/scalar-exec-alu-queue-alias-002.asl- Kind / role
- execution
- Pass condition
- queue source and same-queue push assertions hold
- SHA-256
bd8d11adf8ef588a78afd1c8f9840afe44a8d9f47acf699c63460f5a8de61960
PTO-SCALAR-MODEL-ALU-SEMANTICS compiles as an independent normative unit
- surfaceSCALAR
- ownerPTO-SCALAR-MODEL-ALU-SEMANTICS
- categorySTATIC-INVARIANT
- case001
Show exact test source
Sources and references
- Complete stable ID
PTO-AVS-SCALAR-MODEL-ALU-SEMANTICS-STATIC-001- Path
tests/asl/scalar/model/alu/semantics/scalar-static-semantics-contract-001.asl- Kind / role
- static-invariant
- Pass condition
- the complete model and this unit's static invariant compile
- SHA-256
f2fcf690dd21b67855c017e5a0005a0ce55dcf6e470a232c702736ed1cbd44ac
Covers Scalar Aliasing Order.
- surfaceSCALAR
- ownerPTO-SCALAR-MODEL-ALU-SEMANTICS
- categoryEXECUTION
- case001
Show exact test source
Sources and references
- Complete stable ID
PTO-AVS-SCALAR-TESTSCALARALIASINGORDER-EXECUTION-001- Path
tests/asl/scalar/model/alu/semantics/scalar-exec-aliasing-order-001.asl- Kind / role
- execution
- Pass condition
- TestScalarAliasingOrder completes without assertion failure
- SHA-256
9726119c4fc203d1e27fd2b16203fd1e7cd6c267f8dab064ac5966986242d0a6
Covers Scalar ALU Boundary Matrix.
- surfaceSCALAR
- ownerPTO-SCALAR-MODEL-ALU-SEMANTICS
- categoryBOUNDARY
- case001
Show exact test source
Sources and references
- Complete stable ID
PTO-AVS-SCALAR-TESTSCALARALUBOUNDARYMATRIX-BOUNDARY-001- Path
tests/asl/scalar/model/alu/semantics/scalar-bound-alu-matrix-001.asl- Kind / role
- boundary
- Pass condition
- TestScalarALUBoundaryMatrix completes without assertion failure
- SHA-256
d3fe194b51027d06f800382c4324b7248aa84f5fa336683ca2974c3b9a5baf96
Covers Scalar Bitfield Boundary Contract.
- surfaceSCALAR
- ownerPTO-SCALAR-MODEL-ALU-SEMANTICS
- categoryBOUNDARY
- case001
Show exact test source
Sources and references
- Complete stable ID
PTO-AVS-SCALAR-TESTSCALARBITFIELDBOUNDARYCONTRACT-BOUNDARY-001- Path
tests/asl/scalar/model/alu/semantics/scalar-bound-bitfield-contract-001.asl- Kind / role
- boundary
- Pass condition
- TestScalarBitfieldBoundaryContract completes without assertion failure
- SHA-256
ac3d7fcae6ee548bb5f952c4d96a00319fd72305ff6bb29703f0124af2d0b71d
Covers Scalar Dispatch Effects.
- surfaceSCALAR
- ownerPTO-SCALAR-MODEL-ALU-SEMANTICS
- categoryEXECUTION
- case001
Show exact test source
Sources and references
- Complete stable ID
PTO-AVS-SCALAR-TESTSCALARDISPATCHEFFECTS-EXECUTION-001- Path
tests/asl/scalar/model/alu/semantics/scalar-exec-dispatch-effects-001.asl- Kind / role
- execution
- Pass condition
- TestScalarDispatchEffects completes without assertion failure
- SHA-256
b2e34b975d57c396f462c5cc52557e1b88185859c2feff013ebf3baf9b0ba0aa
Commit-scoped evidence5
spec/evidence/release-traceability-readiness.json · closed
PTO-EVIDENCE-RELEASE-TRACEABILITYSources and references
- Complete stable ID
PTO-EVIDENCE-RELEASE-TRACEABILITY- Path
spec/evidence/release-traceability-readiness.json- Kind / role
- ASL/NDF/documentation/AVS traceability
- SHA-256
c7327021d39dc67ac5564bc55073b3870a397d79ac8d9648284d56e33bc14a3e
spec/evidence/instruction-contract-closure.json · closed
PTO-EVIDENCE-INSTRUCTION-CONTRACT-CLOSURESources and references
- Complete stable ID
PTO-EVIDENCE-INSTRUCTION-CONTRACT-CLOSURE- Path
spec/evidence/instruction-contract-closure.json- Kind / role
- mnemonic and encoding contract closure
- SHA-256
3ef2bb62421c79dff8fa77a1c7983923b523244b8090812883ef81286ca8106a
spec/evidence/architecture-readiness.json · open
PTO-EVIDENCE-ARCHITECTURE-READINESSSources and references
- Complete stable ID
PTO-EVIDENCE-ARCHITECTURE-READINESS- Path
spec/evidence/architecture-readiness.json- Kind / role
- architecture maturity and blockers
- SHA-256
4b0b85199101251bea744e0f3591cc31906909dc80d5ab651c417a936036a004
spec/evidence/release-gate-readiness.json · ready-for-exact-head-verification
PTO-EVIDENCE-RELEASE-GATE-READINESSSources and references
- Complete stable ID
PTO-EVIDENCE-RELEASE-GATE-READINESS- Path
spec/evidence/release-gate-readiness.json- Kind / role
- exact-head gate readiness
- SHA-256
a0f4d2b6920c08981ea55fd8ef820708a40d4feb5402c5150e8e9ab532d84ce0
spec/release-manifest.json · draft
PTO-EVIDENCE-RELEASE-MANIFESTSources and references
- Complete stable ID
PTO-EVIDENCE-RELEASE-MANIFEST- Path
spec/release-manifest.json- Kind / role
- release content and encoding fingerprints
- SHA-256
1a64c109ed7a90351c41e2a418b3c0ebaf8ad975838986d2101385186b85c0d8
Unit metadata
Open 4 generated metadata fields
Open generated traceability record
{
"classification": [
"model",
"alu",
"semantics"
],
"documentation": "docs/scalar/model/alu/semantics.md",
"id": "PTO-SCALAR-MODEL-ALU-SEMANTICS",
"mnemonic": null,
"readiness_subjects": [],
"semantic_tests": [
"PTO-AVS-SCALAR-ALU-CONTROL-ALIAS-EXEC-004",
"PTO-AVS-SCALAR-ALU-GPR-ALIAS-EXEC-001",
"PTO-AVS-SCALAR-ALU-MULTI-ALIAS-EXEC-003",
"PTO-AVS-SCALAR-ALU-PAIR-ALIAS-EXEC-005",
"PTO-AVS-SCALAR-ALU-QUEUE-ALIAS-EXEC-002",
"PTO-AVS-SCALAR-TESTSCALARALIASINGORDER-EXECUTION-001",
"PTO-AVS-SCALAR-TESTSCALARALUBOUNDARYMATRIX-BOUNDARY-001",
"PTO-AVS-SCALAR-TESTSCALARBITFIELDBOUNDARYCONTRACT-BOUNDARY-001",
"PTO-AVS-SCALAR-TESTSCALARDISPATCHEFFECTS-EXECUTION-001"
],
"source": "asl/scalar/model/alu/semantics.asl",
"surface": "scalar",
"tests": [
"PTO-AVS-SCALAR-ALU-CONTROL-ALIAS-EXEC-004",
"PTO-AVS-SCALAR-ALU-GPR-ALIAS-EXEC-001",
"PTO-AVS-SCALAR-ALU-MULTI-ALIAS-EXEC-003",
"PTO-AVS-SCALAR-ALU-PAIR-ALIAS-EXEC-005",
"PTO-AVS-SCALAR-ALU-QUEUE-ALIAS-EXEC-002",
"PTO-AVS-SCALAR-MODEL-ALU-SEMANTICS-STATIC-001",
"PTO-AVS-SCALAR-TESTSCALARALIASINGORDER-EXECUTION-001",
"PTO-AVS-SCALAR-TESTSCALARALUBOUNDARYMATRIX-BOUNDARY-001",
"PTO-AVS-SCALAR-TESTSCALARBITFIELDBOUNDARYCONTRACT-BOUNDARY-001",
"PTO-AVS-SCALAR-TESTSCALARDISPATCHEFFECTS-EXECUTION-001"
]
}Sources and release identity
Show commit, paths, hashes, version, and canonical owners
- Release
0.58.5· Release candidate- Commit
7dc8b7e5b121d2b2499a2273bebff29e2cd86812- Original ASL
- asl/scalar/model/alu/semantics.asl
- ASL SHA-256
3ea286b50965fd9a218d6a5ef9a1f8f230638d0163a734d536b3b6158039ca47- Generated documentation
- docs/scalar/model/alu/semantics.md · embedded in this page
- Documentation SHA-256
8cb1eabc757c3ff2d1572a665fcafb85e06dd08136f2156f04959cb9140c8a2f
Exact owners
- ASL PTO-SCALAR-MODEL-ALU-SEMANTICS
asl/scalar/model/alu/semantics.asl