~pali/+junk/llvm-toolchain-3.7

« back to all changes in this revision

Viewing changes to test/MC/ELF/relax-arith2.s

  • Committer: Package Import Robot
  • Author(s): Sylvestre Ledru
  • Date: 2015-07-15 17:51:08 UTC
  • Revision ID: package-import@ubuntu.com-20150715175108-l8mynwovkx4zx697
Tags: upstream-3.7~+rc2
ImportĀ upstreamĀ versionĀ 3.7~+rc2

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-objdump -d - | FileCheck  %s
 
2
 
 
3
// Test that we avoid relaxing these instructions and instead generate versions
 
4
// that use 8-bit immediate values.
 
5
 
 
6
bar:
 
7
// CHECK:      Disassembly of section imul:
 
8
// CHECK-NEXT: imul:
 
9
// CHECK-NEXT:   0: 66 6b db 80                   imulw $-128, %bx, %bx
 
10
// CHECK-NEXT:   4: 66 6b 1c 25 00 00 00 00 7f    imulw $127, 0, %bx
 
11
// CHECK-NEXT:   d: 6b db 00                      imull $0, %ebx, %ebx
 
12
// CHECK-NEXT:  10: 6b 1c 25 00 00 00 00 01       imull $1, 0, %ebx
 
13
// CHECK-NEXT:  18: 48 6b db ff                   imulq $-1, %rbx, %rbx
 
14
// CHECK-NEXT:  1c: 48 6b 1c 25 00 00 00 00 2a    imulq $42, 0, %rbx
 
15
        .section imul,"x"
 
16
        imul $-128, %bx,  %bx
 
17
        imul $127, bar,  %bx
 
18
        imul $0, %ebx, %ebx
 
19
        imul $1, bar,  %ebx
 
20
        imul $-1, %rbx, %rbx
 
21
        imul $42, bar,  %rbx
 
22
 
 
23
 
 
24
// CHECK:      Disassembly of section and:
 
25
// CHECK-NEXT: and:
 
26
// CHECK-NEXT:   0: 66 83 e3 7f                   andw $127, %bx
 
27
// CHECK-NEXT:   4: 66 83 24 25 00 00 00 00 00    andw $0, 0
 
28
// CHECK-NEXT:   d: 83 e3 01                      andl $1, %ebx
 
29
// CHECK-NEXT:  10: 83 24 25 00 00 00 00 ff       andl $-1, 0
 
30
// CHECK-NEXT:  18: 48 83 e3 2a                   andq $42, %rbx
 
31
// CHECK-NEXT:  1c: 48 83 24 25 00 00 00 00 80    andq $-128, 0
 
32
        .section and,"x"
 
33
        and  $127, %bx
 
34
        andw $0, bar
 
35
        and  $1, %ebx
 
36
        andl $-1, bar
 
37
        and  $42, %rbx
 
38
        andq $-128, bar
 
39
 
 
40
// CHECK:      Disassembly of section or:
 
41
// CHECK-NEXT: or:
 
42
// CHECK-NEXT:   0: 66 83 cb 00                   orw $0, %bx
 
43
// CHECK-NEXT:   4: 66 83 0c 25 00 00 00 00 01    orw $1, 0
 
44
// CHECK-NEXT:   d: 83 cb ff                      orl $-1, %ebx
 
45
// CHECK-NEXT:  10: 83 0c 25 00 00 00 00 2a       orl $42, 0
 
46
// CHECK-NEXT:  18: 48 83 cb 80                   orq $-128, %rbx
 
47
// CHECK-NEXT:  1c: 48 83 0c 25 00 00 00 00 7f    orq $127, 0
 
48
        .section or,"x"
 
49
        or  $0, %bx
 
50
        orw $1, bar
 
51
        or  $-1, %ebx
 
52
        orl $42, bar
 
53
        or  $-128, %rbx
 
54
        orq $127, bar
 
55
 
 
56
// CHECK:      Disassembly of section xor:
 
57
// CHECK-NEXT: xor:
 
58
// CHECK-NEXT:   0: 66 83 f3 01                   xorw $1, %bx
 
59
// CHECK-NEXT:   4: 66 83 34 25 00 00 00 00 ff    xorw $-1, 0
 
60
// CHECK-NEXT:   d: 83 f3 2a                      xorl $42, %ebx
 
