明天可能需要开同步会议,今天先总结一下近日工作。另外的考量是确实有点摸不着头脑自己在干啥了。一种没有清晰把握脉络的焦虑感促使我写这篇记录。
按照时间顺序
首先肯定是发现了 riscv-vector-fuzzing-test
这个项目里面在使用 /include/CustomOperator.def 当所有需要处理的指令合集。
问题在于出现了生成的intrinsic function参数个数不对,进行同步发现 rvv 1.0 spec可能需要使用 sifive-intrinsic-doc
这个项目中生成的 rif.def
文件。
直接把 rif.def
修改为 CustomOperator.def
使用会出现以下问题:
- SizePtr, NeedMerge, Void 这些属性无法识别。
暂时用移除 vleff, vslideup, vsm 等指令来解决。 riscv-vector-fuzzing-test
中script/GenerateOperatorComputeHeaders.py
无法识别op id
。
暂时移除 vcreate, veget, vlm, vlmul_trunc, vlmul_ext, vreinterpret, vsetvlmax, vsetvl, vundefined, vlse 等指令来解决。- 生成的
\include\autogen\compute{op_type}.h
中 include 的 spike 或者本地头文件名不对。
在 script/* 中加入判断op_id
进行了修复。比如 vfmv_v_f, vfmv_f_s。 - 尚未找出
CustomOperator.def
中为何会如此生成。比如compress_vv, spec 中是 compress_vm。 暂时移除 compress_vv 解决。
当以上CustomOperator.def
的问题大部分用跳过的方式解决之后,出现了 mask 指令在\include\autogen\compute{op_type}.h
声明的变量数量不一致的问题。 解决方式是在script\*Literal.py
中的 create_*_op 函数,加入判断,如果是 mask function 之后加入一个 input 作为 mask function 默认的 vd 值。并修改了 *_literal_mask_body 中的参数。
随后出现了有 rounding mode 的指令参数不正确的问题。
解决方式是在script\*Literal.py
加入如果 input_type 中有 “SclarUIntXLen” 就使用新增的包含 rounding mode 的 _frm_body。
但是使用 “SclarUIntXLen” 是根据观察决定的,导致了包含该 input type 但没有 rounding mode 的 shift 指令生成错误。所以判断条件变为elif "ScalarUIntXLen" in input_types and op_id not in ['nsra_wx','nsrl_wx','sll_vx','sra_vx','srl_vx']
。 可能有待改进。
以上问题解决完毕之后,出现了/test/test*.cpp
的参数没有定义的问题,根据该参数为 op_type 将所有文件按照CustomOperator.def
修改完毕解决了没有定义问题,但是testPolicy.cpp
中带有 TA, TU, TAMA, TAMU, TUMA, TUMU 后缀的参数确实不知道在哪里找。
可以确定是只是 rvv 1.0 中对 tail policy 的内容进行了修改,这部分肯定是需要修的。
接下来有靠谱的方法,理解 test\test.cpp 从何而来,为何要写并改写。
不靠谱的方法,删掉 testPolicy.cpp。因为生成脚本中很多有ta相关内容我也并未修复。
先去修了,小结就到这里。