# RUN: llvm-mc --triple hexagon -disassemble < %s | FileCheck %s

0xf1 0xc3 0x15 0xe0
# CHECK: r17 =+ mpyi(r21, #31)
0xf1 0xc3 0x95 0xe0
# CHECK: r17 =- mpyi(r21, #31)
0xf1 0xc3 0x15 0xe1
# CHECK: r17 += mpyi(r21, #31)
0xf1 0xc3 0x95 0xe1
# CHECK: r17 -= mpyi(r21, #31)
0x11 0xdf 0x15 0xed
# CHECK: r17 = mpyi(r21, r31)
0x11 0xdf 0x15 0xef
# CHECK: r17 += mpyi(r21, r31)
0x10 0xdf 0x95 0xe4
# CHECK: r17:16 = mpy(r21.l, r31.l):<<1
0x30 0xdf 0x95 0xe4
# CHECK: r17:16 = mpy(r21.l, r31.h):<<1
0x50 0xdf 0x95 0xe4
# CHECK: r17:16 = mpy(r21.h, r31.l):<<1
0x70 0xdf 0x95 0xe4
# CHECK: r17:16 = mpy(r21.h, r31.h):<<1
0x10 0xdf 0xb5 0xe4
# CHECK: r17:16 = mpy(r21.l, r31.l):<<1:rnd
0x30 0xdf 0xb5 0xe4
# CHECK: r17:16 = mpy(r21.l, r31.h):<<1:rnd
0x50 0xdf 0xb5 0xe4
# CHECK: r17:16 = mpy(r21.h, r31.l):<<1:rnd
0x70 0xdf 0xb5 0xe4
# CHECK: r17:16 = mpy(r21.h, r31.h):<<1:rnd
0x10 0xdf 0x95 0xe6
# CHECK: r17:16 += mpy(r21.l, r31.l):<<1
0x30 0xdf 0x95 0xe6
# CHECK: r17:16 += mpy(r21.l, r31.h):<<1
0x50 0xdf 0x95 0xe6
# CHECK: r17:16 += mpy(r21.h, r31.l):<<1
0x70 0xdf 0x95 0xe6
# CHECK: r17:16 += mpy(r21.h, r31.h):<<1
0x10 0xdf 0xb5 0xe6
# CHECK: r17:16 -= mpy(r21.l, r31.l):<<1
0x30 0xdf 0xb5 0xe6
# CHECK: r17:16 -= mpy(r21.l, r31.h):<<1
0x50 0xdf 0xb5 0xe6
# CHECK: r17:16 -= mpy(r21.h, r31.l):<<1
0x70 0xdf 0xb5 0xe6
# CHECK: r17:16 -= mpy(r21.h, r31.h):<<1
0x11 0xdf 0x95 0xec
# CHECK: r17 = mpy(r21.l, r31.l):<<1
0x31 0xdf 0x95 0xec
# CHECK: r17 = mpy(r21.l, r31.h):<<1
0x51 0xdf 0x95 0xec
# CHECK: r17 = mpy(r21.h, r31.l):<<1
0x71 0xdf 0x95 0xec
# CHECK: r17 = mpy(r21.h, r31.h):<<1
0x91 0xdf 0x95 0xec
# CHECK: r17 = mpy(r21.l, r31.l):<<1:sat
0xb1 0xdf 0x95 0xec
# CHECK: r17 = mpy(r21.l, r31.h):<<1:sat
0xd1 0xdf 0x95 0xec
# CHECK: r17 = mpy(r21.h, r31.l):<<1:sat
0xf1 0xdf 0x95 0xec
# CHECK: r17 = mpy(r21.h, r31.h):<<1:sat
0x11 0xdf 0xb5 0xec
# CHECK: r17 = mpy(r21.l, r31.l):<<1:rnd
0x31 0xdf 0xb5 0xec
# CHECK: r17 = mpy(r21.l, r31.h):<<1:rnd
0x51 0xdf 0xb5 0xec
# CHECK: r17 = mpy(r21.h, r31.l):<<1:rnd
0x71 0xdf 0xb5 0xec
# CHECK: r17 = mpy(r21.h, r31.h):<<1:rnd
0x91 0xdf 0xb5 0xec
# CHECK: r17 = mpy(r21.l, r31.l):<<1:rnd:sat
0xb1 0xdf 0xb5 0xec
# CHECK: r17 = mpy(r21.l, r31.h):<<1:rnd:sat
0xd1 0xdf 0xb5 0xec
# CHECK: r17 = mpy(r21.h, r31.l):<<1:rnd:sat
0xf1 0xdf 0xb5 0xec
# CHECK: r17 = mpy(r21.h, r31.h):<<1:rnd:sat
0x11 0xdf 0x95 0xee
# CHECK: r17 += mpy(r21.l, r31.l):<<1
0x31 0xdf 0x95 0xee
# CHECK: r17 += mpy(r21.l, r31.h):<<1
0x51 0xdf 0x95 0xee
# CHECK: r17 += mpy(r21.h, r31.l):<<1
0x71 0xdf 0x95 0xee
# CHECK: r17 += mpy(r21.h, r31.h):<<1
0x91 0xdf 0x95 0xee
# CHECK: r17 += mpy(r21.l, r31.l):<<1:sat
0xb1 0xdf 0x95 0xee
# CHECK: r17 += mpy(r21.l, r31.h):<<1:sat
0xd1 0xdf 0x95 0xee
# CHECK: r17 += mpy(r21.h, r31.l):<<1:sat
0xf1 0xdf 0x95 0xee
# CHECK: r17 += mpy(r21.h, r31.h):<<1:sat
0x11 0xdf 0xb5 0xee
# CHECK: r17 -= mpy(r21.l, r31.l):<<1
0x31 0xdf 0xb5 0xee
# CHECK: r17 -= mpy(r21.l, r31.h):<<1
0x51 0xdf 0xb5 0xee
# CHECK: r17 -= mpy(r21.h, r31.l):<<1
0x71 0xdf 0xb5 0xee
# CHECK: r17 -= mpy(r21.h, r31.h):<<1
0x91 0xdf 0xb5 0xee
# CHECK: r17 -= mpy(r21.l, r31.l):<<1:sat
0xb1 0xdf 0xb5 0xee
# CHECK: r17 -= mpy(r21.l, r31.h):<<1:sat
0xd1 0xdf 0xb5 0xee
# CHECK: r17 -= mpy(r21.h, r31.l):<<1:sat
0xf1 0xdf 0xb5 0xee
# CHECK: r17 -= mpy(r21.h, r31.h):<<1:sat
0x10 0xdf 0xd5 0xe4
# CHECK: r17:16 = mpyu(r21.l, r31.l):<<1
0x30 0xdf 0xd5 0xe4
# CHECK: r17:16 = mpyu(r21.l, r31.h):<<1
0x50 0xdf 0xd5 0xe4
# CHECK: r17:16 = mpyu(r21.h, r31.l):<<1
0x70 0xdf 0xd5 0xe4
# CHECK: r17:16 = mpyu(r21.h, r31.h):<<1
0x10 0xdf 0xd5 0xe6
# CHECK: r17:16 += mpyu(r21.l, r31.l):<<1
0x30 0xdf 0xd5 0xe6
# CHECK: r17:16 += mpyu(r21.l, r31.h):<<1
0x50 0xdf 0xd5 0xe6
# CHECK: r17:16 += mpyu(r21.h, r31.l):<<1
0x70 0xdf 0xd5 0xe6
# CHECK: r17:16 += mpyu(r21.h, r31.h):<<1
0x10 0xdf 0xf5 0xe6
# CHECK: r17:16 -= mpyu(r21.l, r31.l):<<1
0x30 0xdf 0xf5 0xe6
# CHECK: r17:16 -= mpyu(r21.l, r31.h):<<1
0x50 0xdf 0xf5 0xe6
# CHECK: r17:16 -= mpyu(r21.h, r31.l):<<1
0x70 0xdf 0xf5 0xe6
# CHECK: r17:16 -= mpyu(r21.h, r31.h):<<1
0x11 0xdf 0xd5 0xec
# CHECK: r17 = mpyu(r21.l, r31.l):<<1
0x31 0xdf 0xd5 0xec
# CHECK: r17 = mpyu(r21.l, r31.h):<<1
0x51 0xdf 0xd5 0xec
# CHECK: r17 = mpyu(r21.h, r31.l):<<1
0x71 0xdf 0xd5 0xec
# CHECK: r17 = mpyu(r21.h, r31.h):<<1
0x11 0xdf 0xd5 0xee
# CHECK: r17 += mpyu(r21.l, r31.l):<<1
0x31 0xdf 0xd5 0xee
# CHECK: r17 += mpyu(r21.l, r31.h):<<1
0x51 0xdf 0xd5 0xee
# CHECK: r17 += mpyu(r21.h, r31.l):<<1
0x71 0xdf 0xd5 0xee
# CHECK: r17 += mpyu(r21.h, r31.h):<<1
0x11 0xdf 0xf5 0xee
# CHECK: r17 -= mpyu(r21.l, r31.l):<<1
0x31 0xdf 0xf5 0xee
# CHECK: r17 -= mpyu(r21.l, r31.h):<<1
0x51 0xdf 0xf5 0xee
# CHECK: r17 -= mpyu(r21.h, r31.l):<<1
0x71 0xdf 0xf5 0xee
# CHECK: r17 -= mpyu(r21.h, r31.h):<<1
0x31 0xdf 0x15 0xed
# CHECK: r17 = mpy(r21, r31)
0x31 0xdf 0x35 0xed
# CHECK: r17 = mpy(r21, r31):rnd
0x31 0xdf 0x55 0xed
# CHECK: r17 = mpyu(r21, r31)
0x31 0xdf 0x75 0xed
# CHECK: r17 = mpysu(r21, r31)
0x11 0xdf 0xb5 0xed
# CHECK: r17 = mpy(r21, r31.h):<<1:sat
0x31 0xdf 0xb5 0xed
# CHECK: r17 = mpy(r21, r31.l):<<1:sat
0x11 0xdf 0xf5 0xed
# CHECK: r17 = mpy(r21, r31):<<1:sat
0x91 0xdf 0xb5 0xed
# CHECK: r17 = mpy(r21, r31.h):<<1:rnd:sat
0x91 0xdf 0xf5 0xed
# CHECK: r17 = mpy(r21, r31.l):<<1:rnd:sat
0x10 0xdf 0x15 0xe5
# CHECK: r17:16 = mpy(r21, r31)
0x10 0xdf 0x55 0xe5
# CHECK: r17:16 = mpyu(r21, r31)
0x10 0xdf 0x15 0xe7
# CHECK: r17:16 += mpy(r21, r31)
0x10 0xdf 0x35 0xe7
# CHECK: r17:16 -= mpy(r21, r31)
0x10 0xdf 0x55 0xe7
# CHECK: r17:16 += mpyu(r21, r31)
0x10 0xdf 0x75 0xe7
# CHECK: r17:16 -= mpyu(r21, r31)
