[mips] Added a full set of instruction test cases for all ISA's (but not ASE's).
authorDaniel Sanders <daniel.sanders@imgtec.com>
Mon, 31 Mar 2014 12:13:12 +0000 (12:13 +0000)
committerDaniel Sanders <daniel.sanders@imgtec.com>
Mon, 31 Mar 2014 12:13:12 +0000 (12:13 +0000)
Summary:
Where those ISA's are not currently supported, the test is run with the smallest
superset of that ISA.

Some instructions are valid but don't pass yet. These have been placed in the
valid-xfail.s's which will XPASS if _any_ instruction starts working.

The valid.s's do not verify the encoding yet. There are also no tests checking that instructions from neighbouring ISA's are not accepted.

Reviewers: matheusalmeida

Reviewed By: matheusalmeida

Differential Revision: http://llvm-reviews.chandlerc.com/D3214

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@205180 91177308-0d34-0410-b5e6-96231b3b80d8

18 files changed:
test/MC/Mips/mips1/valid-xfail.s [new file with mode: 0644]
test/MC/Mips/mips1/valid.s [new file with mode: 0644]
test/MC/Mips/mips2/valid-xfail.s [new file with mode: 0644]
test/MC/Mips/mips2/valid.s [new file with mode: 0644]
test/MC/Mips/mips3/valid-xfail.s [new file with mode: 0644]
test/MC/Mips/mips3/valid.s [new file with mode: 0644]
test/MC/Mips/mips32/valid-xfail.s [new file with mode: 0644]
test/MC/Mips/mips32/valid.s [new file with mode: 0644]
test/MC/Mips/mips32r2/valid-xfail.s [new file with mode: 0644]
test/MC/Mips/mips32r2/valid.s [new file with mode: 0644]
test/MC/Mips/mips4/valid-xfail.s [new file with mode: 0644]
test/MC/Mips/mips4/valid.s [new file with mode: 0644]
test/MC/Mips/mips5/valid-xfail.s [new file with mode: 0644]
test/MC/Mips/mips5/valid.s [new file with mode: 0644]
test/MC/Mips/mips64/valid-xfail.s [new file with mode: 0644]
test/MC/Mips/mips64/valid.s [new file with mode: 0644]
test/MC/Mips/mips64r2/valid-xfail.s [new file with mode: 0644]
test/MC/Mips/mips64r2/valid.s [new file with mode: 0644]

