Skip to main content

PTO-SCALAR-MODEL-ALU-SEMANTICS

PTO-SCALAR-MODEL-ALU-SEMANTICS

ASL 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
    1. surfaceSCALAR
    2. ownerPTO-SCALAR-MODEL-ALU-SEMANTICS
    3. categoryEXECUTION
    4. 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
    Open exact source ↗ for PTO-AVS-SCALAR-ALU-CONTROL-ALIAS-EXEC-004
  • scalar ALU GPR aliases snapshot sources before destination writes
    1. surfaceSCALAR
    2. ownerPTO-SCALAR-MODEL-ALU-SEMANTICS
    3. categoryEXECUTION
    4. 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
    Open exact source ↗ for PTO-AVS-SCALAR-ALU-GPR-ALIAS-EXEC-001
  • ternary, bitfield, and select operations snapshot overlapping operands
    1. surfaceSCALAR
    2. ownerPTO-SCALAR-MODEL-ALU-SEMANTICS
    3. categoryEXECUTION
    4. 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
    Open exact source ↗ for PTO-AVS-SCALAR-ALU-MULTI-ALIAS-EXEC-003
  • pair-result operations snapshot sources before ordered destinations
    1. surfaceSCALAR
    2. ownerPTO-SCALAR-MODEL-ALU-SEMANTICS
    3. categoryEXECUTION
    4. 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
    Open exact source ↗ for PTO-AVS-SCALAR-ALU-PAIR-ALIAS-EXEC-005
  • scalar ALU queue operands snapshot every T and U source position
    1. surfaceSCALAR
    2. ownerPTO-SCALAR-MODEL-ALU-SEMANTICS
    3. categoryEXECUTION
    4. 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
    Open exact source ↗ for PTO-AVS-SCALAR-ALU-QUEUE-ALIAS-EXEC-002
  • PTO-SCALAR-MODEL-ALU-SEMANTICS compiles as an independent normative unit
    1. surfaceSCALAR
    2. ownerPTO-SCALAR-MODEL-ALU-SEMANTICS
    3. categorySTATIC-INVARIANT
    4. 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
    Open exact source ↗ for PTO-AVS-SCALAR-MODEL-ALU-SEMANTICS-STATIC-001
  • Covers Scalar Aliasing Order.
    1. surfaceSCALAR
    2. ownerPTO-SCALAR-MODEL-ALU-SEMANTICS
    3. categoryEXECUTION
    4. 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
    Open exact source ↗ for PTO-AVS-SCALAR-TESTSCALARALIASINGORDER-EXECUTION-001
  • Covers Scalar ALU Boundary Matrix.
    1. surfaceSCALAR
    2. ownerPTO-SCALAR-MODEL-ALU-SEMANTICS
    3. categoryBOUNDARY
    4. 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
    Open exact source ↗ for PTO-AVS-SCALAR-TESTSCALARALUBOUNDARYMATRIX-BOUNDARY-001
  • Covers Scalar Bitfield Boundary Contract.
    1. surfaceSCALAR
    2. ownerPTO-SCALAR-MODEL-ALU-SEMANTICS
    3. categoryBOUNDARY
    4. 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
    Open exact source ↗ for PTO-AVS-SCALAR-TESTSCALARBITFIELDBOUNDARYCONTRACT-BOUNDARY-001
  • Covers Scalar Dispatch Effects.
    1. surfaceSCALAR
    2. ownerPTO-SCALAR-MODEL-ALU-SEMANTICS
    3. categoryEXECUTION
    4. 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
    Open exact source ↗ for PTO-AVS-SCALAR-TESTSCALARDISPATCHEFFECTS-EXECUTION-001
Commit-scoped evidence5
  • spec/evidence/release-traceability-readiness.json · closedPTO-EVIDENCE-RELEASE-TRACEABILITY
    Sources 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
    Open exact source ↗ for PTO-EVIDENCE-RELEASE-TRACEABILITY
  • spec/evidence/instruction-contract-closure.json · closedPTO-EVIDENCE-INSTRUCTION-CONTRACT-CLOSURE
    Sources 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
    Open exact source ↗ for PTO-EVIDENCE-INSTRUCTION-CONTRACT-CLOSURE
  • spec/evidence/architecture-readiness.json · openPTO-EVIDENCE-ARCHITECTURE-READINESS
    Sources and references
    Complete stable ID
    PTO-EVIDENCE-ARCHITECTURE-READINESS
    Path
    spec/evidence/architecture-readiness.json
    Kind / role
    architecture maturity and blockers
    SHA-256
    4b0b85199101251bea744e0f3591cc31906909dc80d5ab651c417a936036a004
    Open exact source ↗ for PTO-EVIDENCE-ARCHITECTURE-READINESS
  • spec/evidence/release-gate-readiness.json · ready-for-exact-head-verificationPTO-EVIDENCE-RELEASE-GATE-READINESS
    Sources 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
    Open exact source ↗ for PTO-EVIDENCE-RELEASE-GATE-READINESS
  • spec/release-manifest.json · draftPTO-EVIDENCE-RELEASE-MANIFEST
    Sources and references
    Complete stable ID
    PTO-EVIDENCE-RELEASE-MANIFEST
    Path
    spec/release-manifest.json
    Kind / role
    release content and encoding fingerprints
    SHA-256
    1a64c109ed7a90351c41e2a418b3c0ebaf8ad975838986d2101385186b85c0d8
    Open exact source ↗ for PTO-EVIDENCE-RELEASE-MANIFEST

Unit metadata

Open 4 generated metadata fields
id
PTO-SCALAR-MODEL-ALU-SEMANTICS
surface
scalar
classification
[
  "model",
  "alu",
  "semantics"
]
depends_on
[
  "PTO-SCALAR-MODEL-TYPES-OPERANDS"
]
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
ASL SHA-256
3ea286b50965fd9a218d6a5ef9a1f8f230638d0163a734d536b3b6158039ca47
Generated documentation
docs/scalar/model/alu/semantics.md · embedded in this page
Documentation SHA-256
8cb1eabc757c3ff2d1572a665fcafb85e06dd08136f2156f04959cb9140c8a2f

Exact owners