aboutsummaryrefslogtreecommitdiff
path: root/riscv/insns/vfredsum_vs_parallel.h
blob: 169d895edd5beea852a0e37d2d19166219381c90 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
// Parallel version of vfredsum
// vfredsum: vd[0] =  sum( vs2[*] , vs1[0] )
VI_CHECK_REDUCTION(false)
VI_VFP_COMMON

switch(p->VU.vsew) {
  case e16: {
    VI_VFP_LOOP_REDUCTIONSUM_INIT(16)
    VI_VFP_LOOP_REDUCTIONSUM_MERGE(16)
    VI_VFP_LOOP_REDUCTIONSUM_CLOSE(e16)
    break;
  }
  case e32: {
    VI_VFP_LOOP_REDUCTIONSUM_INIT(32)
    VI_VFP_LOOP_REDUCTIONSUM_MERGE(32)
    VI_VFP_LOOP_REDUCTIONSUM_CLOSE(e32)
    break;
  }
  case e64: {
    VI_VFP_LOOP_REDUCTIONSUM_INIT(64)
    VI_VFP_LOOP_REDUCTIONSUM_MERGE(64)
    VI_VFP_LOOP_REDUCTIONSUM_CLOSE(e64)
    break;
  }
  default:
    require(0);
    break;
};