~pali/+junk/llvm-toolchain-3.7

« back to all changes in this revision

Viewing changes to test/MC/AArch64/armv8.1a-atomic.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: not llvm-mc -triple aarch64-none-linux-gnu -mattr=+v8.1a -show-encoding < %s 2> %t | FileCheck %s
 
2
// RUN: FileCheck --check-prefix=CHECK-ERROR <%t %s
 
3
  .text
 
4
 
 
5
  //8 bits
 
6
  casb   w0, w1, [x2]
 
7
  casab  w0, w1, [x2]
 
8
  caslb  w0, w1, [x2]
 
9
  casalb   w0, w1, [x2]
 
10
 
 
11
//CHECK:  casb   w0, w1, [x2]        //      encoding: [0x41,0x7c,0xa0,0x08]
 
12
//CHECK:  casab  w0, w1, [x2]        //      encoding: [0x41,0x7c,0xe0,0x08]
 
13
//CHECK:  caslb   w0, w1, [x2]       //      encoding: [0x41,0xfc,0xa0,0x08]
 
14
//CHECK:  casalb   w0, w1, [x2]      //      encoding: [0x41,0xfc,0xe0,0x08]
 
15
 
 
16
  casb w0, w1, [w2]
 
17
  casalb x0, x1, [x2]
 
18
//CHECK-ERROR: error: invalid operand for instruction
 
19
//CHECK-ERROR:   casb w0, w1, [w2]
 
20
//CHECK-ERROR:                 ^
 
21
//CHECK-ERROR: error: invalid operand for instruction
 
22
//CHECK-ERROR:   casalb x0, x1, [x2]
 
23
//CHECK-ERROR:          ^
 
24
 
 
25
  //16 bits
 
26
  cash   w0, w1, [x2]
 
27
  casah  w0, w1, [x2]
 
28
  caslh  w0, w1, [x2]
 
29
  casalh   w0, w1, [x2]
 
30
 
 
31
//CHECK:  cash   w0, w1, [x2]        //      encoding: [0x41,0x7c,0xa0,0x48]
 
32
//CHECK:  casah  w0, w1, [x2]        //      encoding: [0x41,0x7c,0xe0,0x48]
 
33
//CHECK:  caslh   w0, w1, [x2]       //      encoding: [0x41,0xfc,0xa0,0x48]
 
34
//CHECK:  casalh   w0, w1, [x2]      //      encoding: [0x41,0xfc,0xe0,0x48]
 
35
 
 
36
  //32 bits
 
37
  cas   w0, w1, [x2]
 
38
  casa  w0, w1, [x2]
 
39
  casl  w0, w1, [x2]
 
40
  casal   w0, w1, [x2]
 
41
 
 
42
//CHECK:  cas   w0, w1, [x2]        //      encoding: [0x41,0x7c,0xa0,0x88]
 
43
//CHECK:  casa  w0, w1, [x2]        //      encoding: [0x41,0x7c,0xe0,0x88]
 
44
//CHECK:  casl   w0, w1, [x2]       //      encoding: [0x41,0xfc,0xa0,0x88]
 
45
//CHECK:  casal   w0, w1, [x2]      //      encoding: [0x41,0xfc,0xe0,0x88]
 
46
 
 
47
  cas   w0, w1, [w2]
 
48
  casl  w0, x1, [x2]
 
49
 
 
50
//CHECK-ERROR: error: invalid operand for instruction
 
51
//CHECK-ERROR:   cas   w0, w1, [w2]
 
52
//CHECK-ERROR:                  ^
 
53
//CHECK-ERROR: error: invalid operand for instruction
 
54
//CHECK-ERROR:   casl  w0, x1, [x2]
 
55
//CHECK-ERROR:             ^
 
56
 
 
57
  //64 bits
 
58
  cas   x0, x1, [x2]
 
59
  casa  x0, x1, [x2]
 
60
  casl   x0, x1, [x2]
 
61
  casal   x0, x1, [x2]
 
62
 
 
63
//CHECK:  cas   x0, x1, [x2]        //      encoding: [0x41,0x7c,0xa0,0xc8]
 
64
//CHECK:  casa  x0, x1, [x2]        //      encoding: [0x41,0x7c,0xe0,0xc8]
 
