| 
									
										
										
										
											2019-03-20 22:38:25 -04:00
										 |  |  | // Copyright 2019 yuzu Emulator Project
 | 
					
						
							|  |  |  | // Licensed under GPLv2 or any later version
 | 
					
						
							|  |  |  | // Refer to the license.txt file included.
 | 
					
						
							| 
									
										
										
										
											2019-02-16 16:52:24 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-03-20 22:39:00 -04:00
										 |  |  | #pragma once
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-02-15 20:04:11 -04:00
										 |  |  | #include <utility>
 | 
					
						
							| 
									
										
										
										
											2019-02-15 19:26:41 -04:00
										 |  |  | #include "common/common_types.h"
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | namespace Common { | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-02-10 11:20:40 -04:00
										 |  |  | // This function multiplies 2 u64 values and divides it by a u64 value.
 | 
					
						
							| 
									
										
										
										
											2020-08-14 09:38:45 -04:00
										 |  |  | [[nodiscard]] u64 MultiplyAndDivide64(u64 a, u64 b, u64 d); | 
					
						
							| 
									
										
										
										
											2020-02-10 11:20:40 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-02-16 16:52:24 -04:00
										 |  |  | // This function multiplies 2 u64 values and produces a u128 value;
 | 
					
						
							| 
									
										
										
										
											2020-08-14 09:38:45 -04:00
										 |  |  | [[nodiscard]] u128 Multiply64Into128(u64 a, u64 b); | 
					
						
							| 
									
										
										
										
											2019-02-15 19:26:41 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-02-16 16:52:24 -04:00
										 |  |  | // This function divides a u128 by a u32 value and produces two u64 values:
 | 
					
						
							|  |  |  | // the result of division and the remainder
 | 
					
						
							| 
									
										
										
										
											2020-08-14 09:38:45 -04:00
										 |  |  | [[nodiscard]] std::pair<u64, u64> Divide128On32(u128 dividend, u32 divisor); | 
					
						
							| 
									
										
										
										
											2019-02-15 19:26:41 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | } // namespace Common
 |