1// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj -s -sd | FileCheck  %s
2
3// Test that we correctly relax these instructions into versions that use
4// 16 or 32 bit immediate values.
5
6bar:
7// CHECK:      Name: imul
8// CHECK:      SectionData (
9// CHECK-NEXT:   0000: 6669DB00 0066691C 25000000 00000069
10// CHECK-NEXT:   0010: DB000000 00691C25 00000000 00000000
11// CHECK-NEXT:   0020: 4869DB00 00000048 691C2500 00000000
12// CHECK-NEXT:   0030: 000000
13// CHECK-NEXT: )
14        .section imul
15        imul $foo, %bx,  %bx
16        imul $foo, bar,  %bx
17        imul $foo, %ebx, %ebx
18        imul $foo, bar,  %ebx
19        imul $foo, %rbx, %rbx
20        imul $foo, bar,  %rbx
21
22
23// CHECK:      Name: and
24// CHECK:      SectionData (
25// CHECK-NEXT:   0000: 6681E300 00668124 25000000 00000081
26// CHECK-NEXT:   0010: E3000000 00812425 00000000 00000000
27// CHECK-NEXT:   0020: 4881E300 00000048 81242500 00000000
28// CHECK-NEXT:   0030: 000000
29// CHECK-NEXT: )
30        .section and
31        and  $foo, %bx
32        andw $foo, bar
33        and  $foo, %ebx
34        andl $foo, bar
35        and  $foo, %rbx
36        andq $foo, bar
37
38// CHECK:      Name: or
39// CHECK:      SectionData (
40// CHECK-NEXT:   0000: 6681CB00 0066810C 25000000 00000081
41// CHECK-NEXT:   0010: CB000000 00810C25 00000000 00000000
42// CHECK-NEXT:   0020: 4881CB00 00000048 810C2500 00000000
43// CHECK-NEXT:   0030: 000000
44// CHECK-NEXT: )
45        .section or
46        or  $foo, %bx
47        orw $foo, bar
48        or  $foo, %ebx
49        orl $foo, bar
50        or  $foo, %rbx
51        orq $foo, bar
52
53// CHECK:      Name: xor
54// CHECK:      SectionData (
55// CHECK-NEXT:   0000: 6681F300 00668134 25000000 00000081
56// CHECK-NEXT:   0010: F3000000 00813425 00000000 00000000
57// CHECK-NEXT:   0020: 4881F300 00000048 81342500 00000000
58// CHECK-NEXT:   0030: 000000
59// CHECK-NEXT: )
60        .section xor
61        xor  $foo, %bx
62        xorw $foo, bar
63        xor  $foo, %ebx
64        xorl $foo, bar
65        xor  $foo, %rbx
66        xorq $foo, bar
67
68// CHECK:      Name: add
69// CHECK:      SectionData (
70// CHECK-NEXT:   0000: 6681C300 00668104 25000000 00000081
71// CHECK-NEXT:   0010: C3000000 00810425 00000000 00000000
72// CHECK-NEXT:   0020: 4881C300 00000048 81042500 00000000
73// CHECK-NEXT:   0030: 000000
74// CHECK-NEXT: )
75        .section add
76        add  $foo, %bx
77        addw $foo, bar
78        add  $foo, %ebx
79        addl $foo, bar
80        add  $foo, %rbx
81        addq $foo, bar
82
83// CHECK:      Name: sub
84// CHECK:      SectionData (
85// CHECK-NEXT:   000: 6681EB00 0066812C 25000000 00000081
86// CHECK-NEXT:   010: EB000000 00812C25 00000000 00000000
87// CHECK-NEXT:   020: 4881EB00 00000048 812C2500 00000000
88// CHECK-NEXT:   030: 000000
89// CHECK-NEXT: )
90        .section sub
91        sub  $foo, %bx
92        subw $foo, bar
93        sub  $foo, %ebx
94        subl $foo, bar
95        sub  $foo, %rbx
96        subq $foo, bar
97
98// CHECK:      Name: cmp
99// CHECK:      SectionData (
100// CHECK-NEXT:   0000: 6681FB00 0066813C 25000000 00000081
101// CHECK-NEXT:   0010: FB000000 00813C25 00000000 00000000
102// CHECK-NEXT:   0020: 4881FB00 00000048 813C2500 00000000
103// CHECK-NEXT:   0030: 000000
104// CHECK-NEXT: )
105        .section cmp
106        cmp  $foo, %bx
107        cmpw $foo, bar
108        cmp  $foo, %ebx
109        cmpl $foo, bar
110        cmp  $foo, %rbx
111        cmpq $foo, bar
112