65
//CHECK:  casl   x0, x1, [x2]       //      encoding: [0x41,0xfc,0xa0,0xc8]
 
66
//CHECK:  casal   x0, x1, [x2]      //      encoding: [0x41,0xfc,0xe0,0xc8]
 
67
 
 
68
  casa   x0, x1, [w2]
 
69
  casal  x0, w1, [x2]
 
70
 
 
71
//CHECK-ERROR: error: invalid operand for instruction
 
72
//CHECK-ERROR:   casa   x0, x1, [w2]
 
73
//CHECK-ERROR:                   ^
 
74
//CHECK-ERROR: error: invalid operand for instruction
 
75
//CHECK-ERROR:   casal  x0, w1, [x2]
 
76
//CHECK-ERROR:              ^
 
77
 
 
78
  // LD<OP> intructions
 
79
  ldadda x0, x1, [x2]
 
80
  ldclrl x0, x1, [x2]
 
81
  ldeoral x0, x1, [x2]
 
82
  ldset x0, x1, [x2]
 
83
  ldsmaxa w0, w1, [x2]
 
84
  ldsminlb w0, w1, [x2]
 
85
  ldumaxalh w0, w1, [x2]
 
86
  ldumin w0, w1, [x2]
 
87
  ldsminb w2, w3, [x5]
 
88
//CHECK: ldadda     x0, x1, [x2]  // encoding: [0x41,0x00,0xa0,0xf8]
 
89
//CHECK: ldclrl     x0, x1, [x2]  // encoding: [0x41,0x10,0x60,0xf8]
 
90
//CHECK: ldeoral    x0, x1, [x2]  // encoding: [0x41,0x20,0xe0,0xf8]
 
91
//CHECK: ldset      x0, x1, [x2]  // encoding: [0x41,0x30,0x20,0xf8]
 
92
//CHECK: ldsmaxa    w0, w1, [x2]  // encoding: [0x41,0x40,0xa0,0xb8]
 
93
//CHECK: ldsminlb   w0, w1, [x2]  // encoding: [0x41,0x50,0x60,0x38]
 
94
//CHECK: ldumaxalh  w0, w1, [x2]  // encoding: [0x41,0x60,0xe0,0x78]
 
95
//CHECK: ldumin     w0, w1, [x2]  // encoding: [0x41,0x70,0x20,0xb8]
 
96
//CHECK: ldsminb    w2, w3, [x5]  // encoding: [0xa3,0x50,0x22,0x38]
 
97
 
 
98
  // ST<OP> intructions: aliases to LD<OP>
 
99
  stADDlb w0, [x2]
 
100
  stclrlh w0, [x2]
 
101
  steorl  w0, [x2]
 
102
  stsetl  x0, [x2]
 
103
  stsmaxb  w0, [x2]
 
104
  stsminh  w0, [x2]
 
105
  stumax   w0, [x2]
 
106
  stumin   x0, [x2]
 
107
  stsminl x29, [sp]
 
108
//CHECK: staddlb    w0, [x2]  // encoding: [0x5f,0x00,0x60,0x38]
 
109
//CHECK: stclrlh    w0, [x2]  // encoding: [0x5f,0x10,0x60,0x78]
 
110
//CHECK: steorl     w0, [x2]  // encoding: [0x5f,0x20,0x60,0xb8]
 
111
//CHECK: stsetl     x0, [x2]  // encoding: [0x5f,0x30,0x60,0xf8]
 
112
//CHECK: stsmaxb     w0, [x2]  // encoding: [0x5f,0x40,0x20,0x38]
 
113
//CHECK: stsminh     w0, [x2]  // encoding: [0x5f,0x50,0x20,0x78]
 
114
//CHECK: stumax      w0, [x2]  // encoding: [0x5f,0x60,0x20,0xb8]
 
115
//CHECK: stumin      x0, [x2]  // encoding: [0x5f,0x70,0x20,0xf8]
 
116
//CHECK: stsminl     x29, [sp] // encoding: [0xff,0x53,0x7d,0xf8]
 
117
 
 
118
 
 
119
  ldsmax x0, x1, [w2]
 
120
  ldeorl w0, w1, [w2]
 
121
//CHECK-ERROR: error: invalid operand for instruction
 
122
//CHECK-ERROR:   ldsmax x0, x1, [w2]
 
