def in.int2

bend-osdev-acpi@0.1.1.0 · aml_interp.bend:969

import bend-osdev-acpi@0.1.1.0/aml_interp.bend as AmlInterp
import Base
import bend-osdev-word64@0.1.1.0/word64.bend as W
import bend-osdev-acpi@0.1.1.0/error.bend as E
import bend-osdev-acpi@0.1.1.0/aml_value.bend as V

969def in.int2(+op: Nat, +wide: Bool, +x: W.W64, +y: W.W64) -> Result<&2, &2, E.AcpiError, W.W64>:
970  match op:
971    case 114n:
972      Done{V.AmlInt.fit(wide, W.W64.add(x, y))}
973    case 116n:
974      Done{V.AmlInt.fit(wide, W.W64.sub(x, y))}
975    case 119n:
976      Done{V.AmlInt.fit(wide, W.W64.mul(x, y))}
977    case 121n:
978      Done{in.shift(True{}, wide, x, y)}
979    case 122n:
980      Done{in.shift(False{}, wide, x, y)}
981    case 123n:
982      Done{W.W64.and(x, y)}
983    case 124n:
984      Done{V.AmlInt.fit(wide, W.W64.not(W.W64.and(x, y)))}
985    case 125n:
986      Done{W.W64.or(x, y)}
987    case 126n:
988      Done{V.AmlInt.fit(wide, W.W64.not(W.W64.or(x, y)))}
989    case 127n:
990      Done{W.W64.xor(x, y)}
991    case 133n:
992      in.mod(W.W64.is_zero(y), x, y)
993    case _:
994      Fail{E.AcpiAmlBadOpcode{U32.from_nat(op)}}

Uses (17)

Used by (1)