[clang] [llvm] [RISCV][MC] Implement MC for Base P extension (PR #123271)

Craig Topper via llvm-commits llvm-commits at lists.llvm.org
Wed Feb 12 00:05:39 PST 2025


================
@@ -0,0 +1,1440 @@
+// NOTE: Assertions have been autogenerated by utils/update_mc_test_checks.py UTC_ARGS: --tool ./llvm-objdump --version 5
+# RUN: llvm-mc %s -triple=riscv32 -mattr=+experimental-p -riscv-no-aliases -show-encoding \
+# RUN:     | FileCheck -check-prefixes=CHECK-ASM %s
+
+clz a0, a1
+// CHECK-ASM: clz	a0, a1                          # encoding: [0x13,0x95,0x05,0x60]
+
+cls a1, a2
+// CHECK-ASM: cls	a1, a2                          # encoding: [0x93,0x15,0x36,0x60]
+
+sext.b a2, a3
+// CHECK-ASM: sext.b	a2, a3                          # encoding: [0x13,0x96,0x46,0x60]
+
+sext.h t0, t1
+// CHECK-ASM: sext.h	t0, t1                          # encoding: [0x93,0x12,0x53,0x60]
+
+abs a4, a5
+// CHECK-ASM: abs	a4, a5                          # encoding: [0x13,0x97,0x77,0x60]
+
+rev8 s0, s1
+// CHECK-ASM: rev8	s0, s1                          # encoding: [0x13,0xd4,0x84,0x69]
+
+rev s2, s3
+// CHECK-ASM: rev	s2, s3                          # encoding: [0x13,0xd9,0xf9,0x69]
+
+sh1add a0, a1, a2
+// CHECK-ASM: sh1add	a0, a1, a2                      # encoding: [0x33,0xa5,0xc5,0x20]
+
+pack s0, s1, s2
+// CHECK-ASM: pack	s0, s1, s2                      # encoding: [0x33,0xc4,0x24,0x09]
+
+min t0, t1, t2
+// CHECK-ASM: min	t0, t1, t2                      # encoding: [0xb3,0x42,0x73,0x0a]
+
+minu x1, x2, x3
+// CHECK-ASM: minu	ra, sp, gp                      # encoding: [0xb3,0x50,0x31,0x0a]
+
+max t3, t4, t5
+// CHECK-ASM: max	t3, t4, t5                      # encoding: [0x33,0xee,0xee,0x0b]
+
+maxu a4, a5, a6
+// CHECK-ASM: maxu	a4, a5, a6                      # encoding: [0x33,0xf7,0x07,0x0b]
+
+pslli.b a6, a7
+// CHECK-ASM: pslli.b	a6, a7                          # encoding: [0x1b,0xa8,0x88,0x80]
+
+pslli.h x1, x2
+// CHECK-ASM: pslli.h	ra, sp                          # encoding: [0x9b,0x20,0x01,0x81]
+
+psslai.h t0, t1
+// CHECK-ASM: psslai.h	t0, t1                          # encoding: [0x9b,0x22,0x03,0xd1]
+
+sslai a4, a5
+// CHECK-ASM: sslai	a4, a5                          # encoding: [0x1b,0xa7,0x07,0xd2]
+
+pli.h a5, 0x5
+// CHECK-ASM: pli.h	a5, 5                           # encoding: [0x9b,0xa7,0x02,0xb0]
+
+pli.b a6, 0x6
+// CHECK-ASM: pli.b	a6, 6                           # encoding: [0x1b,0x28,0x06,0xb4]
+
+psext.h.b a7, a0
+// CHECK-ASM: psext.h.b	a7, a0                  # encoding: [0x9b,0x28,0x45,0xe0]
+
+psabs.h a1, a2
+// CHECK-ASM: psabs.h	a1, a2                          # encoding: [0x9b,0x25,0x76,0xe0]
+
+psabs.b t0, t1
+// CHECK-ASM: psabs.b	t0, t1                          # encoding: [0x9b,0x22,0x73,0xe2]
+
+plui.h x3, 0x3
+// CHECK-ASM: plui.h	gp, 3                           # encoding: [0x9b,0xa1,0x01,0xf0]
+
+psll.hs a0, a1, a2
+// CHECK-ASM: psll.hs	a0, a1, a2                      # encoding: [0x1b,0xa5,0xc5,0x88]
+
+psll.bs a3, a4, a5
+// CHECK-ASM: psll.bs	a3, a4, a5                      # encoding: [0x9b,0x26,0xf7,0x8c]
+
+padd.hs t0, t1, t2
+// CHECK-ASM: padd.hs	t0, t1, t2                      # encoding: [0x9b,0x22,0x73,0x98]
+
+padd.bs x1, a1, a2
+// CHECK-ASM: padd.bs	ra, a1, a2                      # encoding: [0x9b,0xa0,0xc5,0x9c]
+
+pssha.hs a3, a4, a5
+// CHECK-ASM: pssha.hs	a3, a4, a5                      # encoding: [0x9b,0x26,0xf7,0xe8]
+
+ssha x3, a4, a5
+// CHECK-ASM: ssha	gp, a4, a5                      # encoding: [0x9b,0x21,0xf7,0xea]
+
+psshar.hs a6, a7, a0
+// CHECK-ASM: psshar.hs	a6, a7, a0              # encoding: [0x1b,0xa8,0xa8,0xf8]
+
+sshar x6, a7, a0
+// CHECK-ASM: sshar	t1, a7, a0                      # encoding: [0x1b,0xa3,0xa8,0xfa]
+
+psrli.b a1, a2
+// CHECK-ASM: psrli.b	a1, a2                          # encoding: [0x9b,0x45,0x86,0x80]
+
+psrli.h a0, a1
+// CHECK-ASM: psrli.h	a0, a1                          # encoding: [0x1b,0xc5,0x05,0x81]
+
+pusati.h a2, t1
+// CHECK-ASM: pusati.h	a2, t1                          # encoding: [0x1b,0x46,0x03,0xa1]
+
+usati a3, t2
+// CHECK-ASM: usati	a3, t2                          # encoding: [0x9b,0xc6,0x03,0xa2]
+
+psrai.b a4, a5
+// CHECK-ASM: psrai.b	a4, a5                          # encoding: [0x1b,0xc7,0x87,0xc0]
+
+psrai.h a6, a7
+// CHECK-ASM: psrai.h	a6, a7                          # encoding: [0x1b,0xc8,0x08,0xc1]
+
+psrari.h a0, a1
+// CHECK-ASM: psrari.h	a0, a1                          # encoding: [0x1b,0xc5,0x05,0xd1]
+
+srari a2, a3
+// CHECK-ASM: srari	a2, a3                          # encoding: [0x1b,0xc6,0x06,0xd2]
+
+psati.h a4, t0
+// CHECK-ASM: psati.h	a4, t0                          # encoding: [0x1b,0xc7,0x02,0xe1]
+
+sati a5, t1
+// CHECK-ASM: sati	a5, t1                          # encoding: [0x9b,0x47,0x03,0xe2]
+
+psrl.hs a6, a7, a1
+// CHECK-ASM: psrl.hs	a6, a7, a1                      # encoding: [0x1b,0xc8,0xb8,0x88]
+
+psrl.bs a1, a2, a3
+// CHECK-ASM: psrl.bs	a1, a2, a3                      # encoding: [0x9b,0x45,0xd6,0x8c]
+
+predsum.hs a4, a5, a6
+// CHECK-ASM: predsum.hs	a4, a5, a6              # encoding: [0x1b,0xc7,0x07,0x99]
+
+predsum.bs a7, a1, a1
+// CHECK-ASM: predsum.bs	a7, a1, a1              # encoding: [0x9b,0xc8,0xb5,0x9c]
+
+predsumu.hs t0, t1, t2
+// CHECK-ASM: predsumu.hs	t0, t1, t2              # encoding: [0x9b,0x42,0x73,0xb8]
+
+predsumu.bs t3, t4, t5
+// CHECK-ASM: predsumu.bs	t3, t4, t5              # encoding: [0x1b,0xce,0xee,0xbd]
+
+psra.hs x1, a1, a2
+// CHECK-ASM: psra.hs	ra, a1, a2                      # encoding: [0x9b,0xc0,0xc5,0xc8]
+
+psra.bs x2, a2, a3
+// CHECK-ASM: psra.bs	sp, a2, a3                      # encoding: [0x1b,0x41,0xd6,0xcc]
+
+psslai.h t0, t1
+// CHECK-ASM: psslai.h	t0, t1                          # encoding: [0x9b,0x22,0x03,0xd1]
+
+sslai a4, a5
+// CHECK-ASM: sslai	a4, a5                          # encoding: [0x1b,0xa7,0x07,0xd2]
+
+pli.h a5, 0x5
+// CHECK-ASM: pli.h	a5, 5                           # encoding: [0x9b,0xa7,0x02,0xb0]
+
+pli.b a6, 0x6
+// CHECK-ASM: pli.b	a6, 6                           # encoding: [0x1b,0x28,0x06,0xb4]
+
+psext.h.b a7, a0
+// CHECK-ASM: psext.h.b	a7, a0                  # encoding: [0x9b,0x28,0x45,0xe0]
+
+psabs.h a1, a2
+// CHECK-ASM: psabs.h	a1, a2                          # encoding: [0x9b,0x25,0x76,0xe0]
+
+psabs.b t0, t1
+// CHECK-ASM: psabs.b	t0, t1                          # encoding: [0x9b,0x22,0x73,0xe2]
+
+plui.h x3, 0x3
+// CHECK-ASM: plui.h	gp, 3                           # encoding: [0x9b,0xa1,0x01,0xf0]
+
+psll.hs a0, a1, a2
+// CHECK-ASM: psll.hs	a0, a1, a2                      # encoding: [0x1b,0xa5,0xc5,0x88]
+
+psll.bs a3, a4, a5
+// CHECK-ASM: psll.bs	a3, a4, a5                      # encoding: [0x9b,0x26,0xf7,0x8c]
+
+padd.hs t0, t1, t2
+// CHECK-ASM: padd.hs	t0, t1, t2                      # encoding: [0x9b,0x22,0x73,0x98]
+
+padd.bs x1, a1, a2
+// CHECK-ASM: padd.bs	ra, a1, a2                      # encoding: [0x9b,0xa0,0xc5,0x9c]
+
+pssha.hs a3, a4, a5
+// CHECK-ASM: pssha.hs	a3, a4, a5                      # encoding: [0x9b,0x26,0xf7,0xe8]
+
+ssha x3, a4, a5
+// CHECK-ASM: ssha	gp, a4, a5                      # encoding: [0x9b,0x21,0xf7,0xea]
+
+psshar.hs a6, a7, a0
+// CHECK-ASM: psshar.hs	a6, a7, a0              # encoding: [0x1b,0xa8,0xa8,0xf8]
+
+sshar x6, a7, a0
+// CHECK-ASM: sshar	t1, a7, a0                      # encoding: [0x1b,0xa3,0xa8,0xfa]
+
+psrli.b a1, a2
+// CHECK-ASM: psrli.b	a1, a2                          # encoding: [0x9b,0x45,0x86,0x80]
+
+psrli.h a0, a1
+// CHECK-ASM: psrli.h	a0, a1                          # encoding: [0x1b,0xc5,0x05,0x81]
+
+pusati.h a2, t1
+// CHECK-ASM: pusati.h	a2, t1                          # encoding: [0x1b,0x46,0x03,0xa1]
+
+usati a3, t2
+// CHECK-ASM: usati	a3, t2                          # encoding: [0x9b,0xc6,0x03,0xa2]
+
+psrai.b a4, a5
+// CHECK-ASM: psrai.b	a4, a5                          # encoding: [0x1b,0xc7,0x87,0xc0]
+
+psrai.h a6, a7
+// CHECK-ASM: psrai.h	a6, a7                          # encoding: [0x1b,0xc8,0x08,0xc1]
+
+psrari.h a0, a1
+// CHECK-ASM: psrari.h	a0, a1                          # encoding: [0x1b,0xc5,0x05,0xd1]
+
+srari a2, a3
+// CHECK-ASM: srari	a2, a3                          # encoding: [0x1b,0xc6,0x06,0xd2]
+
+psati.h a4, t0
+// CHECK-ASM: psati.h	a4, t0                          # encoding: [0x1b,0xc7,0x02,0xe1]
+
+sati a5, t1
+// CHECK-ASM: sati	a5, t1                          # encoding: [0x9b,0x47,0x03,0xe2]
+
+psrl.hs a6, a7, a1
+// CHECK-ASM: psrl.hs	a6, a7, a1                      # encoding: [0x1b,0xc8,0xb8,0x88]
+
+psrl.bs a1, a2, a3
+// CHECK-ASM: psrl.bs	a1, a2, a3                      # encoding: [0x9b,0x45,0xd6,0x8c]
+
+predsum.hs a4, a5, a6
+// CHECK-ASM: predsum.hs	a4, a5, a6              # encoding: [0x1b,0xc7,0x07,0x99]
+
+predsum.bs a7, a1, a1
+// CHECK-ASM: predsum.bs	a7, a1, a1              # encoding: [0x9b,0xc8,0xb5,0x9c]
+
+predsumu.hs t0, t1, t2
+// CHECK-ASM: predsumu.hs	t0, t1, t2              # encoding: [0x9b,0x42,0x73,0xb8]
+
+predsumu.bs t3, t4, t5
+// CHECK-ASM: predsumu.bs	t3, t4, t5              # encoding: [0x1b,0xce,0xee,0xbd]
+
+psra.hs x1, a1, a2
+// CHECK-ASM: psra.hs	ra, a1, a2                      # encoding: [0x9b,0xc0,0xc5,0xc8]
+
+psra.bs x2, a2, a3
+// CHECK-ASM: psra.bs	sp, a2, a3                      # encoding: [0x1b,0x41,0xd6,0xcc]
+
+padd.h t0, t1, t2
+// CHECK-ASM: padd.h	t0, t1, t2                      # encoding: [0xbb,0x02,0x73,0x80]
+
+padd.b x1, a1, a2
+// CHECK-ASM: padd.b	ra, a1, a2                      # encoding: [0xbb,0x80,0xc5,0x84]
+
+psadd.h t3, t4, t5
+// CHECK-ASM: psadd.h	t3, t4, t5                      # encoding: [0x3b,0x8e,0xee,0x91]
+
+sadd x6, a7, a0
+// CHECK-ASM: sadd	t1, a7, a0                      # encoding: [0x3b,0x83,0xa8,0x92]
+
+psadd.b t0, t1, t2
+// CHECK-ASM: psadd.b	t0, t1, t2                      # encoding: [0xbb,0x02,0x73,0x94]
+
+paadd.h t3, t4, t5
+// CHECK-ASM: paadd.h	t3, t4, t5                      # encoding: [0x3b,0x8e,0xee,0x99]
+
+aadd x6, a7, a0
+// CHECK-ASM: aadd	t1, a7, a0                      # encoding: [0x3b,0x83,0xa8,0x9a]
+
+paadd.b t0, t1, t2
+// CHECK-ASM: paadd.b	t0, t1, t2                      # encoding: [0xbb,0x02,0x73,0x9c]
+
+psaddu.h t3, t4, t5
+// CHECK-ASM: psaddu.h	t3, t4, t5                      # encoding: [0x3b,0x8e,0xee,0xb1]
+
+saddu x6, a7, a0
+// CHECK-ASM: saddu	t1, a7, a0                      # encoding: [0x3b,0x83,0xa8,0xb2]
+
+psaddu.b t0, t1, t2
+// CHECK-ASM: psaddu.b	t0, t1, t2                      # encoding: [0xbb,0x02,0x73,0xb4]
+
+paaddu.h t3, t4, t5
+// CHECK-ASM: paaddu.h	t3, t4, t5                      # encoding: [0x3b,0x8e,0xee,0xb9]
+
+aaddu x6, a7, a0
+// CHECK-ASM: aaddu	t1, a7, a0                      # encoding: [0x3b,0x83,0xa8,0xba]
+
+paaddu.b t0, t1, t2
+// CHECK-ASM: paaddu.b	t0, t1, t2                      # encoding: [0xbb,0x02,0x73,0xbc]
+
+psub.h t3, t4, t5
+// CHECK-ASM: psub.h	t3, t4, t5                      # encoding: [0x3b,0x8e,0xee,0xc1]
+
+psub.b t0, t1, t2
+// CHECK-ASM: psub.b	t0, t1, t2                      # encoding: [0xbb,0x02,0x73,0xc4]
+
+pdif.h t3, t4, t5
+// CHECK-ASM: pdif.h	t3, t4, t5                      # encoding: [0x3b,0x8e,0xee,0xc9]
+
+pdif.b t0, t1, t2
+// CHECK-ASM: pdif.b	t0, t1, t2                      # encoding: [0xbb,0x02,0x73,0xcc]
+
+pssub.h t3, t4, t5
+// CHECK-ASM: pssub.h	t3, t4, t5                      # encoding: [0x3b,0x8e,0xee,0xd1]
+
+ssub x6, a7, a0
+// CHECK-ASM: ssub	t1, a7, a0                      # encoding: [0x3b,0x83,0xa8,0xd2]
+
+pssub.b t0, t1, t2
+// CHECK-ASM: pssub.b	t0, t1, t2                      # encoding: [0xbb,0x02,0x73,0xd4]
+
+pasub.h t3, t4, t5
+// CHECK-ASM: pasub.h	t3, t4, t5                      # encoding: [0x3b,0x8e,0xee,0xd9]
+
+asub x6, a7, a0
+// CHECK-ASM: asub	t1, a7, a0                      # encoding: [0x3b,0x83,0xa8,0xda]
+
+pasub.b t0, t1, t2
+// CHECK-ASM: pasub.b	t0, t1, t2                      # encoding: [0xbb,0x02,0x73,0xdc]
+
+pdifu.h t3, t4, t5
+// CHECK-ASM: pdifu.h	t3, t4, t5                      # encoding: [0x3b,0x8e,0xee,0xe9]
+
+pdifu.b t0, t1, t2
+// CHECK-ASM: pdifu.b	t0, t1, t2                      # encoding: [0xbb,0x02,0x73,0xec]
+
+pssubu.h t3, t4, t5
+// CHECK-ASM: pssubu.h	t3, t4, t5                      # encoding: [0x3b,0x8e,0xee,0xf1]
+
+ssubu x6, a7, a0
+// CHECK-ASM: ssubu	t1, a7, a0                      # encoding: [0x3b,0x83,0xa8,0xf2]
+
+pssubu.b t0, t1, t2
+// CHECK-ASM: pssubu.b	t0, t1, t2                      # encoding: [0xbb,0x02,0x73,0xf4]
+
+pasubu.h t3, t4, t5
+// CHECK-ASM: pasubu.h	t3, t4, t5                      # encoding: [0x3b,0x8e,0xee,0xf9]
+
+asubu x6, a7, a0
+// CHECK-ASM: asubu	t1, a7, a0                      # encoding: [0x3b,0x83,0xa8,0xfa]
+
+pasubu.b t0, t1, t2
+// CHECK-ASM: pasubu.b	t0, t1, t2                      # encoding: [0xbb,0x02,0x73,0xfc]
+
+slx x3, a4, a5
+// CHECK-ASM: slx	gp, a4, a5                      # encoding: [0xbb,0x11,0xf7,0x8e]
+
+pmul.h.b01 t3, t4, t5
+// CHECK-ASM: pmul.h.b01	t3, t4, t5              # encoding: [0x3b,0x9e,0xee,0x91]
+
+mul.h01 t0, t1, t2
+// CHECK-ASM: mul.h01	t0, t1, t2                      # encoding: [0xbb,0x12,0x73,0x92]
+
+macc.h01 t3, t4, t5
+// CHECK-ASM: macc.h01	t3, t4, t5                      # encoding: [0x3b,0x9e,0xee,0x9b]
+
+mvm a0, a1, a2
+// CHECK-ASM: mvm	a0, a1, a2                      # encoding: [0x3b,0x95,0xc5,0xa8]
+
+mvmn x3, a4, a5
+// CHECK-ASM: mvmn	gp, a4, a5                      # encoding: [0xbb,0x11,0xf7,0xaa]
+
+merge t0, t1, t2
+// CHECK-ASM: merge	t0, t1, t2                      # encoding: [0xbb,0x12,0x73,0xac]
+
+srx x3, a4, a5
+// CHECK-ASM: srx	gp, a4, a5                      # encoding: [0xbb,0x11,0xf7,0xae]
+
+pmulu.h.b01 t3, t4, t5
+// CHECK-ASM: pmulu.h.b01	t3, t4, t5              # encoding: [0x3b,0x9e,0xee,0xb1]
+
+mulu.h01 t0, t1, t2
+// CHECK-ASM: mulu.h01	t0, t1, t2                      # encoding: [0xbb,0x12,0x73,0xb2]
+
+pdifsumu.b t3, t4, t5
+// CHECK-ASM: pdifsumu.b	t3, t4, t5              # encoding: [0x3b,0x9e,0xee,0xb5]
+
+maccu.h01 t3, t4, t5
+// CHECK-ASM: maccu.h01	t3, t4, t5              # encoding: [0x3b,0x9e,0xee,0xbb]
+
+pdifsumau.b t3, t4, t5
+// CHECK-ASM: pdifsumau.b	t3, t4, t5              # encoding: [0x3b,0x9e,0xee,0xbd]
+
+mul.h01 t0, t1, t2
+// CHECK-ASM: mul.h01	t0, t1, t2                      # encoding: [0xbb,0x12,0x73,0x92]
+
+macc.h01 t3, t4, t5
+// CHECK-ASM: macc.h01	t3, t4, t5                      # encoding: [0x3b,0x9e,0xee,0x9b]
+
+mulu.h01 a0, a1, a2
+// CHECK-ASM: mulu.h01	a0, a1, a2                      # encoding: [0x3b,0x95,0xc5,0xb2]
+
+maccu.h01 a3, a4, a5
+// CHECK-ASM: maccu.h01	a3, a4, a5              # encoding: [0xbb,0x16,0xf7,0xba]
+
+psh1add.h a0, a1, a2
+// CHECK-ASM: psh1add.h	a0, a1, a2              # encoding: [0x3b,0xa5,0xc5,0xa0]
+
+pssh1sadd.h a3, a4, a5
+// CHECK-ASM: pssh1sadd.h	a3, a4, a5              # encoding: [0xbb,0x26,0xf7,0xb0]
+
+ssh1sadd t0, t1, t2
+// CHECK-ASM: ssh1sadd	t0, t1, t2                      # encoding: [0xbb,0x22,0x73,0xa2]
+
+pmul.h.b00 s6, t4, s8
+// CHECK-ASM: pmul.h.b00	s6, t4, s8              # encoding: [0x3b,0xbb,0x8e,0x81]
+
+pmul.h.b11 t0, t4, s4
+// CHECK-ASM: pmul.h.b11	t0, t4, s4              # encoding: [0xbb,0xb2,0x4e,0x91]
+
+pmulu.h.b00 t2, s6, s8
+// CHECK-ASM: pmulu.h.b00	t2, s6, s8              # encoding: [0xbb,0x33,0x8b,0xa1]
+
+pmulu.h.b11 t2, s6, a0
+// CHECK-ASM: pmulu.h.b11	t2, s6, a0              # encoding: [0xbb,0x33,0xab,0xb0]
+
+pmulsu.h.b00 s4, a4, s8
+// CHECK-ASM: pmulsu.h.b00	s4, a4, s8              # encoding: [0x3b,0x3a,0x87,0xe1]
+
+pmulsu.h.b11 s6, a2, s4
+// CHECK-ASM: pmulsu.h.b11	s6, a2, s4              # encoding: [0x3b,0x3b,0x46,0xf1]
+
+mul.h00 a4, t4, s2
+// CHECK-ASM: mul.h00	a4, t4, s2                      # encoding: [0x3b,0xb7,0x2e,0x83]
+
+macc.h00 a4, a0, s0
+// CHECK-ASM: macc.h00	a4, a0, s0                      # encoding: [0x3b,0x37,0x85,0x8a]
+
+mul.h11 a0, a4, a0
+// CHECK-ASM: mul.h11	a0, a4, a0                      # encoding: [0x3b,0x35,0xa7,0x92]
+
+macc.h11 s6, a4, s4
+// CHECK-ASM: macc.h11	s6, a4, s4                      # encoding: [0x3b,0x3b,0x47,0x9b]
+
+mulu.h00 s6, s0, a0
+// CHECK-ASM: mulu.h00	s6, s0, a0                      # encoding: [0x3b,0x3b,0xa4,0xa2]
+
+maccu.h00 s0, s6, s0
+// CHECK-ASM: maccu.h00	s0, s6, s0              # encoding: [0x3b,0x34,0x8b,0xaa]
+
+mulu.h11 s0, s4, s6
+// CHECK-ASM: mulu.h11	s0, s4, s6                      # encoding: [0x3b,0x34,0x6a,0xb3]
+
+maccu.h11 s0, t4, t4
+// CHECK-ASM: maccu.h11	s0, t4, t4              # encoding: [0x3b,0xb4,0xde,0xbb]
+
+mulsu.h00 a4, s4, s6
+// CHECK-ASM: mulsu.h00	a4, s4, s6              # encoding: [0x3b,0x37,0x6a,0xe3]
+
+maccsu.h00 s4, s4, s0
+// CHECK-ASM: maccsu.h00	s4, s4, s0              # encoding: [0x3b,0x3a,0x8a,0xea]
+
+mulsu.h11 s8, s4, s0
+// CHECK-ASM: mulsu.h11	s8, s4, s0              # encoding: [0x3b,0x3c,0x8a,0xf2]
+
+maccsu.h11 s0, a2, s6
+// CHECK-ASM: maccsu.h11	s0, a2, s6              # encoding: [0x3b,0x34,0x66,0xfb]
+
+ppack.h t1, a2, t5
+// CHECK-ASM: ppack.h	t1, a2, t5                      # encoding: [0x3b,0x43,0xe6,0x81]
+
+ppackbt.h t5, t3, s2
+// CHECK-ASM: ppackbt.h	t5, t3, s2              # encoding: [0x3b,0x4f,0x2e,0x91]
+
+ppacktb.h t1, t1, s0
+// CHECK-ASM: ppacktb.h	t1, t1, s0              # encoding: [0x3b,0x43,0x83,0xa0]
+
+ppackt.h t3, s0, s0
+// CHECK-ASM: ppackt.h	t3, s0, s0                      # encoding: [0x3b,0x4e,0x84,0xb0]
+
+packbt t1, t1, s2
+// CHECK-ASM: packbt	t1, t1, s2                      # encoding: [0x3b,0x43,0x23,0x93]
+
+packtb t5, s0, a2
+// CHECK-ASM: packtb	t5, s0, a2                      # encoding: [0x3b,0x4f,0xc4,0xa2]
+
+packt a4, t5, t5
+// CHECK-ASM: packt	a4, t5, t5                      # encoding: [0x3b,0x47,0xef,0xb3]
+
+pm2add.h t3, t1, s0
+// CHECK-ASM: pm2add.h	t3, t1, s0                      # encoding: [0x3b,0x5e,0x83,0x80]
+
+pm4add.b t1, s2, t5
+// CHECK-ASM: pm4add.b	t1, s2, t5                      # encoding: [0x3b,0x53,0xe9,0x85]
+
+pm2adda.h t1, s2, a4
+// CHECK-ASM: pm2adda.h	t1, s2, a4              # encoding: [0x3b,0x53,0xe9,0x88]
+
+pm4adda.b t3, a0, t5
+// CHECK-ASM: pm4adda.b	t3, a0, t5              # encoding: [0x3b,0x5e,0xe5,0x8d]
+
+pm2add.hx s0, t5, a4
+// CHECK-ASM: pm2add.hx	s0, t5, a4              # encoding: [0x3b,0x54,0xef,0x90]
+
+pm2adda.hx a0, a0, t1
+// CHECK-ASM: pm2adda.hx	a0, a0, t1              # encoding: [0x3b,0x55,0x65,0x98]
+
+pm2addu.h s2, t5, a2
+// CHECK-ASM: pm2addu.h	s2, t5, a2              # encoding: [0x3b,0x59,0xcf,0xa0]
+
+pm4addu.b t5, s0, t1
+// CHECK-ASM: pm4addu.b	t5, s0, t1              # encoding: [0x3b,0x5f,0x64,0xa4]
+
+pm2addau.h t3, t1, t5
+// CHECK-ASM: pm2addau.h	t3, t1, t5              # encoding: [0x3b,0x5e,0xe3,0xa9]
+
+pm4addau.b a4, t3, a0
+// CHECK-ASM: pm4addau.b	a4, t3, a0              # encoding: [0x3b,0x57,0xae,0xac]
+
+pmq2add.h t1, a2, t1
+// CHECK-ASM: pmq2add.h	t1, a2, t1              # encoding: [0x3b,0x53,0x66,0xb0]
+
+pmqr2add.h a2, a4, s2
+// CHECK-ASM: pmqr2add.h	a2, a4, s2              # encoding: [0x3b,0x56,0x27,0xb5]
+
+pmq2adda.h t5, t3, t1
+// CHECK-ASM: pmq2adda.h	t5, t3, t1              # encoding: [0x3b,0x5f,0x6e,0xb8]
+
+pmqr2adda.h t1, s0, a2
+// CHECK-ASM: pmqr2adda.h	t1, s0, a2              # encoding: [0x3b,0x53,0xc4,0xbc]
+
+pm2sub.h t1, a0, a4
+// CHECK-ASM: pm2sub.h	t1, a0, a4                      # encoding: [0x3b,0x53,0xe5,0xc0]
+
+pm2sadd.h s2, s2, t3
+// CHECK-ASM: pm2sadd.h	s2, s2, t3              # encoding: [0x3b,0x59,0xc9,0xc5]
+
+pm2suba.h s0, s0, t3
+// CHECK-ASM: pm2suba.h	s0, s0, t3              # encoding: [0x3b,0x54,0xc4,0xc9]
+
+pm2sub.hx a2, a2, a0
+// CHECK-ASM: pm2sub.hx	a2, a2, a0              # encoding: [0x3b,0x56,0xa6,0xd0]
+
+pm2sadd.hx t5, s2, a0
+// CHECK-ASM: pm2sadd.hx	t5, s2, a0              # encoding: [0x3b,0x5f,0xa9,0xd4]
+
+pm2suba.hx a4, a2, t5
+// CHECK-ASM: pm2suba.hx	a4, a2, t5              # encoding: [0x3b,0x57,0xe6,0xd9]
+
+pm2addsu.h s0, s0, s2
+// CHECK-ASM: pm2addsu.h	s0, s0, s2              # encoding: [0x3b,0x54,0x24,0xe1]
+
+pm4addsu.b a0, s0, t3
+// CHECK-ASM: pm4addsu.b	a0, s0, t3              # encoding: [0x3b,0x55,0xc4,0xe5]
+
+pm2addasu.h a4, t1, a2
+// CHECK-ASM: pm2addasu.h	a4, t1, a2              # encoding: [0x3b,0x57,0xc3,0xe8]
+
+pm4addasu.b s2, s0, a2
+// CHECK-ASM: pm4addasu.b	s2, s0, a2              # encoding: [0x3b,0x59,0xc4,0xec]
+
+mqacc.h01 a4, t1, a0
+// CHECK-ASM: mqacc.h01	a4, t1, a0              # encoding: [0x3b,0x57,0xa3,0xb8]
+
+mqracc.h01 s0, a0, t5
+// CHECK-ASM: mqracc.h01	s0, a0, t5              # encoding: [0x3b,0x54,0xe5,0xbd]
+
+pas.hx t5, s2, t5
+// CHECK-ASM: pas.hx	t5, s2, t5                      # encoding: [0x3b,0x6f,0xe9,0x81]
+
+psa.hx s0, t1, t3
+// CHECK-ASM: psa.hx	s0, t1, t3                      # encoding: [0x3b,0x64,0xc3,0x85]
+
+psas.hx t5, s2, a2
+// CHECK-ASM: psas.hx	t5, s2, a2                      # encoding: [0x3b,0x6f,0xc9,0x90]
+
+pssa.hx s2, t3, t5
+// CHECK-ASM: pssa.hx	s2, t3, t5                      # encoding: [0x3b,0x69,0xee,0x95]
+
+pmseq.h a0, t1, s0
+// CHECK-ASM: pmseq.h	a0, t1, s0                      # encoding: [0x3b,0x65,0x83,0xc0]
+
+pmseq.b s0, s2, s0
+// CHECK-ASM: pmseq.b	s0, s2, s0                      # encoding: [0x3b,0x64,0x89,0xc4]
+
+pmslt.h t3, a2, a4
+// CHECK-ASM: pmslt.h	t3, a2, a4                      # encoding: [0x3b,0x6e,0xe6,0xd0]
+
+pmslt.b t5, a4, t1
+// CHECK-ASM: pmslt.b	t5, a4, t1                      # encoding: [0x3b,0x6f,0x67,0xd4]
+
+pmsltu.h s2, s0, s2
+// CHECK-ASM: pmsltu.h	s2, s0, s2                      # encoding: [0x3b,0x69,0x24,0xd9]
+
+pmsltu.b s0, s2, t5
+// CHECK-ASM: pmsltu.b	s0, s2, t5                      # encoding: [0x3b,0x64,0xe9,0xdd]
+
+pmin.h s2, t3, s2
+// CHECK-ASM: pmin.h	s2, t3, s2                      # encoding: [0x3b,0x69,0x2e,0xe1]
+
+pmin.b a2, a2, t5
+// CHECK-ASM: pmin.b	a2, a2, t5                      # encoding: [0x3b,0x66,0xe6,0xe5]
+
+pminu.h a0, a4, a2
+// CHECK-ASM: pminu.h	a0, a4, a2                      # encoding: [0x3b,0x65,0xc7,0xe8]
+
+pminu.b a4, t3, s2
+// CHECK-ASM: pminu.b	a4, t3, s2                      # encoding: [0x3b,0x67,0x2e,0xed]
+
+pmax.h a4, s2, a0
+// CHECK-ASM: pmax.h	a4, s2, a0                      # encoding: [0x3b,0x67,0xa9,0xf0]
+
+pmax.b t1, s0, s0
+// CHECK-ASM: pmax.b	t1, s0, s0                      # encoding: [0x3b,0x63,0x84,0xf4]
+
+pmaxu.h a0, s0, s0
+// CHECK-ASM: pmaxu.h	a0, s0, s0                      # encoding: [0x3b,0x65,0x84,0xf8]
+
+pmaxu.b t3, a0, t1
+// CHECK-ASM: pmaxu.b	t3, a0, t1                      # encoding: [0x3b,0x6e,0x65,0xfc]
+
+mseq a4, t1, s0
+// CHECK-ASM: mseq	a4, t1, s0                      # encoding: [0x3b,0x67,0x83,0xc2]
+
+mslt t5, t5, t1
+// CHECK-ASM: mslt	t5, t5, t1                      # encoding: [0x3b,0x6f,0x6f,0xd2]
+
+msltu s2, a0, t3
+// CHECK-ASM: msltu	s2, a0, t3                      # encoding: [0x3b,0x69,0xc5,0xdb]
+
+pmulh.h s0, t3, t3
+// CHECK-ASM: pmulh.h	s0, t3, t3                      # encoding: [0x3b,0x74,0xce,0x81]
+
+pmulhr.h t1, t5, s0
+// CHECK-ASM: pmulhr.h	t1, t5, s0                      # encoding: [0x3b,0x73,0x8f,0x84]
+
+pmhacc.h s0, t5, s2
+// CHECK-ASM: pmhacc.h	s0, t5, s2                      # encoding: [0x3b,0x74,0x2f,0x89]
+
+pmhracc.h a4, t3, a2
+// CHECK-ASM: pmhracc.h	a4, t3, a2              # encoding: [0x3b,0x77,0xce,0x8c]
+
+pmulhu.h a4, t5, a2
+// CHECK-ASM: pmulhu.h	a4, t5, a2                      # encoding: [0x3b,0x77,0xcf,0x90]
+
+pmulhru.h a4, a2, a4
+// CHECK-ASM: pmulhru.h	a4, a2, a4              # encoding: [0x3b,0x77,0xe6,0x94]
+
+pmhaccu.h a4, t1, t3
+// CHECK-ASM: pmhaccu.h	a4, t1, t3              # encoding: [0x3b,0x77,0xc3,0x99]
+
+pmhraccu.h s2, s0, t1
+// CHECK-ASM: pmhraccu.h	s2, s0, t1              # encoding: [0x3b,0x79,0x64,0x9c]
+
+pmulh.h.b0 a0, t5, a4
+// CHECK-ASM: pmulh.h.b0	a0, t5, a4              # encoding: [0x3b,0x75,0xef,0xa0]
+
+pmulhsu.h.b0 s0, a4, s2
+// CHECK-ASM: pmulhsu.h.b0	s0, a4, s2              # encoding: [0x3b,0x74,0x27,0xa5]
+
+pmhaccu.h.b0 s0, a0, t5
+// CHECK-ASM: pmhaccu.h.b0	s0, a0, t5              # encoding: [0x3b,0x74,0xe5,0xa9]
+
+pmhaccsu.h.b0 t3, s0, a4
+// CHECK-ASM: pmhaccsu.h.b0	t3, s0, a4              # encoding: [0x3b,0x7e,0xe4,0xac]
+
+pmulh.h.b1 a0, a4, s2
+// CHECK-ASM: pmulh.h.b1	a0, a4, s2              # encoding: [0x3b,0x75,0x27,0xb1]
+
+pmulhsu.h.b1 t5, t3, t1
+// CHECK-ASM: pmulhsu.h.b1	t5, t3, t1              # encoding: [0x3b,0x7f,0x6e,0xb4]
+
+pmhacc.h.b1 t1, t5, a2
+// CHECK-ASM: pmhacc.h.b1	t1, t5, a2              # encoding: [0x3b,0x73,0xcf,0xb8]
+
+pmhaccsu.h.b1 a2, a0, a4
+// CHECK-ASM: pmhaccsu.h.b1	a2, a0, a4              # encoding: [0x3b,0x76,0xe5,0xbc]
+
+pmulhsu.h s0, a0, t1
+// CHECK-ASM: pmulhsu.h	s0, a0, t1              # encoding: [0x3b,0x74,0x65,0xc0]
+
+pmulhrsu.h t3, t5, a4
+// CHECK-ASM: pmulhrsu.h	t3, t5, a4              # encoding: [0x3b,0x7e,0xef,0xc4]
+
+pmhaccsu.h s0, s0, a4
+// CHECK-ASM: pmhaccsu.h	s0, s0, a4              # encoding: [0x3b,0x74,0xe4,0xc8]
+
+pmhraccsu.h a2, a2, a0
+// CHECK-ASM: pmhraccsu.h	a2, a2, a0              # encoding: [0x3b,0x76,0xa6,0xcc]
+
+pmulq.h a0, t1, t1
+// CHECK-ASM: pmulq.h	a0, t1, t1                      # encoding: [0x3b,0x75,0x63,0xd0]
+
+pmulqr.h s2, s0, s2
+// CHECK-ASM: pmulqr.h	s2, s0, s2                      # encoding: [0x3b,0x79,0x24,0xd5]
+
+mulhr a4, s2, t5
+// CHECK-ASM: mulhr	a4, s2, t5                      # encoding: [0x3b,0x77,0xe9,0x87]
+
+mhacc t1, s0, a2
+// CHECK-ASM: mhacc	t1, s0, a2                      # encoding: [0x3b,0x73,0xc4,0x8a]
+
+mhracc t1, t5, s0
+// CHECK-ASM: mhracc	t1, t5, s0                      # encoding: [0x3b,0x73,0x8f,0x8e]
+
+mulhru t1, t5, s0
+// CHECK-ASM: mulhru	t1, t5, s0                      # encoding: [0x3b,0x73,0x8f,0x96]
+
+mhaccu t3, a2, s2
+// CHECK-ASM: mhaccu	t3, a2, s2                      # encoding: [0x3b,0x7e,0x26,0x9b]
+
+mhraccu a0, t1, a4
+// CHECK-ASM: mhraccu	a0, t1, a4                      # encoding: [0x3b,0x75,0xe3,0x9e]
+
+mulh.h0 t3, a4, t1
+// CHECK-ASM: mulh.h0	t3, a4, t1                      # encoding: [0x3b,0x7e,0x67,0xa2]
+
+mulhsu.h0 t1, a2, a0
+// CHECK-ASM: mulhsu.h0	t1, a2, a0              # encoding: [0x3b,0x73,0xa6,0xa6]
+
+mhacc.h0 s0, a2, t3
+// CHECK-ASM: mhacc.h0	s0, a2, t3                      # encoding: [0x3b,0x74,0xc6,0xab]
+
+mhaccsu.h0 a2, t1, s0
+// CHECK-ASM: mhaccsu.h0	a2, t1, s0              # encoding: [0x3b,0x76,0x83,0xae]
+
+mulh.h1 t1, t1, t3
+// CHECK-ASM: mulh.h1	t1, t1, t3                      # encoding: [0x3b,0x73,0xc3,0xb3]
+
+mulhsu.h1 t3, a2, t1
+// CHECK-ASM: mulhsu.h1	t3, a2, t1              # encoding: [0x3b,0x7e,0x66,0xb6]
+
+mhacc.h1 t3, a2, a0
+// CHECK-ASM: mhacc.h1	t3, a2, a0                      # encoding: [0x3b,0x7e,0xa6,0xba]
+
+mhaccsu.h1 s0, s2, s0
+// CHECK-ASM: mhaccsu.h1	s0, s2, s0              # encoding: [0x3b,0x74,0x89,0xbe]
+
+mulhrsu.h t5, a4, t5
+// CHECK-ASM: mulhrsu.h	t5, a4, t5              # encoding: [0x3b,0x7f,0xe7,0xc7]
+
+mhaccsu a0, a2, s2
+// CHECK-ASM: mhaccsu	a0, a2, s2                      # encoding: [0x3b,0x75,0x26,0xcb]
+
+mhraccsu a0, a0, t1
+// CHECK-ASM: mhraccsu	a0, a0, t1                      # encoding: [0x3b,0x75,0x65,0xce]
+
+mulq t1, a2, a2
+// CHECK-ASM: mulq	t1, a2, a2                      # encoding: [0x3b,0x73,0xc6,0xd2]
+
+mulqr a4, a4, t3
+// CHECK-ASM: mulqr	a4, a4, t3                      # encoding: [0x3b,0x77,0xc7,0xd7]
+
+mqacc.h00 a2, t3, t3
+// CHECK-ASM: mqacc.h00	a2, t3, t3              # encoding: [0x3b,0x76,0xce,0xe9]
+
+mqracc.h00 t5, a4, t3
+// CHECK-ASM: mqracc.h00	t5, a4, t3              # encoding: [0x3b,0x7f,0xc7,0xed]
+
+mqacc.h11 t5, t5, s0
+// CHECK-ASM: mqacc.h11	t5, t5, s0              # encoding: [0x3b,0x7f,0x8f,0xf8]
+
+mqracc.h11 s0, t5, s2
+// CHECK-ASM: mqracc.h11	s0, t5, s2              # encoding: [0x3b,0x74,0x2f,0xfd]
+
+pwslli.b a0, t1
+// CHECK-ASM: pwslli.b	a0, t1                          # encoding: [0x1b,0x4a,0x03,0x01]
+
+pwslli.h s0, a0
+// CHECK-ASM: pwslli.h	s0, a0                          # encoding: [0x1b,0x48,0x05,0x12]
+
+wslli s2, t3
+// CHECK-ASM: wslli	s2, t3                          # encoding: [0x1b,0x42,0x0e,0x24]
+
+pwslai.b t5, t5
+// CHECK-ASM: pwslai.b	t5, t5                          # encoding: [0x1b,0x4e,0x0f,0x41]
+
+pwslai.h t5, a4
+// CHECK-ASM: pwslai.h	t5, a4                          # encoding: [0x1b,0x4e,0x07,0x42]
+
+wslai t1, a2
+// CHECK-ASM: wslai	t1, a2                          # encoding: [0x1b,0x46,0x06,0x44]
+
+pli.dh s0, 0x7
+// CHECK-ASM: pli.dh	s0, 7                           # encoding: [0x1b,0xa4,0x03,0x30]
+
+pli.db a2, 0x1
+// CHECK-ASM: pli.db	a2, 1                           # encoding: [0x1b,0x26,0x01,0x34]
+
+plui.dh t5, 0x5
+// CHECK-ASM: plui.dh	t5, 5                           # encoding: [0x1b,0xaf,0x02,0x70]
+
+pwslli.bs t3, t1, s0
+// CHECK-ASM: pwslli.bs	t3, t1, s0              # encoding: [0x1b,0x2c,0x83,0x08]
+
+pwsll.hs s0, a4, t1
+// CHECK-ASM: pwsll.hs	s0, a4, t1                      # encoding: [0x1b,0x28,0x67,0x0a]
+
+wsll a0, s0, s2
+// CHECK-ASM: wsll	a0, s0, s2                      # encoding: [0x1b,0x2a,0x24,0x0f]
+
+pwsla.bs s0, s0, s0
+// CHECK-ASM: pwsla.bs	s0, s0, s0                      # encoding: [0x1b,0x28,0x84,0x48]
+
+pwsla.hs a4, a2, t5
+// CHECK-ASM: pwsla.hs	a4, a2, t5                      # encoding: [0x1b,0x2e,0xe6,0x4b]
+
+wsla s0, a0, s2
+// CHECK-ASM: wsla	s0, a0, s2                      # encoding: [0x1b,0x28,0x25,0x4f]
+
+wzip8p t1, s2, a2
+// CHECK-ASM: wzip8p	t1, s2, a2                      # encoding: [0x1b,0x26,0xc9,0x78]
+
+wzip16p s2, t3, s2
+// CHECK-ASM: wzip16p	s2, t3, s2                      # encoding: [0x1b,0x22,0x2e,0x7b]
+
+pwadd.h a4, a2, a0
+// CHECK-ASM: pwadd.h	a4, a2, a0                      # encoding: [0xbb,0x2e,0xa6,0x00]
+
+wadd t1, t5, t5
+// CHECK-ASM: wadd	t1, t5, t5                      # encoding: [0xbb,0x26,0xef,0x03]
+
+pwadd.b s0, t3, a4
+// CHECK-ASM: pwadd.b	s0, t3, a4                      # encoding: [0xbb,0x28,0xee,0x04]
+
+pw2wadd.h t3, t3, a4
+// CHECK-ASM: pw2wadd.h	t3, t3, a4              # encoding: [0xbb,0x2c,0xee,0x06]
+
+pwadda.h t1, t3, s2
+// CHECK-ASM: pwadda.h	t1, t3, s2                      # encoding: [0xbb,0x26,0x2e,0x09]
+
+wadda s2, t1, a0
+// CHECK-ASM: wadda	s2, t1, a0                      # encoding: [0xbb,0x22,0xa3,0x0a]
+
+pwadda.b a2, a2, s2
+// CHECK-ASM: pwadda.b	a2, a2, s2                      # encoding: [0xbb,0x2c,0x26,0x0d]
+
+pw2wadda.h t3, t1, t1
+// CHECK-ASM: pw2wadda.h	t3, t1, t1              # encoding: [0xbb,0x2c,0x63,0x0e]
+
+pwaddu.h a2, t1, a4
+// CHECK-ASM: pwaddu.h	a2, t1, a4                      # encoding: [0xbb,0x2c,0xe3,0x10]
+
+waddu t1, s0, t1
+// CHECK-ASM: waddu	t1, s0, t1                      # encoding: [0xbb,0x26,0x64,0x12]
+
+pwaddu.b s2, a0, t3
+// CHECK-ASM: pwaddu.b	s2, a0, t3                      # encoding: [0xbb,0x22,0xc5,0x15]
+
+pw2wadd.hx a0, s0, t1
+// CHECK-ASM: pw2wadd.hx	a0, s0, t1              # encoding: [0xbb,0x2a,0x64,0x16]
+
+pwaddau.h t1, t5, t3
+// CHECK-ASM: pwaddau.h	t1, t5, t3              # encoding: [0xbb,0x26,0xcf,0x19]
+
+waddau t3, s0, s0
+// CHECK-ASM: waddau	t3, s0, s0                      # encoding: [0xbb,0x2c,0x84,0x1a]
+
+pwaddau.b a0, a0, t1
+// CHECK-ASM: pwaddau.b	a0, a0, t1              # encoding: [0xbb,0x2a,0x65,0x1c]
+
+pw2wadda.hx a4, a2, t3
+// CHECK-ASM: pw2wadda.hx	a4, a2, t3              # encoding: [0xbb,0x2e,0xc6,0x1f]
+
+pwmul.h s2, t1, a0
+// CHECK-ASM: pwmul.h	s2, t1, a0                      # encoding: [0xbb,0x22,0xa3,0x20]
+
+wmul t3, a2, t5
+// CHECK-ASM: wmul	t3, a2, t5                      # encoding: [0xbb,0x2c,0xe6,0x23]
+
+pwmul.b a0, s0, s2
+// CHECK-ASM: pwmul.b	a0, s0, s2                      # encoding: [0xbb,0x2a,0x24,0x25]
+
+pw2waddu.h s2, s2, a0
+// CHECK-ASM: pw2waddu.h	s2, s2, a0              # encoding: [0xbb,0x22,0xa9,0x26]
+
+pwmacc.h s0, a2, a2
+// CHECK-ASM: pwmacc.h	s0, a2, a2                      # encoding: [0xbb,0x28,0xc6,0x28]
+
+wmacc a0, a2, a2
+// CHECK-ASM: wmacc	a0, a2, a2                      # encoding: [0xbb,0x2a,0xc6,0x2a]
+
+pm2waddau.h t5, a2, t5
+// CHECK-ASM: pm2waddau.h	t5, a2, t5              # encoding: [0xbb,0x2e,0xe6,0x2f]
+
+pwmulu.h a2, a0, t5
+// CHECK-ASM: pwmulu.h	a2, a0, t5                      # encoding: [0xbb,0x2c,0xe5,0x31]
+
+wmulu s2, a0, t3
+// CHECK-ASM: wmulu	s2, a0, t3                      # encoding: [0xbb,0x22,0xc5,0x33]
+
+pwmulu.b a2, a4, a2
+// CHECK-ASM: pwmulu.b	a2, a4, a2                      # encoding: [0xbb,0x2c,0xc7,0x34]
+
+pwmaccu.h t1, a4, a2
+// CHECK-ASM: pwmaccu.h	t1, a4, a2              # encoding: [0xbb,0x26,0xc7,0x38]
+
+wmaccu a2, a0, t1
+// CHECK-ASM: wmaccu	a2, a0, t1                      # encoding: [0xbb,0x2c,0x65,0x3a]
+
+pwsub.h s0, s2, t3
+// CHECK-ASM: pwsub.h	s0, s2, t3                      # encoding: [0xbb,0x28,0xc9,0x41]
+
+wsub t1, s2, a4
+// CHECK-ASM: wsub	t1, s2, a4                      # encoding: [0xbb,0x26,0xe9,0x42]
+
+pwsub.b a4, s2, s2
+// CHECK-ASM: pwsub.b	a4, s2, s2                      # encoding: [0xbb,0x2e,0x29,0x45]
+
+pw2wsub.h t1, a4, t3
+// CHECK-ASM: pw2wsub.h	t1, a4, t3              # encoding: [0xbb,0x26,0xc7,0x47]
+
+pwsuba.h a4, t5, t1
+// CHECK-ASM: pwsuba.h	a4, t5, t1                      # encoding: [0xbb,0x2e,0x6f,0x48]
+
+wsuba a0, s0, t5
+// CHECK-ASM: wsuba	a0, s0, t5                      # encoding: [0xbb,0x2a,0xe4,0x4b]
+
+pwsuba.b a0, a2, s2
+// CHECK-ASM: pwsuba.b	a0, a2, s2                      # encoding: [0xbb,0x2a,0x26,0x4d]
+
+pw2wsuba.h t5, s0, s2
+// CHECK-ASM: pw2wsuba.h	t5, s0, s2              # encoding: [0xbb,0x2e,0x24,0x4f]
+
+pwsubu.h t5, s2, a2
+// CHECK-ASM: pwsubu.h	t5, s2, a2                      # encoding: [0xbb,0x2e,0xc9,0x50]
+
+wsubu a2, a4, a0
+// CHECK-ASM: wsubu	a2, a4, a0                      # encoding: [0xbb,0x2c,0xa7,0x52]
+
+pwsubu.b a2, a2, t5
+// CHECK-ASM: pwsubu.b	a2, a2, t5                      # encoding: [0xbb,0x2c,0xe6,0x55]
+
+pw2wsub.hx t5, a2, a0
+// CHECK-ASM: pw2wsub.hx	t5, a2, a0              # encoding: [0xbb,0x2e,0xa6,0x56]
+
+pwsubau.h t5, s0, s2
+// CHECK-ASM: pwsubau.h	t5, s0, s2              # encoding: [0xbb,0x2e,0x24,0x59]
+
+wsubau t5, a0, t1
+// CHECK-ASM: wsubau	t5, a0, t1                      # encoding: [0xbb,0x2e,0x65,0x5a]
+
+pwsubau.b a2, a0, a0
+// CHECK-ASM: pwsubau.b	a2, a0, a0              # encoding: [0xbb,0x2c,0xa5,0x5c]
+
+pw2wsuba.hx a2, a2, t5
+// CHECK-ASM: pw2wsuba.hx	a2, a2, t5              # encoding: [0xbb,0x2c,0xe6,0x5f]
+
+pwmulsu.h s0, a2, t3
+// CHECK-ASM: pwmulsu.h	s0, a2, t3              # encoding: [0xbb,0x28,0xc6,0x61]
+
+wmulsu a0, s2, a0
+// CHECK-ASM: wmulsu	a0, s2, a0                      # encoding: [0xbb,0x2a,0xa9,0x62]
+
+pwmulsu.b t3, t5, t1
+// CHECK-ASM: pwmulsu.b	t3, t5, t1              # encoding: [0xbb,0x2c,0x6f,0x64]
+
+pm2waddsu.h a4, a2, s2
+// CHECK-ASM: pm2waddsu.h	a4, a2, s2              # encoding: [0xbb,0x2e,0x26,0x67]
+
+pwmaccsu.h t5, s2, a2
+// CHECK-ASM: pwmaccsu.h	t5, s2, a2              # encoding: [0xbb,0x2e,0xc9,0x68]
+
+wmaccsu t3, s0, a4
+// CHECK-ASM: wmaccsu	t3, s0, a4                      # encoding: [0xbb,0x2c,0xe4,0x6a]
+
+pm2waddasu.h t3, t5, a0
+// CHECK-ASM: pm2waddasu.h	t3, t5, a0              # encoding: [0xbb,0x2c,0xaf,0x6e]
+
+pmqwacc.h t5, t5, a2
+// CHECK-ASM: pmqwacc.h	t5, t5, a2              # encoding: [0xbb,0x2e,0xcf,0x78]
+
+pmqwacc s2, a4, a2
+// CHECK-ASM: pmqwacc	s2, a4, a2                      # encoding: [0xbb,0x22,0xc7,0x7a]
+
+pmqrwacc.h a4, t3, a4
+// CHECK-ASM: pmqrwacc.h	a4, t3, a4              # encoding: [0xbb,0x2e,0xee,0x7c]
+
+pmqrwacc s0, s2, t5
+// CHECK-ASM: pmqrwacc	s0, s2, t5                      # encoding: [0xbb,0x28,0xe9,0x7f]
+
+predsum.dhs s0, t3, a0
+// CHECK-ASM: predsum.dhs	s0, t3, a0              # encoding: [0x1b,0x44,0xac,0x08]
+
+predsum.dbs a2, s0, t3
+// CHECK-ASM: predsum.dbs	a2, s0, t3              # encoding: [0x1b,0x46,0xc8,0x0d]
+
+predsumu.dhs a2, a2, t3
+// CHECK-ASM: predsumu.dhs	a2, a2, t3              # encoding: [0x1b,0x46,0xcc,0x39]
+
+predsumu.dbs a2, a0, s0
+// CHECK-ASM: predsumu.dbs	a2, a0, s0              # encoding: [0x1b,0x46,0x8a,0x3c]
+
+pnsrli.b a2, a0
+// CHECK-ASM: pnsrli.b	a2, a0                          # encoding: [0x1b,0xc6,0x0a,0x01]
+
+pnsrli.h a0, t3
+// CHECK-ASM: pnsrli.h	a0, t3                          # encoding: [0x1b,0xc5,0x0c,0x02]
+
+nsrli a2, a0
+// CHECK-ASM: nsrli	a2, a0                          # encoding: [0x1b,0xc6,0x0a,0x04]
+
+pnclipiu.b a4, t3
+// CHECK-ASM: pnclipiu.b	a4, t3                  # encoding: [0x1b,0xc7,0x0c,0x21]
+
+pnclipiu.h t1, s2
+// CHECK-ASM: pnclipiu.h	t1, s2                  # encoding: [0x1b,0xc3,0x02,0x22]
+
+nclipiu s0, a2
+// CHECK-ASM: nclipiu	s0, a2                          # encoding: [0x1b,0xc4,0x0c,0x24]
+
+pnclipriu.b s2, s0
+// CHECK-ASM: pnclipriu.b	s2, s0                  # encoding: [0x1b,0xc9,0x08,0x31]
+
+pnclipriu.h s0, s0
+// CHECK-ASM: pnclipriu.h	s0, s0                  # encoding: [0x1b,0xc4,0x08,0x32]
+
+nclipriu t3, t3
+// CHECK-ASM: nclipriu	t3, t3                          # encoding: [0x1b,0xce,0x0c,0x34]
+
+pnsrai.b s2, t5
+// CHECK-ASM: pnsrai.b	s2, t5                          # encoding: [0x1b,0xc9,0x0e,0x41]
+
+pnsrai.h s0, a0
+// CHECK-ASM: pnsrai.h	s0, a0                          # encoding: [0x1b,0xc4,0x0a,0x42]
+
+nsrai a4, t3
+// CHECK-ASM: nsrai	a4, t3                          # encoding: [0x1b,0xc7,0x0c,0x44]
+
+pnsari.b t5, t5
+// CHECK-ASM: pnsari.b	t5, t5                          # encoding: [0x1b,0xcf,0x0e,0x51]
+
+pnsari.h t1, a4
+// CHECK-ASM: pnsari.h	t1, a4                          # encoding: [0x1b,0xc3,0x0e,0x52]
+
+nsari s0, t1
+// CHECK-ASM: nsari	s0, t1                          # encoding: [0x1b,0xc4,0x06,0x54]
+
+pnclipi.b t1, a4
+// CHECK-ASM: pnclipi.b	t1, a4                  # encoding: [0x1b,0xc3,0x0e,0x61]
+
+pnclipi.h a0, a4
+// CHECK-ASM: pnclipi.h	a0, a4                  # encoding: [0x1b,0xc5,0x0e,0x62]
+
+nclipi t5, t5
+// CHECK-ASM: nclipi	t5, t5                          # encoding: [0x1b,0xcf,0x0e,0x64]
+
+pnclipri.b a0, s0
+// CHECK-ASM: pnclipri.b	a0, s0                  # encoding: [0x1b,0xc5,0x08,0x71]
+
+pnclipri.h s2, t5
+// CHECK-ASM: pnclipri.h	s2, t5                  # encoding: [0x1b,0xc9,0x0e,0x72]
+
+nclipri t3, s0
+// CHECK-ASM: nclipri	t3, s0                          # encoding: [0x1b,0xce,0x08,0x74]
+
+pnsrl.bs t3, s0, a4
+// CHECK-ASM: pnsrl.bs	t3, s0, a4                      # encoding: [0x1b,0xce,0xe8,0x08]
+
+pnsrl.hs a2, t1, a4
+// CHECK-ASM: pnsrl.hs	a2, t1, a4                      # encoding: [0x1b,0xc6,0xe6,0x0a]
+
+nsrl a2, a2, a0
+// CHECK-ASM: nsrl	a2, a2, a0                      # encoding: [0x1b,0xc6,0xac,0x0e]
+
+pnclipu.bs a4, t5, a2
+// CHECK-ASM: pnclipu.bs	a4, t5, a2              # encoding: [0x1b,0xc7,0xce,0x28]
+
+pnclipu.hs t1, a2, a4
+// CHECK-ASM: pnclipu.hs	t1, a2, a4              # encoding: [0x1b,0xc3,0xec,0x2a]
+
+nclipu t5, s2, t1
+// CHECK-ASM: nclipu	t5, s2, t1                      # encoding: [0x1b,0xcf,0x62,0x2e]
+
+pnclipru.bs t5, s2, s2
+// CHECK-ASM: pnclipru.bs	t5, s2, s2              # encoding: [0x1b,0xcf,0x22,0x39]
+
+pnclipru.hs t5, s2, a0
+// CHECK-ASM: pnclipru.hs	t5, s2, a0              # encoding: [0x1b,0xcf,0xa2,0x3a]
+
+nclipru a4, t5, t5
+// CHECK-ASM: nclipru	a4, t5, t5                      # encoding: [0x1b,0xc7,0xee,0x3f]
+
+pnsra.bs a4, t1, a4
+// CHECK-ASM: pnsra.bs	a4, t1, a4                      # encoding: [0x1b,0xc7,0xe6,0x48]
+
+pnsra.hs s0, s2, t3
+// CHECK-ASM: pnsra.hs	s0, s2, t3                      # encoding: [0x1b,0xc4,0xc2,0x4b]
+
+nsra t1, s0, a4
+// CHECK-ASM: nsra	t1, s0, a4                      # encoding: [0x1b,0xc3,0xe8,0x4e]
+
+pnsrar.bs a2, s0, a4
+// CHECK-ASM: pnsrar.bs	a2, s0, a4              # encoding: [0x1b,0xc6,0xe8,0x58]
+
+pnsrar.hs s0, a4, a0
+// CHECK-ASM: pnsrar.hs	s0, a4, a0              # encoding: [0x1b,0xc4,0xae,0x5a]
+
+nsrar a4, a4, s0
+// CHECK-ASM: nsrar	a4, a4, s0                      # encoding: [0x1b,0xc7,0x8e,0x5e]
+
+pnclip.bs t1, t5, t3
+// CHECK-ASM: pnclip.bs	t1, t5, t3              # encoding: [0x1b,0xc3,0xce,0x69]
+
+pnclip.hs a0, a2, a0
+// CHECK-ASM: pnclip.hs	a0, a2, a0              # encoding: [0x1b,0xc5,0xac,0x6a]
+
+nclip t3, t5, t3
+// CHECK-ASM: nclip	t3, t5, t3                      # encoding: [0x1b,0xce,0xce,0x6f]
+
+pnclipr.bs t1, a2, a0
+// CHECK-ASM: pnclipr.bs	t1, a2, a0              # encoding: [0x1b,0xc3,0xac,0x78]
+
+pnclipr.hs a4, s2, t3
+// CHECK-ASM: pnclipr.hs	a4, s2, t3              # encoding: [0x1b,0xc7,0xc2,0x7b]
+
+nclipr t1, t5, a2
+// CHECK-ASM: nclipr	t1, t5, a2                      # encoding: [0x1b,0xc3,0xce,0x7e]
+
+pslli.db a0, s2
+// CHECK-ASM: pslli.db	a0, s2                          # encoding: [0x1b,0x4a,0x82,0x00]
+
+pslli.dh t3, t1
+// CHECK-ASM: pslli.dh	t3, t1                          # encoding: [0x1b,0x4c,0x06,0x01]
+
+pslli.dw a4, t3
+// CHECK-ASM: pslli.dw	a4, t3                          # encoding: [0x1b,0x4e,0x0c,0x02]
+
+psslai.dh t1, a4
+// CHECK-ASM: psslai.dh	t1, a4                  # encoding: [0x1b,0x46,0x0e,0x51]
+
+psslai.dw a0, t3
+// CHECK-ASM: psslai.dw	a0, t3                  # encoding: [0x1b,0x4a,0x0c,0x52]
+
+psext.dh.b t1, t5
----------------
topperc wrote:

If I disassembled this correctly, the `rdp` field has a value of 0b0110. `t1` is register x6, but if we're supposed to encode pairs, there's a missing divide by 2.

I expect if you test disassembly you'll see that registers x16-x31 don't round trip correctly.

https://github.com/llvm/llvm-project/pull/123271


More information about the llvm-commits mailing list