[X86][inline asm] support even directive
[oota-llvm.git] / test / MC / AsmParser / exprs.s
index 14bafd5e28a831bf47d4c3da66c40274b877a279..1c3e284bcf7eed93acc67837ed36c460d9d673b0 100644 (file)
@@ -1,47 +1,54 @@
-// FIXME: For now this test just checks that llvm-mc works. Once we have .macro,
-// .if, and .abort we can write a better test (without resorting to miles of
-// greps).
-        
-// RUN: llvm-mc %s > %t
+// RUN: llvm-mc -triple i386-apple-darwin %s
+
+.macro check_expr
+  .if ($0) != ($1)
+        .abort Unexpected $0 != $1.
+  .endif
+.endmacro
 
         .text
 g:
 h:
 j:
-k:      
+k:
         .data
-        .byte !1 + 2
-        .byte !0
-        .byte ~0
-        .byte -1
-        .byte +1
-        .byte 1 + 2
-        .byte 1 & 3
-        .byte 4 / 2
-        .byte 4 / -2
-        .byte 1 == 1
-        .byte 1 == 0
-        .byte 1 > 0
-        .byte 1 >= 1
-        .byte 1 < 2
-        .byte 1 <= 1
-        .byte 4 % 3
-        .byte 2 * 2
-        .byte 2 != 2
-        .byte 2 <> 2
-        .byte 1 | 2
-        .byte 1 << 1
-        .byte 2 >> 1
-        .byte ~0 >> 1
-        .byte 3 - 2
-        .byte 1 ^ 3
-        .byte 1 && 2
-        .byte 3 && 0
-        .byte 1 || 2
-        .byte 0 || 0
+        check_expr !1 + 2, 2
+        check_expr !0, 1
+        check_expr ~0, -1
+        check_expr -1, ~0
+        check_expr +1, 1
+        check_expr 1 + 2, 3
+        check_expr 1 & 3, 1
+        check_expr 4 / 2, 2
+        check_expr 4 / -2, -2
+        check_expr 1 == 1, 1
+        check_expr 1 == 0, 0
+        check_expr 1 > 0, 1
+        check_expr 1 >= 1, 1
+        check_expr 1 < 2, 1
+        check_expr 1 <= 1, 1
+        check_expr 4 % 3, 1
+        check_expr 2 * 2, 4
+        check_expr 2 != 2, 0
+        check_expr 2 <> 2, 0
+        check_expr 1 | 2, 3
+        check_expr 1 << 1, 2
+        check_expr 2 >> 1, 1
+        check_expr (~0 >> 62), 3
+        check_expr 3 - 2, 1
+        check_expr 1 ^ 3, 2
+        check_expr 1 && 2, 1
+        check_expr 3 && 0, 0
+        check_expr 0 && 1, 0
+        check_expr 1 || 2, 1
+        check_expr 0 || 1, 1
+        check_expr 0 || 0, 0
+        check_expr 1 + 2 < 3 + 4, 1
+        check_expr 1 << 8 - 1, 128
+        check_expr 3 * 9 - 2 * 9 + 1, 10
 
         .set c, 10
-        .byte c + 1
+        check_expr c + 1, 11
 
         d = e + 10
         .long d
@@ -51,5 +58,22 @@ k:
 
         i = (j + 10) - (k + 2)
         .long i
-        
-        
\ No newline at end of file
+
+        l = m - n + 4
+
+        .text
+m:
+n:
+        nop
+
+
+        movw   $8, (42)+66(%eax)
+
+// "." support:
+_f0:
+L0:
+        jmp L1
+        .long . - L0
+L1:
+        jmp A
+        .long . - L1