xref: /linux/arch/parisc/lib/ucmpdi2.c (revision a1c613ae4c322ddd58d5a8539dbfba2a0380a8c0)
1b2441318SGreg Kroah-Hartman // SPDX-License-Identifier: GPL-2.0
2ca0ad83dSJohn David Anglin #include <linux/module.h>
3*438e9230SHelge Deller #include <linux/libgcc.h>
4ca0ad83dSJohn David Anglin 
5ca0ad83dSJohn David Anglin union ull_union {
6ca0ad83dSJohn David Anglin 	unsigned long long ull;
7ca0ad83dSJohn David Anglin 	struct {
8ca0ad83dSJohn David Anglin 		unsigned int high;
9ca0ad83dSJohn David Anglin 		unsigned int low;
10ca0ad83dSJohn David Anglin 	} ui;
11ca0ad83dSJohn David Anglin };
12ca0ad83dSJohn David Anglin 
__ucmpdi2(unsigned long long a,unsigned long long b)13*438e9230SHelge Deller word_type __ucmpdi2(unsigned long long a, unsigned long long b)
14ca0ad83dSJohn David Anglin {
15ca0ad83dSJohn David Anglin 	union ull_union au = {.ull = a};
16ca0ad83dSJohn David Anglin 	union ull_union bu = {.ull = b};
17ca0ad83dSJohn David Anglin 
18ca0ad83dSJohn David Anglin 	if (au.ui.high < bu.ui.high)
19ca0ad83dSJohn David Anglin 		return 0;
20ca0ad83dSJohn David Anglin 	else if (au.ui.high > bu.ui.high)
21ca0ad83dSJohn David Anglin 		return 2;
22ca0ad83dSJohn David Anglin 	if (au.ui.low < bu.ui.low)
23ca0ad83dSJohn David Anglin 		return 0;
24ca0ad83dSJohn David Anglin 	else if (au.ui.low > bu.ui.low)
25ca0ad83dSJohn David Anglin 		return 2;
26ca0ad83dSJohn David Anglin 	return 1;
27ca0ad83dSJohn David Anglin }
28