MC/X86: Add aliases for Jcc variants.
authorKevin Enderby <enderby@apple.com>
Thu, 27 May 2010 21:33:19 +0000 (21:33 +0000)
committerKevin Enderby <enderby@apple.com>
Thu, 27 May 2010 21:33:19 +0000 (21:33 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104890 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/X86/AsmParser/X86AsmParser.cpp
test/MC/MachO/jcc.s [new file with mode: 0644]

index 40a6a7b561696b92894451c9ff7773b6d67abbad..80f047f0fdcac1dbc3faf27fbb86b1adda1f4345 100644 (file)
@@ -617,6 +617,19 @@ ParseInstruction(const StringRef &Name, SMLoc NameLoc,
     .Case("setnz", "setne")
     .Case("jz", "je")
     .Case("jnz", "jne")
+    .Case("jc", "jb")
+    .Case("jecxz", "jcxz")
+    .Case("jna", "jbe")
+    .Case("jnae", "jb")
+    .Case("jnb", "jae")
+    .Case("jnbe", "ja")
+    .Case("jnc", "jae")
+    .Case("jng", "jle")
+    .Case("jnge", "jl")
+    .Case("jnl", "jge")
+    .Case("jnle", "jg")
+    .Case("jpe", "jp")
+    .Case("jpo", "jnp")
     .Case("cmovcl", "cmovbl")
     .Case("cmovcl", "cmovbl")
     .Case("cmovnal", "cmovbel")
diff --git a/test/MC/MachO/jcc.s b/test/MC/MachO/jcc.s
new file mode 100644 (file)
index 0000000..7640429
--- /dev/null
@@ -0,0 +1,106 @@
+// RUN: llvm-mc -triple i386-apple-darwin9 %s -filetype=obj -o - | macho-dump --dump-section-data | FileCheck %s
+
+   ja 1f
+1: nop
+   jae 1f
+1: nop
+   jb 1f
+1: nop
+   jbe 1f
+1: nop
+   jc 1f
+1: nop
+   jcxz 1f
+1: nop
+   jecxz 1f
+1: nop
+   je 1f
+1: nop
+   jg 1f
+1: nop
+   jge 1f
+1: nop
+   jl 1f
+1: nop
+   jle 1f
+1: nop
+   jna 1f
+1: nop
+   jnae 1f
+1: nop
+   jnb 1f
+1: nop
+   jnbe 1f
+1: nop
+   jnc 1f
+1: nop
+   jne 1f
+1: nop
+   jng 1f
+1: nop
+   jnge 1f
+1: nop
+   jnl 1f
+1: nop
+   jnle 1f
+1: nop
+   jno 1f
+1: nop
+   jnp 1f
+1: nop
+   jns 1f
+1: nop
+   jnz 1f
+1: nop
+   jo 1f
+1: nop
+   jp 1f
+1: nop
+   jpe 1f
+1: nop
+   jpo 1f
+1: nop
+   js 1f
+1: nop
+   jz 1f
+1: nop
+
+// CHECK: ('cputype', 7)
+// CHECK: ('cpusubtype', 3)
+// CHECK: ('filetype', 1)
+// CHECK: ('num_load_commands', 1)
+// CHECK: ('load_commands_size', 124)
+// CHECK: ('flag', 0)
+// CHECK: ('load_commands', [
+// CHECK:   # Load Command 0
+// CHECK:  (('command', 1)
+// CHECK:   ('size', 124)
+// CHECK:   ('segment_name', '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00')
+// CHECK:   ('vm_addr', 0)
+// CHECK:   ('vm_size', 96)
+// CHECK:   ('file_offset', 152)
+// CHECK:   ('file_size', 96)
+// CHECK:   ('maxprot', 7)
+// CHECK:   ('initprot', 7)
+// CHECK:   ('num_sections', 1)
+// CHECK:   ('flags', 0)
+// CHECK:   ('sections', [
+// CHECK:     # Section 0
+// CHECK:    (('section_name', '__text\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00')
+// CHECK:     ('segment_name', '__TEXT\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00')
+// CHECK:     ('address', 0)
+// CHECK:     ('size', 96)
+// CHECK:     ('offset', 152)
+// CHECK:     ('alignment', 0)
+// CHECK:     ('reloc_offset', 0)
+// CHECK:     ('num_reloc', 0)
+// CHECK:     ('flags', 0x80000400)
+// CHECK:     ('reserved1', 0)
+// CHECK:     ('reserved2', 0)
+// CHECK:    ),
+// CHECK:   ('_relocations', [
+// CHECK:   ])
+// CHECK:   ('_section_data', 'w\x00\x90s\x00\x90r\x00\x90v\x00\x90r\x00\x90\xe3\x00\x90\xe3\x00\x90t\x00\x90\x7f\x00\x90}\x00\x90|\x00\x90~\x00\x90v\x00\x90r\x00\x90s\x00\x90w\x00\x90s\x00\x90u\x00\x90~\x00\x90|\x00\x90}\x00\x90\x7f\x00\x90q\x00\x90{\x00\x90y\x00\x90u\x00\x90p\x00\x90z\x00\x90z\x00\x90{\x00\x90x\x00\x90t\x00\x90')
+// CHECK:   ])
+// CHECK:  ),
+// CHECK: ])