acme
Foundational cross-platform layer of the ca2 framework
Toggle main menu visibility
Loading...
Searching...
No Matches
uint64_utilities.h
1
/*
2
* Header file: muldiv64.h
3
* Author: Richard van der Wal
4
* Contact:
[email protected]
5
*
6
* Description:
7
* Header file with prototype for 64 bit scaling functions
8
*
9
* $Log: $
10
*
11
*/
12
13
/******************************************************************************/
14
#pragma once
15
#ifndef __FULL_MULDIV64_
16
#define __FULL_MULDIV64_
17
18
19
/*
20
* muldiv64
21
* Multiplies an operant by a multiplier and divides the result by a divider
22
* Used for scaling 64 bit integer values
23
* Xscaled = Xstart * Multiplier / Divider
24
* Uses 128 bit intermediate result
25
*/
26
CLASS_DECL_ACME ::i64 muldiv64(::i64 operant, ::i64 multiplier, ::i64 divider);
27
28
29
/*
30
* mulshr64
31
* Multiplies an operant by a multiplier and right shifts the result rshift times
32
* Used for scaling 64 bit integer values
33
* Xscaled = (Xstart * Multiplier) SHR rshift
34
* Uses 128 bit intermediate result
35
*/
36
CLASS_DECL_ACME ::i64 mulshr64(::i64 operant, ::i64 multiplier, ::u8 rshift);
37
38
39
CLASS_DECL_ACME
void
mul64(::u64 v1, ::u64 v2, ::u64 & hi, ::u64 & lo);
40
41
42
CLASS_DECL_ACME
void
mul64(::i64 v1, ::i64 v2, ::i64 & hi, ::u64 & lo);
43
44
45
CLASS_DECL_ACME ::u64 div128_64(::u64 hi, ::u64 lo, ::u64 div, ::u64 & remainder);
46
47
48
CLASS_DECL_ACME ::i64 div128_64(::i64 hi, ::u64 lo, ::i64 div, ::u64 & remainder);
49
50
51
CLASS_DECL_ACME ::i64 div128_64(::i64 hi, ::u64 lo, ::i64 div, ::u64 & remainder);
52
53
54
#endif
//__FULL_MULDIV64_
55
56
platform
uint64_utilities.h
Generated by
1.17.0