• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-objdump -d - | 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:      Disassembly of section imul:
8// CHECK-EMPTY:
9// CHECK-NEXT: <imul>:
10// CHECK-NEXT:   0: 66 69 1d 00 00 00 00 00 00        imulw $0, (%rip), %bx
11// CHECK-NEXT:   9: 69 1d 00 00 00 00 00 00 00 00     imull $0, (%rip), %ebx
12// CHECK-NEXT:  13: 48 69 1d 00 00 00 00 00 00 00 00  imulq $0, (%rip), %rbx
13        .section imul,"x"
14        imul $foo, bar(%rip),  %bx
15        imul $foo, bar(%rip),  %ebx
16        imul $foo, bar(%rip),  %rbx
17
18
19// CHECK:      <and>:
20// CHECK-NEXT:   0: 66 81 25 00 00 00 00 00 00        andw $0, (%rip)
21// CHECK-NEXT:   9: 81 25 00 00 00 00 00 00 00 00     andl $0, (%rip)
22// CHECK-NEXT:  13: 48 81 25 00 00 00 00 00 00 00 00  andq $0, (%rip)
23        .section and,"x"
24        andw $foo, bar(%rip)
25        andl $foo, bar(%rip)
26        andq $foo, bar(%rip)
27
28// CHECK:      <or>:
29// CHECK-NEXT:   0: 66 81 0d 00 00 00 00 00 00        orw $0, (%rip)
30// CHECK-NEXT:   9: 81 0d 00 00 00 00 00 00 00 00     orl $0, (%rip)
31// CHECK-NEXT:  13: 48 81 0d 00 00 00 00 00 00 00 00  orq $0, (%rip)
32        .section or,"x"
33        orw $foo, bar(%rip)
34        orl $foo, bar(%rip)
35        orq $foo, bar(%rip)
36
37// CHECK:      <xor>:
38// CHECK-NEXT:   0: 66 81 35 00 00 00 00 00 00        xorw $0, (%rip)
39// CHECK-NEXT:   9: 81 35 00 00 00 00 00 00 00 00     xorl $0, (%rip)
40// CHECK-NEXT:  13: 48 81 35 00 00 00 00 00 00 00 00  xorq $0, (%rip)
41        .section xor,"x"
42        xorw $foo, bar(%rip)
43        xorl $foo, bar(%rip)
44        xorq $foo, bar(%rip)
45
46// CHECK:      <add>:
47// CHECK-NEXT:   0: 66 81 05 00 00 00 00 00 00        addw $0, (%rip)
48// CHECK-NEXT:   9: 81 05 00 00 00 00 00 00 00 00     addl $0, (%rip)
49// CHECK-NEXT:  13: 48 81 05 00 00 00 00 00 00 00 00  addq $0, (%rip)
50        .section add,"x"
51        addw $foo, bar(%rip)
52        addl $foo, bar(%rip)
53        addq $foo, bar(%rip)
54
55// CHECK:      <sub>:
56// CHECK-NEXT:   0: 66 81 2d 00 00 00 00 00 00        subw $0, (%rip)
57// CHECK-NEXT:   9: 81 2d 00 00 00 00 00 00 00 00     subl $0, (%rip)
58// CHECK-NEXT:  13: 48 81 2d 00 00 00 00 00 00 00 00  subq $0, (%rip)
59        .section sub,"x"
60        subw $foo, bar(%rip)
61        subl $foo, bar(%rip)
62        subq $foo, bar(%rip)
63
64// CHECK:      <cmp>:
65// CHECK-NEXT:   0: 66 81 3d 00 00 00 00 00 00        cmpw $0, (%rip)
66// CHECK-NEXT:   9: 81 3d 00 00 00 00 00 00 00 00     cmpl $0, (%rip)
67// CHECK-NEXT:  13: 48 81 3d 00 00 00 00 00 00 00 00  cmpq $0, (%rip)
68        .section cmp,"x"
69        cmpw $foo, bar(%rip)
70        cmpl $foo, bar(%rip)
71        cmpq $foo, bar(%rip)
72