diff --git a/test/MC/Mips/mips1/valid-xfail.s b/test/MC/Mips/mips1/valid-xfail.s
new file mode 100644 (file)
index 0000000..bcd0f10
--- /dev/null
@@ -0,0 +1,19 @@
+# Instructions that should be valid but currently fail for known reasons (e.g.
+# they aren't implemented yet).
+# This test is set up to XPASS if any instruction generates an encoding.
+#
+# FIXME: Test MIPS-I instead of MIPS32
+# RUN: not llvm-mc %s -triple=mips-unknown-linux -show-encoding -mcpu=mips32 | not FileCheck %s
+# CHECK-NOT: encoding
+# XFAIL: *
+
+       .set noat
+       tlbp
+       tlbr
+       tlbwi
+       tlbwr
+       ehb
+       lwc0    c0_entrylo,-7321($s2)
+       lwc3    $10,-32265($k0)
+       ssnop
+       swc0    c0_prid,18904($s3)
diff --git a/test/MC/Mips/mips1/valid.s b/test/MC/Mips/mips1/valid.s
new file mode 100644 (file)
index 0000000..8fe81aa
--- /dev/null
@@ -0,0 +1,83 @@
+# Instructions that are valid
+#
+# FIXME: Test MIPS-I instead of MIPS32
+# RUN: llvm-mc %s -triple=mips-unknown-linux -show-encoding -mcpu=mips32 | FileCheck %s
+
+       .set noat
+       abs.d   $f7,$f25          # CHECK: encoding:
+       abs.s   $f9,$f16
+       add     $s7,$s2,$a1
+       add.d   $f1,$f7,$f29
+       add.s   $f8,$f21,$f24
+       addi    $t5,$t1,26322
+       addu    $t1,$a0,$a2
+       and     $s7,$v0,$t4
+       c.ngl.d $f29,$f29
+       c.ngle.d        $f0,$f16
+       c.sf.d  $f30,$f0
+       c.sf.s  $f14,$f22
+       cfc1    $s1,$21
+       ctc1    $a2,$26
+       cvt.d.s $f22,$f28
+       cvt.d.w $f26,$f11
+       cvt.s.d $f26,$f8
+       cvt.s.w $f22,$f15
+       cvt.w.d $f20,$f14
+       cvt.w.s $f20,$f24
+       div     $zero,$t9,$t3
+       div.d   $f29,$f20,$f27
+       div.s   $f4,$f5,$f15
+       divu    $zero,$t9,$t7
+       lb      $t8,-14515($t2)
+       lbu     $t0,30195($v1)
+       lh      $t3,-8556($s5)
+       lhu     $s3,-22851($v0)
+       li      $at,-29773
+       li      $zero,-29889
+       lw      $t0,5674($a1)
+       lwc1    $f16,10225($k0)
+       lwc2    $18,-841($a2)
+       lwl     $s4,-4231($t7)
+       lwr     $zero,-19147($gp)
+       mfc1    $a3,$f27
+       mfhi    $s3
+       mfhi    $sp
+       mflo    $s1
+       mov.d   $f20,$f14
+       mov.s   $f2,$f27
+       move    $s8,$a0
+       move    $t9,$a2
+       mtc1    $s8,$f9
+       mthi    $s1
+       mtlo    $sp
+       mtlo    $t9
+       mul.d   $f20,$f20,$f16
+       mul.s   $f30,$f10,$f2
+       mult    $sp,$s4
+       mult    $sp,$v0
+       multu   $gp,$k0
+       multu   $t1,$s2
+       neg.d   $f27,$f18
+       neg.s   $f1,$f15
+       nop
+       nor     $a3,$zero,$a3
+       or      $t4,$s0,$sp
+       sb      $s6,-19857($t6)
+       sh      $t6,-6704($t7)
+       sllv    $a3,$zero,$t1
+       slt     $s7,$t3,$k1
+       slti    $s1,$t2,9489
+       sltiu   $t9,$t9,-15531
+       sltu    $s4,$s5,$t3
+       srav    $s1,$s7,$sp
+       srlv    $t9,$s4,$a0
+       sub     $s6,$s3,$t4
+       sub.d   $f18,$f3,$f17
+       sub.s   $f23,$f22,$f22
+       subu    $sp,$s6,$s6
+       sw      $ra,-10160($sp)
+       swc1    $f6,-8465($t8)
+       swc2    $25,24880($s0)
+       swl     $t7,13694($s3)
+       swr     $s1,-26590($t6)
+       xor     $s2,$a0,$s8
diff --git a/test/MC/Mips/mips2/valid-xfail.s b/test/MC/Mips/mips2/valid-xfail.s
new file mode 100644 (file)
index 0000000..c121803
--- /dev/null
@@ -0,0 +1,19 @@
+# Instructions that should be valid but currently fail for known reasons (e.g.
+# they aren't implemented yet).
+# This test is set up to XPASS if any instruction generates an encoding.
+#
+# FIXME: Test MIPS-II instead of MIPS32
+# RUN: not llvm-mc %s -triple=mips-unknown-linux -show-encoding -mcpu=mips32 | not FileCheck %s
+# CHECK-NOT: encoding
+# XFAIL: *
+
+       .set noat
+       ehb
+       ldc3    $29,-28645($s1)
+       lwc3    $10,-32265($k0)
+       sdc3    $12,5835($t2)
+       ssnop
+       tlbp
+       tlbr
+       tlbwi
+       tlbwr
diff --git a/test/MC/Mips/mips2/valid.s b/test/MC/Mips/mips2/valid.s
new file mode 100644 (file)
index 0000000..ac42e77
--- /dev/null
@@ -0,0 +1,105 @@
+# Instructions that are valid
+#
+# FIXME: Test MIPS-II instead of MIPS32
+# RUN: llvm-mc %s -triple=mips-unknown-linux -show-encoding -mcpu=mips32 | FileCheck %s
+
+       .set noat
+       abs.d   $f7,$f25            # CHECK: encoding
+       abs.s   $f9,$f16
+       add     $s7,$s2,$a1
+       add.d   $f1,$f7,$f29
+       add.s   $f8,$f21,$f24
+       addi    $t5,$t1,26322
+       addu    $t1,$a0,$a2
+       and     $s7,$v0,$t4
+       c.ngl.d $f29,$f29
+       c.ngle.d        $f0,$f16
+       c.sf.d  $f30,$f0
+       c.sf.s  $f14,$f22
+       ceil.w.d        $f11,$f25
+       ceil.w.s        $f6,$f20
+       cfc1    $s1,$21
+       ctc1    $a2,$26
+       cvt.d.s $f22,$f28
+       cvt.d.w $f26,$f11
+       cvt.s.d $f26,$f8
+       cvt.s.w $f22,$f15
+       cvt.w.d $f20,$f14
+       cvt.w.s $f20,$f24
+       div     $zero,$t9,$t3
+       div.d   $f29,$f20,$f27
+       div.s   $f4,$f5,$f15
+       divu    $zero,$t9,$t7
+       floor.w.d       $f14,$f11
+       floor.w.s       $f8,$f9
+       lb      $t8,-14515($t2)
+       lbu     $t0,30195($v1)
+       ldc1    $f11,16391($s0)
+       ldc2    $8,-21181($at)
+       lh      $t3,-8556($s5)
+       lhu     $s3,-22851($v0)
+       li      $at,-29773
+       li      $zero,-29889
+       ll      $v0,-7321($s2)
+       lw      $t0,5674($a1)
+       lwc1    $f16,10225($k0)
+       lwc2    $18,-841($a2)
+       lwl     $s4,-4231($t7)
+       lwr     $zero,-19147($gp)
+       mfc1    $a3,$f27
+       mfhi    $s3
+       mfhi    $sp
+       mflo    $s1
+       mov.d   $f20,$f14
+       mov.s   $f2,$f27
+       move    $s8,$a0
+       move    $t9,$a2
+       mtc1    $s8,$f9
+       mthi    $s1
+       mtlo    $sp
+       mtlo    $t9
+       mul.d   $f20,$f20,$f16
+       mul.s   $f30,$f10,$f2
+       mult    $sp,$s4
+       mult    $sp,$v0
+       multu   $gp,$k0
+       multu   $t1,$s2
+       neg.d   $f27,$f18
+       neg.s   $f1,$f15
+       nop
+       nor     $a3,$zero,$a3
+       or      $t4,$s0,$sp
+       round.w.d       $f6,$f4
+       round.w.s       $f27,$f28
+       sb      $s6,-19857($t6)
+       sc      $t7,18904($s3)
+       sdc1    $f31,30574($t5)
+       sdc2    $20,23157($s2)
+       sh      $t6,-6704($t7)
+       sllv    $a3,$zero,$t1
+       slt     $s7,$t3,$k1
+       slti    $s1,$t2,9489
+       sltiu   $t9,$t9,-15531
+       sltu    $s4,$s5,$t3
+       sqrt.d  $f17,$f22
+       sqrt.s  $f0,$f1
+       srav    $s1,$s7,$sp
+       srlv    $t9,$s4,$a0
+       sub     $s6,$s3,$t4
+       sub.d   $f18,$f3,$f17
+       sub.s   $f23,$f22,$f22
+       subu    $sp,$s6,$s6
+       sw      $ra,-10160($sp)
+       swc1    $f6,-8465($t8)
+       swc2    $25,24880($s0)
+       swl     $t7,13694($s3)
+       swr     $s1,-26590($t6)
+       teqi    $s5,-17504
+       tgei    $s1,5025
+       tgeiu   $sp,-28621
+       tlti    $t6,-21059
+       tltiu   $ra,-5076
+       tnei    $t4,-29647
+       trunc.w.d       $f22,$f15
+       trunc.w.s       $f28,$f30
+       xor     $s2,$a0,$s8
diff --git a/test/MC/Mips/mips3/valid-xfail.s b/test/MC/Mips/mips3/valid-xfail.s
new file mode 100644 (file)
index 0000000..dd4e482
--- /dev/null
@@ -0,0 +1,21 @@
+# Instructions that should be valid but currently fail for known reasons (e.g.
+# they aren't implemented yet).
+# This test is set up to XPASS if any instruction generates an encoding.
+#
+# FIXME: Test MIPS-III instead of MIPS64
+# RUN: not llvm-mc %s -triple=mips-unknown-linux -show-encoding -mcpu=mips64   | not FileCheck %s
+# CHECK-NOT: encoding
+# XFAIL: *
+
+       .set noat
+       ddiv    $zero,$k0,$s3
+       ddivu   $zero,$s0,$s1
+       div     $zero,$t9,$t3
+       divu    $zero,$t9,$t7
+       ehb
+       lwc3    $10,-32265($k0)
+       ssnop
+       tlbp
+       tlbr
+       tlbwi
+       tlbwr
diff --git a/test/MC/Mips/mips3/valid.s b/test/MC/Mips/mips3/valid.s
new file mode 100644 (file)
index 0000000..f5c98f0
--- /dev/null
@@ -0,0 +1,139 @@
+# Instructions that are valid
+#
+# FIXME: Test MIPS-III instead of MIPS64
+# RUN: llvm-mc %s -triple=mips64-unknown-linux -show-encoding -mcpu=mips64   | FileCheck %s
+
+       .set noat
+       abs.d   $f7,$f25 # CHECK:encoding
+       abs.s   $f9,$f16
+       add     $s7,$s2,$a1
+       add.d   $f1,$f7,$f29
+       add.s   $f8,$f21,$f24
+       addi    $t5,$t1,26322
+       addu    $t1,$a0,$a2
+       and     $s7,$v0,$t4
+       c.ngl.d $f29,$f29
+       c.ngle.d        $f0,$f16
+       c.sf.d  $f30,$f0
+       c.sf.s  $f14,$f22
+       ceil.l.d        $f1,$f3
+       ceil.l.s        $f18,$f13
+       ceil.w.d        $f11,$f25
+       ceil.w.s        $f6,$f20
+       cfc1    $s1,$21
+       ctc1    $a2,$26
+       cvt.d.l $f4,$f16
+       cvt.d.s $f22,$f28
+       cvt.d.w $f26,$f11
+       cvt.l.d $f24,$f15
+       cvt.l.s $f11,$f29
+       cvt.s.d $f26,$f8
+       cvt.s.l $f15,$f30
+       cvt.s.w $f22,$f15
+       cvt.w.d $f20,$f14
+       cvt.w.s $f20,$f24
+       dadd    $s3,$at,$ra
+       daddi   $sp,$s4,-27705
+       daddiu  $k0,$s6,-4586
+       div.d   $f29,$f20,$f27
+       div.s   $f4,$f5,$f15
+       dmfc1   $t4,$f13
+       dmtc1   $s0,$f14
+       dmult   $s7,$t1
+       dmultu  $a1,$a2
+       dsllv   $zero,$s4,$t4
+       dsrav   $gp,$s2,$s3
+       dsrlv   $s3,$t6,$s4
+       dsub    $a3,$s6,$t0
+       dsubu   $a1,$a1,$k0
+       eret
+       floor.l.d       $f26,$f7
+       floor.l.s       $f12,$f5
+       floor.w.d       $f14,$f11
+       floor.w.s       $f8,$f9
+       lb      $t8,-14515($t2)
+       lbu     $t0,30195($v1)
+       ld      $sp,-28645($s1)
+       ldc1    $f11,16391($s0)
+       ldc2    $8,-21181($at)
+       ldl     $t8,-4167($t8)
+       ldr     $t6,-30358($s4)
+       lh      $t3,-8556($s5)
+       lhu     $s3,-22851($v0)
+       li      $at,-29773
+       li      $zero,-29889
+       ll      $v0,-7321($s2)
+       lld     $zero,-14736($ra)
+       lw      $t0,5674($a1)
+       lwc1    $f16,10225($k0)
+       lwc2    $18,-841($a2)
+       lwl     $s4,-4231($t7)
+       lwr     $zero,-19147($gp)
+       lwu     $s3,-24086($v1)
+       mfc1    $a3,$f27
+       mfhi    $s3
+       mfhi    $sp
+       mflo    $s1
+       mov.d   $f20,$f14
+       mov.s   $f2,$f27
+       move    $a0,$a3
+       move    $s5,$a0
+       move    $s8,$a0
+       move    $t9,$a2
+       mtc1    $s8,$f9
+       mthi    $s1
+       mtlo    $sp
+       mtlo    $t9
+       mul.d   $f20,$f20,$f16
+       mul.s   $f30,$f10,$f2
+       mult    $sp,$s4
+       mult    $sp,$v0
+       multu   $gp,$k0
+       multu   $t1,$s2
+       neg.d   $f27,$f18
+       neg.s   $f1,$f15
+       nop
+       nor     $a3,$zero,$a3
+       or      $t4,$s0,$sp
+       round.l.d       $f12,$f1
+       round.l.s       $f25,$f5
+       round.w.d       $f6,$f4
+       round.w.s       $f27,$f28
+       sb      $s6,-19857($t6)
+       sc      $t7,18904($s3)
+       scd     $t7,-8243($sp)
+       sd      $t4,5835($t2)
+       sdc1    $f31,30574($t5)
+       sdc2    $20,23157($s2)
+       sdl     $a3,-20961($s8)
+       sdr     $t3,-20423($t4)
+       sh      $t6,-6704($t7)
+       sllv    $a3,$zero,$t1
+       slt     $s7,$t3,$k1
+       slti    $s1,$t2,9489
+       sltiu   $t9,$t9,-15531
+       sltu    $s4,$s5,$t3
+       sqrt.d  $f17,$f22
+       sqrt.s  $f0,$f1
+       srav    $s1,$s7,$sp
+       srlv    $t9,$s4,$a0
+       sub     $s6,$s3,$t4
+       sub.d   $f18,$f3,$f17
+       sub.s   $f23,$f22,$f22
+       subu    $sp,$s6,$s6
+       sw      $ra,-10160($sp)
+       swc1    $f6,-8465($t8)
+       swc2    $25,24880($s0)
+       swl     $t7,13694($s3)
+       swr     $s1,-26590($t6)
+       teqi    $s5,-17504
+       tgei    $s1,5025
+       tgeiu   $sp,-28621
+       tlti    $t6,-21059
+       tltiu   $ra,-5076
+       tnei    $t4,-29647
+       trunc.l.d       $f23,$f23
+       trunc.l.s       $f28,$f31
+       trunc.w.d       $f22,$f15
+       trunc.w.s       $f28,$f30
+       xor     $s2,$a0,$s8
diff --git a/test/MC/Mips/mips32/valid-xfail.s b/test/MC/Mips/mips32/valid-xfail.s
new file mode 100644 (file)
index 0000000..a718aab
--- /dev/null
@@ -0,0 +1,46 @@
+# Instructions that should be valid but currently fail for known reasons (e.g.
+# they aren't implemented yet).
+# This test is set up to XPASS if any instruction generates an encoding.
+#
+# RUN: not llvm-mc %s -triple=mips-unknown-linux -show-encoding -mcpu=mips32   | not FileCheck %s
+# CHECK-NOT: encoding
+# XFAIL: *
+
+       .set noat
+       c.eq.d  $fcc1,$f15,$f15
+       c.eq.s  $fcc5,$f24,$f17
+       c.f.d   $fcc4,$f11,$f21
+       c.f.s   $fcc4,$f30,$f7
+       c.le.d  $fcc4,$f18,$f1
+       c.le.s  $fcc6,$f24,$f4
+       c.lt.d  $fcc3,$f9,$f3
+       c.lt.s  $fcc2,$f17,$f14
+       c.nge.d $fcc5,$f21,$f16
+       c.nge.s $fcc3,$f11,$f8
+       c.ngl.s $fcc2,$f31,$f23
+       c.ngle.s        $fcc2,$f18,$f23
+       c.ngt.d $fcc4,$f24,$f7
+       c.ngt.s $fcc5,$f8,$f13
+       c.ole.d $fcc2,$f16,$f31
+       c.ole.s $fcc3,$f7,$f20
+       c.olt.d $fcc4,$f19,$f28
+       c.olt.s $fcc6,$f20,$f7
+       c.seq.d $fcc4,$f31,$f7
+       c.seq.s $fcc7,$f1,$f25
+       c.ueq.d $fcc4,$f13,$f25
+       c.ueq.s $fcc6,$f3,$f30
+       c.ule.d $fcc7,$f25,$f18
+       c.ule.s $fcc7,$f21,$f30
+       c.ult.d $fcc6,$f6,$f17
+       c.ult.s $fcc7,$f24,$f10
+       c.un.d  $fcc6,$f23,$f24
+       c.un.s  $fcc1,$f30,$f4
+       ehb
+       ldc3    $29,-28645($s1)
+       rorv    $t5,$a3,$s5
+       sdc3    $12,5835($t2)
+       ssnop
+       tlbp
+       tlbr
+       tlbwi
+       tlbwr
diff --git a/test/MC/Mips/mips32/valid.s b/test/MC/Mips/mips32/valid.s
new file mode 100644 (file)
index 0000000..c358bda
--- /dev/null
@@ -0,0 +1,129 @@
+# Instructions that are valid
+#
+# RUN: llvm-mc %s -triple=mips-unknown-linux -show-encoding -mcpu=mips32   | FileCheck %s
+
+        .set noat
+       abs.d   $f7,$f25 # CHECK: encoding
+       abs.s   $f9,$f16
+       add     $s7,$s2,$a1
+       add.d   $f1,$f7,$f29
+       add.s   $f8,$f21,$f24
+       addi    $t5,$t1,26322
+       addu    $t1,$a0,$a2
+       and     $s7,$v0,$t4
+       c.ngl.d $f29,$f29
+       c.ngle.d        $f0,$f16
+       c.sf.d  $f30,$f0
+       c.sf.s  $f14,$f22
+       ceil.w.d        $f11,$f25
+       ceil.w.s        $f6,$f20
+       cfc1    $s1,$21
+       clo     $t3,$a1
+       clz     $sp,$gp
+       ctc1    $a2,$26
+       cvt.d.s $f22,$f28
+       cvt.d.w $f26,$f11
+       cvt.s.d $f26,$f8
+       cvt.s.w $f22,$f15
+       cvt.w.d $f20,$f14
+       cvt.w.s $f20,$f24
+       deret
+       div     $zero,$t9,$t3
+       div.d   $f29,$f20,$f27
+       div.s   $f4,$f5,$f15
+       divu    $zero,$t9,$t7
+       eret
+       floor.w.d       $f14,$f11
+       floor.w.s       $f8,$f9
+       lb      $t8,-14515($t2)
+       lbu     $t0,30195($v1)
+       ldc1    $f11,16391($s0)
+       ldc2    $8,-21181($at)
+       lh      $t3,-8556($s5)
+       lhu     $s3,-22851($v0)
+       li      $at,-29773
+       li      $zero,-29889
+       ll      $v0,-7321($s2)
+       lw      $t0,5674($a1)
+       lwc1    $f16,10225($k0)
+       lwc2    $18,-841($a2)
+       lwl     $s4,-4231($t7)
+       lwr     $zero,-19147($gp)
+       madd    $s6,$t5
+       madd    $zero,$t1
+       maddu   $s3,$gp
+       maddu   $t8,$s2
+       mfc0    $a2,$14,1
+       mfc1    $a3,$f27
+       mfhi    $s3
+       mfhi    $sp
+       mflo    $s1
+       mov.d   $f20,$f14
+       mov.s   $f2,$f27
+       move    $s8,$a0
+       move    $t9,$a2
+       movf    $gp,$t0,$fcc7
+       movf.d  $f6,$f11,$fcc5
+       movf.s  $f23,$f5,$fcc6
+       movn    $v1,$s1,$s0
+       movn.d  $f27,$f21,$k0
+       movn.s  $f12,$f0,$s7
+       movt    $zero,$s4,$fcc5
+       movt.d  $f0,$f2,$fcc0
+       movt.s  $f30,$f2,$fcc1
+       movz    $a1,$s6,$t1
+       movz.d  $f12,$f29,$t1
+       movz.s  $f25,$f7,$v1
+       msub    $s7,$k1
+       msubu   $t7,$a1
+       mtc0    $t1,$29,3
+       mtc1    $s8,$f9
+       mthi    $s1
+       mtlo    $sp
+       mtlo    $t9
+       mul     $s0,$s4,$at
+       mul.d   $f20,$f20,$f16
+       mul.s   $f30,$f10,$f2
+       mult    $sp,$s4
+       mult    $sp,$v0
+       multu   $gp,$k0
+       multu   $t1,$s2
+       neg.d   $f27,$f18
+       neg.s   $f1,$f15
+       nop
+       nor     $a3,$zero,$a3
+       or      $t4,$s0,$sp
+       round.w.d       $f6,$f4
+       round.w.s       $f27,$f28
+       sb      $s6,-19857($t6)
+       sc      $t7,18904($s3)
+       sdc1    $f31,30574($t5)
+       sdc2    $20,23157($s2)
+       sh      $t6,-6704($t7)
+       sllv    $a3,$zero,$t1
+       slt     $s7,$t3,$k1
+       slti    $s1,$t2,9489
+       sltiu   $t9,$t9,-15531
+       sltu    $s4,$s5,$t3
+       sqrt.d  $f17,$f22
+       sqrt.s  $f0,$f1
+       srav    $s1,$s7,$sp
+       srlv    $t9,$s4,$a0
+       sub     $s6,$s3,$t4
+       sub.d   $f18,$f3,$f17
+       sub.s   $f23,$f22,$f22
+       subu    $sp,$s6,$s6
+       sw      $ra,-10160($sp)
+       swc1    $f6,-8465($t8)
+       swc2    $25,24880($s0)
+       swl     $t7,13694($s3)
+       swr     $s1,-26590($t6)
+       teqi    $s5,-17504
+       tgei    $s1,5025
+       tgeiu   $sp,-28621
+       tlti    $t6,-21059
+       tltiu   $ra,-5076
+       tnei    $t4,-29647
+       trunc.w.d       $f22,$f15
+       trunc.w.s       $f28,$f30
+       xor     $s2,$a0,$s8
diff --git a/test/MC/Mips/mips32r2/valid-xfail.s b/test/MC/Mips/mips32r2/valid-xfail.s
new file mode 100644 (file)
index 0000000..dff3ae4
--- /dev/null
@@ -0,0 +1,332 @@
+# Instructions that should be valid but currently fail for known reasons (e.g.
+# they aren't implemented yet).
+# This test is set up to XPASS if any instruction generates an encoding.
+#
+# RUN: llvm-mc %s -triple=mips-unknown-linux -show-encoding -mcpu=mips32r2 | FileCheck %s
+# CHECK-NOT: encoding
+# XFAIL: *
+
+       .set noat
+       abs.ps  $f22,$f8
+       absq_s.ph       $t0,$a0
+       absq_s.qb       $t7,$s1
+       absq_s.w        $s3,$ra
+       add.ps  $f25,$f27,$f13
+       addq.ph $s1,$t7,$at
+       addq_s.ph       $s3,$s6,$s2
+       addq_s.w        $a2,$t0,$at
+       addqh.ph        $s4,$t6,$s1
+       addqh.w $s7,$s7,$k1
+       addqh_r.ph      $sp,$t9,$s8
+       addqh_r.w       $t0,$v1,$zero
+       addsc   $s8,$t7,$t4
+       addu.ph $a2,$t6,$s3
+       addu.qb $s6,$v1,$v1
+       addu_s.ph       $a3,$s3,$gp
+       addu_s.qb       $s4,$s8,$s1
+       adduh.qb        $a1,$a1,$at
+       adduh_r.qb      $a0,$t1,$t4
+       addwc   $k0,$s6,$s7
+       alnv.ps $f12,$f18,$f30,$t4
+       and.v   $w10,$w25,$w29
+       bitrev  $t6,$at
+       bmnz.v  $w15,$w2,$w28
+       bmz.v   $w13,$w11,$w21
+       bsel.v  $w28,$w7,$w0
+       c.eq.d  $fcc1,$f15,$f15
+       c.eq.ps $fcc5,$f0,$f9
+       c.eq.s  $fcc5,$f24,$f17
+       c.f.d   $fcc4,$f11,$f21
+       c.f.ps  $fcc6,$f11,$f11
+       c.f.s   $fcc4,$f30,$f7
+       c.le.d  $fcc4,$f18,$f1
+       c.le.ps $fcc1,$f7,$f20
+       c.le.s  $fcc6,$f24,$f4
+       c.lt.d  $fcc3,$f9,$f3
+       c.lt.ps $f19,$f5
+       c.lt.s  $fcc2,$f17,$f14
+       c.nge.d $fcc5,$f21,$f16
+       c.nge.ps        $f1,$f26
+       c.nge.s $fcc3,$f11,$f8
+       c.ngl.d $f29,$f29
+       c.ngl.ps        $f21,$f30
+       c.ngl.s $fcc2,$f31,$f23
+       c.ngle.ps       $fcc7,$f12,$f20
+       c.ngle.s        $fcc2,$f18,$f23
+       c.ngt.d $fcc4,$f24,$f7
+       c.ngt.ps        $fcc5,$f30,$f6
+       c.ngt.s $fcc5,$f8,$f13
+       c.ole.d $fcc2,$f16,$f31
+       c.ole.ps        $fcc7,$f21,$f8
+       c.ole.s $fcc3,$f7,$f20
+       c.olt.d $fcc4,$f19,$f28
+       c.olt.ps        $fcc3,$f7,$f16
+       c.olt.s $fcc6,$f20,$f7
+       c.seq.d $fcc4,$f31,$f7
+       c.seq.ps        $fcc6,$f31,$f14
+       c.seq.s $fcc7,$f1,$f25
+       c.sf.ps $fcc6,$f4,$f6
+       c.sf.s  $f14,$f22
+       c.ueq.d $fcc4,$f13,$f25
+       c.ueq.ps        $fcc1,$f5,$f29
+       c.ueq.s $fcc6,$f3,$f30
+       c.ule.d $fcc7,$f25,$f18
+       c.ule.ps        $fcc6,$f17,$f3
+       c.ule.s $fcc7,$f21,$f30
+       c.ult.d $fcc6,$f6,$f17
+       c.ult.ps        $fcc7,$f14,$f0
+       c.ult.s $fcc7,$f24,$f10
+       c.un.d  $fcc6,$f23,$f24
+       c.un.ps $fcc4,$f2,$f26
+       c.un.s  $fcc1,$f30,$f4
+       ceil.l.d        $f1,$f3
+       ceil.l.s        $f18,$f13
+       cfcmsa  $s6,$19
+       cmp.eq.ph       $s7,$t6
+       cmp.le.ph       $t0,$t6
+       cmp.lt.ph       $k0,$sp
+       cmpgdu.eq.qb    $s3,$zero,$k0
+       cmpgdu.le.qb    $v1,$t7,$s2
+       cmpgdu.lt.qb    $s0,$gp,$sp
+       cmpgu.eq.qb     $t6,$s6,$s8
+       cmpgu.le.qb     $t1,$a3,$s4
+       cmpgu.lt.qb     $sp,$at,$t0
+       cmpu.eq.qb      $v0,$t8
+       cmpu.le.qb      $s1,$a1
+       cmpu.lt.qb      $at,$a3
+       ctcmsa  $31,$s7
+       cvt.d.l $f4,$f16
+       cvt.l.d $f24,$f15
+       cvt.l.s $f11,$f29
+       cvt.ps.s        $f3,$f18,$f19
+       cvt.s.l $f15,$f30
+       cvt.s.pl        $f30,$f1
+       cvt.s.pu        $f14,$f25
+       div     $zero,$t9,$t3
+       divu    $zero,$t9,$t7
+       dmt     $k0
+       dpa.w.ph        $ac1,$s7,$k0
+       dpaq_s.w.ph     $ac2,$a0,$t5
+       dpaq_sa.l.w     $ac0,$a2,$t6
+       dpaqx_s.w.ph    $ac3,$a0,$t8
+       dpaqx_sa.w.ph   $ac1,$zero,$s5
+       dpau.h.qbl      $ac1,$t2,$t8
+       dpau.h.qbr      $ac1,$s7,$s6
+       dpax.w.ph       $ac3,$a0,$k0
+       dps.w.ph        $ac1,$a3,$a1
+       dpsq_s.w.ph     $ac0,$gp,$k0
+       dpsq_sa.l.w     $ac0,$a3,$t7
+       dpsqx_s.w.ph    $ac3,$t5,$a3
+       dpsqx_sa.w.ph   $ac3,$sp,$s2
+       dpsu.h.qbl      $ac2,$t6,$t2
+       dpsu.h.qbr      $ac2,$a1,$s6
+       dpsx.w.ph       $ac0,$s7,$gp
+       dvpe    $s6
+       ehb
+       emt     $t0
+       evpe    $v0
+       extpdpv $s6,$ac0,$s8
+       extpv   $t5,$ac0,$t6
+       extrv.w $t0,$ac3,$at
+       extrv_r.w       $t0,$ac1,$s6
+       extrv_rs.w      $gp,$ac1,$s6
+       extrv_s.h       $s2,$ac1,$t6
+       fclass.d        $w14,$w27
+       fclass.w        $w19,$w28
+       fexupl.d        $w10,$w29
+       fexupl.w        $w12,$w27
+       fexupr.d        $w31,$w15
+       fexupr.w        $w29,$w12
+       ffint_s.d       $w1,$w30
+       ffint_s.w       $w16,$w14
+       ffint_u.d       $w23,$w18
+       ffint_u.w       $w19,$w12
+       ffql.d  $w2,$w3
+       ffql.w  $w9,$w0
+       ffqr.d  $w25,$w24
+       ffqr.w  $w10,$w6
+       fill.b  $w9,$v1
+       fill.h  $w9,$t0
+       fill.w  $w31,$t7
+       flog2.d $w12,$w16
+       flog2.w $w19,$w23
+       floor.l.d       $f26,$f7
+       floor.l.s       $f12,$f5
+       floor.w.d       $f14,$f11
+       floor.w.s       $f8,$f9
+       fork    $s2,$t0,$a0
+       frcp.d  $w12,$w4
+       frcp.w  $w30,$w8
+       frint.d $w20,$w8
+       frint.w $w11,$w29
+       frsqrt.d        $w29,$w2
+       frsqrt.w        $w9,$w8
+       fsqrt.d $w3,$w1
+       fsqrt.w $w5,$w15
+       ftint_s.d       $w31,$w26
+       ftint_s.w       $w27,$w14
+       ftint_u.d       $w5,$w31
+       ftint_u.w       $w12,$w29
+       ftrunc_s.d      $w4,$w22
+       ftrunc_s.w      $w24,$w7
+       ftrunc_u.d      $w20,$w25
+       ftrunc_u.w      $w7,$w26
+       insv    $s2,$at
+       iret
+       lbe     $t6,122($t1)
+       lbue    $t3,-108($t2)
+       lbux    $t1,$t6($v0)
+       ldc3    $29,-28645($s1)
+       lhe     $s6,219($v1)
+       lhue    $gp,118($t3)
+       lhx     $sp,$k0($t7)
+       lle     $gp,-237($ra)
+       lwe     $ra,-145($t6)
+       lwle    $t3,-42($t3)
+       lwre    $sp,-152($t8)
+       lwx     $t4,$t4($s4)
+       madd.ps $f22,$f3,$f14,$f3
+       maq_s.w.phl     $ac2,$t9,$t3
+       maq_s.w.phr     $ac0,$t2,$t9
+       maq_sa.w.phl    $ac3,$a1,$v1
+       maq_sa.w.phr    $ac1,$at,$t2
+       mfgc0   $s6,c0_datahi1
+       mflo    $t1,$ac2
+       modsub  $a3,$t4,$a3
+       mov.ps  $f22,$f17
+       move.v  $w8,$w17
+       movf.ps $f10,$f28,$fcc6
+       movn.ps $f31,$f31,$s3
+       movt.ps $f20,$f25,$fcc2
+       movz.ps $f18,$f17,$ra
+       msub    $ac2,$sp,$t6
+       msub.ps $f12,$f14,$f29,$f17
+       msubu   $ac2,$a1,$t8
+       mtc0    $t1,c0_datahi1
+       mtgc0   $s4,$21,7
+       mthi    $v0,$ac1
+       mthlip  $a3,$ac0
+       mul.ph  $s4,$t8,$s0
+       mul.ps  $f14,$f0,$f16
+       mul_s.ph        $t2,$t6,$t7
+       muleq_s.w.phl   $t3,$s4,$s4
+       muleq_s.w.phr   $s6,$a0,$s8
+       muleu_s.ph.qbl  $a2,$t6,$t0
+       muleu_s.ph.qbr  $a1,$ra,$t1
+       mulq_rs.ph      $s2,$t6,$t7
+       mulq_rs.w       $at,$s4,$t9
+       mulq_s.ph       $s0,$k1,$t7
+       mulq_s.w        $t1,$a3,$s0
+       mulsa.w.ph      $ac1,$s4,$s6
+       mulsaq_s.w.ph   $ac0,$ra,$s2
+       neg.ps  $f19,$f13
+       nloc.b  $w12,$w30
+       nloc.d  $w16,$w7
+       nloc.h  $w21,$w17
+       nloc.w  $w17,$w16
+       nlzc.b  $w12,$w7
+       nlzc.d  $w14,$w14
+       nlzc.h  $w24,$w24
+       nlzc.w  $w10,$w4
+       nmadd.d $f18,$f9,$f14,$f19
+       nmadd.ps        $f27,$f4,$f9,$f25
+       nmadd.s $f0,$f5,$f25,$f12
+       nmsub.d $f30,$f8,$f16,$f30
+       nmsub.ps        $f6,$f12,$f14,$f17
+       nmsub.s $f1,$f24,$f19,$f4
+       nor.v   $w20,$w20,$w15
+       or.v    $w13,$w23,$w12
+       packrl.ph       $ra,$t8,$t6
+       pause
+       pcnt.b  $w30,$w15
+       pcnt.d  $w5,$w16
+       pcnt.h  $w20,$w24
+       pcnt.w  $w22,$w20
+       pick.ph $ra,$a2,$gp
+       pick.qb $t3,$a0,$gp
+       pll.ps  $f25,$f9,$f30
+       plu.ps  $f1,$f26,$f29
+       preceq.w.phl    $s8,$gp
+       preceq.w.phr    $s5,$t7
+       precequ.ph.qbl  $s7,$ra
+       precequ.ph.qbla $a0,$t1
+       precequ.ph.qbr  $ra,$s3
+       precequ.ph.qbra $t8,$t0
+       preceu.ph.qbl   $sp,$t0
+       preceu.ph.qbla  $s6,$t3
+       preceu.ph.qbr   $gp,$s1
+       preceu.ph.qbra  $k1,$s0
+       precr.qb.ph     $v0,$t4,$s8
+       precrq.ph.w     $t6,$s8,$t8
+       precrq.qb.ph    $a2,$t4,$t4
+       precrq_rs.ph.w  $a1,$k0,$a3
+       precrqu_s.qb.ph $zero,$gp,$s5
+       pul.ps  $f9,$f30,$f26
+       puu.ps  $f24,$f9,$f2
+       raddu.w.qb      $t9,$s3
+       rdhwr   $sp,$11
+       rdpgpr  $s3,$t1
+       recip.d $f19,$f6
+       recip.s $f3,$f30
+       repl.ph $at,-307
+       replv.ph        $v1,$s7
+       replv.qb        $t9,$t4
+       rorv    $t5,$a3,$s5
+       round.l.d       $f12,$f1
+       round.l.s       $f25,$f5
+       rsqrt.d $f3,$f28
+       rsqrt.s $f4,$f8
+       sbe     $s7,33($s1)
+       sce     $sp,189($t2)
+       sdc3    $12,5835($t2)
+       she     $t8,105($v0)
+       shilo   $ac1,26
+       shilov  $ac2,$t2
+       shllv.ph        $t2,$s0,$s0
+       shllv.qb        $gp,$v1,$zero
+       shllv_s.ph      $k1,$at,$t5
+       shllv_s.w       $s1,$ra,$k0
+       shrav.ph        $t9,$s2,$s1
+       shrav.qb        $zero,$t8,$t3
+       shrav_r.ph      $s3,$t3,$t9
+       shrav_r.qb      $a0,$sp,$s5
+       shrav_r.w       $s7,$s4,$s6
+       shrlv.ph        $t6,$t2,$t1
+       shrlv.qb        $a2,$s2,$t3
+       ssnop
+       sub.ps  $f5,$f14,$f26
+       subq.ph $ra,$t1,$s8
+       subq_s.ph       $t5,$s8,$s5
+       subq_s.w        $k1,$a2,$a3
+       subqh.ph        $t2,$at,$t1
+       subqh.w $v0,$a2,$zero
+       subqh_r.ph      $a0,$t4,$s6
+       subqh_r.w       $t2,$a2,$gp
+       subu.ph $t1,$s6,$s4
+       subu.qb $s6,$a2,$s6
+       subu_s.ph       $v1,$a1,$s3
+       subu_s.qb       $s1,$at,$ra
+       subuh.qb        $zero,$gp,$gp
+       subuh_r.qb      $s4,$s8,$s6
+       swe     $t8,94($k0)
+       swle    $v1,-209($gp)
+       swre    $k0,-202($s2)
+       swxc1   $f19,$t4($k0)
+       synci   20023($s0)
+       tlbginv
+       tlbginvf
+       tlbgp
+       tlbgr
+       tlbgwi
+       tlbgwr
+       tlbinv
+       tlbinvf
+       tlbp
+       tlbr
+       tlbwi
+       tlbwr
+       trunc.l.d       $f23,$f23
+       trunc.l.s       $f28,$f31
+       wrpgpr  $zero,$t5
+       xor.v   $w20,$w21,$w30
+       yield   $v1,$s0
diff --git a/test/MC/Mips/mips32r2/valid.s b/test/MC/Mips/mips32r2/valid.s
new file mode 100644 (file)
index 0000000..03f5155
--- /dev/null
@@ -0,0 +1,138 @@
+# Instructions that are valid
+#
+# RUN: llvm-mc %s -triple=mips-unknown-linux -show-encoding -mcpu=mips32r2 | FileCheck %s
+
+        .set noat
+       abs.d   $f7,$f25 # CHECK: encoding
+       abs.s   $f9,$f16
+       add     $s7,$s2,$a1
+       add.d   $f1,$f7,$f29
+       add.s   $f8,$f21,$f24
+       addi    $t5,$t1,26322
+       addu    $t1,$a0,$a2
+       and     $s7,$v0,$t4
+       c.ngle.d        $f0,$f16
+       c.sf.d  $f30,$f0
+       ceil.w.d        $f11,$f25
+       ceil.w.s        $f6,$f20
+       cfc1    $s1,$21
+       clo     $t3,$a1
+       clz     $sp,$gp
+       ctc1    $a2,$26
+       cvt.d.s $f22,$f28
+       cvt.d.w $f26,$f11
+       cvt.s.d $f26,$f8
+       cvt.s.w $f22,$f15
+       cvt.w.d $f20,$f14
+       cvt.w.s $f20,$f24
+       deret
+       di      $s8
+       div.d   $f29,$f20,$f27
+       div.s   $f4,$f5,$f15
+       ei      $t6
+       eret
+       lb      $t8,-14515($t2)
+       lbu     $t0,30195($v1)
+       ldc1    $f11,16391($s0)
+       ldc2    $8,-21181($at)
+       ldxc1   $f8,$s7($t7)
+       lh      $t3,-8556($s5)
+       lhu     $s3,-22851($v0)
+       li      $at,-29773
+       li      $zero,-29889
+       ll      $v0,-7321($s2)
+       luxc1   $f19,$s6($s5)
+       lw      $t0,5674($a1)
+       lwc1    $f16,10225($k0)
+       lwc2    $18,-841($a2)
+       lwl     $s4,-4231($t7)
+       lwr     $zero,-19147($gp)
+       lwxc1   $f12,$s1($s8)
+       madd    $s6,$t5
+       madd    $zero,$t1
+       madd.d  $f18,$f19,$f26,$f20
+       madd.s  $f1,$f31,$f19,$f25
+       maddu   $s3,$gp
+       maddu   $t8,$s2
+       mfc0    $a2,$14,1
+       mfc1    $a3,$f27
+       mfhc1   $s8,$f24
+       mfhi    $s3
+       mfhi    $sp
+       mflo    $s1
+       mov.d   $f20,$f14
+       mov.s   $f2,$f27
+       move    $s8,$a0
+       move    $t9,$a2
+       movf    $gp,$t0,$fcc7
+       movf.d  $f6,$f11,$fcc5
+       movf.s  $f23,$f5,$fcc6
+       movn    $v1,$s1,$s0
+       movn.d  $f27,$f21,$k0
+       movn.s  $f12,$f0,$s7
+       movt    $zero,$s4,$fcc5
+       movt.d  $f0,$f2,$fcc0
+       movt.s  $f30,$f2,$fcc1
+       movz    $a1,$s6,$t1
+       movz.d  $f12,$f29,$t1
+       movz.s  $f25,$f7,$v1
+       msub    $s7,$k1
+       msub.d  $f10,$f1,$f31,$f18
+       msub.s  $f12,$f19,$f10,$f16
+       msubu   $t7,$a1
+       mtc1    $s8,$f9
+       mthc1   $zero,$f16
+       mthi    $s1
+       mtlo    $sp
+       mtlo    $t9
+       mul     $s0,$s4,$at
+       mul.d   $f20,$f20,$f16
+       mul.s   $f30,$f10,$f2
+       mult    $sp,$s4
+       mult    $sp,$v0
+       multu   $gp,$k0
+       multu   $t1,$s2
+       neg.d   $f27,$f18
+       neg.s   $f1,$f15
+       nop
+       nor     $a3,$zero,$a3
+       or      $t4,$s0,$sp
+       round.w.d       $f6,$f4
+       round.w.s       $f27,$f28
+       sb      $s6,-19857($t6)
+       sc      $t7,18904($s3)
+       sdc1    $f31,30574($t5)
+       sdc2    $20,23157($s2)
+       sdxc1   $f11,$t2($t6)
+       seb     $t9,$t7
+       seh     $v1,$t4
+       sh      $t6,-6704($t7)
+       sllv    $a3,$zero,$t1
+       slt     $s7,$t3,$k1
+       slti    $s1,$t2,9489
+       sltiu   $t9,$t9,-15531
+       sltu    $s4,$s5,$t3
+       sqrt.d  $f17,$f22
+       sqrt.s  $f0,$f1
+       srav    $s1,$s7,$sp
+       srlv    $t9,$s4,$a0
+       sub     $s6,$s3,$t4
+       sub.d   $f18,$f3,$f17
+       sub.s   $f23,$f22,$f22
+       subu    $sp,$s6,$s6
+       suxc1   $f12,$k1($t5)
+       sw      $ra,-10160($sp)
+       swc1    $f6,-8465($t8)
+       swc2    $25,24880($s0)
+       swl     $t7,13694($s3)
+       swr     $s1,-26590($t6)
+       teqi    $s5,-17504
+       tgei    $s1,5025
+       tgeiu   $sp,-28621
+       tlti    $t6,-21059
+       tltiu   $ra,-5076
+       tnei    $t4,-29647
+       trunc.w.d       $f22,$f15
+       trunc.w.s       $f28,$f30
+       wsbh    $k1,$t1
+       xor     $s2,$a0,$s8
diff --git a/test/MC/Mips/mips4/valid-xfail.s b/test/MC/Mips/mips4/valid-xfail.s
new file mode 100644 (file)
index 0000000..7599164
--- /dev/null
@@ -0,0 +1,60 @@
+# Instructions that should be valid but currently fail for known reasons (e.g.
+# they aren't implemented yet).
+# This test is set up to XPASS if any instruction generates an encoding.
+#
+# FIXME: Test MIPS-IV instead of MIPS64
+# RUN: not llvm-mc %s -triple=mips64-unknown-linux -show-encoding -mcpu=mips64   | not FileCheck %s
+# CHECK-NOT: encoding
+# XFAIL: *
+
+       .set noat
+       c.eq.d  $fcc1,$f15,$f15
+       c.eq.s  $fcc5,$f24,$f17
+       c.f.d   $fcc4,$f11,$f21
+       c.f.s   $fcc4,$f30,$f7
+       c.le.d  $fcc4,$f18,$f1
+       c.le.s  $fcc6,$f24,$f4
+       c.lt.d  $fcc3,$f9,$f3
+       c.lt.s  $fcc2,$f17,$f14
+       c.nge.d $fcc5,$f21,$f16
+       c.nge.s $fcc3,$f11,$f8
+       c.ngl.s $fcc2,$f31,$f23
+       c.ngle.s        $fcc2,$f18,$f23
+       c.ngt.d $fcc4,$f24,$f7
+       c.ngt.s $fcc5,$f8,$f13
+       c.ole.d $fcc2,$f16,$f31
+       c.ole.s $fcc3,$f7,$f20
+       c.olt.d $fcc4,$f19,$f28
+       c.olt.s $fcc6,$f20,$f7
+       c.seq.d $fcc4,$f31,$f7
+       c.seq.s $fcc7,$f1,$f25
+       c.ueq.d $fcc4,$f13,$f25
+       c.ueq.s $fcc6,$f3,$f30
+       c.ule.d $fcc7,$f25,$f18
+       c.ule.s $fcc7,$f21,$f30
+       c.ult.d $fcc6,$f6,$f17
+       c.ult.s $fcc7,$f24,$f10
+       c.un.d  $fcc6,$f23,$f24
+       c.un.s  $fcc1,$f30,$f4
+       ddiv    $zero,$k0,$s3
+       ddivu   $zero,$s0,$s1
+       div     $zero,$t9,$t3
+       divu    $zero,$t9,$t7
+       ehb
+       madd.d  $f18,$f19,$f26,$f20
+       madd.s  $f1,$f31,$f19,$f25
+       msub.d  $f10,$f1,$f31,$f18
+       msub.s  $f12,$f19,$f10,$f16
+       nmadd.d $f18,$f9,$f14,$f19
+       nmadd.s $f0,$f5,$f25,$f12
+       nmsub.d $f30,$f8,$f16,$f30
+       nmsub.s $f1,$f24,$f19,$f4
+       recip.d $f19,$f6
+       recip.s $f3,$f30
+       rsqrt.d $f3,$f28
+       rsqrt.s $f4,$f8
+       ssnop
+       tlbp
+       tlbr
+       tlbwi
+       tlbwr
diff --git a/test/MC/Mips/mips4/valid.s b/test/MC/Mips/mips4/valid.s
new file mode 100644 (file)
index 0000000..66886c5
--- /dev/null
@@ -0,0 +1,155 @@
+# Instructions that are valid
+#
+# FIXME: Test MIPS-IV instead of MIPS64
+# RUN: llvm-mc %s -triple=mips64-unknown-linux -show-encoding -mcpu=mips64   | FileCheck %s
+
+       .set noat
+       abs.d   $f7,$f25 # CHECK: encoding
+       abs.s   $f9,$f16
+       add     $s7,$s2,$a1
+       add.d   $f1,$f7,$f29
+       add.s   $f8,$f21,$f24
+       addi    $t5,$t1,26322
+       addu    $t1,$a0,$a2
+       and     $s7,$v0,$t4
+       c.ngl.d $f29,$f29
+       c.ngle.d        $f0,$f16
+       c.sf.d  $f30,$f0
+       c.sf.s  $f14,$f22
+       ceil.l.d        $f1,$f3
+       ceil.l.s        $f18,$f13
+       ceil.w.d        $f11,$f25
+       ceil.w.s        $f6,$f20
+       cfc1    $s1,$21
+       ctc1    $a2,$26
+       cvt.d.l $f4,$f16
+       cvt.d.s $f22,$f28
+       cvt.d.w $f26,$f11
+       cvt.l.d $f24,$f15
+       cvt.l.s $f11,$f29
+       cvt.s.d $f26,$f8
+       cvt.s.l $f15,$f30
+       cvt.s.w $f22,$f15
+       cvt.w.d $f20,$f14
+       cvt.w.s $f20,$f24
+       dadd    $s3,$at,$ra
+       daddi   $sp,$s4,-27705
+       daddiu  $k0,$s6,-4586
+       div.d   $f29,$f20,$f27
+       div.s   $f4,$f5,$f15
+       dmfc1   $t4,$f13
+       dmtc1   $s0,$f14
+       dmult   $s7,$t1
+       dmultu  $a1,$a2
+       dsllv   $zero,$s4,$t4
+       dsrav   $gp,$s2,$s3
+       dsrlv   $s3,$t6,$s4
+       dsub    $a3,$s6,$t0
+       dsubu   $a1,$a1,$k0
+       eret
+       floor.l.d       $f26,$f7
+       floor.l.s       $f12,$f5
+       floor.w.d       $f14,$f11
+       floor.w.s       $f8,$f9
+       lb      $t8,-14515($t2)
+       lbu     $t0,30195($v1)
+       ld      $sp,-28645($s1)
+       ldc1    $f11,16391($s0)
+       ldc2    $8,-21181($at)
+       ldl     $t8,-4167($t8)
+       ldr     $t6,-30358($s4)
+       ldxc1   $f8,$s7($t7)
+       lh      $t3,-8556($s5)
+       lhu     $s3,-22851($v0)
+       li      $at,-29773
+       li      $zero,-29889
+       ll      $v0,-7321($s2)
+       lld     $zero,-14736($ra)
+       lw      $t0,5674($a1)
+       lwc1    $f16,10225($k0)
+       lwc2    $18,-841($a2)
+       lwl     $s4,-4231($t7)
+       lwr     $zero,-19147($gp)
+       lwu     $s3,-24086($v1)
+       lwxc1   $f12,$s1($s8)
+       mfc1    $a3,$f27
+       mfhi    $s3
+       mfhi    $sp
+       mflo    $s1
+       mov.d   $f20,$f14
+       mov.s   $f2,$f27
+       move    $a0,$a3
+       move    $s5,$a0
+       move    $s8,$a0
+       move    $t9,$a2
+       movf    $gp,$t0,$fcc7
+       movf.d  $f6,$f11,$fcc5
+       movf.s  $f23,$f5,$fcc6
+       movn    $v1,$s1,$s0
+       movn.d  $f27,$f21,$k0
+       movn.s  $f12,$f0,$s7
+       movt    $zero,$s4,$fcc5
+       movt.d  $f0,$f2,$fcc0
+       movt.s  $f30,$f2,$fcc1
+       movz    $a1,$s6,$t1
+       movz.d  $f12,$f29,$t1
+       movz.s  $f25,$f7,$v1
+       mtc1    $s8,$f9
+       mthi    $s1
+       mtlo    $sp
+       mtlo    $t9
+       mul.d   $f20,$f20,$f16
+       mul.s   $f30,$f10,$f2
+       mult    $sp,$s4
+       mult    $sp,$v0
+       multu   $gp,$k0
+       multu   $t1,$s2
+       neg.d   $f27,$f18
+       neg.s   $f1,$f15
+       nop
+       nor     $a3,$zero,$a3
+       or      $t4,$s0,$sp
+       round.l.d       $f12,$f1
+       round.l.s       $f25,$f5
+       round.w.d       $f6,$f4
+       round.w.s       $f27,$f28
+       sb      $s6,-19857($t6)
+       sc      $t7,18904($s3)
+       scd     $t7,-8243($sp)
+       sd      $t4,5835($t2)
+       sdc1    $f31,30574($t5)
+       sdc2    $20,23157($s2)
+       sdl     $a3,-20961($s8)
+       sdr     $t3,-20423($t4)
+       sdxc1   $f11,$t2($t6)
+       sh      $t6,-6704($t7)
+       sllv    $a3,$zero,$t1
+       slt     $s7,$t3,$k1
+       slti    $s1,$t2,9489
+       sltiu   $t9,$t9,-15531
+       sltu    $s4,$s5,$t3
+       sqrt.d  $f17,$f22
+       sqrt.s  $f0,$f1
+       srav    $s1,$s7,$sp
+       srlv    $t9,$s4,$a0
+       sub     $s6,$s3,$t4
+       sub.d   $f18,$f3,$f17
+       sub.s   $f23,$f22,$f22
+       subu    $sp,$s6,$s6
+       sw      $ra,-10160($sp)
+       swc1    $f6,-8465($t8)
+       swc2    $25,24880($s0)
+       swl     $t7,13694($s3)
+       swr     $s1,-26590($t6)
+       swxc1   $f19,$t4($k0)
+       teqi    $s5,-17504
+       tgei    $s1,5025
+       tgeiu   $sp,-28621
+       tlti    $t6,-21059
+       tltiu   $ra,-5076
+       tnei    $t4,-29647
+       trunc.l.d       $f23,$f23
+       trunc.l.s       $f28,$f31
+       trunc.w.d       $f22,$f15
+       trunc.w.s       $f28,$f30
+       xor     $s2,$a0,$s8
diff --git a/test/MC/Mips/mips5/valid-xfail.s b/test/MC/Mips/mips5/valid-xfail.s
new file mode 100644 (file)
index 0000000..1093158
--- /dev/null
@@ -0,0 +1,98 @@
+# Instructions that should be valid but currently fail for known reasons (e.g.
+# they aren't implemented yet).
+# This test is set up to XPASS if any instruction generates an encoding.
+#
+# FIXME: Test MIPS-V instead of MIPS64
+# RUN: not llvm-mc %s -triple=mips64-unknown-linux -show-encoding -mcpu=mips64   | not FileCheck %s
+# CHECK-NOT: encoding
+# XFAIL: *
+
+        .set noat
+       abs.ps  $f22,$f8
+       add.ps  $f25,$f27,$f13
+       alnv.ps $f12,$f18,$f30,$t4
+       c.eq.d  $fcc1,$f15,$f15
+       c.eq.ps $fcc5,$f0,$f9
+       c.eq.s  $fcc5,$f24,$f17
+       c.f.d   $fcc4,$f11,$f21
+       c.f.ps  $fcc6,$f11,$f11
+       c.f.s   $fcc4,$f30,$f7
+       c.le.d  $fcc4,$f18,$f1
+       c.le.ps $fcc1,$f7,$f20
+       c.le.s  $fcc6,$f24,$f4
+       c.lt.d  $fcc3,$f9,$f3
+       c.lt.ps $f19,$f5
+       c.lt.s  $fcc2,$f17,$f14
+       c.nge.d $fcc5,$f21,$f16
+       c.nge.ps        $f1,$f26
+       c.nge.s $fcc3,$f11,$f8
+       c.ngl.ps        $f21,$f30
+       c.ngl.s $fcc2,$f31,$f23
+       c.ngle.ps       $fcc7,$f12,$f20
+       c.ngle.s        $fcc2,$f18,$f23
+       c.ngt.d $fcc4,$f24,$f7
+       c.ngt.ps        $fcc5,$f30,$f6
+       c.ngt.s $fcc5,$f8,$f13
+       c.ole.d $fcc2,$f16,$f31
+       c.ole.ps        $fcc7,$f21,$f8
+       c.ole.s $fcc3,$f7,$f20
+       c.olt.d $fcc4,$f19,$f28
+       c.olt.ps        $fcc3,$f7,$f16
+       c.olt.s $fcc6,$f20,$f7
+       c.seq.d $fcc4,$f31,$f7
+       c.seq.ps        $fcc6,$f31,$f14
+       c.seq.s $fcc7,$f1,$f25
+       c.sf.ps $fcc6,$f4,$f6
+       c.ueq.d $fcc4,$f13,$f25
+       c.ueq.ps        $fcc1,$f5,$f29
+       c.ueq.s $fcc6,$f3,$f30
+       c.ule.d $fcc7,$f25,$f18
+       c.ule.ps        $fcc6,$f17,$f3
+       c.ule.s $fcc7,$f21,$f30
+       c.ult.d $fcc6,$f6,$f17
+       c.ult.ps        $fcc7,$f14,$f0
+       c.ult.s $fcc7,$f24,$f10
+       c.un.d  $fcc6,$f23,$f24
+       c.un.ps $fcc4,$f2,$f26
+       c.un.s  $fcc1,$f30,$f4
+       cvt.ps.s        $f3,$f18,$f19
+       cvt.s.pl        $f30,$f1
+       cvt.s.pu        $f14,$f25
+       ddiv    $zero,$k0,$s3
+       ddivu   $zero,$s0,$s1
+       div     $zero,$t9,$t3
+       divu    $zero,$t9,$t7
+       ehb
+       madd.d  $f18,$f19,$f26,$f20
+       madd.ps $f22,$f3,$f14,$f3
+       madd.s  $f1,$f31,$f19,$f25
+       mov.ps  $f22,$f17
+       movf.ps $f10,$f28,$fcc6
+       movn.ps $f31,$f31,$s3
+       movt.ps $f20,$f25,$fcc2
+       movz.ps $f18,$f17,$ra
+       msub.d  $f10,$f1,$f31,$f18
+       msub.ps $f12,$f14,$f29,$f17
+       msub.s  $f12,$f19,$f10,$f16
+       mul.ps  $f14,$f0,$f16
+       neg.ps  $f19,$f13
+       nmadd.d $f18,$f9,$f14,$f19
+       nmadd.ps        $f27,$f4,$f9,$f25
+       nmadd.s $f0,$f5,$f25,$f12
+       nmsub.d $f30,$f8,$f16,$f30
+       nmsub.ps        $f6,$f12,$f14,$f17
+       nmsub.s $f1,$f24,$f19,$f4
+       pll.ps  $f25,$f9,$f30
+       plu.ps  $f1,$f26,$f29
+       pul.ps  $f9,$f30,$f26
+       puu.ps  $f24,$f9,$f2
+       recip.d $f19,$f6
+       recip.s $f3,$f30
+       rsqrt.d $f3,$f28
+       rsqrt.s $f4,$f8
+       ssnop
+       sub.ps  $f5,$f14,$f26
+       tlbp
+       tlbr
+       tlbwi
+       tlbwr
diff --git a/test/MC/Mips/mips5/valid.s b/test/MC/Mips/mips5/valid.s
new file mode 100644 (file)
index 0000000..7665d1f
--- /dev/null
@@ -0,0 +1,157 @@
+# Instructions that are valid
+#
+# FIXME: Test MIPS-V instead of MIPS64
+# RUN: llvm-mc %s -triple=mips64-unknown-linux -show-encoding -mcpu=mips64   | FileCheck %s
+
+        .set noat
+       abs.d   $f7,$f25 # CHECK: encoding
+       abs.s   $f9,$f16
+       add     $s7,$s2,$a1
+       add.d   $f1,$f7,$f29
+       add.s   $f8,$f21,$f24
+       addi    $t5,$t1,26322
+       addu    $t1,$a0,$a2
+       and     $s7,$v0,$t4
+       c.ngl.d $f29,$f29
+       c.ngle.d        $f0,$f16
+       c.sf.d  $f30,$f0
+       c.sf.s  $f14,$f22
+       ceil.l.d        $f1,$f3
+       ceil.l.s        $f18,$f13
+       ceil.w.d        $f11,$f25
+       ceil.w.s        $f6,$f20
+       cfc1    $s1,$21
+       ctc1    $a2,$26
+       cvt.d.l $f4,$f16
+       cvt.d.s $f22,$f28
+       cvt.d.w $f26,$f11
+       cvt.l.d $f24,$f15
+       cvt.l.s $f11,$f29
+       cvt.s.d $f26,$f8
+       cvt.s.l $f15,$f30
+       cvt.s.w $f22,$f15
+       cvt.w.d $f20,$f14
+       cvt.w.s $f20,$f24
+       dadd    $s3,$at,$ra
+       daddi   $sp,$s4,-27705
+       daddiu  $k0,$s6,-4586
+       div.d   $f29,$f20,$f27
+       div.s   $f4,$f5,$f15
+       dmfc1   $t4,$f13
+       dmtc1   $s0,$f14
+       dmult   $s7,$t1
+       dmultu  $a1,$a2
+       dsllv   $zero,$s4,$t4
+       dsrav   $gp,$s2,$s3
+       dsrlv   $s3,$t6,$s4
+       dsub    $a3,$s6,$t0
+       dsubu   $a1,$a1,$k0
+       eret
+       floor.l.d       $f26,$f7
+       floor.l.s       $f12,$f5
+       floor.w.d       $f14,$f11
+       floor.w.s       $f8,$f9
+       lb      $t8,-14515($t2)
+       lbu     $t0,30195($v1)
+       ld      $sp,-28645($s1)
+       ldc1    $f11,16391($s0)
+       ldc2    $8,-21181($at)
+       ldl     $t8,-4167($t8)
+       ldr     $t6,-30358($s4)
+       ldxc1   $f8,$s7($t7)
+       lh      $t3,-8556($s5)
+       lhu     $s3,-22851($v0)
+       li      $at,-29773
+       li      $zero,-29889
+       ll      $v0,-7321($s2)
+       lld     $zero,-14736($ra)
+       luxc1   $f19,$s6($s5)
+       lw      $t0,5674($a1)
+       lwc1    $f16,10225($k0)
+       lwc2    $18,-841($a2)
+       lwl     $s4,-4231($t7)
+       lwr     $zero,-19147($gp)
+       lwu     $s3,-24086($v1)
+       lwxc1   $f12,$s1($s8)
+       mfc1    $a3,$f27
+       mfhi    $s3
+       mfhi    $sp
+       mflo    $s1
+       mov.d   $f20,$f14
+       mov.s   $f2,$f27
+       move    $a0,$a3
+       move    $s5,$a0
+       move    $s8,$a0
+       move    $t9,$a2
+       movf    $gp,$t0,$fcc7
+       movf.d  $f6,$f11,$fcc5
+       movf.s  $f23,$f5,$fcc6
+       movn    $v1,$s1,$s0
+       movn.d  $f27,$f21,$k0
+       movn.s  $f12,$f0,$s7
+       movt    $zero,$s4,$fcc5
+       movt.d  $f0,$f2,$fcc0
+       movt.s  $f30,$f2,$fcc1
+       movz    $a1,$s6,$t1
+       movz.d  $f12,$f29,$t1
+       movz.s  $f25,$f7,$v1
+       mtc1    $s8,$f9
+       mthi    $s1
+       mtlo    $sp
+       mtlo    $t9
+       mul.d   $f20,$f20,$f16
+       mul.s   $f30,$f10,$f2
+       mult    $sp,$s4
+       mult    $sp,$v0
+       multu   $gp,$k0
+       multu   $t1,$s2
+       neg.d   $f27,$f18
+       neg.s   $f1,$f15
+       nop
+       nor     $a3,$zero,$a3
+       or      $t4,$s0,$sp
+       round.l.d       $f12,$f1
+       round.l.s       $f25,$f5
+       round.w.d       $f6,$f4
+       round.w.s       $f27,$f28
+       sb      $s6,-19857($t6)
+       sc      $t7,18904($s3)
+       scd     $t7,-8243($sp)
+       sd      $t4,5835($t2)
+       sdc1    $f31,30574($t5)
+       sdc2    $20,23157($s2)
+       sdl     $a3,-20961($s8)
+       sdr     $t3,-20423($t4)
+       sdxc1   $f11,$t2($t6)
+       sh      $t6,-6704($t7)
+       sllv    $a3,$zero,$t1
+       slt     $s7,$t3,$k1
+       slti    $s1,$t2,9489
+       sltiu   $t9,$t9,-15531
+       sltu    $s4,$s5,$t3
+       sqrt.d  $f17,$f22
+       sqrt.s  $f0,$f1
+       srav    $s1,$s7,$sp
+       srlv    $t9,$s4,$a0
+       sub     $s6,$s3,$t4
+       sub.d   $f18,$f3,$f17
+       sub.s   $f23,$f22,$f22
+       subu    $sp,$s6,$s6
+       suxc1   $f12,$k1($t5)
+       sw      $ra,-10160($sp)
+       swc1    $f6,-8465($t8)
+       swc2    $25,24880($s0)
+       swl     $t7,13694($s3)
+       swr     $s1,-26590($t6)
+       swxc1   $f19,$t4($k0)
+       teqi    $s5,-17504
+       tgei    $s1,5025
+       tgeiu   $sp,-28621
+       tlti    $t6,-21059
+       tltiu   $ra,-5076
+       tnei    $t4,-29647
+       trunc.l.d       $f23,$f23
+       trunc.l.s       $f28,$f31
+       trunc.w.d       $f22,$f15
+       trunc.w.s       $f28,$f30
+       xor     $s2,$a0,$s8
diff --git a/test/MC/Mips/mips64/valid-xfail.s b/test/MC/Mips/mips64/valid-xfail.s
new file mode 100644 (file)
index 0000000..11ed774
--- /dev/null
@@ -0,0 +1,104 @@
+# Instructions that should be valid but currently fail for known reasons (e.g.
+# they aren't implemented yet).
+# This test is set up to XPASS if any instruction generates an encoding.
+#
+# RUN: not llvm-mc %s -triple=mips64-unknown-linux -show-encoding -mcpu=mips64 | not FileCheck %s
+# CHECK-NOT: encoding
+# XFAIL: *
+
+       .set noat
+       abs.ps  $f22,$f8
+       add.ps  $f25,$f27,$f13
+       alnv.ob $v22,$v19,$v30,$v1
+       alnv.ob $v31,$v23,$v30,$at
+       alnv.ob $v8,$v17,$v30,$a1
+       alnv.ps $f12,$f18,$f30,$t4
+       c.eq.d  $fcc1,$f15,$f15
+       c.eq.ps $fcc5,$f0,$f9
+       c.eq.s  $fcc5,$f24,$f17
+       c.f.d   $fcc4,$f11,$f21
+       c.f.ps  $fcc6,$f11,$f11
+       c.f.s   $fcc4,$f30,$f7
+       c.le.d  $fcc4,$f18,$f1
+       c.le.ps $fcc1,$f7,$f20
+       c.le.s  $fcc6,$f24,$f4
+       c.lt.d  $fcc3,$f9,$f3
+       c.lt.ps $f19,$f5
+       c.lt.s  $fcc2,$f17,$f14
+       c.nge.d $fcc5,$f21,$f16
+       c.nge.ps        $f1,$f26
+       c.nge.s $fcc3,$f11,$f8
+       c.ngl.ps        $f21,$f30
+       c.ngl.s $fcc2,$f31,$f23
+       c.ngle.ps       $fcc7,$f12,$f20
+       c.ngle.s        $fcc2,$f18,$f23
+       c.ngt.d $fcc4,$f24,$f7
+       c.ngt.ps        $fcc5,$f30,$f6
+       c.ngt.s $fcc5,$f8,$f13
+       c.ole.d $fcc2,$f16,$f31
+       c.ole.ps        $fcc7,$f21,$f8
+       c.ole.s $fcc3,$f7,$f20
+       c.olt.d $fcc4,$f19,$f28
+       c.olt.ps        $fcc3,$f7,$f16
+       c.olt.s $fcc6,$f20,$f7
+       c.seq.d $fcc4,$f31,$f7
+       c.seq.ps        $fcc6,$f31,$f14
+       c.seq.s $fcc7,$f1,$f25
+       c.sf.ps $fcc6,$f4,$f6
+       c.ueq.d $fcc4,$f13,$f25
+       c.ueq.ps        $fcc1,$f5,$f29
+       c.ueq.s $fcc6,$f3,$f30
+       c.ule.d $fcc7,$f25,$f18
+       c.ule.ps        $fcc6,$f17,$f3
+       c.ule.s $fcc7,$f21,$f30
+       c.ult.d $fcc6,$f6,$f17
+       c.ult.ps        $fcc7,$f14,$f0
+       c.ult.s $fcc7,$f24,$f10
+       c.un.d  $fcc6,$f23,$f24
+       c.un.ps $fcc4,$f2,$f26
+       c.un.s  $fcc1,$f30,$f4
+       cvt.ps.s        $f3,$f18,$f19
+       cvt.s.pl        $f30,$f1
+       cvt.s.pu        $f14,$f25
+       ddiv    $zero,$k0,$s3
+       ddivu   $zero,$s0,$s1
+       div     $zero,$t9,$t3
+       divu    $zero,$t9,$t7
+       dmfc0   $t2,c0_watchhi,2
+       dmtc0   $t7,c0_datalo
+       ehb
+       madd.d  $f18,$f19,$f26,$f20
+       madd.ps $f22,$f3,$f14,$f3
+       madd.s  $f1,$f31,$f19,$f25
+       mov.ps  $f22,$f17
+       movf.ps $f10,$f28,$fcc6
+       movn.ps $f31,$f31,$s3
+       movt.ps $f20,$f25,$fcc2
+       movz.ps $f18,$f17,$ra
+       msgn.qh $v0,$v24,$v20
+       msgn.qh $v12,$v21,$v0[1]
+       msub.d  $f10,$f1,$f31,$f18
+       msub.ps $f12,$f14,$f29,$f17
+       msub.s  $f12,$f19,$f10,$f16
+       mul.ps  $f14,$f0,$f16
+       neg.ps  $f19,$f13
+       nmadd.d $f18,$f9,$f14,$f19
+       nmadd.ps        $f27,$f4,$f9,$f25
+       nmadd.s $f0,$f5,$f25,$f12
+       nmsub.d $f30,$f8,$f16,$f30
+       nmsub.ps        $f6,$f12,$f14,$f17
+       nmsub.s $f1,$f24,$f19,$f4
+       pll.ps  $f25,$f9,$f30
+       plu.ps  $f1,$f26,$f29
+       pul.ps  $f9,$f30,$f26
+       puu.ps  $f24,$f9,$f2
+       recip.d $f19,$f6
+       recip.s $f3,$f30
+       rsqrt.d $f3,$f28
+       rsqrt.s $f4,$f8
+       ssnop
+       sub.ps  $f5,$f14,$f26
+       tlbp
+       tlbr
+       tlbwi
+       tlbwr
diff --git a/test/MC/Mips/mips64/valid.s b/test/MC/Mips/mips64/valid.s
new file mode 100644 (file)
index 0000000..cfd708c
--- /dev/null
@@ -0,0 +1,170 @@
+# Instructions that are valid
+#
+# RUN: llvm-mc %s -triple=mips64-unknown-linux -show-encoding -mcpu=mips64 | FileCheck %s
+
+        .set noat
+       abs.d   $f7,$f25 # CHECK: encoding
+       abs.s   $f9,$f16
+       add     $s7,$s2,$a1
+       add.d   $f1,$f7,$f29
+       add.s   $f8,$f21,$f24
+       addi    $t5,$t1,26322
+       addu    $t1,$a0,$a2
+       and     $s7,$v0,$t4
+       c.ngl.d $f29,$f29
+       c.ngle.d        $f0,$f16
+       c.sf.d  $f30,$f0
+       c.sf.s  $f14,$f22
+       ceil.l.d        $f1,$f3
+       ceil.l.s        $f18,$f13
+       ceil.w.d        $f11,$f25
+       ceil.w.s        $f6,$f20
+       cfc1    $s1,$21
+       clo     $t3,$a1
+       clz     $sp,$gp
+       ctc1    $a2,$26
+       cvt.d.l $f4,$f16
+       cvt.d.s $f22,$f28
+       cvt.d.w $f26,$f11
+       cvt.l.d $f24,$f15
+       cvt.l.s $f11,$f29
+       cvt.s.d $f26,$f8
+       cvt.s.l $f15,$f30
+       cvt.s.w $f22,$f15
+       cvt.w.d $f20,$f14
+       cvt.w.s $f20,$f24
+       dadd    $s3,$at,$ra
+       daddi   $sp,$s4,-27705
+       daddiu  $k0,$s6,-4586
+       dclo    $s2,$a2
+       dclz    $s0,$t9
+       deret
+       div.d   $f29,$f20,$f27
+       div.s   $f4,$f5,$f15
+       dmfc1   $t4,$f13
+       dmtc1   $s0,$f14
+       dmult   $s7,$t1
+       dmultu  $a1,$a2
+       dsllv   $zero,$s4,$t4
+       dsrav   $gp,$s2,$s3
+       dsrlv   $s3,$t6,$s4
+       dsub    $a3,$s6,$t0
+       dsubu   $a1,$a1,$k0
+       eret
+       floor.l.d       $f26,$f7
+       floor.l.s       $f12,$f5
+       floor.w.d       $f14,$f11
+       floor.w.s       $f8,$f9
+       lb      $t8,-14515($t2)
+       lbu     $t0,30195($v1)
+       ld      $sp,-28645($s1)
+       ldc1    $f11,16391($s0)
+       ldc2    $8,-21181($at)
+       ldl     $t8,-4167($t8)
+       ldr     $t6,-30358($s4)
+       ldxc1   $f8,$s7($t7)
+       lh      $t3,-8556($s5)
+       lhu     $s3,-22851($v0)
+       li      $at,-29773
+       li      $zero,-29889
+       ll      $v0,-7321($s2)
+       lld     $zero,-14736($ra)
+       luxc1   $f19,$s6($s5)
+       lw      $t0,5674($a1)
+       lwc1    $f16,10225($k0)
+       lwc2    $18,-841($a2)
+       lwl     $s4,-4231($t7)
+       lwr     $zero,-19147($gp)
+       lwu     $s3,-24086($v1)
+       lwxc1   $f12,$s1($s8)
+       madd    $s6,$t5
+       madd    $zero,$t1
+       maddu   $s3,$gp
+       maddu   $t8,$s2
+       mfc0    $a2,$14,1
+       mfc1    $a3,$f27
+       mfhi    $s3
+       mfhi    $sp
+       mflo    $s1
+       mov.d   $f20,$f14
+       mov.s   $f2,$f27
+       move    $a0,$a3
+       move    $s5,$a0
+       move    $s8,$a0
+       move    $t9,$a2
+       movf    $gp,$t0,$fcc7
+       movf.d  $f6,$f11,$fcc5
+       movf.s  $f23,$f5,$fcc6
+       movn    $v1,$s1,$s0
+       movn.d  $f27,$f21,$k0
+       movn.s  $f12,$f0,$s7
+       movt    $zero,$s4,$fcc5
+       movt.d  $f0,$f2,$fcc0
+       movt.s  $f30,$f2,$fcc1
+       movz    $a1,$s6,$t1
+       movz.d  $f12,$f29,$t1
+       movz.s  $f25,$f7,$v1
+       msub    $s7,$k1
+       msubu   $t7,$a1
+       mtc0    $t1,$29,3
+       mtc1    $s8,$f9
+       mthi    $s1
+       mtlo    $sp
+       mtlo    $t9
+       mul     $s0,$s4,$at
+       mul.d   $f20,$f20,$f16
+       mul.s   $f30,$f10,$f2
+       mult    $sp,$s4
+       mult    $sp,$v0
+       multu   $gp,$k0
+       multu   $t1,$s2
+       neg.d   $f27,$f18
+       neg.s   $f1,$f15
+       nop
+       nor     $a3,$zero,$a3
+       or      $t4,$s0,$sp
+       round.l.d       $f12,$f1
+       round.l.s       $f25,$f5
+       round.w.d       $f6,$f4
+       round.w.s       $f27,$f28
+       sb      $s6,-19857($t6)
+       sc      $t7,18904($s3)
+       scd     $t7,-8243($sp)
+       sd      $t4,5835($t2)
+       sdc1    $f31,30574($t5)
+       sdc2    $20,23157($s2)
+       sdl     $a3,-20961($s8)
+       sdr     $t3,-20423($t4)
+       sdxc1   $f11,$t2($t6)
+       sh      $t6,-6704($t7)
+       sllv    $a3,$zero,$t1
+       slt     $s7,$t3,$k1
+       slti    $s1,$t2,9489
+       sltiu   $t9,$t9,-15531
+       sltu    $s4,$s5,$t3
+       sqrt.d  $f17,$f22
+       sqrt.s  $f0,$f1
+       srav    $s1,$s7,$sp
+       srlv    $t9,$s4,$a0
+       sub     $s6,$s3,$t4
+       sub.d   $f18,$f3,$f17
+       sub.s   $f23,$f22,$f22
+       subu    $sp,$s6,$s6
+       suxc1   $f12,$k1($t5)
+       sw      $ra,-10160($sp)
+       swc1    $f6,-8465($t8)
+       swc2    $25,24880($s0)
+       swl     $t7,13694($s3)
+       swr     $s1,-26590($t6)
+       swxc1   $f19,$t4($k0)
+       teqi    $s5,-17504
+       tgei    $s1,5025
+       tgeiu   $sp,-28621
+       tlti    $t6,-21059
+       tltiu   $ra,-5076
+       tnei    $t4,-29647
+       trunc.l.d       $f23,$f23
+       trunc.l.s       $f28,$f31
+       trunc.w.d       $f22,$f15
+       trunc.w.s       $f28,$f30
+       xor     $s2,$a0,$s8
diff --git a/test/MC/Mips/mips64r2/valid-xfail.s b/test/MC/Mips/mips64r2/valid-xfail.s
new file mode 100644 (file)
index 0000000..61bfb7f
--- /dev/null
@@ -0,0 +1,334 @@
+# Instructions that should be valid but currently fail for known reasons (e.g.
+# they aren't implemented yet).
+# This test is set up to XPASS if any instruction generates an encoding.
+#
+# RUN: not llvm-mc %s -triple=mips64-unknown-linux -show-encoding -mcpu=mips64r2 | not FileCheck %s
+# CHECK-NOT: encoding
+# XFAIL: *
+
+       .set noat
+       abs.ps  $f22,$f8
+       absq_s.ph       $t0,$a0
+       absq_s.qb       $t7,$s1
+       absq_s.w        $s3,$ra
+       add.ps  $f25,$f27,$f13
+       addq.ph $s1,$t7,$at
+       addq_s.ph       $s3,$s6,$s2
+       addq_s.w        $a2,$t0,$at
+       addqh.ph        $s4,$t6,$s1
+       addqh.w $s7,$s7,$k1
+       addqh_r.ph      $sp,$t9,$s8
+       addqh_r.w       $t0,$v1,$zero
+       addsc   $s8,$t7,$t4
+       addu.ph $a2,$t6,$s3
+       addu.qb $s6,$v1,$v1
+       addu_s.ph       $a3,$s3,$gp
+       addu_s.qb       $s4,$s8,$s1
+       adduh.qb        $a1,$a1,$at
+       adduh_r.qb      $a0,$t1,$t4
+       addwc   $k0,$s6,$s7
+       alnv.ob $v22,$v19,$v30,$v1
+       alnv.ob $v31,$v23,$v30,$at
+       alnv.ob $v8,$v17,$v30,$a1
+       alnv.ps $f12,$f18,$f30,$t4
+       and.v   $w10,$w25,$w29
+       bitrev  $t6,$at
+       bmnz.v  $w15,$w2,$w28
+       bmz.v   $w13,$w11,$w21
+       bsel.v  $w28,$w7,$w0
+       c.eq.d  $fcc1,$f15,$f15
+       c.eq.ps $fcc5,$f0,$f9
+       c.eq.s  $fcc5,$f24,$f17
+       c.f.d   $fcc4,$f11,$f21
+       c.f.ps  $fcc6,$f11,$f11
+       c.f.s   $fcc4,$f30,$f7
+       c.le.d  $fcc4,$f18,$f1
+       c.le.ps $fcc1,$f7,$f20
+       c.le.s  $fcc6,$f24,$f4
+       c.lt.d  $fcc3,$f9,$f3
+       c.lt.ps $f19,$f5
+       c.lt.s  $fcc2,$f17,$f14
+       c.nge.d $fcc5,$f21,$f16
+       c.nge.ps        $f1,$f26
+       c.nge.s $fcc3,$f11,$f8
+       c.ngl.d $f29,$f29
+       c.ngl.ps        $f21,$f30
+       c.ngl.s $fcc2,$f31,$f23
+       c.ngle.ps       $fcc7,$f12,$f20
+       c.ngle.s        $fcc2,$f18,$f23
+       c.ngt.d $fcc4,$f24,$f7
+       c.ngt.ps        $fcc5,$f30,$f6
+       c.ngt.s $fcc5,$f8,$f13
+       c.ole.d $fcc2,$f16,$f31
+       c.ole.ps        $fcc7,$f21,$f8
+       c.ole.s $fcc3,$f7,$f20
+       c.olt.d $fcc4,$f19,$f28
+       c.olt.ps        $fcc3,$f7,$f16
+       c.olt.s $fcc6,$f20,$f7
+       c.seq.d $fcc4,$f31,$f7
+       c.seq.ps        $fcc6,$f31,$f14
+       c.seq.s $fcc7,$f1,$f25
+       c.sf.ps $fcc6,$f4,$f6
+       c.sf.s  $f14,$f22
+       c.ueq.d $fcc4,$f13,$f25
+       c.ueq.ps        $fcc1,$f5,$f29
+       c.ueq.s $fcc6,$f3,$f30
+       c.ule.d $fcc7,$f25,$f18
+       c.ule.ps        $fcc6,$f17,$f3
+       c.ule.s $fcc7,$f21,$f30
+       c.ult.d $fcc6,$f6,$f17
+       c.ult.ps        $fcc7,$f14,$f0
+       c.ult.s $fcc7,$f24,$f10
+       c.un.d  $fcc6,$f23,$f24
+       c.un.ps $fcc4,$f2,$f26
+       c.un.s  $fcc1,$f30,$f4
+       cvt.ps.s        $f3,$f18,$f19
+       cmp.eq.ph       $s7,$t6
+       cmp.le.ph       $t0,$t6
+       cmp.lt.ph       $k0,$sp
+       cmpgdu.eq.qb    $s3,$zero,$k0
+       cmpgdu.le.qb    $v1,$t7,$s2
+       cmpgdu.lt.qb    $s0,$gp,$sp
+       cmpgu.eq.qb     $t6,$s6,$s8
+       cmpgu.le.qb     $t1,$a3,$s4
+       cmpgu.lt.qb     $sp,$at,$t0
+       cmpu.eq.qb      $v0,$t8
+       cmpu.le.qb      $s1,$a1
+       cmpu.lt.qb      $at,$a3
+       cvt.s.pl        $f30,$f1
+       cvt.s.pu        $f14,$f25
+       ddiv    $zero,$k0,$s3
+       ddivu   $zero,$s0,$s1
+       div     $zero,$t9,$t3
+       divu    $zero,$t9,$t7
+       dmfc0   $t2,c0_watchhi,2
+       dmfgc0  $gp,c0_perfcnt,6
+       dmt     $k0
+       dmtc0   $t7,c0_datalo
+       dmtgc0  $a2,c0_watchlo,2
+       dpa.w.ph        $ac1,$s7,$k0
+       dpaq_s.w.ph     $ac2,$a0,$t5
+       dpaq_sa.l.w     $ac0,$a2,$t6
+       dpaqx_s.w.ph    $ac3,$a0,$t8
+       dpaqx_sa.w.ph   $ac1,$zero,$s5
+       dpau.h.qbl      $ac1,$t2,$t8
+       dpau.h.qbr      $ac1,$s7,$s6
+       dpax.w.ph       $ac3,$a0,$k0
+       dps.w.ph        $ac1,$a3,$a1
+       dpsq_s.w.ph     $ac0,$gp,$k0
+       dpsq_sa.l.w     $ac0,$a3,$t7
+       dpsqx_s.w.ph    $ac3,$t5,$a3
+       dpsqx_sa.w.ph   $ac3,$sp,$s2
+       dpsu.h.qbl      $ac2,$t6,$t2
+       dpsu.h.qbr      $ac2,$a1,$s6
+       dpsx.w.ph       $ac0,$s7,$gp
+       drorv   $at,$a1,$s7
+       dsbh    $v1,$t6
+       dshd    $v0,$sp
+       dvpe    $s6
+       ehb
+       emt     $t0
+       evpe    $v0
+       extpdpv $s6,$ac0,$s8
+       extpv   $t5,$ac0,$t6
+       extrv.w $t0,$ac3,$at
+       extrv_r.w       $t0,$ac1,$s6
+       extrv_rs.w      $gp,$ac1,$s6
+       extrv_s.h       $s2,$ac1,$t6
+       fclass.d        $w14,$w27
+       fclass.w        $w19,$w28
+       fexupl.d        $w10,$w29
+       fexupl.w        $w12,$w27
+       fexupr.d        $w31,$w15
+       fexupr.w        $w29,$w12
+       ffint_s.d       $w1,$w30
+       ffint_s.w       $w16,$w14
+       ffint_u.d       $w23,$w18
+       ffint_u.w       $w19,$w12
+       ffql.d  $w2,$w3
+       ffql.w  $w9,$w0
+       ffqr.d  $w25,$w24
+       ffqr.w  $w10,$w6
+       fill.b  $w9,$v1
+       fill.d  $w28,$t0
+       fill.h  $w9,$t0
+       fill.w  $w31,$t7
+       flog2.d $w12,$w16
+       flog2.w $w19,$w23
+       fork    $s2,$t0,$a0
+       frcp.d  $w12,$w4
+       frcp.w  $w30,$w8
+       frint.d $w20,$w8
+       frint.w $w11,$w29
+       frsqrt.d        $w29,$w2
+       frsqrt.w        $w9,$w8
+       fsqrt.d $w3,$w1
+       fsqrt.w $w5,$w15
+       ftint_s.d       $w31,$w26
+       ftint_s.w       $w27,$w14
+       ftint_u.d       $w5,$w31
+       ftint_u.w       $w12,$w29
+       ftrunc_s.d      $w4,$w22
+       ftrunc_s.w      $w24,$w7
+       ftrunc_u.d      $w20,$w25
+       ftrunc_u.w      $w7,$w26
+       insv    $s2,$at
+       iret
+       lbe     $t6,122($t1)
+       lbue    $t3,-108($t2)
+       lbux    $t1,$t6($v0)
+       lhe     $s6,219($v1)
+       lhue    $gp,118($t3)
+       lhx     $sp,$k0($t7)
+       lle     $gp,-237($ra)
+       lwe     $ra,-145($t6)
+       lwle    $t3,-42($t3)
+       lwre    $sp,-152($t8)
+       lwx     $t4,$t4($s4)
+       madd.d  $f18,$f19,$f26,$f20
+       madd.ps $f22,$f3,$f14,$f3
+       madd.s  $f1,$f31,$f19,$f25
+       maq_s.w.phl     $ac2,$t9,$t3
+       maq_s.w.phr     $ac0,$t2,$t9
+       maq_sa.w.phl    $ac3,$a1,$v1
+       maq_sa.w.phr    $ac1,$at,$t2
+       mfgc0   $s6,c0_datahi1
+       mflo    $t1,$ac2
+       modsub  $a3,$t4,$a3
+       mov.ps  $f22,$f17
+       movf.ps $f10,$f28,$fcc6
+       movn.ps $f31,$f31,$s3
+       movt.ps $f20,$f25,$fcc2
+       movz.ps $f18,$f17,$ra
+       msgn.qh $v0,$v24,$v20
+       msgn.qh $v12,$v21,$v0[1]
+       msub    $ac2,$sp,$t6
+       msub.d  $f10,$f1,$f31,$f18
+       msub.ps $f12,$f14,$f29,$f17
+       msub.s  $f12,$f19,$f10,$f16
+       msubu   $ac2,$a1,$t8
+       mtc0    $t1,c0_datahi1
+       mtgc0   $s4,$21,7
+       mthi    $v0,$ac1
+       mthlip  $a3,$ac0
+       mul.ph  $s4,$t8,$s0
+       mul.ps  $f14,$f0,$f16
+       mul_s.ph        $t2,$t6,$t7
+       muleq_s.w.phl   $t3,$s4,$s4
+       muleq_s.w.phr   $s6,$a0,$s8
+       muleu_s.ph.qbl  $a2,$t6,$t0
+       muleu_s.ph.qbr  $a1,$ra,$t1
+       mulq_rs.ph      $s2,$t6,$t7
+       mulq_rs.w       $at,$s4,$t9
+       mulq_s.ph       $s0,$k1,$t7
+       mulq_s.w        $t1,$a3,$s0
+       mulsa.w.ph      $ac1,$s4,$s6
+       mulsaq_s.w.ph   $ac0,$ra,$s2
+       neg.ps  $f19,$f13
+       nloc.b  $w12,$w30
+       nloc.d  $w16,$w7
+       nloc.h  $w21,$w17
+       nloc.w  $w17,$w16
+       nlzc.b  $w12,$w7
+       nlzc.d  $w14,$w14
+       nlzc.h  $w24,$w24
+       nlzc.w  $w10,$w4
+       nmadd.d $f18,$f9,$f14,$f19
+       nmadd.ps        $f27,$f4,$f9,$f25
+       nmadd.s $f0,$f5,$f25,$f12
+       nmsub.d $f30,$f8,$f16,$f30
+       nmsub.ps        $f6,$f12,$f14,$f17
+       nmsub.s $f1,$f24,$f19,$f4
+       nor.v   $w20,$w20,$w15
+       or.v    $w13,$w23,$w12
+       packrl.ph       $ra,$t8,$t6
+       pause
+       pcnt.b  $w30,$w15
+       pcnt.d  $w5,$w16
+       pcnt.h  $w20,$w24
+       pcnt.w  $w22,$w20
+       pick.ph $ra,$a2,$gp
+       pick.qb $t3,$a0,$gp
+       pll.ps  $f25,$f9,$f30
+       plu.ps  $f1,$f26,$f29
+       preceq.w.phl    $s8,$gp
+       preceq.w.phr    $s5,$t7
+       precequ.ph.qbl  $s7,$ra
+       precequ.ph.qbla $a0,$t1
+       precequ.ph.qbr  $ra,$s3
+       precequ.ph.qbra $t8,$t0
+       preceu.ph.qbl   $sp,$t0
+       preceu.ph.qbla  $s6,$t3
+       preceu.ph.qbr   $gp,$s1
+       preceu.ph.qbra  $k1,$s0
+       precr.qb.ph     $v0,$t4,$s8
+       precrq.ph.w     $t6,$s8,$t8
+       precrq.qb.ph    $a2,$t4,$t4
+       precrq_rs.ph.w  $a1,$k0,$a3
+       precrqu_s.qb.ph $zero,$gp,$s5
+       pul.ps  $f9,$f30,$f26
+       puu.ps  $f24,$f9,$f2
+       raddu.w.qb      $t9,$s3
+       rdhwr   $sp,$11
+       rdpgpr  $s3,$t1
+       recip.d $f19,$f6
+       recip.s $f3,$f30
+       repl.ph $at,-307
+       replv.ph        $v1,$s7
+       replv.qb        $t9,$t4
+       rorv    $t5,$a3,$s5
+       rsqrt.d $f3,$f28
+       rsqrt.s $f4,$f8
+       sbe     $s7,33($s1)
+       sce     $sp,189($t2)
+       seb     $t9,$t7
+       seh     $v1,$t4
+       she     $t8,105($v0)
+       shilo   $ac1,26
+       shilov  $ac2,$t2
+       shllv.ph        $t2,$s0,$s0
+       shllv.qb        $gp,$v1,$zero
+       shllv_s.ph      $k1,$at,$t5
+       shllv_s.w       $s1,$ra,$k0
+       shrav.ph        $t9,$s2,$s1
+       shrav.qb        $zero,$t8,$t3
+       shrav_r.ph      $s3,$t3,$t9
+       shrav_r.qb      $a0,$sp,$s5
+       shrav_r.w       $s7,$s4,$s6
+       shrlv.ph        $t6,$t2,$t1
+       shrlv.qb        $a2,$s2,$t3
+       ssnop
+       sub.ps  $f5,$f14,$f26
+       subq.ph $ra,$t1,$s8
+       subq_s.ph       $t5,$s8,$s5
+       subq_s.w        $k1,$a2,$a3
+       subqh.ph        $t2,$at,$t1
+       subqh.w $v0,$a2,$zero
+       subqh_r.ph      $a0,$t4,$s6
+       subqh_r.w       $t2,$a2,$gp
+       subu.ph $t1,$s6,$s4
+       subu.qb $s6,$a2,$s6
+       subu_s.ph       $v1,$a1,$s3
+       subu_s.qb       $s1,$at,$ra
+       subuh.qb        $zero,$gp,$gp
+       subuh_r.qb      $s4,$s8,$s6
+       swe     $t8,94($k0)
+       swle    $v1,-209($gp)
+       swre    $k0,-202($s2)
+       synci   20023($s0)
+       tlbginv
+       tlbginvf
+       tlbgp
+       tlbgr
+       tlbgwi
+       tlbgwr
+       tlbinv
+       tlbinvf
+       tlbp
+       tlbr
+       tlbwi
+       tlbwr
+       wrpgpr  $zero,$t5
+       wsbh    $k1,$t1
+       xor.v   $w20,$w21,$w30
+       yield   $v1,$s0
diff --git a/test/MC/Mips/mips64r2/valid.s b/test/MC/Mips/mips64r2/valid.s
new file mode 100644 (file)
index 0000000..e1d8019
--- /dev/null
@@ -0,0 +1,171 @@
+# Instructions that are valid
+#
+# RUN: llvm-mc %s -triple=mips64-unknown-linux -show-encoding -mcpu=mips64r2 | FileCheck %s
+
+        .set noat
+       abs.d   $f7,$f25 # CHECK: encoding
+       abs.s   $f9,$f16
+       add     $s7,$s2,$a1
+       add.d   $f1,$f7,$f29
+       add.s   $f8,$f21,$f24
+       addi    $t5,$t1,26322
+       addu    $t1,$a0,$a2
+       and     $s7,$v0,$t4
+       c.ngle.d        $f0,$f16
+       c.sf.d  $f30,$f0
+       ceil.l.d        $f1,$f3
+       ceil.l.s        $f18,$f13
+       ceil.w.d        $f11,$f25
+       ceil.w.s        $f6,$f20
+       cfc1    $s1,$21
+       clo     $t3,$a1
+       clz     $sp,$gp
+       ctc1    $a2,$26
+       cvt.d.l $f4,$f16
+       cvt.d.s $f22,$f28
+       cvt.d.w $f26,$f11
+       cvt.l.d $f24,$f15
+       cvt.l.s $f11,$f29
+       cvt.s.d $f26,$f8
+       cvt.s.l $f15,$f30
+       cvt.s.w $f22,$f15
+       cvt.w.d $f20,$f14
+       cvt.w.s $f20,$f24
+       dadd    $s3,$at,$ra
+       daddi   $sp,$s4,-27705
+       daddiu  $k0,$s6,-4586
+       dclo    $s2,$a2
+       dclz    $s0,$t9
+       deret
+       di      $s8
+       div.d   $f29,$f20,$f27
+       div.s   $f4,$f5,$f15
+       dmfc1   $t4,$f13
+       dmtc1   $s0,$f14
+       dmult   $s7,$t1
+       dmultu  $a1,$a2
+       dsllv   $zero,$s4,$t4
+       dsrav   $gp,$s2,$s3
+       dsrlv   $s3,$t6,$s4
+       dsub    $a3,$s6,$t0
+       dsubu   $a1,$a1,$k0
+       ei      $t6
+       eret
+       floor.l.d       $f26,$f7
+       floor.l.s       $f12,$f5
+       floor.w.d       $f14,$f11
+       floor.w.s       $f8,$f9
+       lb      $t8,-14515($t2)
+       lbu     $t0,30195($v1)
+       ld      $sp,-28645($s1)
+       ldc1    $f11,16391($s0)
+       ldc2    $8,-21181($at)
+       ldl     $t8,-4167($t8)
+       ldr     $t6,-30358($s4)
+       ldxc1   $f8,$s7($t7)
+       lh      $t3,-8556($s5)
+       lhu     $s3,-22851($v0)
+       li      $at,-29773
+       li      $zero,-29889
+       ll      $v0,-7321($s2)
+       lld     $zero,-14736($ra)
+       luxc1   $f19,$s6($s5)
+       lw      $t0,5674($a1)
+       lwc1    $f16,10225($k0)
+       lwc2    $18,-841($a2)
+       lwl     $s4,-4231($t7)
+       lwr     $zero,-19147($gp)
+       lwu     $s3,-24086($v1)
+       lwxc1   $f12,$s1($s8)
+       madd    $s6,$t5
+       madd    $zero,$t1
+       maddu   $s3,$gp
+       maddu   $t8,$s2
+       mfc0    $a2,$14,1
+       mfc1    $a3,$f27
+       mfhc1   $s8,$f24
+       mfhi    $s3
+       mfhi    $sp
+       mflo    $s1
+       mov.d   $f20,$f14
+       mov.s   $f2,$f27
+       move    $a0,$a3
+       move    $s5,$a0
+       move    $s8,$a0
+       move    $t9,$a2
+       movf    $gp,$t0,$fcc7
+       movf.d  $f6,$f11,$fcc5
+       movf.s  $f23,$f5,$fcc6
+       movn    $v1,$s1,$s0
+       movn.d  $f27,$f21,$k0
+       movn.s  $f12,$f0,$s7
+       movt    $zero,$s4,$fcc5
+       movt.d  $f0,$f2,$fcc0
+       movt.s  $f30,$f2,$fcc1
+       movz    $a1,$s6,$t1
+       movz.d  $f12,$f29,$t1
+       movz.s  $f25,$f7,$v1
+       msub    $s7,$k1
+       msubu   $t7,$a1
+       mtc1    $s8,$f9
+       mthc1   $zero,$f16
+       mthi    $s1
+       mtlo    $sp
+       mtlo    $t9
+       mul     $s0,$s4,$at
+       mul.d   $f20,$f20,$f16
+       mul.s   $f30,$f10,$f2
+       mult    $sp,$s4
+       mult    $sp,$v0
+       multu   $gp,$k0
+       multu   $t1,$s2
+       neg.d   $f27,$f18
+       neg.s   $f1,$f15
+       nop
+       nor     $a3,$zero,$a3
+       or      $t4,$s0,$sp
+       round.l.d       $f12,$f1
+       round.l.s       $f25,$f5
+       round.w.d       $f6,$f4
+       round.w.s       $f27,$f28
+       sb      $s6,-19857($t6)
+       sc      $t7,18904($s3)
+       scd     $t7,-8243($sp)
+       sd      $t4,5835($t2)
+       sdc1    $f31,30574($t5)
+       sdc2    $20,23157($s2)
+       sdl     $a3,-20961($s8)
+       sdr     $t3,-20423($t4)
+       sdxc1   $f11,$t2($t6)
+       sh      $t6,-6704($t7)
+       sllv    $a3,$zero,$t1
+       slt     $s7,$t3,$k1
+       slti    $s1,$t2,9489
+       sltiu   $t9,$t9,-15531
+       sltu    $s4,$s5,$t3
+       sqrt.d  $f17,$f22
+       sqrt.s  $f0,$f1
+       srav    $s1,$s7,$sp
+       srlv    $t9,$s4,$a0
+       sub     $s6,$s3,$t4
+       sub.d   $f18,$f3,$f17
+       sub.s   $f23,$f22,$f22
+       subu    $sp,$s6,$s6
+       suxc1   $f12,$k1($t5)
+       sw      $ra,-10160($sp)
+       swc1    $f6,-8465($t8)
+       swc2    $25,24880($s0)
+       swl     $t7,13694($s3)
+       swr     $s1,-26590($t6)
+       swxc1   $f19,$t4($k0)
+       teqi    $s5,-17504
+       tgei    $s1,5025
+       tgeiu   $sp,-28621
+       tlti    $t6,-21059
+       tltiu   $ra,-5076
+       tnei    $t4,-29647
+       trunc.l.d       $f23,$f23
+       trunc.l.s       $f28,$f31
+       trunc.w.d       $f22,$f15
+       trunc.w.s       $f28,$f30
+       xor     $s2,$a0,$s8