xref: /linux/lib/ucmpdi2.c (revision 588cb88c)
1*588cb88cSThomas Gleixner // SPDX-License-Identifier: GPL-2.0-or-later
2b35cd988SPalmer Dabbelt /*
3b35cd988SPalmer Dabbelt  */
4b35cd988SPalmer Dabbelt 
5b35cd988SPalmer Dabbelt #include <linux/module.h>
64db2b604SChristoph Hellwig #include <linux/libgcc.h>
7b35cd988SPalmer Dabbelt 
__ucmpdi2(unsigned long long a,unsigned long long b)8aad5a537SPalmer Dabbelt word_type notrace __ucmpdi2(unsigned long long a, unsigned long long b)
9b35cd988SPalmer Dabbelt {
10b35cd988SPalmer Dabbelt 	const DWunion au = {.ll = a};
11b35cd988SPalmer Dabbelt 	const DWunion bu = {.ll = b};
12b35cd988SPalmer Dabbelt 
13b35cd988SPalmer Dabbelt 	if ((unsigned int) au.s.high < (unsigned int) bu.s.high)
14b35cd988SPalmer Dabbelt 		return 0;
15b35cd988SPalmer Dabbelt 	else if ((unsigned int) au.s.high > (unsigned int) bu.s.high)
16b35cd988SPalmer Dabbelt 		return 2;
17b35cd988SPalmer Dabbelt 	if ((unsigned int) au.s.low < (unsigned int) bu.s.low)
18b35cd988SPalmer Dabbelt 		return 0;
19b35cd988SPalmer Dabbelt 	else if ((unsigned int) au.s.low > (unsigned int) bu.s.low)
20b35cd988SPalmer Dabbelt 		return 2;
21b35cd988SPalmer Dabbelt 	return 1;
22b35cd988SPalmer Dabbelt }
23b35cd988SPalmer Dabbelt EXPORT_SYMBOL(__ucmpdi2);
24