OpenCore  1.0.4
OpenCore Bootloader
Loading...
Searching...
No Matches
UserMath.c
Go to the documentation of this file.
1
6#include <Uefi.h>
7#include <Library/UefiLib.h>
8#include <Library/UefiApplicationEntryPoint.h>
9#include <Library/DebugLib.h>
10
11UINT64
12EFIAPI
14 IN UINT64 Dividend,
15 IN UINT32 Divisor
16 )
17{
18 ASSERT (Divisor != 0);
19
20 return Dividend / Divisor;
21}
22
23UINT64
24EFIAPI
26 IN UINT64 Dividend,
27 IN UINT32 Divisor,
28 OUT UINT32 *Remainder OPTIONAL
29 )
30{
31 ASSERT (Divisor != 0);
32
33 if (Remainder != NULL) {
34 *Remainder = (UINT32)(Dividend % Divisor);
35 }
36
37 return Dividend / Divisor;
38}
39
40INT64
41EFIAPI
43 IN INT64 Dividend,
44 IN INT64 Divisor,
45 OUT INT64 *Remainder OPTIONAL
46 )
47{
48 ASSERT (Divisor != 0);
49
50 if (Remainder != NULL) {
51 *Remainder = Dividend % Divisor;
52 }
53
54 return Dividend / Divisor;
55}
56
57UINT64
58EFIAPI
60 IN UINT64 Dividend,
61 IN UINT64 Divisor,
62 OUT UINT64 *Remainder OPTIONAL
63 )
64{
65 ASSERT (Divisor != 0);
66
67 if (Remainder != NULL) {
68 *Remainder = Dividend % Divisor;
69 }
70
71 return Dividend / Divisor;
72}
73
74UINT64
75EFIAPI
77 IN UINT64 Operand,
78 IN UINTN Count
79 )
80{
81 return Operand << Count;
82}
83
84UINT64
85EFIAPI
87 IN UINT64 Operand,
88 IN UINTN Count
89 )
90{
91 return Operand >> Count;
92}
93
94UINT64
95EFIAPI
97 IN UINT64 Multiplicand,
98 IN UINT32 Multiplier
99 )
100{
101 return Multiplicand * Multiplier;
102}
103
104INT64
105EFIAPI
107 IN INT64 Multiplicand,
108 IN INT64 Multiplier
109 )
110{
111 return Multiplicand * Multiplier;
112}
113
114UINT64
115EFIAPI
117 IN UINT64 Multiplicand,
118 IN UINT64 Multiplier
119 )
120{
121 return Multiplicand * Multiplier;
122}
123
124UINT64
126 UINT64 Operand
127 )
128{
129 #ifdef WIN32
130 return _byteswap_uint64 (Operand);
131 #else
132 return __builtin_bswap64 (Operand);
133 #endif
134}
UINT64 EFIAPI MultU64x64(IN UINT64 Multiplicand, IN UINT64 Multiplier)
Definition UserMath.c:116
INT64 EFIAPI DivS64x64Remainder(IN INT64 Dividend, IN INT64 Divisor, OUT INT64 *Remainder OPTIONAL)
Definition UserMath.c:42
UINT64 EFIAPI RShiftU64(IN UINT64 Operand, IN UINTN Count)
Definition UserMath.c:86
UINT64 EFIAPI MultU64x32(IN UINT64 Multiplicand, IN UINT32 Multiplier)
Definition UserMath.c:96
UINT64 EFIAPI DivU64x32Remainder(IN UINT64 Dividend, IN UINT32 Divisor, OUT UINT32 *Remainder OPTIONAL)
Definition UserMath.c:25
UINT64 EFIAPI DivU64x64Remainder(IN UINT64 Dividend, IN UINT64 Divisor, OUT UINT64 *Remainder OPTIONAL)
Definition UserMath.c:59
INT64 EFIAPI MultS64x64(IN INT64 Multiplicand, IN INT64 Multiplier)
Definition UserMath.c:106
UINT64 SwapBytes64(UINT64 Operand)
Definition UserMath.c:125
UINT64 EFIAPI LShiftU64(IN UINT64 Operand, IN UINTN Count)
Definition UserMath.c:76
#define ASSERT(x)
Definition coder.h:55
#define DivU64x32(x, y, z)