syntacore/snippy

VXRM randomization not supported for now

Opened this issue · 0 comments

Snippy command line (reproduce on release 1.0):

$ ./llvm-snippy -march=riscv64-linux-gnu -mattr="+v" -num-instrs=100 -seed=0 -model-plugin=None ./layout-vxrm.yaml

Use following config layout-vxrm.yaml:

sections:
  - no:        0
    VMA:       0x200000
    SIZE:      0x10000
    LMA:       0x200000
    ACCESS:    r
  - no:        1
    VMA:       0x210000
    SIZE:      0x100000
    LMA:       0x210000
    ACCESS:    rx
  - no:        2
    VMA:       0x100000
    SIZE:      0x100000
    LMA:       0x100000
    ACCESS:    rw

riscv-vector-unit:
  mode-distribution:
    VM:
      - [all_ones, 2.0]
    VL:
      - [vlmax, 2.0]
      - [any_legal, 1.0]
    VXRM:
      rnu: 1.0
      rne: 1.0
      rdn: 1.0
      ron: 1.0
    VXSAT:
      on: 1.0
      off: 1.0
    VTYPE:
      SEW:
        sew_8: 1.0
        sew_16: 1.0
        sew_32: 1.0
        sew_64: 1.0
      LMUL:
        m1: 1.0
        m2: 1.0
        m4: 1.0
        m8: 1.0
        mf2: 1.0
        mf4: 1.0
        mf8: 1.0
      VMA:
        mu: 1.0
        ma: 1.0
      VTA:
        tu: 1.0
        ta: 1.0

histogram:
    - [VSETVLI, 1.0]
    - [VAADDU_VX, 1.0]
    - [VAADDU_VV, 1.0]
    - [VAADD_VX, 1.0]
    - [VAADD_VV, 1.0]
    - [VASUBU_VX, 1.0]
    - [VASUBU_VV, 1.0]
    - [VASUB_VX, 1.0]
    - [VASUB_VV, 1.0]

Now disassemble result:

$SC_GCC_PATH/bin/riscv64-unknown-linux-gnu-objdump -d layout-vxrm.yaml.elf > layout-vxrm.yaml.dis

Disassembled output do not contain any VXRM mode switches:

...
   0: 00c00c93            li  s9,12
   4: 049cffd7            vsetvli t6,s9,e16,m2,ta,mu
   8: 7e002057            vmset.m v0
   c: 2f2d2757            vasub.vv  v14,v18,v26
  10: 2caa2a57            vasub.vv  v20,v10,v20,v0.t
  14: 2ec86e57            vasub.vx  v28,v12,a6
  18: 27e72f57            vaadd.vv  v30,v30,v14
  1c: 28ebea57            vasubu.vx v20,v14,s7,v0.t
  20: 29a82557            vasubu.vv v10,v26,v16,v0.t
  24: 28a06557            vasubu.vx v10,v10,zero,v0.t
  28: 294e2657            vasubu.vv v12,v20,v28,v0.t
  2c: 20472457            vaaddu.vv v8,v4,v14,v0.t
  30: 2f232257            vasub.vv  v4,v18,v6
  34: 28e56e57            vasubu.vx v28,v14,a0,v0.t
  38: 2da32d57            vasub.vv  v26,v26,v6,v0.t
  3c: 2689e157            vaadd.vx  v2,v8,s3
  40: 00400b13            li  s6,4
  44: 04fb70d7            vsetvli ra,s6,e16,mf2,ta,mu
...

We need this support in llvm-snippy.