1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
| # RUN: llvm-mc -triple=hexagon -disassemble < %s | FileCheck %s
# Hexagon Programmer's Reference Manual 11.7.2 NV/ST
# Store new-value byte
0x1f 0x40 0x7f 0x70 0x82 0xf5 0xb1 0x3b
# CHECK: r31 = r31
# CHECK-NEXT: memb(r17+r21<<#3) = r31.new
0x1f 0x40 0x7f 0x70 0x11 0xc2 0xa0 0x48
# CHECK: r31 = r31
# CHECK-NEXT: memb(gp+#17) = r31.new
0x1f 0x40 0x7f 0x70 0x15 0xc2 0xb1 0xa1
# CHECK: r31 = r31
# CHECK-NEXT: memb(r17+#21) = r31.new
0x1f 0x40 0x7f 0x70 0x02 0xe2 0xb1 0xa9
# CHECK: r31 = r31
# CHECK-NEXT: memb(r17++I:circ(m1)) = r31.new
0x1f 0x40 0x7f 0x70 0x28 0xe2 0xb1 0xa9
# CHECK: r31 = r31
# CHECK-NEXT: memb(r17++#5:circ(m1)) = r31.new
0x1f 0x40 0x7f 0x70 0x28 0xc2 0xb1 0xab
# CHECK: r31 = r31
# CHECK-NEXT: memb(r17++#5) = r31.new
0x1f 0x40 0x7f 0x70 0x00 0xe2 0xb1 0xad
# CHECK: r31 = r31
# CHECK-NEXT: memb(r17++m1) = r31.new
0x1f 0x40 0x7f 0x70 0x00 0xe2 0xb1 0xaf
# CHECK: r31 = r31
# CHECK-NEXT: memb(r17++m1:brev) = r31.new
# Store new-value byte conditionally
0x1f 0x40 0x7f 0x70 0xe2 0xf5 0xb1 0x34
# CHECK: r31 = r31
# CHECK-NEXT: if (p3) memb(r17+r21<<#3) = r31.new
0x1f 0x40 0x7f 0x70 0xe2 0xf5 0xb1 0x35
# CHECK: r31 = r31
# CHECK-NEXT: if (!p3) memb(r17+r21<<#3) = r31.new
0x03 0x40 0x45 0x85 0x1f 0x40 0x7f 0x70 0xe2 0xf5 0xb1 0x36
# CHECK: p3 = r5
# CHECK-NEXT: r31 = r31
# CHECK-NEXT: if (p3.new) memb(r17+r21<<#3) = r31.new
0x03 0x40 0x45 0x85 0x1f 0x40 0x7f 0x70 0xe2 0xf5 0xb1 0x37
# CHECK: p3 = r5
# CHECK-NEXT: r31 = r31
# CHECK-NEXT: if (!p3.new) memb(r17+r21<<#3) = r31.new
0x1f 0x40 0x7f 0x70 0xab 0xc2 0xb1 0x40
# CHECK: r31 = r31
# CHECK-NEXT: if (p3) memb(r17+#21) = r31.new
0x1f 0x40 0x7f 0x70 0xab 0xc2 0xb1 0x44
# CHECK: r31 = r31
# CHECK-NEXT: if (!p3) memb(r17+#21) = r31.new
0x03 0x40 0x45 0x85 0x1f 0x40 0x7f 0x70 0xab 0xc2 0xb1 0x42
# CHECK: p3 = r5
# CHECK-NEXT: r31 = r31
# CHECK-NEXT: if (p3.new) memb(r17+#21) = r31.new
0x03 0x40 0x45 0x85 0x1f 0x40 0x7f 0x70 0xab 0xc2 0xb1 0x46
# CHECK: p3 = r5
# CHECK-NEXT: r31 = r31
# CHECK-NEXT: if (!p3.new) memb(r17+#21) = r31.new
0x1f 0x40 0x7f 0x70 0x2b 0xe2 0xb1 0xab
# CHECK: r31 = r31
# CHECK-NEXT: if (p3) memb(r17++#5) = r31.new
0x1f 0x40 0x7f 0x70 0x2f 0xe2 0xb1 0xab
# CHECK: r31 = r31
# CHECK-NEXT: if (!p3) memb(r17++#5) = r31.new
0x03 0x40 0x45 0x85 0x1f 0x40 0x7f 0x70 0xab 0xe2 0xb1 0xab
# CHECK: p3 = r5
# CHECK-NEXT: r31 = r31
# CHECK-NEXT: if (p3.new) memb(r17++#5) = r31.new
0x03 0x40 0x45 0x85 0x1f 0x40 0x7f 0x70 0xaf 0xe2 0xb1 0xab
# CHECK: p3 = r5
# CHECK-NEXT: r31 = r31
# CHECK-NEXT: if (!p3.new) memb(r17++#5) = r31.new
# Store new-value halfword
0x1f 0x40 0x7f 0x70 0x8a 0xf5 0xb1 0x3b
# CHECK: r31 = r31
# CHECK-NEXT: memh(r17+r21<<#3) = r31.new
0x1f 0x40 0x7f 0x70 0x15 0xca 0xa0 0x48
# CHECK: r31 = r31
# CHECK-NEXT: memh(gp+#42) = r31.new
0x1f 0x40 0x7f 0x70 0x15 0xca 0xb1 0xa1
# CHECK: r31 = r31
# CHECK-NEXT: memh(r17+#42) = r31.new
0x1f 0x40 0x7f 0x70 0x02 0xea 0xb1 0xa9
# CHECK: r31 = r31
# CHECK-NEXT: memh(r17++I:circ(m1)) = r31.new
0x1f 0x40 0x7f 0x70 0x28 0xea 0xb1 0xa9
# CHECK: r31 = r31
# CHECK-NEXT: memh(r17++#10:circ(m1)) = r31.new
0x1f 0x40 0x7f 0x70 0x28 0xca 0xb1 0xab
# CHECK: r31 = r31
# CHECK-NEXT: memh(r17++#10) = r31.new
0x1f 0x40 0x7f 0x70 0x00 0xea 0xb1 0xad
# CHECK: r31 = r31
# CHECK-NEXT: memh(r17++m1) = r31.new
0x1f 0x40 0x7f 0x70 0x00 0xea 0xb1 0xaf
# CHECK: r31 = r31
# CHECK-NEXT: memh(r17++m1:brev) = r31.new
# Store new-value halfword conditionally
0x1f 0x40 0x7f 0x70 0xea 0xf5 0xb1 0x34
# CHECK: r31 = r31
# CHECK-NEXT: if (p3) memh(r17+r21<<#3) = r31.new
0x1f 0x40 0x7f 0x70 0xea 0xf5 0xb1 0x35
# CHECK: r31 = r31
# CHECK-NEXT: if (!p3) memh(r17+r21<<#3) = r31.new
0x03 0x40 0x45 0x85 0x1f 0x40 0x7f 0x70 0xea 0xf5 0xb1 0x36
# CHECK: p3 = r5
# CHECK-NEXT: r31 = r31
# CHECK-NEXT: if (p3.new) memh(r17+r21<<#3) = r31.new
0x03 0x40 0x45 0x85 0x1f 0x40 0x7f 0x70 0xea 0xf5 0xb1 0x37
# CHECK: p3 = r5
# CHECK-NEXT: r31 = r31
# CHECK-NEXT: if (!p3.new) memh(r17+r21<<#3) = r31.new
0x1f 0x40 0x7f 0x70 0xab 0xca 0xb1 0x40
# CHECK: r31 = r31
# CHECK-NEXT: if (p3) memh(r17+#42) = r31.new
0x1f 0x40 0x7f 0x70 0xab 0xca 0xb1 0x44
# CHECK: r31 = r31
# CHECK-NEXT: if (!p3) memh(r17+#42) = r31.new
0x03 0x40 0x45 0x85 0x1f 0x40 0x7f 0x70 0xab 0xca 0xb1 0x42
# CHECK: p3 = r5
# CHECK-NEXT: r31 = r31
# CHECK-NEXT: if (p3.new) memh(r17+#42) = r31.new
0x03 0x40 0x45 0x85 0x1f 0x40 0x7f 0x70 0xab 0xca 0xb1 0x46
# CHECK: p3 = r5
# CHECK-NEXT: r31 = r31
# CHECK-NEXT: if (!p3.new) memh(r17+#42) = r31.new
0x1f 0x40 0x7f 0x70 0x2b 0xea 0xb1 0xab
# CHECK: r31 = r31
# CHECK-NEXT: if (p3) memh(r17++#10) = r31.new
0x1f 0x40 0x7f 0x70 0x2f 0xea 0xb1 0xab
# CHECK: r31 = r31
# CHECK-NEXT: if (!p3) memh(r17++#10) = r31.new
0x03 0x40 0x45 0x85 0x1f 0x40 0x7f 0x70 0xab 0xea 0xb1 0xab
# CHECK: p3 = r5
# CHECK-NEXT: r31 = r31
# CHECK-NEXT: if (p3.new) memh(r17++#10) = r31.new
0x03 0x40 0x45 0x85 0x1f 0x40 0x7f 0x70 0xaf 0xea 0xb1 0xab
# CHECK: p3 = r5
# CHECK-NEXT: r31 = r31
# CHECK-NEXT: if (!p3.new) memh(r17++#10) = r31.new
# Store new-value word
0x1f 0x40 0x7f 0x70 0x92 0xf5 0xb1 0x3b
# CHECK: r31 = r31
# CHECK-NEXT: memw(r17+r21<<#3) = r31.new
0x1f 0x40 0x7f 0x70 0x15 0xd2 0xa0 0x48
# CHECK: r31 = r31
# CHECK-NEXT: memw(gp+#84) = r31.new
0x1f 0x40 0x7f 0x70 0x15 0xd2 0xb1 0xa1
# CHECK: r31 = r31
# CHECK-NEXT: memw(r17+#84) = r31.new
0x1f 0x40 0x7f 0x70 0x02 0xf2 0xb1 0xa9
# CHECK: r31 = r31
# CHECK-NEXT: memw(r17++I:circ(m1)) = r31.new
0x1f 0x40 0x7f 0x70 0x28 0xf2 0xb1 0xa9
# CHECK: r31 = r31
# CHECK-NEXT: memw(r17++#20:circ(m1)) = r31.new
0x1f 0x40 0x7f 0x70 0x28 0xd2 0xb1 0xab
# CHECK: r31 = r31
# CHECK-NEXT: memw(r17++#20) = r31.new
0x1f 0x40 0x7f 0x70 0x00 0xf2 0xb1 0xad
# CHECK: r31 = r31
# CHECK-NEXT: memw(r17++m1) = r31.new
0x1f 0x40 0x7f 0x70 0x00 0xf2 0xb1 0xaf
# CHECK: r31 = r31
# CHECK-NEXT: memw(r17++m1:brev) = r31.new
# Store new-value word conditionally
0x1f 0x40 0x7f 0x70 0xf2 0xf5 0xb1 0x34
# CHECK: r31 = r31
# CHECK-NEXT: if (p3) memw(r17+r21<<#3) = r31.new
0x1f 0x40 0x7f 0x70 0xf2 0xf5 0xb1 0x35
# CHECK: r31 = r31
# CHECK-NEXT: if (!p3) memw(r17+r21<<#3) = r31.new
0x03 0x40 0x45 0x85 0x1f 0x40 0x7f 0x70 0xf2 0xf5 0xb1 0x36
# CHECK: p3 = r5
# CHECK-NEXT: r31 = r31
# CHECK-NEXT: if (p3.new) memw(r17+r21<<#3) = r31.new
0x03 0x40 0x45 0x85 0x1f 0x40 0x7f 0x70 0xf2 0xf5 0xb1 0x37
# CHECK: p3 = r5
# CHECK-NEXT: r31 = r31
# CHECK-NEXT: if (!p3.new) memw(r17+r21<<#3) = r31.new
0x1f 0x40 0x7f 0x70 0xab 0xd2 0xb1 0x40
# CHECK: r31 = r31
# CHECK-NEXT: if (p3) memw(r17+#84) = r31.new
0x1f 0x40 0x7f 0x70 0xab 0xd2 0xb1 0x44
# CHECK: r31 = r31
# CHECK-NEXT: if (!p3) memw(r17+#84) = r31.new
0x03 0x40 0x45 0x85 0x1f 0x40 0x7f 0x70 0xab 0xd2 0xb1 0x42
# CHECK: p3 = r5
# CHECK-NEXT: r31 = r31
# CHECK-NEXT: if (p3.new) memw(r17+#84) = r31.new
0x03 0x40 0x45 0x85 0x1f 0x40 0x7f 0x70 0xab 0xd2 0xb1 0x46
# CHECK: p3 = r5
# CHECK-NEXT: r31 = r31
# CHECK-NEXT: if (!p3.new) memw(r17+#84) = r31.new
0x1f 0x40 0x7f 0x70 0x2b 0xf2 0xb1 0xab
# CHECK: r31 = r31
# CHECK-NEXT: if (p3) memw(r17++#20) = r31.new
0x1f 0x40 0x7f 0x70 0x2f 0xf2 0xb1 0xab
# CHECK: r31 = r31
# CHECK-NEXT: if (!p3) memw(r17++#20) = r31.new
0x03 0x40 0x45 0x85 0x1f 0x40 0x7f 0x70 0xab 0xf2 0xb1 0xab
# CHECK: p3 = r5
# CHECK-NEXT: r31 = r31
# CHECK-NEXT: if (p3.new) memw(r17++#20) = r31.new
0x03 0x40 0x45 0x85 0x1f 0x40 0x7f 0x70 0xaf 0xf2 0xb1 0xab
# CHECK: p3 = r5
# CHECK-NEXT: r31 = r31
# CHECK-NEXT: if (!p3.new) memw(r17++#20) = r31.new
|