(27 . 7)(27 . 6)
2056 begin
2057 return X * Y;
2058 end Mul_HalfWord_Iron;
2059 pragma Inline_Always(Mul_HalfWord_Iron);
2060
2061
2062 -- Multiply half-words X and Y, producing a Word-sized product
(62 . 7)(61 . 6)
2064 XS := Shift_Left(XS, 1);
2065
2066 end Bit;
2067 pragma Inline_Always(Bit);
2068
2069 begin
2070
(77 . 7)(75 . 6)
2072 return XY;
2073
2074 end Mul_HalfWord_Soft;
2075 pragma Inline_Always(Mul_HalfWord_Soft);
2076
2077
2078 -- Get the bottom half of a Word
(85 . 7)(82 . 6)
2080 begin
2081 return W and (2**HalfBitness - 1);
2082 end BottomHW;
2083 pragma Inline_Always(BottomHW);
2084
2085
2086 -- Get the top half of a Word
(93 . 7)(89 . 6)
2088 begin
2089 return Shift_Right(W, HalfBitness);
2090 end TopHW;
2091 pragma Inline_Always(TopHW);
2092
2093
2094 -- Carry out X*Y mult, return lower word XY_LW and upper word XY_HW.
(138 . 6)(133 . 5)
2096 XY_HW := HH + TopHW(HL) + TopHW(LH) + CL;
2097
2098 end Mul_Word;
2099 pragma Inline_Always(Mul_Word);
2100
2101 end W_Mul;