- 9E7DB7601C084048496D7D67FAD5B7EFDB69490BA98785A33F041CF6497EBD954AC8A539CF1C0F22CBB538BBAF8C544E6772205A541646AC22EB0DA31883643C
+ B37749E920BE9F2CA06679BA00C8D924C0E0D9F309921DDD36096A4770B6380DDD4DEB9A56A84F535A8D02DEB2E379C13C45B2CA40045E8BC4B230BD1C1F3EF5
ffa/libffa/w_mul.adb
(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;