61
// CHECK-NEXT:  10: 83 34 25 00 00 00 00 80       xorl $-128, 0
 
62
// CHECK-NEXT:  18: 48 83 f3 7f                   xorq $127, %rbx
 
63
// CHECK-NEXT:  1c: 48 83 34 25 00 00 00 00 00    xorq $0, 0
 
64
        .section xor,"x"
 
65
        xor  $1, %bx
 
66
        xorw $-1, bar
 
67
        xor  $42, %ebx
 
68
        xorl $-128, bar
 
69
        xor  $127, %rbx
 
70
        xorq $0, bar
 
71
 
 
72
// CHECK:      Disassembly of section add:
 
73
// CHECK-NEXT: add:
 
74
// CHECK-NEXT:   0: 66 83 c3 ff                   addw $-1, %bx
 
75
// CHECK-NEXT:   4: 66 83 04 25 00 00 00 00 2a    addw $42, 0
 
76
// CHECK-NEXT:   d: 83 c3 80                      addl $-128, %ebx
 
77
// CHECK-NEXT:  10: 83 04 25 00 00 00 00 7f       addl $127, 0
 
78
// CHECK-NEXT:  18: 48 83 c3 00                   addq $0, %rbx
 
79
// CHECK-NEXT:  1c: 48 83 04 25 00 00 00 00 01    addq $1, 0
 
80
        .section add,"x"
 
81
        add  $-1, %bx
 
82
        addw $42, bar
 
83
        add  $-128, %ebx
 
84
        addl $127, bar
 
85
        add  $0, %rbx
 
86
        addq $1, bar
 
87
 
 
88
// CHECK:      Disassembly of section sub:
 
89
// CHECK-NEXT: sub:
 
90
// CHECK-NEXT:   0: 66 83 eb 2a                   subw $42, %bx
 
91
// CHECK-NEXT:   4: 66 83 2c 25 00 00 00 00 80    subw $-128, 0
 
92
// CHECK-NEXT:   d: 83 eb 7f                      subl $127, %ebx
 
93
// CHECK-NEXT:  10: 83 2c 25 00 00 00 00 00       subl $0, 0
 
94
// CHECK-NEXT:  18: 48 83 eb 01                   subq $1, %rbx
 
95
// CHECK-NEXT:  1c: 48 83 2c 25 00 00 00 00 ff    subq $-1, 0
 
96
        .section sub,"x"
 
97
        sub  $42, %bx
 
98
        subw $-128, bar
 
99
        sub  $127, %ebx
 
100
        subl $0, bar
 
101
        sub  $1, %rbx
 
102
        subq $-1, bar
 
103
 
 
104
// CHECK:      Disassembly of section cmp:
 
105
// CHECK-NEXT: cmp:
 
106
// CHECK-NEXT:   0: 66 83 fb 80                   cmpw $-128, %bx
 
107
// CHECK-NEXT:   4: 66 83 3c 25 00 00 00 00 7f    cmpw $127, 0
 
108
// CHECK-NEXT:   d: 83 fb 00                      cmpl $0, %ebx
 
109
// CHECK-NEXT:  10: 83 3c 25 00 00 00 00 01       cmpl $1, 0
 
110
// CHECK-NEXT:  18: 48 83 fb ff                   cmpq $-1, %rbx
 
111
// CHECK-NEXT:  1c: 48 83 3c 25 00 00 00 00 2a    cmpq $42, 0
 
112
        .section cmp,"x"
 
113
        cmp  $-128, %bx
 
114
        cmpw $127, bar
 
115
        cmp  $0, %ebx
 
116
        cmpl $1, bar
 
117
        cmp  $-1, %rbx
 
118
        cmpq $42, bar
 
119
 
 
120
// CHECK:      Disassembly of section push:
 
121
// CHECK-NEXT: push:
 
122
// CHECK-NEXT:   0: 66 6a 80                      pushw $-128
 
123
// CHECK-NEXT:   3: 66 6a 7f                      pushw $127
 
124
// CHECK-NEXT:   6: 6a 80                         pushq $-128
 
125
// CHECK-NEXT:   8: 6a 7f                         pushq $127
 
126
        .section push,"x"
 
127
        pushw $-128
 
128
        pushw $127
 
129
        push  $-128
 
130
        push  $127