more test added
[libfirm] / ir / be / test / asm_test.c
index cce9859..83de4fd 100644 (file)
@@ -1,5 +1,6 @@
 #include <stdio.h>
 
+#ifdef __i386__
 static inline unsigned char inb(const unsigned short port)
 {
     unsigned char val;
@@ -32,12 +33,35 @@ static inline int mov(int val)
        return res;
 }
 
+static inline unsigned short swap16(unsigned short x)
+{
+       __asm__("xchgb %b0, %h0 /* in: %1 out: %0 */" : "=q" (x) : "0" (x));
+       return x;
+}
+
+static inline unsigned int swap32(unsigned int x)
+{
+       __asm__("bswap %0 /* %1 */" : "=r" (x) : "0" (x));
+       return x;
+}
 
 int main()
 {
        //sincostest(0.5);
-       outb(123, 42);
-       outb(12345, 42);
+       /*outb(123, 42);
+       outb(12345, 42);*/
+
+       printf("Swap16: %d Swap32: %d\n", swap16(12), swap32(123551235));
 
-       return mov(0) + inb(12345) + inb(123);
+       return mov(0) /*+ inb(12345) + inb(123)*/;
 }
+
+#else
+
+int main()
+{
+       printf("Warning: asmtest only work on x86\n");
+       return 0;
+}
+
+#endif