+#define OR(a,b) ((long)(a) | (long)(b))
+
+long f1(long, long*, long*);
+long f2(long, long*, long*);
+long f3(long, long*, long*);
+long f4(long, long*, long*);
+long f5(long, long*, long*);
+long f6(long, long*, long*);
+long f7(long, long*, long*);
+long f8(long, long*, long*);
+long f9(long, long*, long*);
+
+long muh[] = {0x05f05f, 0x223344};
+long kuh[] = {0x00AACC, 0x563425};
+
+RET(f1(5, muh, kuh) == OR( 4, 5) &&
+ f2(5, muh, kuh) == OR( muh[0], 0x55555555) &&
+ f3(5, muh, kuh) == OR( 0x55555555, kuh[1]) &&
+ f4(5, muh, kuh) == OR(muh[1]-kuh[0], muh[0]-kuh[1]) &&
+ f5(5, muh, kuh) == OR( 0, 5) &&
+ f6(5, muh, kuh) == OR( 5, 0) &&
+ f7(5, muh, kuh) == OR( muh, kuh) &&
+ f8(5, muh, kuh) == OR( 5, 0x112233) &&
+ f9(5, muh, kuh) == OR( 0x11EEEEFF, 5)
+ );
+