ベクトル命令のテストパタンriscv-vector-tests
でvadd.vi
に属するテストパタンがすべてPASSできるようになったので、とりあえず手持ちのテストパタンを全部流してみた。
実行したのは878個のriscv-vector-testsだ。それぞれの命令についてテストするもので、それぞれのテストパタンがかなり長い。 PASSしたのは、87パタンだった。全て基本的な算術演算命令のものだ。
{'pass': 87, 'match': 2, 'timeout': 0, 'error': 756, 'deadlock': 33, 'unknown': 0, 'cycle_deleg': 0}
"vl1re16.v-0": "pass", "vl1re32.v-0": "pass", "vl1re64.v-0": "pass", "vl8re64.v-0": "pass", "vl1re8.v-0": "pass", "vl2re16.v-0": "pass", "vl2re32.v-0": "pass", "vl8re8.v-0": "pass", "vl2re64.v-0": "pass", "vl2re8.v-0": "pass", "vl4re16.v-0": "pass", "vl4re32.v-0": "pass", "vl4re64.v-0": "pass", "vl4re8.v-0": "pass", "vl8re16.v-0": "pass", "vl8re32.v-0": "pass", "vadd.vi-0": "pass", "vand.vx-1": "pass", "vfmv.v.f-0": "pass", "vmaxu.vx-3": "pass", "vminu.vx-1": "pass", "vmax.vv-0": "pass", /* ... 途中省略 ... */ "vsub.vx-2": "pass", "vxor.vi-0": "pass", "vxor.vi-2": "pass", "vxor.vv-0": "pass", "vxor.vx-0": "pass", "vxor.vx-1": "pass", "vxor.vx-2": "pass", "vxor.vx-3": "pass",
今のパタン内でこれは通っていてほしい、というのは、これ以外を見てみると、シフト演算のいくつか、さらにMask命令など、実装したつもりでいても細かいところで間違っているものが目立つ。
{ "vcpop.m-0": "error", "vfclass.v-0": "error", "vfcvt.f.x.v-0": "error", "vaadd.vv-0": "error", "vdiv.vv-0": "error", "vfcvt.f.xu.v-0": "error", "vfrdiv.vf-0": "error", "vfsgnjn.vf-1": "error", "vfcvt.rtz.x.f.v-0": "error", "vfmadd.vf-0": "error", "vaadd.vx-0": "error", "vfsgnjn.vv-0": "error", "vfcvt.rtz.xu.f.v-0": "error", "vdiv.vx-0": "error", "vfmsub.vf-1": "error", "vadc.vxm-1": "error", "vfcvt.x.f.v-0": "error", "vfmsub.vv-0": "error", "vfcvt.xu.f.v-0": "error", /* ... 途中省略 ... */
一個ずつ、テストをデバッグしていこうと思う。