1# RUN: llvm-mc -triple hexagon -disassemble < %s | FileCheck %s
2# Hexagon Programmer's Reference Manual 11.4 J
3
4# Call subroutine
50x22 0xc0 0x00 0x5a
6# CHECK: call
70x22 0xc3 0x00 0x5d
8# CHECK: if (p3) call
90x22 0xc3 0x20 0x5d
10# CHECK: if (!p3) call
11
12# Compare and jump
130x00 0xc0 0x89 0x11
14# CHECK: p0 = cmp.eq(r17,#-1); if (p0.new) jump:nt
150x00 0xc1 0x89 0x11
16# CHECK: p0 = cmp.gt(r17,#-1); if (p0.new) jump:nt
170x00 0xc3 0x89 0x11
18# CHECK: p0 = tstbit(r17, #0); if (p0.new) jump:nt
190x00 0xe0 0x89 0x11
20# CHECK: p0 = cmp.eq(r17,#-1); if (p0.new) jump:t
210x00 0xe1 0x89 0x11
22# CHECK: p0 = cmp.gt(r17,#-1); if (p0.new) jump:t
230x00 0xe3 0x89 0x11
24# CHECK: p0 = tstbit(r17, #0); if (p0.new) jump:t
250x00 0xc0 0xc9 0x11
26# CHECK: p0 = cmp.eq(r17,#-1); if (!p0.new) jump:nt
270x00 0xc1 0xc9 0x11
28# CHECK: p0 = cmp.gt(r17,#-1); if (!p0.new) jump:nt
290x00 0xc3 0xc9 0x11
30# CHECK: p0 = tstbit(r17, #0); if (!p0.new) jump:nt
310x00 0xe0 0xc9 0x11
32# CHECK: p0 = cmp.eq(r17,#-1); if (!p0.new) jump:t
330x00 0xe1 0xc9 0x11
34# CHECK: p0 = cmp.gt(r17,#-1); if (!p0.new) jump:t
350x00 0xe3 0xc9 0x11
36# CHECK: p0 = tstbit(r17, #0); if (!p0.new) jump:t
370x00 0xd5 0x09 0x10
38# CHECK: p0 = cmp.eq(r17, #21); if (p0.new) jump:nt
390x00 0xf5 0x09 0x10
40# CHECK: p0 = cmp.eq(r17, #21); if (p0.new) jump:t
410x00 0xd5 0x49 0x10
42# CHECK: p0 = cmp.eq(r17, #21); if (!p0.new) jump:nt
430x00 0xf5 0x49 0x10
44# CHECK: p0 = cmp.eq(r17, #21); if (!p0.new) jump:t
450x00 0xd5 0x89 0x10
46# CHECK: p0 = cmp.gt(r17, #21); if (p0.new) jump:nt
470x00 0xf5 0x89 0x10
48# CHECK: p0 = cmp.gt(r17, #21); if (p0.new) jump:t
490x00 0xd5 0xc9 0x10
50# CHECK: p0 = cmp.gt(r17, #21); if (!p0.new) jump:nt
510x00 0xf5 0xc9 0x10
52# CHECK: p0 = cmp.gt(r17, #21); if (!p0.new) jump:t
530x00 0xd5 0x09 0x11
54# CHECK: p0 = cmp.gtu(r17, #21); if (p0.new) jump:nt
550x00 0xf5 0x09 0x11
56# CHECK: p0 = cmp.gtu(r17, #21); if (p0.new) jump:t
570x00 0xd5 0x49 0x11
58# CHECK: p0 = cmp.gtu(r17, #21); if (!p0.new) jump:nt
590x00 0xf5 0x49 0x11
60# CHECK: p0 = cmp.gtu(r17, #21); if (!p0.new) jump:t
610x00 0xc0 0x89 0x13
62# CHECK: p1 = cmp.eq(r17,#-1); if (p1.new) jump:nt
630x00 0xc1 0x89 0x13
64# CHECK: p1 = cmp.gt(r17,#-1); if (p1.new) jump:nt
650x00 0xc3 0x89 0x13
66# CHECK: p1 = tstbit(r17, #0); if (p1.new) jump:nt
670x00 0xe0 0x89 0x13
68# CHECK: p1 = cmp.eq(r17,#-1); if (p1.new) jump:t
690x00 0xe1 0x89 0x13
70# CHECK: p1 = cmp.gt(r17,#-1); if (p1.new) jump:t
710x00 0xe3 0x89 0x13
72# CHECK: p1 = tstbit(r17, #0); if (p1.new) jump:t
730x00 0xc0 0xc9 0x13
74# CHECK: p1 = cmp.eq(r17,#-1); if (!p1.new) jump:nt
750x00 0xc1 0xc9 0x13
76# CHECK: p1 = cmp.gt(r17,#-1); if (!p1.new) jump:nt
770x00 0xc3 0xc9 0x13
78# CHECK: p1 = tstbit(r17, #0); if (!p1.new) jump:nt
790x00 0xe0 0xc9 0x13
80# CHECK: p1 = cmp.eq(r17,#-1); if (!p1.new) jump:t
810x00 0xe1 0xc9 0x13
82# CHECK: p1 = cmp.gt(r17,#-1); if (!p1.new) jump:t
830x00 0xe3 0xc9 0x13
84# CHECK: p1 = tstbit(r17, #0); if (!p1.new) jump:t
850x00 0xd5 0x09 0x12
86# CHECK: p1 = cmp.eq(r17, #21); if (p1.new) jump:nt
870x00 0xf5 0x09 0x12
88# CHECK: p1 = cmp.eq(r17, #21); if (p1.new) jump:t
890x00 0xd5 0x49 0x12
90# CHECK: p1 = cmp.eq(r17, #21); if (!p1.new) jump:nt
910x00 0xf5 0x49 0x12
92# CHECK: p1 = cmp.eq(r17, #21); if (!p1.new) jump:t
930x00 0xd5 0x89 0x12
94# CHECK: p1 = cmp.gt(r17, #21); if (p1.new) jump:nt
950x00 0xf5 0x89 0x12
96# CHECK: p1 = cmp.gt(r17, #21); if (p1.new) jump:t
970x00 0xd5 0xc9 0x12
98# CHECK: p1 = cmp.gt(r17, #21); if (!p1.new) jump:nt
990x00 0xf5 0xc9 0x12
100# CHECK: p1 = cmp.gt(r17, #21); if (!p1.new) jump:t
1010x00 0xd5 0x09 0x13
102# CHECK: p1 = cmp.gtu(r17, #21); if (p1.new) jump:nt
1030x00 0xf5 0x09 0x13
104# CHECK: p1 = cmp.gtu(r17, #21); if (p1.new) jump:t
1050x00 0xd5 0x49 0x13
106# CHECK: p1 = cmp.gtu(r17, #21); if (!p1.new) jump:nt
1070x00 0xf5 0x49 0x13
108# CHECK: p1 = cmp.gtu(r17, #21); if (!p1.new) jump:t
1090x00 0xcd 0x09 0x14
110# CHECK: p0 = cmp.eq(r17, r21); if (p0.new) jump:nt
1110x00 0xdd 0x09 0x14
112# CHECK: p1 = cmp.eq(r17, r21); if (p1.new) jump:nt
1130x00 0xed 0x09 0x14
114# CHECK: p0 = cmp.eq(r17, r21); if (p0.new) jump:t
1150x00 0xfd 0x09 0x14
116# CHECK: p1 = cmp.eq(r17, r21); if (p1.new) jump:t
1170x00 0xcd 0x49 0x14
118# CHECK: p0 = cmp.eq(r17, r21); if (!p0.new) jump:nt
1190x00 0xdd 0x49 0x14
120# CHECK: p1 = cmp.eq(r17, r21); if (!p1.new) jump:nt
1210x00 0xed 0x49 0x14
122# CHECK: p0 = cmp.eq(r17, r21); if (!p0.new) jump:t
1230x00 0xfd 0x49 0x14
124# CHECK: p1 = cmp.eq(r17, r21); if (!p1.new) jump:t
1250x00 0xcd 0x89 0x14
126# CHECK: p0 = cmp.gt(r17, r21); if (p0.new) jump:nt
1270x00 0xdd 0x89 0x14
128# CHECK: p1 = cmp.gt(r17, r21); if (p1.new) jump:nt
1290x00 0xed 0x89 0x14
130# CHECK: p0 = cmp.gt(r17, r21); if (p0.new) jump:t
1310x00 0xfd 0x89 0x14
132# CHECK: p1 = cmp.gt(r17, r21); if (p1.new) jump:t
1330x00 0xcd 0xc9 0x14
134# CHECK: p0 = cmp.gt(r17, r21); if (!p0.new) jump:nt
1350x00 0xdd 0xc9 0x14
136# CHECK: p1 = cmp.gt(r17, r21); if (!p1.new) jump:nt
1370x00 0xed 0xc9 0x14
138# CHECK: p0 = cmp.gt(r17, r21); if (!p0.new) jump:t
1390x00 0xfd 0xc9 0x14
140# CHECK: p1 = cmp.gt(r17, r21); if (!p1.new) jump:t
1410x00 0xcd 0x09 0x15
142# CHECK: p0 = cmp.gtu(r17, r21); if (p0.new) jump:nt
1430x00 0xdd 0x09 0x15
144# CHECK: p1 = cmp.gtu(r17, r21); if (p1.new) jump:nt
1450x00 0xed 0x09 0x15
146# CHECK: p0 = cmp.gtu(r17, r21); if (p0.new) jump:t
1470x00 0xfd 0x09 0x15
148# CHECK: p1 = cmp.gtu(r17, r21); if (p1.new) jump:t
1490x00 0xcd 0x49 0x15
150# CHECK: p0 = cmp.gtu(r17, r21); if (!p0.new) jump:nt
1510x00 0xdd 0x49 0x15
152# CHECK: p1 = cmp.gtu(r17, r21); if (!p1.new) jump:nt
1530x00 0xed 0x49 0x15
154# CHECK: p0 = cmp.gtu(r17, r21); if (!p0.new) jump:t
1550x00 0xfd 0x49 0x15
156# CHECK: p1 = cmp.gtu(r17, r21); if (!p1.new) jump:t
157
158# Jump to address
1590x22 0xc0 0x00 0x58
160# CHECK: jump
1610x22 0xc3 0x00 0x5c
162# CHECK: if (p3) jump
1630x22 0xc3 0x20 0x5c
164# CHECK: if (!p3) jump
165
166# Jump to address conditioned on new predicate
1670x03 0x40 0x45 0x85 0x00 0xcb 0x00 0x5c
168# CHECK: p3 = r5
169# CHECK-NEXT: if (p3.new) jump:nt
1700x03 0x40 0x45 0x85 0x00 0xdb 0x00 0x5c
171# CHECK: p3 = r5
172# CHECK-NEXT: if (p3.new) jump:t
1730x03 0x40 0x45 0x85 0x00 0xcb 0x20 0x5c
174# CHECK: p3 = r5
175# CHECK-NEXT: if (!p3.new) jump:nt
1760x03 0x40 0x45 0x85 0x00 0xdb 0x20 0x5c
177# CHECK: p3 = r5
178# CHECK-NEXT: if (!p3.new) jump:t
179
180# Jump to address conditioned on register value
1810x00 0xc0 0x11 0x61
182# CHECK: if (r17!=#0) jump:nt
1830x00 0xd0 0x11 0x61
184# CHECK: if (r17!=#0) jump:t
1850x00 0xc0 0x51 0x61
186# CHECK: if (r17>=#0) jump:nt
1870x00 0xd0 0x51 0x61
188# CHECK: if (r17>=#0) jump:t
1890x00 0xc0 0x91 0x61
190# CHECK: if (r17==#0) jump:nt
1910x00 0xd0 0x91 0x61
192# CHECK: if (r17==#0) jump:t
1930x00 0xc0 0xd1 0x61
194# CHECK: if (r17<=#0) jump:nt
1950x00 0xd0 0xd1 0x61
196# CHECK: if (r17<=#0) jump:t
197
198# Transfer and jump
1990x00 0xd5 0x09 0x16
200# CHECK: r17 = #21 ; jump
2010x00 0xc9 0x0d 0x17
202# CHECK: r17 = r21 ; jump
203