]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - test/MC/Disassembler/X86/prefixes.txt
Vendor import of llvm release_34 branch r197841 (effectively, 3.4 RC3):
[FreeBSD/FreeBSD.git] / test / MC / Disassembler / X86 / prefixes.txt
1 # RUN: llvm-mc --disassemble %s -triple=x86_64 | FileCheck %s
2
3 # CHECK: lock
4 # CHECK-NEXT:   orl     $16, %fs:776
5 0xf0 0x64 0x83 0x0c 0x25 0x08 0x03 0x00 0x00 0x10
6
7 # CHECK: movq   %fs:768, %rdi
8 0x64 0x48 0x8b 0x3c 0x25 0x00 0x03 0x00 0x00
9
10 # CHECK: rep
11 # CHECK-NEXT:           stosq
12 0xf3 0x48 0xab
13
14 # CHECK: rep
15 # CHECK-NEXT:           stosl
16 0xf3 0x67 0x48 0xab
17
18 # CHECK: movl 32(%rbp), %eax
19 0x8b 0x45 0x20
20
21 # CHECK: movl %es:32(%rbp), %eax
22 0x26 0x8b 0x45 0x20
23
24 # CHECK: movl %es:32(%rbp), %eax
25 0x2e 0x26 0x8b 0x45 0x20
26
27 # Test that multiple prefixes stack.
28 #    (todo- the correct disassembly is actually more like "es movl %cs:32(%rbp), %eax"
29 #    but we don't support that)
30 # CHECK: movl %cs:32(%rbp), %eax
31 0x26 0x2e 0x8b 0x45 0x20
32
33 # Test that 0xf3 as part of the opcode works.
34 # CHECK: cvtdq2pd       (%rax), %xmm0
35 0xf3 0x0f 0xe6 0x00
36
37 # CHECK: pause
38 0xf3 0x90
39
40 # CHECK: nop
41 0x90
42
43 # CHECK:                lock
44 # CHECK-NEXT:   nop
45 0xf0 0x90
46
47 # Test that multiple redundant prefixes work (redundant, but valid x86).
48 # CHECK: rep
49 # CHECK-NEXT: rep
50 # CHECK-NEXT: stosq
51 0xf3 0xf3 0x48 0xab
52
53 # Test that a prefix on it's own works. It's debatable as to if this is 
54 # something that is considered valid, but however as LLVM's own disassembler
55 # has decided to disassemble prefixes as being separate opcodes, it therefore 
56 # should be capable of re-consuming it's own output.
57 # CHECK: rep
58 0xf3
59 # ***IMPORTANT ^-- this must be at the end of the file to be a valid test ***