1# RUN: llvm-mc --triple hexagon -disassemble < %s | FileCheck %s
2
30xb1 0xdf 0x35 0xd7
4# CHECK: r17 = add(#21, mpyi(r21, r31))
50xbf 0xd1 0x35 0xd8
6# CHECK: r17 = add(#21, mpyi(r21, #31))
70xb5 0xd1 0x3f 0xdf
8# CHECK: r17 = add(r21, mpyi(#84, r31))
90xf5 0xf1 0xb5 0xdf
10# CHECK: r17 = add(r21, mpyi(r21, #31))
110x15 0xd1 0x1f 0xe3
12# CHECK: r17 = add(r21, mpyi(r17, r31))
130xf1 0xc3 0x15 0xe0
14# CHECK: r17 =+ mpyi(r21, #31)
150xf1 0xc3 0x95 0xe0
16# CHECK: r17 =- mpyi(r21, #31)
170xf1 0xc3 0x15 0xe1
18# CHECK: r17 += mpyi(r21, #31)
190xf1 0xc3 0x95 0xe1
20# CHECK: r17 -= mpyi(r21, #31)
210x11 0xdf 0x15 0xed
22# CHECK: r17 = mpyi(r21, r31)
230x11 0xdf 0x15 0xef
24# CHECK: r17 += mpyi(r21, r31)
250x10 0xdf 0x95 0xe4
26# CHECK: r17:16 = mpy(r21.l, r31.l):<<1
270x30 0xdf 0x95 0xe4
28# CHECK: r17:16 = mpy(r21.l, r31.h):<<1
290x50 0xdf 0x95 0xe4
30# CHECK: r17:16 = mpy(r21.h, r31.l):<<1
310x70 0xdf 0x95 0xe4
32# CHECK: r17:16 = mpy(r21.h, r31.h):<<1
330x10 0xdf 0xb5 0xe4
34# CHECK: r17:16 = mpy(r21.l, r31.l):<<1:rnd
350x30 0xdf 0xb5 0xe4
36# CHECK: r17:16 = mpy(r21.l, r31.h):<<1:rnd
370x50 0xdf 0xb5 0xe4
38# CHECK: r17:16 = mpy(r21.h, r31.l):<<1:rnd
390x70 0xdf 0xb5 0xe4
40# CHECK: r17:16 = mpy(r21.h, r31.h):<<1:rnd
410x10 0xdf 0x95 0xe6
42# CHECK: r17:16 += mpy(r21.l, r31.l):<<1
430x30 0xdf 0x95 0xe6
44# CHECK: r17:16 += mpy(r21.l, r31.h):<<1
450x50 0xdf 0x95 0xe6
46# CHECK: r17:16 += mpy(r21.h, r31.l):<<1
470x70 0xdf 0x95 0xe6
48# CHECK: r17:16 += mpy(r21.h, r31.h):<<1
490x10 0xdf 0xb5 0xe6
50# CHECK: r17:16 -= mpy(r21.l, r31.l):<<1
510x30 0xdf 0xb5 0xe6
52# CHECK: r17:16 -= mpy(r21.l, r31.h):<<1
530x50 0xdf 0xb5 0xe6
54# CHECK: r17:16 -= mpy(r21.h, r31.l):<<1
550x70 0xdf 0xb5 0xe6
56# CHECK: r17:16 -= mpy(r21.h, r31.h):<<1
570x11 0xdf 0x95 0xec
58# CHECK: r17 = mpy(r21.l, r31.l):<<1
590x31 0xdf 0x95 0xec
60# CHECK: r17 = mpy(r21.l, r31.h):<<1
610x51 0xdf 0x95 0xec
62# CHECK: r17 = mpy(r21.h, r31.l):<<1
630x71 0xdf 0x95 0xec
64# CHECK: r17 = mpy(r21.h, r31.h):<<1
650x91 0xdf 0x95 0xec
66# CHECK: r17 = mpy(r21.l, r31.l):<<1:sat
670xb1 0xdf 0x95 0xec
68# CHECK: r17 = mpy(r21.l, r31.h):<<1:sat
690xd1 0xdf 0x95 0xec
70# CHECK: r17 = mpy(r21.h, r31.l):<<1:sat
710xf1 0xdf 0x95 0xec
72# CHECK: r17 = mpy(r21.h, r31.h):<<1:sat
730x11 0xdf 0xb5 0xec
74# CHECK: r17 = mpy(r21.l, r31.l):<<1:rnd
750x31 0xdf 0xb5 0xec
76# CHECK: r17 = mpy(r21.l, r31.h):<<1:rnd
770x51 0xdf 0xb5 0xec
78# CHECK: r17 = mpy(r21.h, r31.l):<<1:rnd
790x71 0xdf 0xb5 0xec
80# CHECK: r17 = mpy(r21.h, r31.h):<<1:rnd
810x91 0xdf 0xb5 0xec
82# CHECK: r17 = mpy(r21.l, r31.l):<<1:rnd:sat
830xb1 0xdf 0xb5 0xec
84# CHECK: r17 = mpy(r21.l, r31.h):<<1:rnd:sat
850xd1 0xdf 0xb5 0xec
86# CHECK: r17 = mpy(r21.h, r31.l):<<1:rnd:sat
870xf1 0xdf 0xb5 0xec
88# CHECK: r17 = mpy(r21.h, r31.h):<<1:rnd:sat
890x11 0xdf 0x95 0xee
90# CHECK: r17 += mpy(r21.l, r31.l):<<1
910x31 0xdf 0x95 0xee
92# CHECK: r17 += mpy(r21.l, r31.h):<<1
930x51 0xdf 0x95 0xee
94# CHECK: r17 += mpy(r21.h, r31.l):<<1
950x71 0xdf 0x95 0xee
96# CHECK: r17 += mpy(r21.h, r31.h):<<1
970x91 0xdf 0x95 0xee
98# CHECK: r17 += mpy(r21.l, r31.l):<<1:sat
990xb1 0xdf 0x95 0xee
100# CHECK: r17 += mpy(r21.l, r31.h):<<1:sat
1010xd1 0xdf 0x95 0xee
102# CHECK: r17 += mpy(r21.h, r31.l):<<1:sat
1030xf1 0xdf 0x95 0xee
104# CHECK: r17 += mpy(r21.h, r31.h):<<1:sat
1050x11 0xdf 0xb5 0xee
106# CHECK: r17 -= mpy(r21.l, r31.l):<<1
1070x31 0xdf 0xb5 0xee
108# CHECK: r17 -= mpy(r21.l, r31.h):<<1
1090x51 0xdf 0xb5 0xee
110# CHECK: r17 -= mpy(r21.h, r31.l):<<1
1110x71 0xdf 0xb5 0xee
112# CHECK: r17 -= mpy(r21.h, r31.h):<<1
1130x91 0xdf 0xb5 0xee
114# CHECK: r17 -= mpy(r21.l, r31.l):<<1:sat
1150xb1 0xdf 0xb5 0xee
116# CHECK: r17 -= mpy(r21.l, r31.h):<<1:sat
1170xd1 0xdf 0xb5 0xee
118# CHECK: r17 -= mpy(r21.h, r31.l):<<1:sat
1190xf1 0xdf 0xb5 0xee
120# CHECK: r17 -= mpy(r21.h, r31.h):<<1:sat
1210x10 0xdf 0xd5 0xe4
122# CHECK: r17:16 = mpyu(r21.l, r31.l):<<1
1230x30 0xdf 0xd5 0xe4
124# CHECK: r17:16 = mpyu(r21.l, r31.h):<<1
1250x50 0xdf 0xd5 0xe4
126# CHECK: r17:16 = mpyu(r21.h, r31.l):<<1
1270x70 0xdf 0xd5 0xe4
128# CHECK: r17:16 = mpyu(r21.h, r31.h):<<1
1290x10 0xdf 0xd5 0xe6
130# CHECK: r17:16 += mpyu(r21.l, r31.l):<<1
1310x30 0xdf 0xd5 0xe6
132# CHECK: r17:16 += mpyu(r21.l, r31.h):<<1
1330x50 0xdf 0xd5 0xe6
134# CHECK: r17:16 += mpyu(r21.h, r31.l):<<1
1350x70 0xdf 0xd5 0xe6
136# CHECK: r17:16 += mpyu(r21.h, r31.h):<<1
1370x10 0xdf 0xf5 0xe6
138# CHECK: r17:16 -= mpyu(r21.l, r31.l):<<1
1390x30 0xdf 0xf5 0xe6
140# CHECK: r17:16 -= mpyu(r21.l, r31.h):<<1
1410x50 0xdf 0xf5 0xe6
142# CHECK: r17:16 -= mpyu(r21.h, r31.l):<<1
1430x70 0xdf 0xf5 0xe6
144# CHECK: r17:16 -= mpyu(r21.h, r31.h):<<1
1450x11 0xdf 0xd5 0xec
146# CHECK: r17 = mpyu(r21.l, r31.l):<<1
1470x31 0xdf 0xd5 0xec
148# CHECK: r17 = mpyu(r21.l, r31.h):<<1
1490x51 0xdf 0xd5 0xec
150# CHECK: r17 = mpyu(r21.h, r31.l):<<1
1510x71 0xdf 0xd5 0xec
152# CHECK: r17 = mpyu(r21.h, r31.h):<<1
1530x11 0xdf 0xd5 0xee
154# CHECK: r17 += mpyu(r21.l, r31.l):<<1
1550x31 0xdf 0xd5 0xee
156# CHECK: r17 += mpyu(r21.l, r31.h):<<1
1570x51 0xdf 0xd5 0xee
158# CHECK: r17 += mpyu(r21.h, r31.l):<<1
1590x71 0xdf 0xd5 0xee
160# CHECK: r17 += mpyu(r21.h, r31.h):<<1
1610x11 0xdf 0xf5 0xee
162# CHECK: r17 -= mpyu(r21.l, r31.l):<<1
1630x31 0xdf 0xf5 0xee
164# CHECK: r17 -= mpyu(r21.l, r31.h):<<1
1650x51 0xdf 0xf5 0xee
166# CHECK: r17 -= mpyu(r21.h, r31.l):<<1
1670x71 0xdf 0xf5 0xee
168# CHECK: r17 -= mpyu(r21.h, r31.h):<<1
1690x31 0xdf 0x15 0xed
170# CHECK: r17 = mpy(r21, r31)
1710x31 0xdf 0x35 0xed
172# CHECK: r17 = mpy(r21, r31):rnd
1730x31 0xdf 0x55 0xed
174# CHECK: r17 = mpyu(r21, r31)
1750x31 0xdf 0x75 0xed
176# CHECK: r17 = mpysu(r21, r31)
1770x11 0xdf 0xb5 0xed
178# CHECK: r17 = mpy(r21, r31.h):<<1:sat
1790x31 0xdf 0xb5 0xed
180# CHECK: r17 = mpy(r21, r31.l):<<1:sat
1810x11 0xdf 0xf5 0xed
182# CHECK: r17 = mpy(r21, r31):<<1:sat
1830x91 0xdf 0xb5 0xed
184# CHECK: r17 = mpy(r21, r31.h):<<1:rnd:sat
1850x91 0xdf 0xf5 0xed
186# CHECK: r17 = mpy(r21, r31.l):<<1:rnd:sat
1870x11 0xdf 0x75 0xef
188# CHECK: r17 += mpy(r21, r31):<<1:sat
1890x31 0xdf 0x75 0xef
190# CHECK: r17 -= mpy(r21, r31):<<1:sat
1910x10 0xdf 0x15 0xe5
192# CHECK: r17:16 = mpy(r21, r31)
1930x10 0xdf 0x55 0xe5
194# CHECK: r17:16 = mpyu(r21, r31)
1950x10 0xdf 0x15 0xe7
196# CHECK: r17:16 += mpy(r21, r31)
1970x10 0xdf 0x35 0xe7
198# CHECK: r17:16 -= mpy(r21, r31)
1990x10 0xdf 0x55 0xe7
200# CHECK: r17:16 += mpyu(r21, r31)
2010x10 0xdf 0x75 0xe7
202# CHECK: r17:16 -= mpyu(r21, r31)
203