[x86] Fix retq/retl handling in 64-bit mode
[oota-llvm.git] / test / MC / X86 / ret.s
1 // RUN: not llvm-mc -triple x86_64-unknown-unknown --show-encoding %s 2> %t.err | FileCheck --check-prefix=64 %s
2 // RUN: FileCheck --check-prefix=ERR64 < %t.err %s
3 // RUN: not llvm-mc -triple i386-unknown-unknown --show-encoding %s 2> %t.err | FileCheck --check-prefix=32 %s
4 // RUN: FileCheck --check-prefix=ERR32 < %t.err %s
5
6
7         ret
8 // 64: retq
9 // 64: encoding: [0xc3]
10 // 32: retl
11 // 32: encoding: [0xc3]
12         retw
13 // 64: retw
14 // 64: encoding: [0x66,0xc3]
15 // 32: retw
16 // 32: encoding: [0x66,0xc3]
17         retl
18 // ERR64: error: instruction requires: Not 64-bit mode
19 // 32: retl
20 // 32: encoding: [0xc3]
21         retq
22 // 64: retq
23 // 64: encoding: [0xc3]
24 // ERR32: error: instruction requires: 64-bit mode
25
26         ret $0
27 // 64: retq $0
28 // 64: encoding: [0xc2,0x00,0x00]
29 // 32: retl $0
30 // 32: encoding: [0xc2,0x00,0x00]
31         retw $0
32 // 64: retw $0
33 // 64: encoding: [0x66,0xc2,0x00,0x00]
34 // 32: retw $0
35 // 32: encoding: [0x66,0xc2,0x00,0x00]
36         retl $0
37 // ERR64: error: instruction requires: Not 64-bit mode
38 // 32: retl $0
39 // 32: encoding: [0xc2,0x00,0x00]
40         retq $0
41 // 64: retq $0
42 // 64: encoding: [0xc2,0x00,0x00]
43 // ERR32: error: instruction requires: 64-bit mode
44
45         lret
46 // 64: lretl
47 // 64: encoding: [0xcb]
48 // 32: lretl
49 // 32: encoding: [0xcb]
50         lretw
51 // 64: lretw
52 // 64: encoding: [0x66,0xcb]
53 // 32: lretw
54 // 32: encoding: [0x66,0xcb]
55         lretl
56 // 64: lretl
57 // 64: encoding: [0xcb]
58 // 32: lretl
59 // 32: encoding: [0xcb]
60         lretq
61 // 64: lretq
62 // 64: encoding: [0x48,0xcb]
63 // ERR32: error: instruction requires: 64-bit mode
64
65         lret $0
66 // 64: lretl $0
67 // 64: encoding: [0xca,0x00,0x00]
68 // 32: lretl $0
69 // 32: encoding: [0xca,0x00,0x00]
70         lretw $0
71 // 64: lretw $0
72 // 64: encoding: [0x66,0xca,0x00,0x00]
73 // 32: lretw $0
74 // 32: encoding: [0x66,0xca,0x00,0x00]
75         lretl $0
76 // 64: lretl $0
77 // 64: encoding: [0xca,0x00,0x00]
78 // 32: lretl $0
79 // 32: encoding: [0xca,0x00,0x00]
80         lretq $0
81 // 64: lretq $0
82 // 64: encoding: [0x48,0xca,0x00,0x00]
83 // ERR32: error: instruction requires: 64-bit mode
84
85