(33 . 17)(33 . 23)
2106
2107 -- Multiply half-words X and Y, producing a Word-sized product (Iron)
2108 function Mul_HalfWord_Iron(X : in HalfWord; Y : in HalfWord) return Word;
2109 pragma Inline_Always(Mul_HalfWord_Iron);
2110
2111 -- Multiply half-words X and Y, producing a Word-sized product (Egyptian)
2112 function Mul_HalfWord_Soft(X : in HalfWord; Y : in HalfWord) return Word;
2113 pragma Inline_Always(Mul_HalfWord_Soft);
2114
2115 -- Get the bottom half of a Word
2116 function BottomHW(W : in Word) return HalfWord;
2117 pragma Inline_Always(BottomHW);
2118
2119 -- Get the top half of a Word
2120 function TopHW(W : in Word) return HalfWord;
2121 pragma Inline_Always(TopHW);
2122
2123 -- Carry out X*Y mult, return lower word XY_LW and upper word XY_HW (Iron)
2124 procedure Mul_Word(X : in Word; Y : in Word; XY_LW : out Word; XY_HW : out Word);
2125 procedure Mul_Word(X : in Word; Y : in Word;
2126 XY_LW : out Word; XY_HW : out Word);
2127 pragma Inline_Always(Mul_Word);
2128
2129 end W_Mul;