1*1f5207b7SJohn Levon typedef unsigned int u32;
2*1f5207b7SJohn Levon 
ssub(int a)3*1f5207b7SJohn Levon int ssub(int a) { return a - a; }
usub(u32 a)4*1f5207b7SJohn Levon u32 usub(u32 a) { return a - a; }
5*1f5207b7SJohn Levon 
sdiv(int a)6*1f5207b7SJohn Levon int sdiv(int a) { return a / a; }
udiv(u32 a)7*1f5207b7SJohn Levon u32 udiv(u32 a) { return a / a; }
smod(int a)8*1f5207b7SJohn Levon int smod(int a) { return a % a; }
umod(u32 a)9*1f5207b7SJohn Levon u32 umod(u32 a) { return a % a; }
10*1f5207b7SJohn Levon 
seq(int a)11*1f5207b7SJohn Levon int seq(int a) { return a == a; }
sne(int a)12*1f5207b7SJohn Levon int sne(int a) { return a != a; }
slt(int a)13*1f5207b7SJohn Levon int slt(int a) { return a < a; }
sgt(int a)14*1f5207b7SJohn Levon int sgt(int a) { return a > a; }
sle(int a)15*1f5207b7SJohn Levon int sle(int a) { return a <= a; }
sge(int a)16*1f5207b7SJohn Levon int sge(int a) { return a >= a; }
17*1f5207b7SJohn Levon 
ueq(u32 a)18*1f5207b7SJohn Levon u32 ueq(u32 a) { return a == a; }
une(u32 a)19*1f5207b7SJohn Levon u32 une(u32 a) { return a != a; }
ult(u32 a)20*1f5207b7SJohn Levon u32 ult(u32 a) { return a < a; }
ugt(u32 a)21*1f5207b7SJohn Levon u32 ugt(u32 a) { return a > a; }
ule(u32 a)22*1f5207b7SJohn Levon u32 ule(u32 a) { return a <= a; }
uge(u32 a)23*1f5207b7SJohn Levon u32 uge(u32 a) { return a >= a; }
24*1f5207b7SJohn Levon 
xor(u32 a)25*1f5207b7SJohn Levon u32 xor(u32 a) { return a ^ a; }
26*1f5207b7SJohn Levon 
ior(u32 a)27*1f5207b7SJohn Levon u32 ior(u32 a) { return a | a; }
and(u32 a)28*1f5207b7SJohn Levon u32 and(u32 a) { return a & a; }
29*1f5207b7SJohn Levon 
30*1f5207b7SJohn Levon /*
31*1f5207b7SJohn Levon  * check-name: double-unop
32*1f5207b7SJohn Levon  * check-command: test-linearize -Wno-decl $file
33*1f5207b7SJohn Levon  * check-output-ignore
34*1f5207b7SJohn Levon  *
35*1f5207b7SJohn Levon  * check-output-excludes: sub\\.
36*1f5207b7SJohn Levon  * check-output-contains: divs\\.
37*1f5207b7SJohn Levon  * check-output-contains: divu\\.
38*1f5207b7SJohn Levon  * check-output-contains: mods\\.
39*1f5207b7SJohn Levon  * check-output-contains: modu\\.
40*1f5207b7SJohn Levon  * check-output-excludes: seteq\\.
41*1f5207b7SJohn Levon  * check-output-excludes: setne\\.
42*1f5207b7SJohn Levon  * check-output-excludes: set[gl]t\\.
43*1f5207b7SJohn Levon  * check-output-excludes: set[gl]e\\.
44*1f5207b7SJohn Levon  * check-output-excludes: set[ab]\\.
45*1f5207b7SJohn Levon  * check-output-excludes: set[ab]e\\.
46*1f5207b7SJohn Levon  * check-output-excludes: xor\\.
47*1f5207b7SJohn Levon  * check-output-excludes: or\\.
48*1f5207b7SJohn Levon  * check-output-excludes: and\\.
49*1f5207b7SJohn Levon  */
50