@TODO: Look at using the BSF/BSR operands for inline ASM here.
| 1868 | |
| 1869 | // @TODO: Look at using the BSF/BSR operands for inline ASM here. |
| 1870 | void GetBitsFromMask(ILuint Mask, ILuint *ShiftLeft, ILuint *ShiftRight) |
| 1871 | { |
| 1872 | ILuint Temp, i; |
| 1873 | |
| 1874 | if (Mask == 0) { |
| 1875 | *ShiftLeft = *ShiftRight = 0; |
| 1876 | return; |
| 1877 | } |
| 1878 | |
| 1879 | Temp = Mask; |
| 1880 | for (i = 0; i < 32; i++, Temp >>= 1) { |
| 1881 | if (Temp & 1) |
| 1882 | break; |
| 1883 | } |
| 1884 | *ShiftRight = i; |
| 1885 | |
| 1886 | // Temp is preserved, so use it again: |
| 1887 | for (i = 0; i < 8; i++, Temp >>= 1) { |
| 1888 | if (!(Temp & 1)) |
| 1889 | break; |
| 1890 | } |
| 1891 | *ShiftLeft = 8 - i; |
| 1892 | |
| 1893 | return; |
| 1894 | } |
| 1895 | |
| 1896 | |
| 1897 | // |
no outgoing calls
no test coverage detected