123
//CHECK-ERROR:                   ^
 
124
//CHECK-ERROR: error: invalid operand for instruction
 
125
//CHECK-ERROR:   ldeorl w0, w1, [w2]
 
126
//CHECK-ERROR:                   ^
 
127
 
 
128
  //SWP instruction
 
129
  swp   x0, x1, [x2]
 
130
  swpb  w0, w1, [x2]
 
131
  swplh w0, w1, [x2]
 
132
  swpal x0, x1, [sp]
 
133
//CHECK: swp   x0, x1, [x2]       // encoding: [0x41,0x80,0x20,0xf8]
 
134
//CHECK: swpb  w0, w1, [x2]       // encoding: [0x41,0x80,0x20,0x38]
 
135
//CHECK: swplh w0, w1, [x2]       // encoding: [0x41,0x80,0x60,0x78]
 
136
//CHECK: swpal x0, x1, [sp]       // encoding: [0xe1,0x83,0xe0,0xf8]
 
137
 
 
138
  swp   x0, x1, [w2]
 
139
  swp   x0, x1, [xzr]
 
140
//CHECK-ERROR: error: invalid operand for instruction
 
141
//CHECK-ERROR:   swp   x0, x1, [w2]
 
142
//CHECK-ERROR:                  ^
 
143
//CHECK-ERROR: error: invalid operand for instruction
 
144
//CHECK-ERROR:   swp   x0, x1, [xzr]
 
145
//CHECK-ERROR:                  ^
 
146
 
 
147
  //CASP instruction
 
148
  casp x0, x1, x2, x3, [x4]
 
149
  casp w0, w1, w2, w3, [x4]
 
150
//CHECK: casp x0, x1, x2, x3, [x4]      // encoding: [0x82,0x7c,0x20,0x48]
 
151
//CHECK: casp w0, w1, w2, w3, [x4]      // encoding: [0x82,0x7c,0x20,0x08]
 
152
 
 
153
  casp x1, x2, x4, x5, [x6]
 
154
  casp x0, x1, x3, x4, [x5]
 
155
  casp x0, x2, x4, x5, [x6]
 
156
  casp x0, x1, x2, x4, [x5]
 
157
  casp x0, w1, x2, x3, [x5]
 
158
  casp w0, x1, x2, x3, [x5]
 
159
  casp w0, x1, w2, w3, [x5]
 
160
  casp x0, x1, w2, w3, [x5]
 
161
//CHECK-ERROR: error: expected first even register of a consecutive same-size even/odd register pair
 
162
//CHECK-ERROR:  casp x1, x2, x4, x5, [x6]
 
163
//CHECK-ERROR:       ^
 
164
//CHECK-ERROR: error: expected first even register of a consecutive same-size even/odd register pair
 
165
//CHECK-ERROR:  casp x0, x1, x3, x4, [x5]
 
166
//CHECK-ERROR:               ^
 
167
//CHECK-ERROR: error:  expected second odd register of a consecutive same-size even/odd register pair
 
168
//CHECK-ERROR:  casp x0, x2, x4, x5, [x6]
 
169
//CHECK-ERROR:           ^
 
170
//CHECK-ERROR: error: expected second odd register of a consecutive same-size even/odd register pair
 
171
//CHECK-ERROR:  casp x0, x1, x2, x4, [x5]
 
172
//CHECK-ERROR:                   ^
 
173
//CHECK-ERROR: error: expected second odd register of a consecutive same-size even/odd register pair
 
174
//CHECK-ERROR:  casp x0, w1, x2, x3, [x5]
 
175
//CHECK-ERROR:           ^
 
176
//CHECK-ERROR: error: expected second odd register of a consecutive same-size even/odd register pair
 
177
//CHECK-ERROR:  casp w0, x1, x2, x3, [x5]
 
178
//CHECK-ERROR:           ^
 
179
//CHECK-ERROR: error: expected second odd register of a consecutive same-size even/odd register pair
 
180
//CHECK-ERROR:  casp w0, x1, w2, w3, [x5]
 
181
//CHECK-ERROR:           ^
 
182
//CHECK-ERROR: error: invalid operand for instruction
 
183
//CHECK-ERROR:  casp x0, x1, w2, w3, [x5]
 
184
//CHECK-ERROR:               ^