blob: 3a767f33b36a1a06a369197c746b750c77daf55e [file] [log] [blame]
Colin LeMahieu21fbc942015-01-30 19:13:26 +00001# RUN: llvm-mc -triple=hexagon -disassemble < %s | FileCheck %s
2# Hexagon Programmer's Reference Manual 11.7.2 NV/ST
Colin LeMahieu94a498b2014-12-30 20:42:23 +00003
Colin LeMahieu21fbc942015-01-30 19:13:26 +00004# Store new-value byte
Colin LeMahieu94a498b2014-12-30 20:42:23 +000050x1f 0x40 0x7f 0x70 0x82 0xf5 0xb1 0x3b
6# CHECK: r31 = r31
Colin LeMahieu7cd08922015-11-09 04:07:48 +00007# CHECK-NEXT: memb(r17 + r21<<#3) = r31.new
80x1f 0x40 0x7f 0x70 0x11 0xc2 0xa0 0x48
9# CHECK: r31 = r31
10# CHECK-NEXT: memb(#17) = r31.new
Colin LeMahieu820d5cb2014-12-30 22:00:26 +0000110x1f 0x40 0x7f 0x70 0x15 0xc2 0xb1 0xa1
12# CHECK: r31 = r31
Colin LeMahieu7cd08922015-11-09 04:07:48 +000013# CHECK-NEXT: memb(r17+#21) = r31.new
Colin LeMahieucd9c4e32015-01-15 23:10:29 +0000140x1f 0x40 0x7f 0x70 0x02 0xe2 0xb1 0xa9
15# CHECK: r31 = r31
Colin LeMahieu7cd08922015-11-09 04:07:48 +000016# CHECK-NEXT: memb(r17 ++ I:circ(m1)) = r31.new
Colin LeMahieucd9c4e32015-01-15 23:10:29 +0000170x1f 0x40 0x7f 0x70 0x28 0xe2 0xb1 0xa9
18# CHECK: r31 = r31
Colin LeMahieu7cd08922015-11-09 04:07:48 +000019# CHECK-NEXT: memb(r17 ++ #5:circ(m1)) = r31.new
Colin LeMahieu90148902014-12-30 22:28:31 +0000200x1f 0x40 0x7f 0x70 0x28 0xc2 0xb1 0xab
21# CHECK: r31 = r31
Colin LeMahieu7cd08922015-11-09 04:07:48 +000022# CHECK-NEXT: memb(r17++#5) = r31.new
Colin LeMahieu0cba5f12014-12-30 22:34:08 +0000230x1f 0x40 0x7f 0x70 0x00 0xe2 0xb1 0xad
24# CHECK: r31 = r31
Colin LeMahieu7cd08922015-11-09 04:07:48 +000025# CHECK-NEXT: memb(r17++m1) = r31.new
Colin LeMahieucd9c4e32015-01-15 23:10:29 +0000260x1f 0x40 0x7f 0x70 0x00 0xe2 0xb1 0xaf
27# CHECK: r31 = r31
Colin LeMahieu7cd08922015-11-09 04:07:48 +000028# CHECK-NEXT: memb(r17 ++ m1:brev) = r31.new
Colin LeMahieu21fbc942015-01-30 19:13:26 +000029
30# Store new-value byte conditionally
Colin LeMahieu94a498b2014-12-30 20:42:23 +0000310x1f 0x40 0x7f 0x70 0xe2 0xf5 0xb1 0x34
32# CHECK: r31 = r31
Colin LeMahieu7cd08922015-11-09 04:07:48 +000033# CHECK-NEXT: if (p3) memb(r17+r21<<#3) = r31.new
Colin LeMahieu94a498b2014-12-30 20:42:23 +0000340x1f 0x40 0x7f 0x70 0xe2 0xf5 0xb1 0x35
35# CHECK: r31 = r31
Colin LeMahieu7cd08922015-11-09 04:07:48 +000036# CHECK-NEXT: if (!p3) memb(r17+r21<<#3) = r31.new
Colin LeMahieu94a498b2014-12-30 20:42:23 +0000370x03 0x40 0x45 0x85 0x1f 0x40 0x7f 0x70 0xe2 0xf5 0xb1 0x36
38# CHECK: p3 = r5
39# CHECK-NEXT: r31 = r31
Colin LeMahieu7cd08922015-11-09 04:07:48 +000040# CHECK-NEXT: if (p3.new) memb(r17+r21<<#3) = r31.new
Colin LeMahieu94a498b2014-12-30 20:42:23 +0000410x03 0x40 0x45 0x85 0x1f 0x40 0x7f 0x70 0xe2 0xf5 0xb1 0x37
42# CHECK: p3 = r5
43# CHECK-NEXT: r31 = r31
Colin LeMahieu7cd08922015-11-09 04:07:48 +000044# CHECK-NEXT: if (!p3.new) memb(r17+r21<<#3) = r31.new
Colin LeMahieu820d5cb2014-12-30 22:00:26 +0000450x1f 0x40 0x7f 0x70 0xab 0xc2 0xb1 0x40
46# CHECK: r31 = r31
Colin LeMahieu7cd08922015-11-09 04:07:48 +000047# CHECK-NEXT: if (p3) memb(r17+#21) = r31.new
Colin LeMahieu820d5cb2014-12-30 22:00:26 +0000480x1f 0x40 0x7f 0x70 0xab 0xc2 0xb1 0x44
49# CHECK: r31 = r31
Colin LeMahieu7cd08922015-11-09 04:07:48 +000050# CHECK-NEXT: if (!p3) memb(r17+#21) = r31.new
Colin LeMahieu820d5cb2014-12-30 22:00:26 +0000510x03 0x40 0x45 0x85 0x1f 0x40 0x7f 0x70 0xab 0xc2 0xb1 0x42
52# CHECK: p3 = r5
53# CHECK-NEXT: r31 = r31
Colin LeMahieu7cd08922015-11-09 04:07:48 +000054# CHECK-NEXT: if (p3.new) memb(r17+#21) = r31.new
Colin LeMahieu820d5cb2014-12-30 22:00:26 +0000550x03 0x40 0x45 0x85 0x1f 0x40 0x7f 0x70 0xab 0xc2 0xb1 0x46
56# CHECK: p3 = r5
57# CHECK-NEXT: r31 = r31
Colin LeMahieu7cd08922015-11-09 04:07:48 +000058# CHECK-NEXT: if (!p3.new) memb(r17+#21) = r31.new
Colin LeMahieu90148902014-12-30 22:28:31 +0000590x1f 0x40 0x7f 0x70 0x2b 0xe2 0xb1 0xab
60# CHECK: r31 = r31
Colin LeMahieu7cd08922015-11-09 04:07:48 +000061# CHECK-NEXT: if (p3) memb(r17++#5) = r31.new
Colin LeMahieu90148902014-12-30 22:28:31 +0000620x1f 0x40 0x7f 0x70 0x2f 0xe2 0xb1 0xab
63# CHECK: r31 = r31
Colin LeMahieu7cd08922015-11-09 04:07:48 +000064# CHECK-NEXT: if (!p3) memb(r17++#5) = r31.new
Colin LeMahieu90148902014-12-30 22:28:31 +0000650x03 0x40 0x45 0x85 0x1f 0x40 0x7f 0x70 0xab 0xe2 0xb1 0xab
66# CHECK: p3 = r5
67# CHECK-NEXT: r31 = r31
Colin LeMahieu7cd08922015-11-09 04:07:48 +000068# CHECK-NEXT: if (p3.new) memb(r17++#5) = r31.new
Colin LeMahieu90148902014-12-30 22:28:31 +0000690x03 0x40 0x45 0x85 0x1f 0x40 0x7f 0x70 0xaf 0xe2 0xb1 0xab
70# CHECK: p3 = r5
71# CHECK-NEXT: r31 = r31
Colin LeMahieu7cd08922015-11-09 04:07:48 +000072# CHECK-NEXT: if (!p3.new) memb(r17++#5) = r31.new
Colin LeMahieu94a498b2014-12-30 20:42:23 +000073
Colin LeMahieu21fbc942015-01-30 19:13:26 +000074# Store new-value halfword
Colin LeMahieu94a498b2014-12-30 20:42:23 +0000750x1f 0x40 0x7f 0x70 0x8a 0xf5 0xb1 0x3b
76# CHECK: r31 = r31
Colin LeMahieu7cd08922015-11-09 04:07:48 +000077# CHECK-NEXT: memh(r17 + r21<<#3) = r31.new
780x1f 0x40 0x7f 0x70 0x15 0xca 0xa0 0x48
79# CHECK: r31 = r31
80# CHECK-NEXT: memh(#42) = r31.new
Colin LeMahieu820d5cb2014-12-30 22:00:26 +0000810x1f 0x40 0x7f 0x70 0x15 0xca 0xb1 0xa1
82# CHECK: r31 = r31
Colin LeMahieu7cd08922015-11-09 04:07:48 +000083# CHECK-NEXT: memh(r17+#42) = r31.new
Colin LeMahieucd9c4e32015-01-15 23:10:29 +0000840x1f 0x40 0x7f 0x70 0x02 0xea 0xb1 0xa9
85# CHECK: r31 = r31
Colin LeMahieu7cd08922015-11-09 04:07:48 +000086# CHECK-NEXT: memh(r17 ++ I:circ(m1)) = r31.new
Colin LeMahieucd9c4e32015-01-15 23:10:29 +0000870x1f 0x40 0x7f 0x70 0x28 0xea 0xb1 0xa9
88# CHECK: r31 = r31
Colin LeMahieu7cd08922015-11-09 04:07:48 +000089# CHECK-NEXT: memh(r17 ++ #10:circ(m1)) = r31.new
Colin LeMahieu90148902014-12-30 22:28:31 +0000900x1f 0x40 0x7f 0x70 0x28 0xca 0xb1 0xab
91# CHECK: r31 = r31
Colin LeMahieu7cd08922015-11-09 04:07:48 +000092# CHECK-NEXT: memh(r17++#10) = r31.new
Colin LeMahieu0cba5f12014-12-30 22:34:08 +0000930x1f 0x40 0x7f 0x70 0x00 0xea 0xb1 0xad
94# CHECK: r31 = r31
Colin LeMahieu7cd08922015-11-09 04:07:48 +000095# CHECK-NEXT: memh(r17++m1) = r31.new
Colin LeMahieucd9c4e32015-01-15 23:10:29 +0000960x1f 0x40 0x7f 0x70 0x00 0xea 0xb1 0xaf
97# CHECK: r31 = r31
Colin LeMahieu7cd08922015-11-09 04:07:48 +000098# CHECK-NEXT: memh(r17 ++ m1:brev) = r31.new
Colin LeMahieu21fbc942015-01-30 19:13:26 +000099
100# Store new-value halfword conditionally
Colin LeMahieu94a498b2014-12-30 20:42:23 +00001010x1f 0x40 0x7f 0x70 0xea 0xf5 0xb1 0x34
102# CHECK: r31 = r31
Colin LeMahieu7cd08922015-11-09 04:07:48 +0000103# CHECK-NEXT: if (p3) memh(r17+r21<<#3) = r31.new
Colin LeMahieu94a498b2014-12-30 20:42:23 +00001040x1f 0x40 0x7f 0x70 0xea 0xf5 0xb1 0x35
105# CHECK: r31 = r31
Colin LeMahieu7cd08922015-11-09 04:07:48 +0000106# CHECK-NEXT: if (!p3) memh(r17+r21<<#3) = r31.new
Colin LeMahieu94a498b2014-12-30 20:42:23 +00001070x03 0x40 0x45 0x85 0x1f 0x40 0x7f 0x70 0xea 0xf5 0xb1 0x36
108# CHECK: p3 = r5
109# CHECK-NEXT: r31 = r31
Colin LeMahieu7cd08922015-11-09 04:07:48 +0000110# CHECK-NEXT: if (p3.new) memh(r17+r21<<#3) = r31.new
Colin LeMahieu94a498b2014-12-30 20:42:23 +00001110x03 0x40 0x45 0x85 0x1f 0x40 0x7f 0x70 0xea 0xf5 0xb1 0x37
112# CHECK: p3 = r5
113# CHECK-NEXT: r31 = r31
Colin LeMahieu7cd08922015-11-09 04:07:48 +0000114# CHECK-NEXT: if (!p3.new) memh(r17+r21<<#3) = r31.new
Colin LeMahieu820d5cb2014-12-30 22:00:26 +00001150x1f 0x40 0x7f 0x70 0xab 0xca 0xb1 0x40
116# CHECK: r31 = r31
Colin LeMahieu7cd08922015-11-09 04:07:48 +0000117# CHECK-NEXT: if (p3) memh(r17+#42) = r31.new
Colin LeMahieu820d5cb2014-12-30 22:00:26 +00001180x1f 0x40 0x7f 0x70 0xab 0xca 0xb1 0x44
119# CHECK: r31 = r31
Colin LeMahieu7cd08922015-11-09 04:07:48 +0000120# CHECK-NEXT: if (!p3) memh(r17+#42) = r31.new
Colin LeMahieu820d5cb2014-12-30 22:00:26 +00001210x03 0x40 0x45 0x85 0x1f 0x40 0x7f 0x70 0xab 0xca 0xb1 0x42
122# CHECK: p3 = r5
123# CHECK-NEXT: r31 = r31
Colin LeMahieu7cd08922015-11-09 04:07:48 +0000124# CHECK-NEXT: if (p3.new) memh(r17+#42) = r31.new
Colin LeMahieu820d5cb2014-12-30 22:00:26 +00001250x03 0x40 0x45 0x85 0x1f 0x40 0x7f 0x70 0xab 0xca 0xb1 0x46
126# CHECK: p3 = r5
127# CHECK-NEXT: r31 = r31
Colin LeMahieu7cd08922015-11-09 04:07:48 +0000128# CHECK-NEXT: if (!p3.new) memh(r17+#42) = r31.new
Colin LeMahieu90148902014-12-30 22:28:31 +00001290x1f 0x40 0x7f 0x70 0x2b 0xea 0xb1 0xab
130# CHECK: r31 = r31
Colin LeMahieu7cd08922015-11-09 04:07:48 +0000131# CHECK-NEXT: if (p3) memh(r17++#10) = r31.new
Colin LeMahieu90148902014-12-30 22:28:31 +00001320x1f 0x40 0x7f 0x70 0x2f 0xea 0xb1 0xab
133# CHECK: r31 = r31
Colin LeMahieu7cd08922015-11-09 04:07:48 +0000134# CHECK-NEXT: if (!p3) memh(r17++#10) = r31.new
Colin LeMahieu90148902014-12-30 22:28:31 +00001350x03 0x40 0x45 0x85 0x1f 0x40 0x7f 0x70 0xab 0xea 0xb1 0xab
136# CHECK: p3 = r5
137# CHECK-NEXT: r31 = r31
Colin LeMahieu7cd08922015-11-09 04:07:48 +0000138# CHECK-NEXT: if (p3.new) memh(r17++#10) = r31.new
Colin LeMahieu90148902014-12-30 22:28:31 +00001390x03 0x40 0x45 0x85 0x1f 0x40 0x7f 0x70 0xaf 0xea 0xb1 0xab
140# CHECK: p3 = r5
141# CHECK-NEXT: r31 = r31
Colin LeMahieu7cd08922015-11-09 04:07:48 +0000142# CHECK-NEXT: if (!p3.new) memh(r17++#10) = r31.new
Colin LeMahieu94a498b2014-12-30 20:42:23 +0000143
Colin LeMahieu21fbc942015-01-30 19:13:26 +0000144# Store new-value word
Colin LeMahieu94a498b2014-12-30 20:42:23 +00001450x1f 0x40 0x7f 0x70 0x92 0xf5 0xb1 0x3b
146# CHECK: r31 = r31
Colin LeMahieu7cd08922015-11-09 04:07:48 +0000147# CHECK-NEXT: memw(r17 + r21<<#3) = r31.new
1480x1f 0x40 0x7f 0x70 0x15 0xd2 0xa0 0x48
149# CHECK: r31 = r31
150# CHECK-NEXT: memw(#84) = r31.new
Colin LeMahieu820d5cb2014-12-30 22:00:26 +00001510x1f 0x40 0x7f 0x70 0x15 0xd2 0xb1 0xa1
152# CHECK: r31 = r31
Colin LeMahieu7cd08922015-11-09 04:07:48 +0000153# CHECK-NEXT: memw(r17+#84) = r31.new
Colin LeMahieucd9c4e32015-01-15 23:10:29 +00001540x1f 0x40 0x7f 0x70 0x02 0xf2 0xb1 0xa9
155# CHECK: r31 = r31
Colin LeMahieu7cd08922015-11-09 04:07:48 +0000156# CHECK-NEXT: memw(r17 ++ I:circ(m1)) = r31.new
1570x1f 0x40 0x7f 0x70 0x28 0xf2 0xb1 0xa9
158# CHECK: r31 = r31
159# CHECK-NEXT: memw(r17 ++ #20:circ(m1)) = r31.new
Colin LeMahieu90148902014-12-30 22:28:31 +00001600x1f 0x40 0x7f 0x70 0x28 0xd2 0xb1 0xab
161# CHECK: r31 = r31
Colin LeMahieu7cd08922015-11-09 04:07:48 +0000162# CHECK-NEXT: memw(r17++#20) = r31.new
Colin LeMahieu0cba5f12014-12-30 22:34:08 +00001630x1f 0x40 0x7f 0x70 0x00 0xf2 0xb1 0xad
164# CHECK: r31 = r31
Colin LeMahieu7cd08922015-11-09 04:07:48 +0000165# CHECK-NEXT: memw(r17++m1) = r31.new
Colin LeMahieucd9c4e32015-01-15 23:10:29 +00001660x1f 0x40 0x7f 0x70 0x00 0xf2 0xb1 0xaf
167# CHECK: r31 = r31
Colin LeMahieu7cd08922015-11-09 04:07:48 +0000168# CHECK-NEXT: memw(r17 ++ m1:brev) = r31.new
Colin LeMahieu21fbc942015-01-30 19:13:26 +0000169
170# Store new-value word conditionally
Colin LeMahieu94a498b2014-12-30 20:42:23 +00001710x1f 0x40 0x7f 0x70 0xf2 0xf5 0xb1 0x34
172# CHECK: r31 = r31
Colin LeMahieu7cd08922015-11-09 04:07:48 +0000173# CHECK-NEXT: if (p3) memw(r17+r21<<#3) = r31.new
Colin LeMahieu94a498b2014-12-30 20:42:23 +00001740x1f 0x40 0x7f 0x70 0xf2 0xf5 0xb1 0x35
175# CHECK: r31 = r31
Colin LeMahieu7cd08922015-11-09 04:07:48 +0000176# CHECK-NEXT: if (!p3) memw(r17+r21<<#3) = r31.new
Colin LeMahieu94a498b2014-12-30 20:42:23 +00001770x03 0x40 0x45 0x85 0x1f 0x40 0x7f 0x70 0xf2 0xf5 0xb1 0x36
178# CHECK: p3 = r5
179# CHECK-NEXT: r31 = r31
Colin LeMahieu7cd08922015-11-09 04:07:48 +0000180# CHECK-NEXT: if (p3.new) memw(r17+r21<<#3) = r31.new
Colin LeMahieu94a498b2014-12-30 20:42:23 +00001810x03 0x40 0x45 0x85 0x1f 0x40 0x7f 0x70 0xf2 0xf5 0xb1 0x37
182# CHECK: p3 = r5
183# CHECK-NEXT: r31 = r31
Colin LeMahieu7cd08922015-11-09 04:07:48 +0000184# CHECK-NEXT: if (!p3.new) memw(r17+r21<<#3) = r31.new
Colin LeMahieu820d5cb2014-12-30 22:00:26 +00001850x1f 0x40 0x7f 0x70 0xab 0xd2 0xb1 0x40
186# CHECK: r31 = r31
Colin LeMahieu7cd08922015-11-09 04:07:48 +0000187# CHECK-NEXT: if (p3) memw(r17+#84) = r31.new
Colin LeMahieu820d5cb2014-12-30 22:00:26 +00001880x1f 0x40 0x7f 0x70 0xab 0xd2 0xb1 0x44
189# CHECK: r31 = r31
Colin LeMahieu7cd08922015-11-09 04:07:48 +0000190# CHECK-NEXT: if (!p3) memw(r17+#84) = r31.new
Colin LeMahieu820d5cb2014-12-30 22:00:26 +00001910x03 0x40 0x45 0x85 0x1f 0x40 0x7f 0x70 0xab 0xd2 0xb1 0x42
192# CHECK: p3 = r5
193# CHECK-NEXT: r31 = r31
Colin LeMahieu7cd08922015-11-09 04:07:48 +0000194# CHECK-NEXT: if (p3.new) memw(r17+#84) = r31.new
Colin LeMahieu820d5cb2014-12-30 22:00:26 +00001950x03 0x40 0x45 0x85 0x1f 0x40 0x7f 0x70 0xab 0xd2 0xb1 0x46
196# CHECK: p3 = r5
197# CHECK-NEXT: r31 = r31
Colin LeMahieu7cd08922015-11-09 04:07:48 +0000198# CHECK-NEXT: if (!p3.new) memw(r17+#84) = r31.new
Colin LeMahieu90148902014-12-30 22:28:31 +00001990x1f 0x40 0x7f 0x70 0x2b 0xf2 0xb1 0xab
200# CHECK: r31 = r31
Colin LeMahieu7cd08922015-11-09 04:07:48 +0000201# CHECK-NEXT: if (p3) memw(r17++#20) = r31.new
Colin LeMahieu90148902014-12-30 22:28:31 +00002020x1f 0x40 0x7f 0x70 0x2f 0xf2 0xb1 0xab
203# CHECK: r31 = r31
Colin LeMahieu7cd08922015-11-09 04:07:48 +0000204# CHECK-NEXT: if (!p3) memw(r17++#20) = r31.new
Colin LeMahieu90148902014-12-30 22:28:31 +00002050x03 0x40 0x45 0x85 0x1f 0x40 0x7f 0x70 0xab 0xf2 0xb1 0xab
206# CHECK: p3 = r5
207# CHECK-NEXT: r31 = r31
Colin LeMahieu7cd08922015-11-09 04:07:48 +0000208# CHECK-NEXT: if (p3.new) memw(r17++#20) = r31.new
Colin LeMahieu90148902014-12-30 22:28:31 +00002090x03 0x40 0x45 0x85 0x1f 0x40 0x7f 0x70 0xaf 0xf2 0xb1 0xab
210# CHECK: p3 = r5
211# CHECK-NEXT: r31 = r31
Colin LeMahieu7cd08922015-11-09 04:07:48 +0000212# CHECK-NEXT: if (!p3.new) memw(r17++#20) = r31.new