1668 lines
		
	
	
		
			83 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			1668 lines
		
	
	
		
			83 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| #define STR1(x) #x
 | |
| #define STR(x) STR1(x)
 | |
| 
 | |
| #define INST_VADD               0b00000000000000000000000000001011
 | |
| #define INST_VSUB               0b00000010000000000000000000001011
 | |
| #define INST_VMULL              0b00000100000000000000000000001011
 | |
| #define INST_VMULH              0b00000110000000000000000000001011
 | |
| 
 | |
| #define INST_VSEQ               0b00000000000000000000000000001011
 | |
| #define INST_VSNE               0b00000010000000000000000000001011
 | |
| #define INST_VSLT               0b00000100000000000000000000001011
 | |
| #define INST_VSGE               0b00000110000000000000000000001011
 | |
| 
 | |
| #define INST_VZIPB1             0b00000010000000000001000000001011
 | |
| #define INST_VZIPB2             0b00000100000000000001000000001011
 | |
| #define INST_VZIPB3             0b00000110000000000001000000001011
 | |
| #define INST_VZIPH1             0b00001000000000000001000000001011
 | |
| #define INST_VZIPH2             0b00001010000000000001000000001011
 | |
| #define INST_VZIPH3             0b00001100000000000001000000001011
 | |
| #define INST_VZIPW1             0b00001110000000000001000000001011
 | |
| #define INST_VZIPW2             0b00010000000000000001000000001011
 | |
| #define INST_VZIPW3             0b00010010000000000001000000001011
 | |
| #define INST_VZIPD1             0b00010100000000000001000000001011
 | |
| #define INST_VZIPD2             0b00010110000000000001000000001011
 | |
| #define INST_VZIPD3             0b00011000000000000001000000001011
 | |
| #define INST_VZIPQ1             0b00011010000000000001000000001011
 | |
| #define INST_VZIPQ2             0b00011100000000000001000000001011
 | |
| #define INST_VZIPQ3             0b00011110000000000001000000001011
 | |
| //#define INST_VSHIFTL            0b00001100000000000001000000001011
 | |
| //#define INST_VSHIFTR            0b00001110000000000001000000001011
 | |
| 
 | |
| #define INST_VMACC              0b00000000000000000010000000001011
 | |
| #define INST_VMAP               0b01000000000000000010000000001011
 | |
| #define INST_VACCL              0b10000000000000000010000000001011
 | |
| #define INST_VACCH              0b10000000000000001010000000001011
 | |
| #define INST_VACCT              0b10000000000000010010000000001011
 | |
| #define INST_VACCC              0b11000000000000000010000000001011
 | |
| 
 | |
| #define INST_VMADD              0b00000000000000000100000000001011
 | |
| #define INST_VMSUB              0b01000000000000000100000000001011
 | |
| #define INST_VNMADD             0b10000000000000000100000000001011
 | |
| #define INST_VNMSUB             0b11000000000000000100000000001011
 | |
| 
 | |
| #define INST_VPUT               0b00000000000000000110000000101011
 | |
| 
 | |
| #define INST_VGET               0b00000000000000000111000000101011
 | |
| 
 | |
| #define INST_VCSRR              0b10000000000000000110000000101011
 | |
| 
 | |
| #define INST_VCSRW              0b10000000000000000110000000101011
 | |
| 
 | |
| #define FUNCT_VLOAD_TYPE_UIB    0b000
 | |
| #define FUNCT_VLOAD_TYPE_SIB    0b001
 | |
| #define FUNCT_VLOAD_TYPE_UIH    0b010
 | |
| #define FUNCT_VLOAD_TYPE_SIH    0b011
 | |
| #define FUNCT_VLOAD_TYPE_UIW    0b100
 | |
| #define FUNCT_VLOAD_TYPE_SIW    0b101
 | |
| #define FUNCT_VLOAD_TYPE_GF2    0b110
 | |
| #define FUNCT_VLOAD_TYPE_FPW    0b111
 | |
| 
 | |
| #define FUNCT_VLOAD_MODE_1X1    0b000
 | |
| #define FUNCT_VLOAD_MODE_2X1    0b001
 | |
| #define FUNCT_VLOAD_MODE_2X2    0b010
 | |
| #define FUNCT_VLOAD_MODE_2X4    0b011
 | |
| #define FUNCT_VLOAD_MODE_4X1    0b100
 | |
| #define FUNCT_VLOAD_MODE_4X2    0b101
 | |
| #define FUNCT_VLOAD_MODE_8X1    0b111
 | |
| 
 | |
| #define FUNCT_VSTORE_MODE_1     0b000
 | |
| #define FUNCT_VSTORE_MODE_2     0b001
 | |
| #define FUNCT_VSTORE_MODE_3     0b010
 | |
| #define FUNCT_VSTORE_MODE_4     0b011
 | |
| #define FUNCT_VSTORE_MODE_5     0b100
 | |
| #define FUNCT_VSTORE_MODE_6     0b101
 | |
| #define FUNCT_VSTORE_MODE_7     0b110
 | |
| #define FUNCT_VSTORE_MODE_8     0b111
 | |
| 
 | |
| #define VCSRW(csr_addr, rs1)                        \
 | |
|   INST_VCSRW                          |             \
 | |
|   (csr_addr             << (7))       |             \
 | |
|   (rs1                  << (7+5+3))
 | |
| 
 | |
| #define VCSRR(rd, csr_addr)                         \
 | |
|   INST_VCSRR                          |             \
 | |
|   (rd                   << (7))       |             \
 | |
|   (csr_addr             << (7+5+3))
 | |
| 
 | |
| #define VPUT(vd, rs1, put_mask8)                    \
 | |
|   INST_VPUT                           |             \
 | |
|   (vd                   << (7))       |             \
 | |
|   (rs1                  << (7+5+3))   |             \
 | |
|   (put_mask8            << (7+5+3+5))
 | |
| 
 | |
| #define VGET(rd, vs1, get_index)                    \
 | |
|   INST_VGET                           |             \
 | |
|   (rd                   << (7))       |             \
 | |
|   (vs1                  << (7+5+3))   |             \
 | |
|   (get_index            << (7+5+3+5))
 | |
| 
 | |
| #define VMAPS(vd, vs1, get_index)                   \
 | |
|   INST_VMAP                           |             \
 | |
|   (vd                   << (7))       |             \
 | |
|   (vs1                  << (7+5+3))   |             \
 | |
|   (get_index            << (7+5+3+5))
 | |
| 
 | |
| #define CUSTOM0_VS12(inst, vs1, vs2)                \
 | |
|   inst                                |             \
 | |
|   (vs1                  << (7+5+3))   |             \
 | |
|   (vs2                  << (7+5+3+5))
 | |
| 
 | |
| #define CUSTOM0_VD(inst, vd)                        \
 | |
|   inst                                |             \
 | |
|   (vd                   << (7))
 | |
| 
 | |
| #define CUSTOM0(inst)                               \
 | |
|   inst
 | |
| 
 | |
| #define CUSTOM0_VD_VS12(inst, vd, vs1, vs2)         \
 | |
|   inst                                |             \
 | |
|   (vd                   << (7))       |             \
 | |
|   (vs1                  << (7+5+3))   |             \
 | |
|   (vs2                  << (7+5+3+5))
 | |
| 
 | |
| #define CUSTOM0_VD_VS123(inst, vd, vs1, vs2, vs3)   \
 | |
|   inst                                |             \
 | |
|   (vd                   << (7))       |             \
 | |
|   (vs1                  << (7+5+3))   |             \
 | |
|   (vs2                  << (7+5+3+5)) |             \
 | |
|   (vs3                  << (7+5+3+5+5))
 | |
| 
 | |
| #define VSTORE1(smode, rs1, inc, vs3)               \
 | |
|   0b0101011                                 |       \
 | |
|   (smode                << (7))             |       \
 | |
|   (0b00                 << (7+3))           |       \
 | |
|   (0b100                << (7+3+2))         |       \
 | |
|   (rs1                  << (7+3+2+3))       |       \
 | |
|   (inc                  << (7+3+2+3+5))     |       \
 | |
|   (vs3                  << (7+3+2+3+5+5))   |       \
 | |
|   (0b00                 << (7+3+2+3+5+5+5))
 | |
| 
 | |
| #define VSTORE2(smode, rs1, rs2, vs3)               \
 | |
|   0b0101011                                 |       \
 | |
|   (smode                << (7))             |       \
 | |
|   (0b00                 << (7+3))           |       \
 | |
|   (0b100                << (7+3+2))         |       \
 | |
|   (rs1                  << (7+3+2+3))       |       \
 | |
|   (rs2                  << (7+3+2+3+5))     |       \
 | |
|   (vs3                  << (7+3+2+3+5+5))   |       \
 | |
|   (0b10                 << (7+3+2+3+5+5+5))
 | |
| 
 | |
| #define VSTORE3(smode, rs1, inc, vs3)               \
 | |
|   0b0101011                                 |       \
 | |
|   (smode                << (7))             |       \
 | |
|   (0b10                 << (7+3))           |       \
 | |
|   (0b100                << (7+3+2))         |       \
 | |
|   (rs1                  << (7+3+2+3))       |       \
 | |
|   (inc                  << (7+3+2+3+5))     |       \
 | |
|   (vs3                  << (7+3+2+3+5+5))   |       \
 | |
|   (0b00                 << (7+3+2+3+5+5+5))
 | |
| 
 | |
| #define VSTORE4(smode, rs1, rs2, vs3)               \
 | |
|   0b0101011                                 |       \
 | |
|   (smode                << (7))             |       \
 | |
|   (0b10                 << (7+3))           |       \
 | |
|   (0b100                << (7+3+2))         |       \
 | |
|   (rs1                  << (7+3+2+3))       |       \
 | |
|   (rs2                  << (7+3+2+3+5))     |       \
 | |
|   (vs3                  << (7+3+2+3+5+5))   |       \
 | |
|   (0b10                 << (7+3+2+3+5+5+5))
 | |
| 
 | |
| #define VLOAD1(lmode, type, vd, rs1, inc)           \
 | |
|   0b0101011                                 |       \
 | |
|   (vd                   << (7))             |       \
 | |
|   (0b000                << (7+5))           |       \
 | |
|   (rs1                  << (7+5+3))         |       \
 | |
|   (inc                  << (7+5+3+5))       |       \
 | |
|   (type                 << (7+5+3+5+5))     |       \
 | |
|   (lmode                << (7+5+3+5+5+3))   |       \
 | |
|   (0b0                  << (7+5+3+5+5+3+3))
 | |
| 
 | |
| #define VLOAD2(lmode, type, vd, rs1, rs2)           \
 | |
|   0b0101011                                 |       \
 | |
|   (vd                   << (7))             |       \
 | |
|   (0b000                << (7+5))           |       \
 | |
|   (rs1                  << (7+5+3))         |       \
 | |
|   (rs2                  << (7+5+3+5))       |       \
 | |
|   (type                 << (7+5+3+5+5))     |       \
 | |
|   (lmode                << (7+5+3+5+5+3))   |       \
 | |
|   (0b1                  << (7+5+3+5+5+3+3))
 | |
| 
 | |
| #define VLOAD3(lmode, type, vd, vp, inc)            \
 | |
|   0b0101011                                 |       \
 | |
|   (vd                   << (7))             |       \
 | |
|   (0b001                << (7+5))           |       \
 | |
|   (vp                   << (7+5+3))         |       \
 | |
|   (inc                  << (7+5+3+5))       |       \
 | |
|   (type                 << (7+5+3+5+5))     |       \
 | |
|   (lmode                << (7+5+3+5+5+3))   |       \
 | |
|   (0b0                  << (7+5+3+5+5+3+3))
 | |
| 
 | |
| #define VLOAD4(lmode, type, vd, rs1, rs2)           \
 | |
|   0b0101011                                 |       \
 | |
|   (vd                   << (7))             |       \
 | |
|   (0b001                << (7+5))           |       \
 | |
|   (rs1                  << (7+5+3))         |       \
 | |
|   (rs2                  << (7+5+3+5))       |       \
 | |
|   (type                 << (7+5+3+5+5))     |       \
 | |
|   (lmode                << (7+5+3+5+5+3))   |       \
 | |
|   (0b1                  << (7+5+3+5+5+3+3))
 | |
| 
 | |
| #define vcsrw(vcsr, rs1)                                        \
 | |
| {                                                               \
 | |
|     register uint32_t rs1_ asm ("x10") = (uint32_t) rs1;        \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VCSRW(vcsr, 10))         "\n\t"            \
 | |
|         :: [_rs1] "r" (rs1_));                                  \
 | |
| }
 | |
| 
 | |
| #define vcsrr(rd, vcsr)                                         \
 | |
| {                                                               \
 | |
|     register uint32_t rd_ asm ("x10");                          \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VCSRR(10, vcsr))         "\n\t"            \
 | |
|         : "=r" (rd_)                                            \
 | |
|         :);                                                     \
 | |
|     rd = rd_;                                                   \
 | |
| }
 | |
| 
 | |
| #define vput8(vd_n, rs1)                                        \
 | |
| {                                                               \
 | |
|     register uint32_t rs1_ asm ("x10") = (uint32_t) rs1;        \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VPUT(vd_n, 10, 255))    "\n\t"             \
 | |
|         :: [_rs1] "r" (rs1_));                                  \
 | |
| }
 | |
| 
 | |
| #define vgets(rd, vs1, index)                                   \
 | |
| {                                                               \
 | |
|     register uint32_t rd_ asm ("x10");                          \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VGET(10, vs1, index))     "\n\t"           \
 | |
|         : "=r" (rd_)                                            \
 | |
|         :);                                                     \
 | |
|     rd = rd_;                                                   \
 | |
| }
 | |
| 
 | |
| #define vmaps(vd, vs1, index)                                   \
 | |
| {                                                               \
 | |
|     register uint32_t rd_ asm ("x10");                          \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VGET(10, vs1, index))     "\n\t"           \
 | |
|         : "=r" (rd_)                                            \
 | |
|         :);                                                     \
 | |
|     rd = rd_;                                                   \
 | |
| }
 | |
| 
 | |
| #define vmacc(vs1_n, vs2_n)                 \
 | |
|     asm volatile (".word " STR(CUSTOM0_VS12(INST_VMACC,  vs1_n, vs2_n)));
 | |
| 
 | |
| #define vaccl(vd_n)                         \
 | |
|     asm volatile (".word " STR(CUSTOM0_VD(INST_VACCL,  vd_n)));
 | |
| 
 | |
| #define vacch(vd_n)                         \
 | |
|     asm volatile (".word " STR(CUSTOM0_VD(INST_VACCH,  vd_n)));
 | |
| 
 | |
| #define vacct(vd_n)                         \
 | |
|     asm volatile (".word " STR(CUSTOM0_VD(INST_VACCT,  vd_n)));
 | |
| 
 | |
| #define vaccc()                             \
 | |
|     asm volatile (".word " STR(CUSTOM0(INST_VACCC)));
 | |
| 
 | |
| #define vmadd(vd_n, vs1_n, vs2_n, vs3_n)    \
 | |
|     asm volatile (".word " STR(CUSTOM0_VD_VS123(INST_VMADD,  vd_n, vs1_n, vs2_n, vs3_n)));
 | |
| 
 | |
| #define vmadd(vd_n, vs1_n, vs2_n, vs3_n)    \
 | |
|     asm volatile (".word " STR(CUSTOM0_VD_VS123(INST_VMADD,  vd_n, vs1_n, vs2_n, vs3_n)));
 | |
| 
 | |
| #define vmsub(vd_n, vs1_n, vs2_n, vs3_n)    \
 | |
|     asm volatile (".word " STR(CUSTOM0_VD_VS123(INST_VMSUB,  vd_n, vs1_n, vs2_n, vs3_n)));
 | |
| 
 | |
| #define vnmadd(vd_n, vs1_n, vs2_n, vs3_n)    \
 | |
|     asm volatile (".word " STR(CUSTOM0_VD_VS123(INST_VNMADD,  vd_n, vs1_n, vs2_n, vs3_n)));
 | |
| 
 | |
| #define vnmsub(vd_n, vs1_n, vs2_n, vs3_n)    \
 | |
|     asm volatile (".word " STR(CUSTOM0_VD_VS123(INST_VNMSUB,  vd_n, vs1_n, vs2_n, vs3_n)));
 | |
| 
 | |
| #define vseq(vd_n, vs1_n, vs2_n)    \
 | |
|     asm volatile (".word " STR(CUSTOM0_VD_VS12(INST_VSEQ,  vd_n, vs1_n, vs2_n)));
 | |
| 
 | |
| #define vsne(vd_n, vs1_n, vs2_n)    \
 | |
|     asm volatile (".word " STR(CUSTOM0_VD_VS12(INST_VSNE,  vd_n, vs1_n, vs2_n)));
 | |
| 
 | |
| #define vslt(vd_n, vs1_n, vs2_n)    \
 | |
|     asm volatile (".word " STR(CUSTOM0_VD_VS12(INST_VSLT,  vd_n, vs1_n, vs2_n)));
 | |
| 
 | |
| #define vsge(vd_n, vs1_n, vs2_n)    \
 | |
|     asm volatile (".word " STR(CUSTOM0_VD_VS12(INST_VSGE,  vd_n, vs1_n, vs2_n)));
 | |
| 
 | |
| #define vadd(vd_n, vs1_n, vs2_n)    \
 | |
|     asm volatile (".word " STR(CUSTOM0_VD_VS12(INST_VADD,  vd_n, vs1_n, vs2_n)));
 | |
| 
 | |
| #define vsub(vd_n, vs1_n, vs2_n)    \
 | |
|     asm volatile (".word " STR(CUSTOM0_VD_VS12(INST_VSUB,  vd_n, vs1_n, vs2_n)));
 | |
| 
 | |
| #define vmull(vd_n, vs1_n, vs2_n)   \
 | |
|     asm volatile (".word " STR(CUSTOM0_VD_VS12(INST_VMULL, vd_n, vs1_n, vs2_n)));
 | |
| 
 | |
| #define vmulh(vd_n, vs1_n, vs2_n)   \
 | |
|     asm volatile (".word " STR(CUSTOM0_VD_VS12(INST_VMULH, vd_n, vs1_n, vs2_n)));
 | |
| 
 | |
| #define vzipb1(vd_n, vs1_n, vs2_n)    \
 | |
|     asm volatile (".word " STR(CUSTOM0_VD_VS12(INST_VZIPB1,  vd_n, vs1_n, vs2_n)));
 | |
| 
 | |
| #define vzipb2(vd_n, vs1_n, vs2_n)    \
 | |
|     asm volatile (".word " STR(CUSTOM0_VD_VS12(INST_VZIPB2,  vd_n, vs1_n, vs2_n)));
 | |
| 
 | |
| #define vzipb3(vd_n, vs1_n, vs2_n)    \
 | |
|     asm volatile (".word " STR(CUSTOM0_VD_VS12(INST_VZIPB3,  vd_n, vs1_n, vs2_n)));
 | |
| 
 | |
| #define vziph1(vd_n, vs1_n, vs2_n)    \
 | |
|     asm volatile (".word " STR(CUSTOM0_VD_VS12(INST_VZIPH1,  vd_n, vs1_n, vs2_n)));
 | |
| 
 | |
| #define vziph2(vd_n, vs1_n, vs2_n)    \
 | |
|     asm volatile (".word " STR(CUSTOM0_VD_VS12(INST_VZIPH2,  vd_n, vs1_n, vs2_n)));
 | |
| 
 | |
| #define vziph3(vd_n, vs1_n, vs2_n)    \
 | |
|     asm volatile (".word " STR(CUSTOM0_VD_VS12(INST_VZIPH3,  vd_n, vs1_n, vs2_n)));
 | |
| 
 | |
| #define vzipw1(vd_n, vs1_n, vs2_n)    \
 | |
|     asm volatile (".word " STR(CUSTOM0_VD_VS12(INST_VZIPW1,  vd_n, vs1_n, vs2_n)));
 | |
| 
 | |
| #define vzipw2(vd_n, vs1_n, vs2_n)    \
 | |
|     asm volatile (".word " STR(CUSTOM0_VD_VS12(INST_VZIPW2,  vd_n, vs1_n, vs2_n)));
 | |
| 
 | |
| #define vzipw3(vd_n, vs1_n, vs2_n)    \
 | |
|     asm volatile (".word " STR(CUSTOM0_VD_VS12(INST_VZIPW3,  vd_n, vs1_n, vs2_n)));
 | |
| 
 | |
| #define vzipd1(vd_n, vs1_n, vs2_n)    \
 | |
|     asm volatile (".word " STR(CUSTOM0_VD_VS12(INST_VZIPD1,  vd_n, vs1_n, vs2_n)));
 | |
| 
 | |
| #define vzipd2(vd_n, vs1_n, vs2_n)    \
 | |
|     asm volatile (".word " STR(CUSTOM0_VD_VS12(INST_VZIPD2,  vd_n, vs1_n, vs2_n)));
 | |
| 
 | |
| #define vzipd3(vd_n, vs1_n, vs2_n)    \
 | |
|     asm volatile (".word " STR(CUSTOM0_VD_VS12(INST_VZIPD3,  vd_n, vs1_n, vs2_n)));
 | |
| 
 | |
| #define vzipq1(vd_n, vs1_n, vs2_n)    \
 | |
|     asm volatile (".word " STR(CUSTOM0_VD_VS12(INST_VZIPQ1,  vd_n, vs1_n, vs2_n)));
 | |
| 
 | |
| #define vzipq2(vd_n, vs1_n, vs2_n)    \
 | |
|     asm volatile (".word " STR(CUSTOM0_VD_VS12(INST_VZIPQ2,  vd_n, vs1_n, vs2_n)));
 | |
| 
 | |
| #define vzipq3(vd_n, vs1_n, vs2_n)    \
 | |
|     asm volatile (".word " STR(CUSTOM0_VD_VS12(INST_VZIPQ3,  vd_n, vs1_n, vs2_n)));
 | |
| 
 | |
| #define vload2_8x1_fpw(vd_n, rs1, rs2)                          \
 | |
| {                                                               \
 | |
|     register uint32_t rs1_ asm ("x10") = (uint32_t) rs1;        \
 | |
|     register uint32_t rs2_ asm ("x11") = (uint32_t) rs2;        \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VLOAD2(FUNCT_VLOAD_MODE_8X1, FUNCT_VLOAD_TYPE_FPW, vd_n, 10, 11))  "\n\t" \
 | |
|         :: [_rs1] "r" (rs1_), [_rs2] "r" (rs2_));               \
 | |
| }
 | |
| 
 | |
| #define vload2_8x1_uiw(vd_n, rs1, rs2)                          \
 | |
| {                                                               \
 | |
|     register uint32_t rs1_ asm ("x10") = (uint32_t) rs1;        \
 | |
|     register uint32_t rs2_ asm ("x11") = (uint32_t) rs2;        \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VLOAD2(FUNCT_VLOAD_MODE_8X1, FUNCT_VLOAD_TYPE_UIW, vd_n, 10, 11))  "\n\t" \
 | |
|         :: [_rs1] "r" (rs1_), [_rs2] "r" (rs2_));               \
 | |
| }
 | |
| 
 | |
| #define vload2_8x1_siw(vd_n, rs1, rs2)                          \
 | |
| {                                                               \
 | |
|     register uint32_t rs1_ asm ("x10") = (uint32_t) rs1;        \
 | |
|     register uint32_t rs2_ asm ("x11") = (uint32_t) rs2;        \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VLOAD2(FUNCT_VLOAD_MODE_8X1, FUNCT_VLOAD_TYPE_SIW, vd_n, 10, 11))  "\n\t" \
 | |
|         :: [_rs1] "r" (rs1_), [_rs2] "r" (rs2_));               \
 | |
| }
 | |
| 
 | |
| #define vload2_8x1_uih(vd_n, rs1, rs2)                          \
 | |
| {                                                               \
 | |
|     register uint32_t rs1_ asm ("x10") = (uint32_t) rs1;        \
 | |
|     register uint32_t rs2_ asm ("x11") = (uint32_t) rs2;        \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VLOAD2(FUNCT_VLOAD_MODE_8X1, FUNCT_VLOAD_TYPE_UIH, vd_n, 10, 11))  "\n\t" \
 | |
|         :: [_rs1] "r" (rs1_), [_rs2] "r" (rs2_));               \
 | |
| }
 | |
| 
 | |
| #define vload2_8x1_sih(vd_n, rs1, rs2)                          \
 | |
| {                                                               \
 | |
|     register uint32_t rs1_ asm ("x10") = (uint32_t) rs1;        \
 | |
|     register uint32_t rs2_ asm ("x11") = (uint32_t) rs2;        \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VLOAD2(FUNCT_VLOAD_MODE_8X1, FUNCT_VLOAD_TYPE_SIH, vd_n, 10, 11))  "\n\t" \
 | |
|         :: [_rs1] "r" (rs1_), [_rs2] "r" (rs2_));               \
 | |
| }
 | |
| 
 | |
| #define vload2_8x1_uib(vd_n, rs1, rs2)                          \
 | |
| {                                                               \
 | |
|     register uint32_t rs1_ asm ("x10") = (uint32_t) rs1;        \
 | |
|     register uint32_t rs2_ asm ("x11") = (uint32_t) rs2;        \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VLOAD2(FUNCT_VLOAD_MODE_8X1, FUNCT_VLOAD_TYPE_UIB, vd_n, 10, 11))  "\n\t" \
 | |
|         :: [_rs1] "r" (rs1_), [_rs2] "r" (rs2_));               \
 | |
| }
 | |
| 
 | |
| #define vload2_8x1_sib(vd_n, rs1, rs2)                          \
 | |
| {                                                               \
 | |
|     register uint32_t rs1_ asm ("x10") = (uint32_t) rs1;        \
 | |
|     register uint32_t rs2_ asm ("x11") = (uint32_t) rs2;        \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VLOAD2(FUNCT_VLOAD_MODE_8X1, FUNCT_VLOAD_TYPE_SIB, vd_n, 10, 11))  "\n\t" \
 | |
|         :: [_rs1] "r" (rs1_), [_rs2] "r" (rs2_));               \
 | |
| }
 | |
| 
 | |
| #define vload2_4x1_fpw(vd_n, rs1, rs2)                          \
 | |
| {                                                               \
 | |
|     register uint32_t rs1_ asm ("x10") = (uint32_t) rs1;        \
 | |
|     register uint32_t rs2_ asm ("x11") = (uint32_t) rs2;        \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VLOAD2(FUNCT_VLOAD_MODE_4X1, FUNCT_VLOAD_TYPE_FPW, vd_n, 10, 11))  "\n\t" \
 | |
|         :: [_rs1] "r" (rs1_), [_rs2] "r" (rs2_));               \
 | |
| }
 | |
| 
 | |
| #define vload2_4x1_siw(vd_n, rs1, rs2)                          \
 | |
| {                                                               \
 | |
|     register uint32_t rs1_ asm ("x10") = (uint32_t) rs1;        \
 | |
|     register uint32_t rs2_ asm ("x11") = (uint32_t) rs2;        \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VLOAD2(FUNCT_VLOAD_MODE_4X1, FUNCT_VLOAD_TYPE_SIW, vd_n, 10, 11))  "\n\t" \
 | |
|         :: [_rs1] "r" (rs1_), [_rs2] "r" (rs2_));               \
 | |
| }
 | |
| 
 | |
| #define vload2_4x1_uiw(vd_n, rs1, rs2)                          \
 | |
| {                                                               \
 | |
|     register uint32_t rs1_ asm ("x10") = (uint32_t) rs1;        \
 | |
|     register uint32_t rs2_ asm ("x11") = (uint32_t) rs2;        \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VLOAD2(FUNCT_VLOAD_MODE_4X1, FUNCT_VLOAD_TYPE_UIW, vd_n, 10, 11))  "\n\t" \
 | |
|         :: [_rs1] "r" (rs1_), [_rs2] "r" (rs2_));               \
 | |
| }
 | |
| 
 | |
| #define vload2_4x1_sih(vd_n, rs1, rs2)                          \
 | |
| {                                                               \
 | |
|     register uint32_t rs1_ asm ("x10") = (uint32_t) rs1;        \
 | |
|     register uint32_t rs2_ asm ("x11") = (uint32_t) rs2;        \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VLOAD2(FUNCT_VLOAD_MODE_4X1, FUNCT_VLOAD_TYPE_SIH, vd_n, 10, 11))  "\n\t" \
 | |
|         :: [_rs1] "r" (rs1_), [_rs2] "r" (rs2_));               \
 | |
| }
 | |
| 
 | |
| #define vload2_4x1_uih(vd_n, rs1, rs2)                          \
 | |
| {                                                               \
 | |
|     register uint32_t rs1_ asm ("x10") = (uint32_t) rs1;        \
 | |
|     register uint32_t rs2_ asm ("x11") = (uint32_t) rs2;        \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VLOAD2(FUNCT_VLOAD_MODE_4X1, FUNCT_VLOAD_TYPE_UIH, vd_n, 10, 11))  "\n\t" \
 | |
|         :: [_rs1] "r" (rs1_), [_rs2] "r" (rs2_));               \
 | |
| }
 | |
| 
 | |
| #define vload2_4x1_sib(vd_n, rs1, rs2)                          \
 | |
| {                                                               \
 | |
|     register uint32_t rs1_ asm ("x10") = (uint32_t) rs1;        \
 | |
|     register uint32_t rs2_ asm ("x11") = (uint32_t) rs2;        \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VLOAD2(FUNCT_VLOAD_MODE_4X1, FUNCT_VLOAD_TYPE_SIB, vd_n, 10, 11))  "\n\t" \
 | |
|         :: [_rs1] "r" (rs1_), [_rs2] "r" (rs2_));               \
 | |
| }
 | |
| 
 | |
| #define vload2_4x1_uib(vd_n, rs1, rs2)                          \
 | |
| {                                                               \
 | |
|     register uint32_t rs1_ asm ("x10") = (uint32_t) rs1;        \
 | |
|     register uint32_t rs2_ asm ("x11") = (uint32_t) rs2;        \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VLOAD2(FUNCT_VLOAD_MODE_4X1, FUNCT_VLOAD_TYPE_UIB, vd_n, 10, 11))  "\n\t" \
 | |
|         :: [_rs1] "r" (rs1_), [_rs2] "r" (rs2_));               \
 | |
| }
 | |
| 
 | |
| #define vload2_4x2_fpw(vd_n, rs1, rs2)                          \
 | |
| {                                                               \
 | |
|     register uint32_t rs1_ asm ("x10") = (uint32_t) rs1;        \
 | |
|     register uint32_t rs2_ asm ("x11") = (uint32_t) rs2;        \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VLOAD2(FUNCT_VLOAD_MODE_4X2, FUNCT_VLOAD_TYPE_FPW, vd_n, 10, 11))  "\n\t" \
 | |
|         :: [_rs1] "r" (rs1_), [_rs2] "r" (rs2_));               \
 | |
| }
 | |
| 
 | |
| #define vload2_4x2_siw(vd_n, rs1, rs2)                          \
 | |
| {                                                               \
 | |
|     register uint32_t rs1_ asm ("x10") = (uint32_t) rs1;        \
 | |
|     register uint32_t rs2_ asm ("x11") = (uint32_t) rs2;        \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VLOAD2(FUNCT_VLOAD_MODE_4X2, FUNCT_VLOAD_TYPE_SIW, vd_n, 10, 11))  "\n\t" \
 | |
|         :: [_rs1] "r" (rs1_), [_rs2] "r" (rs2_));               \
 | |
| }
 | |
| 
 | |
| #define vload2_4x2_uiw(vd_n, rs1, rs2)                          \
 | |
| {                                                               \
 | |
|     register uint32_t rs1_ asm ("x10") = (uint32_t) rs1;        \
 | |
|     register uint32_t rs2_ asm ("x11") = (uint32_t) rs2;        \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VLOAD2(FUNCT_VLOAD_MODE_4X2, FUNCT_VLOAD_TYPE_UIW, vd_n, 10, 11))  "\n\t" \
 | |
|         :: [_rs1] "r" (rs1_), [_rs2] "r" (rs2_));               \
 | |
| }
 | |
| 
 | |
| #define vload2_4x2_sih(vd_n, rs1, rs2)                          \
 | |
| {                                                               \
 | |
|     register uint32_t rs1_ asm ("x10") = (uint32_t) rs1;        \
 | |
|     register uint32_t rs2_ asm ("x11") = (uint32_t) rs2;        \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VLOAD2(FUNCT_VLOAD_MODE_4X2, FUNCT_VLOAD_TYPE_SIH, vd_n, 10, 11))  "\n\t" \
 | |
|         :: [_rs1] "r" (rs1_), [_rs2] "r" (rs2_));               \
 | |
| }
 | |
| 
 | |
| #define vload2_4x2_uih(vd_n, rs1, rs2)                          \
 | |
| {                                                               \
 | |
|     register uint32_t rs1_ asm ("x10") = (uint32_t) rs1;        \
 | |
|     register uint32_t rs2_ asm ("x11") = (uint32_t) rs2;        \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VLOAD2(FUNCT_VLOAD_MODE_4X2, FUNCT_VLOAD_TYPE_UIH, vd_n, 10, 11))  "\n\t" \
 | |
|         :: [_rs1] "r" (rs1_), [_rs2] "r" (rs2_));               \
 | |
| }
 | |
| 
 | |
| #define vload2_4x2_sib(vd_n, rs1, rs2)                          \
 | |
| {                                                               \
 | |
|     register uint32_t rs1_ asm ("x10") = (uint32_t) rs1;        \
 | |
|     register uint32_t rs2_ asm ("x11") = (uint32_t) rs2;        \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VLOAD2(FUNCT_VLOAD_MODE_4X2, FUNCT_VLOAD_TYPE_SIB, vd_n, 10, 11))  "\n\t" \
 | |
|         :: [_rs1] "r" (rs1_), [_rs2] "r" (rs2_));               \
 | |
| }
 | |
| 
 | |
| #define vload2_4x2_uib(vd_n, rs1, rs2)                          \
 | |
| {                                                               \
 | |
|     register uint32_t rs1_ asm ("x10") = (uint32_t) rs1;        \
 | |
|     register uint32_t rs2_ asm ("x11") = (uint32_t) rs2;        \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VLOAD2(FUNCT_VLOAD_MODE_4X2, FUNCT_VLOAD_TYPE_UIB, vd_n, 10, 11))  "\n\t" \
 | |
|         :: [_rs1] "r" (rs1_), [_rs2] "r" (rs2_));               \
 | |
| }
 | |
| 
 | |
| #define vload2_2x4_fpw(vd_n, rs1, rs2)                          \
 | |
| {                                                               \
 | |
|     register uint32_t rs1_ asm ("x10") = (uint32_t) rs1;        \
 | |
|     register uint32_t rs2_ asm ("x11") = (uint32_t) rs2;        \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VLOAD2(FUNCT_VLOAD_MODE_2x4, FUNCT_VLOAD_TYPE_FPW, vd_n, 10, 11))  "\n\t" \
 | |
|         :: [_rs1] "r" (rs1_), [_rs2] "r" (rs2_));               \
 | |
| }
 | |
| 
 | |
| #define vload2_2x4_siw(vd_n, rs1, rs2)                          \
 | |
| {                                                               \
 | |
|     register uint32_t rs1_ asm ("x10") = (uint32_t) rs1;        \
 | |
|     register uint32_t rs2_ asm ("x11") = (uint32_t) rs2;        \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VLOAD2(FUNCT_VLOAD_MODE_2X4, FUNCT_VLOAD_TYPE_SIW, vd_n, 10, 11))  "\n\t" \
 | |
|         :: [_rs1] "r" (rs1_), [_rs2] "r" (rs2_));               \
 | |
| }
 | |
| 
 | |
| #define vload2_2x4_uiw(vd_n, rs1, rs2)                          \
 | |
| {                                                               \
 | |
|     register uint32_t rs1_ asm ("x10") = (uint32_t) rs1;        \
 | |
|     register uint32_t rs2_ asm ("x11") = (uint32_t) rs2;        \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VLOAD2(FUNCT_VLOAD_MODE_2X4, FUNCT_VLOAD_TYPE_UIW, vd_n, 10, 11))  "\n\t" \
 | |
|         :: [_rs1] "r" (rs1_), [_rs2] "r" (rs2_));               \
 | |
| }
 | |
| 
 | |
| #define vload2_2x4_sih(vd_n, rs1, rs2)                          \
 | |
| {                                                               \
 | |
|     register uint32_t rs1_ asm ("x10") = (uint32_t) rs1;        \
 | |
|     register uint32_t rs2_ asm ("x11") = (uint32_t) rs2;        \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VLOAD2(FUNCT_VLOAD_MODE_2X4, FUNCT_VLOAD_TYPE_SIH, vd_n, 10, 11))  "\n\t" \
 | |
|         :: [_rs1] "r" (rs1_), [_rs2] "r" (rs2_));               \
 | |
| }
 | |
| 
 | |
| #define vload2_2x4_uih(vd_n, rs1, rs2)                          \
 | |
| {                                                               \
 | |
|     register uint32_t rs1_ asm ("x10") = (uint32_t) rs1;        \
 | |
|     register uint32_t rs2_ asm ("x11") = (uint32_t) rs2;        \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VLOAD2(FUNCT_VLOAD_MODE_2X4, FUNCT_VLOAD_TYPE_UIH, vd_n, 10, 11))  "\n\t" \
 | |
|         :: [_rs1] "r" (rs1_), [_rs2] "r" (rs2_));               \
 | |
| }
 | |
| 
 | |
| #define vload2_2x4_sib(vd_n, rs1, rs2)                          \
 | |
| {                                                               \
 | |
|     register uint32_t rs1_ asm ("x10") = (uint32_t) rs1;        \
 | |
|     register uint32_t rs2_ asm ("x11") = (uint32_t) rs2;        \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VLOAD2(FUNCT_VLOAD_MODE_2X4, FUNCT_VLOAD_TYPE_SIB, vd_n, 10, 11))  "\n\t" \
 | |
|         :: [_rs1] "r" (rs1_), [_rs2] "r" (rs2_));               \
 | |
| }
 | |
| 
 | |
| #define vload2_2x4_uib(vd_n, rs1, rs2)                          \
 | |
| {                                                               \
 | |
|     register uint32_t rs1_ asm ("x10") = (uint32_t) rs1;        \
 | |
|     register uint32_t rs2_ asm ("x11") = (uint32_t) rs2;        \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VLOAD2(FUNCT_VLOAD_MODE_2X4, FUNCT_VLOAD_TYPE_UIB, vd_n, 10, 11))  "\n\t" \
 | |
|         :: [_rs1] "r" (rs1_), [_rs2] "r" (rs2_));               \
 | |
| }
 | |
| 
 | |
| #define vload2_2x2_fpw(vd_n, rs1, rs2)                          \
 | |
| {                                                               \
 | |
|     register uint32_t rs1_ asm ("x10") = (uint32_t) rs1;        \
 | |
|     register uint32_t rs2_ asm ("x11") = (uint32_t) rs2;        \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VLOAD2(FUNCT_VLOAD_MODE_2X2, FUNCT_VLOAD_TYPE_FPW, vd_n, 10, 11))  "\n\t" \
 | |
|         :: [_rs1] "r" (rs1_), [_rs2] "r" (rs2_));               \
 | |
| }
 | |
| 
 | |
| #define vload2_2x2_siw(vd_n, rs1, rs2)                          \
 | |
| {                                                               \
 | |
|     register uint32_t rs1_ asm ("x10") = (uint32_t) rs1;        \
 | |
|     register uint32_t rs2_ asm ("x11") = (uint32_t) rs2;        \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VLOAD2(FUNCT_VLOAD_MODE_2X2, FUNCT_VLOAD_TYPE_SIW, vd_n, 10, 11))  "\n\t" \
 | |
|         :: [_rs1] "r" (rs1_), [_rs2] "r" (rs2_));               \
 | |
| }
 | |
| 
 | |
| #define vload2_2x2_uiw(vd_n, rs1, rs2)                          \
 | |
| {                                                               \
 | |
|     register uint32_t rs1_ asm ("x10") = (uint32_t) rs1;        \
 | |
|     register uint32_t rs2_ asm ("x11") = (uint32_t) rs2;        \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VLOAD2(FUNCT_VLOAD_MODE_2X2, FUNCT_VLOAD_TYPE_UIW, vd_n, 10, 11))  "\n\t" \
 | |
|         :: [_rs1] "r" (rs1_), [_rs2] "r" (rs2_));               \
 | |
| }
 | |
| 
 | |
| #define vload2_2x2_sih(vd_n, rs1, rs2)                          \
 | |
| {                                                               \
 | |
|     register uint32_t rs1_ asm ("x10") = (uint32_t) rs1;        \
 | |
|     register uint32_t rs2_ asm ("x11") = (uint32_t) rs2;        \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VLOAD2(FUNCT_VLOAD_MODE_2X2, FUNCT_VLOAD_TYPE_SIH, vd_n, 10, 11))  "\n\t" \
 | |
|         :: [_rs1] "r" (rs1_), [_rs2] "r" (rs2_));               \
 | |
| }
 | |
| 
 | |
| #define vload2_2x2_uih(vd_n, rs1, rs2)                          \
 | |
| {                                                               \
 | |
|     register uint32_t rs1_ asm ("x10") = (uint32_t) rs1;        \
 | |
|     register uint32_t rs2_ asm ("x11") = (uint32_t) rs2;        \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VLOAD2(FUNCT_VLOAD_MODE_2X2, FUNCT_VLOAD_TYPE_UIH, vd_n, 10, 11))  "\n\t" \
 | |
|         :: [_rs1] "r" (rs1_), [_rs2] "r" (rs2_));               \
 | |
| }
 | |
| 
 | |
| #define vload2_2x2_sib(vd_n, rs1, rs2)                          \
 | |
| {                                                               \
 | |
|     register uint32_t rs1_ asm ("x10") = (uint32_t) rs1;        \
 | |
|     register uint32_t rs2_ asm ("x11") = (uint32_t) rs2;        \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VLOAD2(FUNCT_VLOAD_MODE_2X2, FUNCT_VLOAD_TYPE_SIB, vd_n, 10, 11))  "\n\t" \
 | |
|         :: [_rs1] "r" (rs1_), [_rs2] "r" (rs2_));               \
 | |
| }
 | |
| 
 | |
| #define vload2_2x2_uib(vd_n, rs1, rs2)                          \
 | |
| {                                                               \
 | |
|     register uint32_t rs1_ asm ("x10") = (uint32_t) rs1;        \
 | |
|     register uint32_t rs2_ asm ("x11") = (uint32_t) rs2;        \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VLOAD2(FUNCT_VLOAD_MODE_2X2, FUNCT_VLOAD_TYPE_UIB, vd_n, 10, 11))  "\n\t" \
 | |
|         :: [_rs1] "r" (rs1_), [_rs2] "r" (rs2_));               \
 | |
| }
 | |
| 
 | |
| #define vload2_2x1_fpw(vd_n, rs1, rs2)                          \
 | |
| {                                                               \
 | |
|     register uint32_t rs1_ asm ("x10") = (uint32_t) rs1;        \
 | |
|     register uint32_t rs2_ asm ("x11") = (uint32_t) rs2;        \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VLOAD2(FUNCT_VLOAD_MODE_2X1, FUNCT_VLOAD_TYPE_FPW, vd_n, 10, 11))  "\n\t" \
 | |
|         :: [_rs1] "r" (rs1_), [_rs2] "r" (rs2_));               \
 | |
| }
 | |
| 
 | |
| #define vload2_2x1_siw(vd_n, rs1, rs2)                          \
 | |
| {                                                               \
 | |
|     register uint32_t rs1_ asm ("x10") = (uint32_t) rs1;        \
 | |
|     register uint32_t rs2_ asm ("x11") = (uint32_t) rs2;        \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VLOAD2(FUNCT_VLOAD_MODE_2X1, FUNCT_VLOAD_TYPE_SIW, vd_n, 10, 11))  "\n\t" \
 | |
|         :: [_rs1] "r" (rs1_), [_rs2] "r" (rs2_));               \
 | |
| }
 | |
| 
 | |
| #define vload2_2x1_uiw(vd_n, rs1, rs2)                          \
 | |
| {                                                               \
 | |
|     register uint32_t rs1_ asm ("x10") = (uint32_t) rs1;        \
 | |
|     register uint32_t rs2_ asm ("x11") = (uint32_t) rs2;        \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VLOAD2(FUNCT_VLOAD_MODE_2X1, FUNCT_VLOAD_TYPE_UIW, vd_n, 10, 11))  "\n\t" \
 | |
|         :: [_rs1] "r" (rs1_), [_rs2] "r" (rs2_));               \
 | |
| }
 | |
| 
 | |
| #define vload2_2x1_sih(vd_n, rs1, rs2)                          \
 | |
| {                                                               \
 | |
|     register uint32_t rs1_ asm ("x10") = (uint32_t) rs1;        \
 | |
|     register uint32_t rs2_ asm ("x11") = (uint32_t) rs2;        \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VLOAD2(FUNCT_VLOAD_MODE_2X1, FUNCT_VLOAD_TYPE_SIH, vd_n, 10, 11))  "\n\t" \
 | |
|         :: [_rs1] "r" (rs1_), [_rs2] "r" (rs2_));               \
 | |
| }
 | |
| 
 | |
| #define vload2_2x1_uih(vd_n, rs1, rs2)                          \
 | |
| {                                                               \
 | |
|     register uint32_t rs1_ asm ("x10") = (uint32_t) rs1;        \
 | |
|     register uint32_t rs2_ asm ("x11") = (uint32_t) rs2;        \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VLOAD2(FUNCT_VLOAD_MODE_2X1, FUNCT_VLOAD_TYPE_UIH, vd_n, 10, 11))  "\n\t" \
 | |
|         :: [_rs1] "r" (rs1_), [_rs2] "r" (rs2_));               \
 | |
| }
 | |
| 
 | |
| #define vload2_2x1_sib(vd_n, rs1, rs2)                          \
 | |
| {                                                               \
 | |
|     register uint32_t rs1_ asm ("x10") = (uint32_t) rs1;        \
 | |
|     register uint32_t rs2_ asm ("x11") = (uint32_t) rs2;        \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VLOAD2(FUNCT_VLOAD_MODE_2X1, FUNCT_VLOAD_TYPE_SIB, vd_n, 10, 11))  "\n\t" \
 | |
|         :: [_rs1] "r" (rs1_), [_rs2] "r" (rs2_));               \
 | |
| }
 | |
| 
 | |
| #define vload2_2x1_uib(vd_n, rs1, rs2)                          \
 | |
| {                                                               \
 | |
|     register uint32_t rs1_ asm ("x10") = (uint32_t) rs1;        \
 | |
|     register uint32_t rs2_ asm ("x11") = (uint32_t) rs2;        \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VLOAD2(FUNCT_VLOAD_MODE_2X1, FUNCT_VLOAD_TYPE_UIB, vd_n, 10, 11))  "\n\t" \
 | |
|         :: [_rs1] "r" (rs1_), [_rs2] "r" (rs2_));               \
 | |
| }
 | |
| 
 | |
| #define vload2_1x1_fpw(vd_n, rs1, rs2)                          \
 | |
| {                                                               \
 | |
|     register uint32_t rs1_ asm ("x10") = (uint32_t) rs1;        \
 | |
|     register uint32_t rs2_ asm ("x11") = (uint32_t) rs2;        \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VLOAD2(FUNCT_VLOAD_MODE_1X1, FUNCT_VLOAD_TYPE_FPW, vd_n, 10, 11))  "\n\t" \
 | |
|         :: [_rs1] "r" (rs1_), [_rs2] "r" (rs2_));               \
 | |
| }
 | |
| 
 | |
| #define vload2_1x1_siw(vd_n, rs1, rs2)                          \
 | |
| {                                                               \
 | |
|     register uint32_t rs1_ asm ("x10") = (uint32_t) rs1;        \
 | |
|     register uint32_t rs2_ asm ("x11") = (uint32_t) rs2;        \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VLOAD2(FUNCT_VLOAD_MODE_1X1, FUNCT_VLOAD_TYPE_SIW, vd_n, 10, 11))  "\n\t" \
 | |
|         :: [_rs1] "r" (rs1_), [_rs2] "r" (rs2_));               \
 | |
| }
 | |
| 
 | |
| #define vload2_1x1_uiw(vd_n, rs1, rs2)                          \
 | |
| {                                                               \
 | |
|     register uint32_t rs1_ asm ("x10") = (uint32_t) rs1;        \
 | |
|     register uint32_t rs2_ asm ("x11") = (uint32_t) rs2;        \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VLOAD2(FUNCT_VLOAD_MODE_1X1, FUNCT_VLOAD_TYPE_UIW, vd_n, 10, 11))  "\n\t" \
 | |
|         :: [_rs1] "r" (rs1_), [_rs2] "r" (rs2_));               \
 | |
| }
 | |
| 
 | |
| #define vload2_1x1_sih(vd_n, rs1, rs2)                          \
 | |
| {                                                               \
 | |
|     register uint32_t rs1_ asm ("x10") = (uint32_t) rs1;        \
 | |
|     register uint32_t rs2_ asm ("x11") = (uint32_t) rs2;        \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VLOAD2(FUNCT_VLOAD_MODE_1X1, FUNCT_VLOAD_TYPE_SIH, vd_n, 10, 11))  "\n\t" \
 | |
|         :: [_rs1] "r" (rs1_), [_rs2] "r" (rs2_));               \
 | |
| }
 | |
| 
 | |
| #define vload2_1x1_uih(vd_n, rs1, rs2)                          \
 | |
| {                                                               \
 | |
|     register uint32_t rs1_ asm ("x10") = (uint32_t) rs1;        \
 | |
|     register uint32_t rs2_ asm ("x11") = (uint32_t) rs2;        \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VLOAD2(FUNCT_VLOAD_MODE_1X1, FUNCT_VLOAD_TYPE_UIH, vd_n, 10, 11))  "\n\t" \
 | |
|         :: [_rs1] "r" (rs1_), [_rs2] "r" (rs2_));               \
 | |
| }
 | |
| 
 | |
| #define vload2_1x1_sib(vd_n, rs1, rs2)                          \
 | |
| {                                                               \
 | |
|     register uint32_t rs1_ asm ("x10") = (uint32_t) rs1;        \
 | |
|     register uint32_t rs2_ asm ("x11") = (uint32_t) rs2;        \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VLOAD2(FUNCT_VLOAD_MODE_1X1, FUNCT_VLOAD_TYPE_SIB, vd_n, 10, 11))  "\n\t" \
 | |
|         :: [_rs1] "r" (rs1_), [_rs2] "r" (rs2_));               \
 | |
| }
 | |
| 
 | |
| #define vload2_1x1_uib(vd_n, rs1, rs2)                          \
 | |
| {                                                               \
 | |
|     register uint32_t rs1_ asm ("x10") = (uint32_t) rs1;        \
 | |
|     register uint32_t rs2_ asm ("x11") = (uint32_t) rs2;        \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VLOAD2(FUNCT_VLOAD_MODE_1X1, FUNCT_VLOAD_TYPE_UIB, vd_n, 10, 11))  "\n\t" \
 | |
|         :: [_rs1] "r" (rs1_), [_rs2] "r" (rs2_));               \
 | |
| }
 | |
| 
 | |
| 
 | |
| 
 | |
| #define vload1_8x1_fpw(vd_n, rs1, inc)                          \
 | |
| {                                                               \
 | |
|     register uint32_t rs1_ asm ("x10") = (uint32_t) rs1;        \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VLOAD1(FUNCT_VLOAD_MODE_8X1, FUNCT_VLOAD_TYPE_FPW, vd_n, 10, inc))  "\n\t" \
 | |
|         :: [_rs1] "r" (rs1_));                                  \
 | |
| }
 | |
| 
 | |
| #define vload1_8x1_siw(vd_n, rs1, inc)                          \
 | |
| {                                                               \
 | |
|     register uint32_t rs1_ asm ("x10") = (uint32_t) rs1;        \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VLOAD1(FUNCT_VLOAD_MODE_8X1, FUNCT_VLOAD_TYPE_SIW, vd_n, 10, inc))  "\n\t" \
 | |
|         :: [_rs1] "r" (rs1_));                                  \
 | |
| }
 | |
| 
 | |
| #define vload1_8x1_uiw(vd_n, rs1, inc)                          \
 | |
| {                                                               \
 | |
|     register uint32_t rs1_ asm ("x10") = (uint32_t) rs1;        \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VLOAD1(FUNCT_VLOAD_MODE_8X1, FUNCT_VLOAD_TYPE_UIW, vd_n, 10, inc))  "\n\t" \
 | |
|         :: [_rs1] "r" (rs1_));                                  \
 | |
| }
 | |
| 
 | |
| #define vload1_8x1_sih(vd_n, rs1, inc)                          \
 | |
| {                                                               \
 | |
|     register uint32_t rs1_ asm ("x10") = (uint32_t) rs1;        \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VLOAD1(FUNCT_VLOAD_MODE_8X1, FUNCT_VLOAD_TYPE_SIH, vd_n, 10, inc))  "\n\t" \
 | |
|         :: [_rs1] "r" (rs1_));                                  \
 | |
| }
 | |
| 
 | |
| #define vload1_8x1_uih(vd_n, rs1, inc)                          \
 | |
| {                                                               \
 | |
|     register uint32_t rs1_ asm ("x10") = (uint32_t) rs1;        \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VLOAD1(FUNCT_VLOAD_MODE_8X1, FUNCT_VLOAD_TYPE_UIH, vd_n, 10, inc))  "\n\t" \
 | |
|         :: [_rs1] "r" (rs1_));                                  \
 | |
| }
 | |
| 
 | |
| #define vload1_8x1_sib(vd_n, rs1, inc)                          \
 | |
| {                                                               \
 | |
|     register uint32_t rs1_ asm ("x10") = (uint32_t) rs1;        \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VLOAD1(FUNCT_VLOAD_MODE_8X1, FUNCT_VLOAD_TYPE_SIB, vd_n, 10, inc))  "\n\t" \
 | |
|         :: [_rs1] "r" (rs1_));                                  \
 | |
| }
 | |
| 
 | |
| #define vload1_8x1_uib(vd_n, rs1, inc)                          \
 | |
| {                                                               \
 | |
|     register uint32_t rs1_ asm ("x10") = (uint32_t) rs1;        \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VLOAD1(FUNCT_VLOAD_MODE_8X1, FUNCT_VLOAD_TYPE_UIB, vd_n, 10, inc))  "\n\t" \
 | |
|         :: [_rs1] "r" (rs1_));                                  \
 | |
| }
 | |
| 
 | |
| #define vload1_4x2_fpw(vd_n, rs1, inc)                          \
 | |
| {                                                               \
 | |
|     register uint32_t rs1_ asm ("x10") = (uint32_t) rs1;        \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VLOAD1(FUNCT_VLOAD_MODE_4X2, FUNCT_VLOAD_TYPE_FPW, vd_n, 10, inc))  "\n\t" \
 | |
|         :: [_rs1] "r" (rs1_));                                  \
 | |
| }
 | |
| 
 | |
| #define vload1_4x2_siw(vd_n, rs1, inc)                          \
 | |
| {                                                               \
 | |
|     register uint32_t rs1_ asm ("x10") = (uint32_t) rs1;        \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VLOAD1(FUNCT_VLOAD_MODE_4X2, FUNCT_VLOAD_TYPE_SIW, vd_n, 10, inc))  "\n\t" \
 | |
|         :: [_rs1] "r" (rs1_));                                  \
 | |
| }
 | |
| 
 | |
| #define vload1_4x2_uiw(vd_n, rs1, inc)                          \
 | |
| {                                                               \
 | |
|     register uint32_t rs1_ asm ("x10") = (uint32_t) rs1;        \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VLOAD1(FUNCT_VLOAD_MODE_4X2, FUNCT_VLOAD_TYPE_UIW, vd_n, 10, inc))  "\n\t" \
 | |
|         :: [_rs1] "r" (rs1_));                                  \
 | |
| }
 | |
| 
 | |
| #define vload1_4x2_sih(vd_n, rs1, inc)                          \
 | |
| {                                                               \
 | |
|     register uint32_t rs1_ asm ("x10") = (uint32_t) rs1;        \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VLOAD1(FUNCT_VLOAD_MODE_4X2, FUNCT_VLOAD_TYPE_SIH, vd_n, 10, inc))  "\n\t" \
 | |
|         :: [_rs1] "r" (rs1_));                                  \
 | |
| }
 | |
| 
 | |
| #define vload1_4x2_uih(vd_n, rs1, inc)                          \
 | |
| {                                                               \
 | |
|     register uint32_t rs1_ asm ("x10") = (uint32_t) rs1;        \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VLOAD1(FUNCT_VLOAD_MODE_4X2, FUNCT_VLOAD_TYPE_UIH, vd_n, 10, inc))  "\n\t" \
 | |
|         :: [_rs1] "r" (rs1_));                                  \
 | |
| }
 | |
| 
 | |
| #define vload1_4x2_sib(vd_n, rs1, inc)                          \
 | |
| {                                                               \
 | |
|     register uint32_t rs1_ asm ("x10") = (uint32_t) rs1;        \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VLOAD1(FUNCT_VLOAD_MODE_4X2, FUNCT_VLOAD_TYPE_SIB, vd_n, 10, inc))  "\n\t" \
 | |
|         :: [_rs1] "r" (rs1_));                                  \
 | |
| }
 | |
| 
 | |
| #define vload1_4x2_uib(vd_n, rs1, inc)                          \
 | |
| {                                                               \
 | |
|     register uint32_t rs1_ asm ("x10") = (uint32_t) rs1;        \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VLOAD1(FUNCT_VLOAD_MODE_4X2, FUNCT_VLOAD_TYPE_UIB, vd_n, 10, inc))  "\n\t" \
 | |
|         :: [_rs1] "r" (rs1_));                                  \
 | |
| }
 | |
| 
 | |
| #define vload1_4x1_fpw(vd_n, rs1, inc)                          \
 | |
| {                                                               \
 | |
|     register uint32_t rs1_ asm ("x10") = (uint32_t) rs1;        \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VLOAD1(FUNCT_VLOAD_MODE_4X1, FUNCT_VLOAD_TYPE_FPW, vd_n, 10, inc))  "\n\t" \
 | |
|         :: [_rs1] "r" (rs1_));                                  \
 | |
| }
 | |
| 
 | |
| #define vload1_4x1_siw(vd_n, rs1, inc)                          \
 | |
| {                                                               \
 | |
|     register uint32_t rs1_ asm ("x10") = (uint32_t) rs1;        \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VLOAD1(FUNCT_VLOAD_MODE_4X1, FUNCT_VLOAD_TYPE_SIW, vd_n, 10, inc))  "\n\t" \
 | |
|         :: [_rs1] "r" (rs1_));                                  \
 | |
| }
 | |
| 
 | |
| #define vload1_4x1_uiw(vd_n, rs1, inc)                          \
 | |
| {                                                               \
 | |
|     register uint32_t rs1_ asm ("x10") = (uint32_t) rs1;        \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VLOAD1(FUNCT_VLOAD_MODE_4X1, FUNCT_VLOAD_TYPE_UIW, vd_n, 10, inc))  "\n\t" \
 | |
|         :: [_rs1] "r" (rs1_));                                  \
 | |
| }
 | |
| 
 | |
| #define vload1_4x1_sih(vd_n, rs1, inc)                          \
 | |
| {                                                               \
 | |
|     register uint32_t rs1_ asm ("x10") = (uint32_t) rs1;        \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VLOAD1(FUNCT_VLOAD_MODE_4X1, FUNCT_VLOAD_TYPE_SIH, vd_n, 10, inc))  "\n\t" \
 | |
|         :: [_rs1] "r" (rs1_));                                  \
 | |
| }
 | |
| 
 | |
| #define vload1_4x1_uih(vd_n, rs1, inc)                          \
 | |
| {                                                               \
 | |
|     register uint32_t rs1_ asm ("x10") = (uint32_t) rs1;        \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VLOAD1(FUNCT_VLOAD_MODE_4X1, FUNCT_VLOAD_TYPE_UIH, vd_n, 10, inc))  "\n\t" \
 | |
|         :: [_rs1] "r" (rs1_));                                  \
 | |
| }
 | |
| 
 | |
| #define vload1_4x1_sib(vd_n, rs1, inc)                          \
 | |
| {                                                               \
 | |
|     register uint32_t rs1_ asm ("x10") = (uint32_t) rs1;        \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VLOAD1(FUNCT_VLOAD_MODE_4X1, FUNCT_VLOAD_TYPE_SIB, vd_n, 10, inc))  "\n\t" \
 | |
|         :: [_rs1] "r" (rs1_));                                  \
 | |
| }
 | |
| 
 | |
| #define vload1_4x1_uib(vd_n, rs1, inc)                          \
 | |
| {                                                               \
 | |
|     register uint32_t rs1_ asm ("x10") = (uint32_t) rs1;        \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VLOAD1(FUNCT_VLOAD_MODE_4X1, FUNCT_VLOAD_TYPE_UIB, vd_n, 10, inc))  "\n\t" \
 | |
|         :: [_rs1] "r" (rs1_));                                  \
 | |
| }
 | |
| 
 | |
| #define vload1_2x4_fpw(vd_n, rs1, inc)                          \
 | |
| {                                                               \
 | |
|     register uint32_t rs1_ asm ("x10") = (uint32_t) rs1;        \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VLOAD1(FUNCT_VLOAD_MODE_2X4, FUNCT_VLOAD_TYPE_FPW, vd_n, 10, inc))  "\n\t" \
 | |
|         :: [_rs1] "r" (rs1_));                                  \
 | |
| }
 | |
| 
 | |
| #define vload1_2x4_siw(vd_n, rs1, inc)                          \
 | |
| {                                                               \
 | |
|     register uint32_t rs1_ asm ("x10") = (uint32_t) rs1;        \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VLOAD1(FUNCT_VLOAD_MODE_2X4, FUNCT_VLOAD_TYPE_SIW, vd_n, 10, inc))  "\n\t" \
 | |
|         :: [_rs1] "r" (rs1_));                                  \
 | |
| }
 | |
| 
 | |
| #define vload1_2x4_uiw(vd_n, rs1, inc)                          \
 | |
| {                                                               \
 | |
|     register uint32_t rs1_ asm ("x10") = (uint32_t) rs1;        \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VLOAD1(FUNCT_VLOAD_MODE_2X4, FUNCT_VLOAD_TYPE_UIW, vd_n, 10, inc))  "\n\t" \
 | |
|         :: [_rs1] "r" (rs1_));                                  \
 | |
| }
 | |
| 
 | |
| #define vload1_2x4_sih(vd_n, rs1, inc)                          \
 | |
| {                                                               \
 | |
|     register uint32_t rs1_ asm ("x10") = (uint32_t) rs1;        \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VLOAD1(FUNCT_VLOAD_MODE_2X4, FUNCT_VLOAD_TYPE_SIH, vd_n, 10, inc))  "\n\t" \
 | |
|         :: [_rs1] "r" (rs1_));                                  \
 | |
| }
 | |
| 
 | |
| #define vload1_2x4_uih(vd_n, rs1, inc)                          \
 | |
| {                                                               \
 | |
|     register uint32_t rs1_ asm ("x10") = (uint32_t) rs1;        \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VLOAD1(FUNCT_VLOAD_MODE_2X4, FUNCT_VLOAD_TYPE_UIH, vd_n, 10, inc))  "\n\t" \
 | |
|         :: [_rs1] "r" (rs1_));                                  \
 | |
| }
 | |
| 
 | |
| #define vload1_2x4_sib(vd_n, rs1, inc)                          \
 | |
| {                                                               \
 | |
|     register uint32_t rs1_ asm ("x10") = (uint32_t) rs1;        \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VLOAD1(FUNCT_VLOAD_MODE_2X4, FUNCT_VLOAD_TYPE_SIB, vd_n, 10, inc))  "\n\t" \
 | |
|         :: [_rs1] "r" (rs1_));                                  \
 | |
| }
 | |
| 
 | |
| #define vload1_2x4_uib(vd_n, rs1, inc)                          \
 | |
| {                                                               \
 | |
|     register uint32_t rs1_ asm ("x10") = (uint32_t) rs1;        \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VLOAD1(FUNCT_VLOAD_MODE_2X4, FUNCT_VLOAD_TYPE_UIB, vd_n, 10, inc))  "\n\t" \
 | |
|         :: [_rs1] "r" (rs1_));                                  \
 | |
| }
 | |
| 
 | |
| #define vload1_2x2_fpw(vd_n, rs1, inc)                          \
 | |
| {                                                               \
 | |
|     register uint32_t rs1_ asm ("x10") = (uint32_t) rs1;        \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VLOAD1(FUNCT_VLOAD_MODE_2X2, FUNCT_VLOAD_TYPE_FPW, vd_n, 10, inc))  "\n\t" \
 | |
|         :: [_rs1] "r" (rs1_));                                  \
 | |
| }
 | |
| 
 | |
| #define vload1_2x2_siw(vd_n, rs1, inc)                          \
 | |
| {                                                               \
 | |
|     register uint32_t rs1_ asm ("x10") = (uint32_t) rs1;        \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VLOAD1(FUNCT_VLOAD_MODE_2X2, FUNCT_VLOAD_TYPE_SIW, vd_n, 10, inc))  "\n\t" \
 | |
|         :: [_rs1] "r" (rs1_));                                  \
 | |
| }
 | |
| 
 | |
| #define vload1_2x2_uiw(vd_n, rs1, inc)                          \
 | |
| {                                                               \
 | |
|     register uint32_t rs1_ asm ("x10") = (uint32_t) rs1;        \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VLOAD1(FUNCT_VLOAD_MODE_2X2, FUNCT_VLOAD_TYPE_UIW, vd_n, 10, inc))  "\n\t" \
 | |
|         :: [_rs1] "r" (rs1_));                                  \
 | |
| }
 | |
| 
 | |
| #define vload1_2x2_sih(vd_n, rs1, inc)                          \
 | |
| {                                                               \
 | |
|     register uint32_t rs1_ asm ("x10") = (uint32_t) rs1;        \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VLOAD1(FUNCT_VLOAD_MODE_2X2, FUNCT_VLOAD_TYPE_SIH, vd_n, 10, inc))  "\n\t" \
 | |
|         :: [_rs1] "r" (rs1_));                                  \
 | |
| }
 | |
| 
 | |
| #define vload1_2x2_uih(vd_n, rs1, inc)                          \
 | |
| {                                                               \
 | |
|     register uint32_t rs1_ asm ("x10") = (uint32_t) rs1;        \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VLOAD1(FUNCT_VLOAD_MODE_2X2, FUNCT_VLOAD_TYPE_UIH, vd_n, 10, inc))  "\n\t" \
 | |
|         :: [_rs1] "r" (rs1_));                                  \
 | |
| }
 | |
| 
 | |
| #define vload1_2x2_sib(vd_n, rs1, inc)                          \
 | |
| {                                                               \
 | |
|     register uint32_t rs1_ asm ("x10") = (uint32_t) rs1;        \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VLOAD1(FUNCT_VLOAD_MODE_2X2, FUNCT_VLOAD_TYPE_SIB, vd_n, 10, inc))  "\n\t" \
 | |
|         :: [_rs1] "r" (rs1_));                                  \
 | |
| }
 | |
| 
 | |
| #define vload1_2x2_uib(vd_n, rs1, inc)                          \
 | |
| {                                                               \
 | |
|     register uint32_t rs1_ asm ("x10") = (uint32_t) rs1;        \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VLOAD1(FUNCT_VLOAD_MODE_2X2, FUNCT_VLOAD_TYPE_UIB, vd_n, 10, inc))  "\n\t" \
 | |
|         :: [_rs1] "r" (rs1_));                                  \
 | |
| }
 | |
| 
 | |
| #define vload1_2x1_fpw(vd_n, rs1, inc)                          \
 | |
| {                                                               \
 | |
|     register uint32_t rs1_ asm ("x10") = (uint32_t) rs1;        \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VLOAD1(FUNCT_VLOAD_MODE_2X1, FUNCT_VLOAD_TYPE_FPW, vd_n, 10, inc))  "\n\t" \
 | |
|         :: [_rs1] "r" (rs1_));                                  \
 | |
| }
 | |
| 
 | |
| #define vload1_2x1_siw(vd_n, rs1, inc)                          \
 | |
| {                                                               \
 | |
|     register uint32_t rs1_ asm ("x10") = (uint32_t) rs1;        \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VLOAD1(FUNCT_VLOAD_MODE_2X1, FUNCT_VLOAD_TYPE_SIW, vd_n, 10, inc))  "\n\t" \
 | |
|         :: [_rs1] "r" (rs1_));                                  \
 | |
| }
 | |
| 
 | |
| #define vload1_2x1_uiw(vd_n, rs1, inc)                          \
 | |
| {                                                               \
 | |
|     register uint32_t rs1_ asm ("x10") = (uint32_t) rs1;        \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VLOAD1(FUNCT_VLOAD_MODE_2X1, FUNCT_VLOAD_TYPE_UIW, vd_n, 10, inc))  "\n\t" \
 | |
|         :: [_rs1] "r" (rs1_));                                  \
 | |
| }
 | |
| 
 | |
| #define vload1_2x1_sih(vd_n, rs1, inc)                          \
 | |
| {                                                               \
 | |
|     register uint32_t rs1_ asm ("x10") = (uint32_t) rs1;        \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VLOAD1(FUNCT_VLOAD_MODE_2X1, FUNCT_VLOAD_TYPE_SIH, vd_n, 10, inc))  "\n\t" \
 | |
|         :: [_rs1] "r" (rs1_));                                  \
 | |
| }
 | |
| 
 | |
| #define vload1_2x1_uih(vd_n, rs1, inc)                          \
 | |
| {                                                               \
 | |
|     register uint32_t rs1_ asm ("x10") = (uint32_t) rs1;        \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VLOAD1(FUNCT_VLOAD_MODE_2X1, FUNCT_VLOAD_TYPE_UIH, vd_n, 10, inc))  "\n\t" \
 | |
|         :: [_rs1] "r" (rs1_));                                  \
 | |
| }
 | |
| 
 | |
| #define vload1_2x1_sib(vd_n, rs1, inc)                          \
 | |
| {                                                               \
 | |
|     register uint32_t rs1_ asm ("x10") = (uint32_t) rs1;        \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VLOAD1(FUNCT_VLOAD_MODE_2X1, FUNCT_VLOAD_TYPE_SIB, vd_n, 10, inc))  "\n\t" \
 | |
|         :: [_rs1] "r" (rs1_));                                  \
 | |
| }
 | |
| 
 | |
| #define vload1_2x1_uib(vd_n, rs1, inc)                          \
 | |
| {                                                               \
 | |
|     register uint32_t rs1_ asm ("x10") = (uint32_t) rs1;        \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VLOAD1(FUNCT_VLOAD_MODE_2X1, FUNCT_VLOAD_TYPE_UIB, vd_n, 10, inc))  "\n\t" \
 | |
|         :: [_rs1] "r" (rs1_));                                  \
 | |
| }
 | |
| 
 | |
| #define vload1_1x1_fpw(vd_n, rs1, inc)                          \
 | |
| {                                                               \
 | |
|     register uint32_t rs1_ asm ("x10") = (uint32_t) rs1;        \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VLOAD1(FUNCT_VLOAD_MODE_1X1, FUNCT_VLOAD_TYPE_FPW, vd_n, 10, inc))  "\n\t" \
 | |
|         :: [_rs1] "r" (rs1_));                                  \
 | |
| }
 | |
| 
 | |
| #define vload1_1x1_siw(vd_n, rs1, inc)                          \
 | |
| {                                                               \
 | |
|     register uint32_t rs1_ asm ("x10") = (uint32_t) rs1;        \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VLOAD1(FUNCT_VLOAD_MODE_1X1, FUNCT_VLOAD_TYPE_SIW, vd_n, 10, inc))  "\n\t" \
 | |
|         :: [_rs1] "r" (rs1_));                                  \
 | |
| }
 | |
| 
 | |
| #define vload1_1x1_uiw(vd_n, rs1, inc)                          \
 | |
| {                                                               \
 | |
|     register uint32_t rs1_ asm ("x10") = (uint32_t) rs1;        \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VLOAD1(FUNCT_VLOAD_MODE_1X1, FUNCT_VLOAD_TYPE_UIW, vd_n, 10, inc))  "\n\t" \
 | |
|         :: [_rs1] "r" (rs1_));                                  \
 | |
| }
 | |
| 
 | |
| #define vload1_1x1_sih(vd_n, rs1, inc)                          \
 | |
| {                                                               \
 | |
|     register uint32_t rs1_ asm ("x10") = (uint32_t) rs1;        \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VLOAD1(FUNCT_VLOAD_MODE_1X1, FUNCT_VLOAD_TYPE_SIH, vd_n, 10, inc))  "\n\t" \
 | |
|         :: [_rs1] "r" (rs1_));                                  \
 | |
| }
 | |
| 
 | |
| #define vload1_1x1_uih(vd_n, rs1, inc)                          \
 | |
| {                                                               \
 | |
|     register uint32_t rs1_ asm ("x10") = (uint32_t) rs1;        \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VLOAD1(FUNCT_VLOAD_MODE_1X1, FUNCT_VLOAD_TYPE_UIH, vd_n, 10, inc))  "\n\t" \
 | |
|         :: [_rs1] "r" (rs1_));                                  \
 | |
| }
 | |
| 
 | |
| #define vload1_1x1_sib(vd_n, rs1, inc)                          \
 | |
| {                                                               \
 | |
|     register uint32_t rs1_ asm ("x10") = (uint32_t) rs1;        \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VLOAD1(FUNCT_VLOAD_MODE_1X1, FUNCT_VLOAD_TYPE_SIB, vd_n, 10, inc))  "\n\t" \
 | |
|         :: [_rs1] "r" (rs1_));                                  \
 | |
| }
 | |
| 
 | |
| #define vload1_1x1_uib(vd_n, rs1, inc)                          \
 | |
| {                                                               \
 | |
|     register uint32_t rs1_ asm ("x10") = (uint32_t) rs1;        \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VLOAD1(FUNCT_VLOAD_MODE_1X1, FUNCT_VLOAD_TYPE_UIB, vd_n, 10, inc))  "\n\t" \
 | |
|         :: [_rs1] "r" (rs1_));                                  \
 | |
| }
 | |
| 
 | |
| #define vstore3_1(vp_n, inc, vs3_n)                             \
 | |
| {                                                               \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VSTORE3(FUNCT_VSTORE_MODE_1, vp_n, inc, vs3_n))); \
 | |
| }
 | |
| 
 | |
| #define vstore3_2(vp_n, inc, vs3_n)                             \
 | |
| {                                                               \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VSTORE3(FUNCT_VSTORE_MODE_2, vp_n, inc, vs3_n))); \
 | |
| }
 | |
| 
 | |
| #define vstore3_3(vp_n, inc, vs3_n)                              \
 | |
| {                                                               \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VSTORE3(FUNCT_VSTORE_MODE_3, vp_n, inc, vs3_n))); \
 | |
| }
 | |
| 
 | |
| #define vstore3_4(vp_n, inc, vs3_n)                             \
 | |
| {                                                               \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VSTORE3(FUNCT_VSTORE_MODE_4, vp_n, inc, vs3_n))); \
 | |
| }
 | |
| 
 | |
| #define vstore3_5(vp_n, inc, vs3_n)                             \
 | |
| {                                                               \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VSTORE3(FUNCT_VSTORE_MODE_5, vp_n, inc, vs3_n))); \
 | |
| }
 | |
| 
 | |
| #define vstore3_6(vp_n, inc, vs3_n)                             \
 | |
| {                                                               \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VSTORE3(FUNCT_VSTORE_MODE_6, vp_n, inc, vs3_n))); \
 | |
| }
 | |
| 
 | |
| #define vstore3_7(vp_n, inc, vs3_n)                             \
 | |
| {                                                               \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VSTORE3(FUNCT_VSTORE_MODE_7, vp_n, inc, vs3_n))); \
 | |
| }
 | |
| 
 | |
| #define vstore3_8(vp_n, inc, vs3_n)                             \
 | |
| {                                                               \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VSTORE3(FUNCT_VSTORE_MODE_8, vp_n, inc, vs3_n))); \
 | |
| }
 | |
| 
 | |
| #define vstore2_1(rs1, rs2, vs3_n)                              \
 | |
| {                                                               \
 | |
|     register uint32_t rs1_ asm ("x10") = (uint32_t) rs1;        \
 | |
|     register uint32_t rs2_ asm ("x11") = (uint32_t) rs2;        \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VSTORE2(FUNCT_VSTORE_MODE_1, 10, 11, vs3_n))    "\n\t" \
 | |
|         :: [_rs1] "r" (rs1_), [_rs2] "r" (rs2_));               \
 | |
| }
 | |
| 
 | |
| #define vstore2_2(rs1, rs2, vs3_n)                              \
 | |
| {                                                               \
 | |
|     register uint32_t rs1_ asm ("x10") = (uint32_t) rs1;        \
 | |
|     register uint32_t rs2_ asm ("x11") = (uint32_t) rs2;        \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VSTORE2(FUNCT_VSTORE_MODE_2, 10, 11, vs3_n))    "\n\t" \
 | |
|         :: [_rs1] "r" (rs1_), [_rs2] "r" (rs2_));               \
 | |
| }
 | |
| 
 | |
| #define vstore2_3(rs1, rs2, vs3_n)                              \
 | |
| {                                                               \
 | |
|     register uint32_t rs1_ asm ("x10") = (uint32_t) rs1;        \
 | |
|     register uint32_t rs2_ asm ("x11") = (uint32_t) rs2;        \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VSTORE2(FUNCT_VSTORE_MODE_3, 10, 11, vs3_n))    "\n\t" \
 | |
|         :: [_rs1] "r" (rs1_), [_rs2] "r" (rs2_));               \
 | |
| }
 | |
| 
 | |
| #define vstore2_4(rs1, rs2, vs3_n)                              \
 | |
| {                                                               \
 | |
|     register uint32_t rs1_ asm ("x10") = (uint32_t) rs1;        \
 | |
|     register uint32_t rs2_ asm ("x11") = (uint32_t) rs2;        \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VSTORE2(FUNCT_VSTORE_MODE_4, 10, 11, vs3_n))    "\n\t" \
 | |
|         :: [_rs1] "r" (rs1_), [_rs2] "r" (rs2_));               \
 | |
| }
 | |
| 
 | |
| #define vstore2_5(rs1, rs2, vs3_n)                              \
 | |
| {                                                               \
 | |
|     register uint32_t rs1_ asm ("x10") = (uint32_t) rs1;        \
 | |
|     register uint32_t rs2_ asm ("x11") = (uint32_t) rs2;        \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VSTORE2(FUNCT_VSTORE_MODE_5, 10, 11, vs3_n))    "\n\t" \
 | |
|         :: [_rs1] "r" (rs1_), [_rs2] "r" (rs2_));               \
 | |
| }
 | |
| 
 | |
| #define vstore2_6(rs1, rs2, vs3_n)                              \
 | |
| {                                                               \
 | |
|     register uint32_t rs1_ asm ("x10") = (uint32_t) rs1;        \
 | |
|     register uint32_t rs2_ asm ("x11") = (uint32_t) rs2;        \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VSTORE2(FUNCT_VSTORE_MODE_6, 10, 11, vs3_n))    "\n\t" \
 | |
|         :: [_rs1] "r" (rs1_), [_rs2] "r" (rs2_));               \
 | |
| }
 | |
| 
 | |
| #define vstore2_7(rs1, rs2, vs3_n)                              \
 | |
| {                                                               \
 | |
|     register uint32_t rs1_ asm ("x10") = (uint32_t) rs1;        \
 | |
|     register uint32_t rs2_ asm ("x11") = (uint32_t) rs2;        \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VSTORE2(FUNCT_VSTORE_MODE_7, 10, 11, vs3_n))    "\n\t" \
 | |
|         :: [_rs1] "r" (rs1_), [_rs2] "r" (rs2_));               \
 | |
| }
 | |
| 
 | |
| #define vstore2_8(rs1, rs2, vs3_n)                              \
 | |
| {                                                               \
 | |
|     register uint32_t rs1_ asm ("x10") = (uint32_t) rs1;        \
 | |
|     register uint32_t rs2_ asm ("x11") = (uint32_t) rs2;        \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VSTORE2(FUNCT_VSTORE_MODE_8, 10, 11, vs3_n))    "\n\t" \
 | |
|         :: [_rs1] "r" (rs1_), [_rs2] "r" (rs2_));               \
 | |
| }
 | |
| 
 | |
| #define vstore1_1(rs1, inc, vs3_n)                              \
 | |
| {                                                               \
 | |
|     register uint32_t rs1_ asm ("x10") = (uint32_t) rs1;        \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VSTORE1(FUNCT_VSTORE_MODE_1, 10, inc, vs3_n))    "\n\t" \
 | |
|         :: [_rs1] "r" (rs1_));                                  \
 | |
| }
 | |
| 
 | |
| #define vstore1_2(rs1, inc, vs3_n)                              \
 | |
| {                                                               \
 | |
|     register uint32_t rs1_ asm ("x10") = (uint32_t) rs1;        \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VSTORE1(FUNCT_VSTORE_MODE_2, 10, inc, vs3_n))    "\n\t" \
 | |
|         :: [_rs1] "r" (rs1_));                                  \
 | |
| }
 | |
| 
 | |
| #define vstore1_3(rs1, inc, vs3_n)                              \
 | |
| {                                                               \
 | |
|     register uint32_t rs1_ asm ("x10") = (uint32_t) rs1;        \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VSTORE1(FUNCT_VSTORE_MODE_3, 10, inc, vs3_n))    "\n\t" \
 | |
|         :: [_rs1] "r" (rs1_));                                  \
 | |
| }
 | |
| 
 | |
| #define vstore1_4(rs1, inc, vs3_n)                              \
 | |
| {                                                               \
 | |
|     register uint32_t rs1_ asm ("x10") = (uint32_t) rs1;        \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VSTORE1(FUNCT_VSTORE_MODE_4, 10, inc, vs3_n))    "\n\t" \
 | |
|         :: [_rs1] "r" (rs1_));                                  \
 | |
| }
 | |
| 
 | |
| #define vstore1_5(rs1, inc, vs3_n)                              \
 | |
| {                                                               \
 | |
|     register uint32_t rs1_ asm ("x10") = (uint32_t) rs1;        \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VSTORE1(FUNCT_VSTORE_MODE_5, 10, inc, vs3_n))    "\n\t" \
 | |
|         :: [_rs1] "r" (rs1_));                                  \
 | |
| }
 | |
| 
 | |
| #define vstore1_6(rs1, inc, vs3_n)                              \
 | |
| {                                                               \
 | |
|     register uint32_t rs1_ asm ("x10") = (uint32_t) rs1;        \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VSTORE1(FUNCT_VSTORE_MODE_6, 10, inc, vs3_n))    "\n\t" \
 | |
|         :: [_rs1] "r" (rs1_));                                  \
 | |
| }
 | |
| 
 | |
| #define vstore1_7(rs1, inc, vs3_n)                              \
 | |
| {                                                               \
 | |
|     register uint32_t rs1_ asm ("x10") = (uint32_t) rs1;        \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VSTORE1(FUNCT_VSTORE_MODE_7, 10, inc, vs3_n))    "\n\t" \
 | |
|         :: [_rs1] "r" (rs1_));                                  \
 | |
| }
 | |
| 
 | |
| #define vstore1_8(rs1, inc, vs3_n)                              \
 | |
| {                                                               \
 | |
|     register uint32_t rs1_ asm ("x10") = (uint32_t) rs1;        \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VSTORE1(FUNCT_VSTORE_MODE_8, 10, inc, vs3_n))    "\n\t" \
 | |
|         :: [_rs1] "r" (rs1_));                                  \
 | |
| }
 | |
| 
 | |
| #define vload3_8x1_fpw(vd_n, vp_n, inc)                          \
 | |
| {                                                               \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VLOAD3(FUNCT_VLOAD_MODE_8X1, FUNCT_VLOAD_TYPE_FPW, vd_n, vp_n, inc))); \
 | |
| }
 | |
| 
 | |
| #define vload3_8x1_siw(vd_n, vp_n, inc)                          \
 | |
| {                                                               \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VLOAD3(FUNCT_VLOAD_MODE_8X1, FUNCT_VLOAD_TYPE_SIW, vd_n, vp_n, inc))); \
 | |
| }
 | |
| 
 | |
| #define vload3_8x1_uiw(vd_n, vp_n, inc)                          \
 | |
| {                                                               \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VLOAD3(FUNCT_VLOAD_MODE_8X1, FUNCT_VLOAD_TYPE_UIW, vd_n, vp_n, inc))); \
 | |
| }
 | |
| 
 | |
| #define vload3_8x1_sih(vd_n, vp_n, inc)                          \
 | |
| {                                                               \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VLOAD3(FUNCT_VLOAD_MODE_8X1, FUNCT_VLOAD_TYPE_SIH, vd_n, vp_n, inc))); \
 | |
| }
 | |
| 
 | |
| #define vload3_8x1_uih(vd_n, vp_n, inc)                          \
 | |
| {                                                               \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VLOAD3(FUNCT_VLOAD_MODE_8X1, FUNCT_VLOAD_TYPE_UIH, vd_n, vp_n, inc))); \
 | |
| }
 | |
| 
 | |
| #define vload3_8x1_sib(vd_n, vp_n, inc)                          \
 | |
| {                                                               \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VLOAD3(FUNCT_VLOAD_MODE_8X1, FUNCT_VLOAD_TYPE_SIB, vd_n, vp_n, inc))); \
 | |
| }
 | |
| 
 | |
| #define vload3_8x1_uib(vd_n, vp_n, inc)                          \
 | |
| {                                                               \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VLOAD3(FUNCT_VLOAD_MODE_8X1, FUNCT_VLOAD_TYPE_UIB, vd_n, vp_n, inc))); \
 | |
| }
 | |
| 
 | |
| #define vload3_4x2_fpw(vd_n, vp_n, inc)                          \
 | |
| {                                                               \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VLOAD3(FUNCT_VLOAD_MODE_4X2, FUNCT_VLOAD_TYPE_FPW, vd_n, vp_n, inc))); \
 | |
| }
 | |
| 
 | |
| #define vload3_4x2_siw(vd_n, vp_n, inc)                          \
 | |
| {                                                               \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VLOAD3(FUNCT_VLOAD_MODE_4X2, FUNCT_VLOAD_TYPE_SIW, vd_n, vp_n, inc))); \
 | |
| }
 | |
| 
 | |
| #define vload3_4x2_uiw(vd_n, vp_n, inc)                          \
 | |
| {                                                               \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VLOAD3(FUNCT_VLOAD_MODE_4X2, FUNCT_VLOAD_TYPE_UIW, vd_n, vp_n, inc))); \
 | |
| }
 | |
| 
 | |
| #define vload3_4x2_sih(vd_n, vp_n, inc)                          \
 | |
| {                                                               \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VLOAD3(FUNCT_VLOAD_MODE_4X2, FUNCT_VLOAD_TYPE_SIH, vd_n, vp_n, inc))); \
 | |
| }
 | |
| 
 | |
| #define vload3_4x2_uih(vd_n, vp_n, inc)                          \
 | |
| {                                                               \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VLOAD3(FUNCT_VLOAD_MODE_4X2, FUNCT_VLOAD_TYPE_UIH, vd_n, vp_n, inc))); \
 | |
| }
 | |
| 
 | |
| #define vload3_4x2_sib(vd_n, vp_n, inc)                          \
 | |
| {                                                               \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VLOAD3(FUNCT_VLOAD_MODE_4X2, FUNCT_VLOAD_TYPE_SIB, vd_n, vp_n, inc))); \
 | |
| }
 | |
| 
 | |
| #define vload3_4x2_uib(vd_n, vp_n, inc)                          \
 | |
| {                                                               \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VLOAD3(FUNCT_VLOAD_MODE_4X2, FUNCT_VLOAD_TYPE_UIB, vd_n, vp_n, inc))); \
 | |
| }
 | |
| 
 | |
| #define vload3_4x1_fpw(vd_n, vp_n, inc)                          \
 | |
| {                                                               \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VLOAD3(FUNCT_VLOAD_MODE_4X1, FUNCT_VLOAD_TYPE_FPW, vd_n, vp_n, inc))); \
 | |
| }
 | |
| 
 | |
| #define vload3_4x1_siw(vd_n, vp_n, inc)                          \
 | |
| {                                                               \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VLOAD3(FUNCT_VLOAD_MODE_4X1, FUNCT_VLOAD_TYPE_SIW, vd_n, vp_n, inc))); \
 | |
| }
 | |
| 
 | |
| #define vload3_4x1_uiw(vd_n, vp_n, inc)                         \
 | |
| {                                                               \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VLOAD3(FUNCT_VLOAD_MODE_4X1, FUNCT_VLOAD_TYPE_UIW, vd_n, vp_n, inc))); \
 | |
| }
 | |
| 
 | |
| #define vload3_4x1_sih(vd_n, vp_n, inc)                         \
 | |
| {                                                               \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VLOAD3(FUNCT_VLOAD_MODE_4X1, FUNCT_VLOAD_TYPE_SIH, vd_n, vp_n, inc))); \
 | |
| }
 | |
| 
 | |
| #define vload3_4x1_uih(vd_n, vp_n, inc)                         \
 | |
| {                                                               \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VLOAD3(FUNCT_VLOAD_MODE_4X1, FUNCT_VLOAD_TYPE_UIH, vd_n, vp_n, inc))); \
 | |
| }
 | |
| 
 | |
| #define vload3_4x1_sib(vd_n, vp_n, inc)                         \
 | |
| {                                                               \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VLOAD3(FUNCT_VLOAD_MODE_4X1, FUNCT_VLOAD_TYPE_SIB, vd_n, vp_n, inc))); \
 | |
| }
 | |
| 
 | |
| #define vload3_4x1_uib(vd_n, vp_n, inc)                         \
 | |
| {                                                               \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VLOAD3(FUNCT_VLOAD_MODE_4X1, FUNCT_VLOAD_TYPE_UIB, vd_n, vp_n, inc))); \
 | |
| }
 | |
| 
 | |
| #define vload3_2x4_fpw(vd_n, vp_n, inc)                         \
 | |
| {                                                               \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VLOAD3(FUNCT_VLOAD_MODE_2X4, FUNCT_VLOAD_TYPE_FPW, vd_n, vp_n, inc))); \
 | |
| }
 | |
| 
 | |
| #define vload3_2x4_siw(vd_n, vp_n, inc)                         \
 | |
| {                                                               \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VLOAD3(FUNCT_VLOAD_MODE_2X4, FUNCT_VLOAD_TYPE_SIW, vd_n, vp_n, inc))); \
 | |
| }
 | |
| 
 | |
| #define vload3_2x4_uiw(vd_n, vp_n, inc)                         \
 | |
| {                                                               \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VLOAD3(FUNCT_VLOAD_MODE_2X4, FUNCT_VLOAD_TYPE_UIW, vd_n, vp_n, inc))); \
 | |
| }
 | |
| 
 | |
| #define vload3_2x4_sih(vd_n, vp_n, inc)                         \
 | |
| {                                                               \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VLOAD3(FUNCT_VLOAD_MODE_2X4, FUNCT_VLOAD_TYPE_SIH, vd_n, vp_n, inc))); \
 | |
| }
 | |
| 
 | |
| #define vload3_2x4_uih(vd_n, vp_n, inc)                         \
 | |
| {                                                               \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VLOAD3(FUNCT_VLOAD_MODE_2X4, FUNCT_VLOAD_TYPE_UIH, vd_n, vp_n, inc))); \
 | |
| }
 | |
| 
 | |
| #define vload3_2x4_sib(vd_n, vp_n, inc)                          \
 | |
| {                                                               \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VLOAD3(FUNCT_VLOAD_MODE_2X4, FUNCT_VLOAD_TYPE_SIB, vd_n, vp_n, inc))); \
 | |
| }
 | |
| 
 | |
| #define vload3_2x4_uib(vd_n, vp_n, inc)                         \
 | |
| {                                                               \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VLOAD3(FUNCT_VLOAD_MODE_2X4, FUNCT_VLOAD_TYPE_UIB, vd_n, vp_n, inc))); \
 | |
| }
 | |
| 
 | |
| #define vload3_2x2_fpw(vd_n, vp_n, inc)                          \
 | |
| {                                                               \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VLOAD3(FUNCT_VLOAD_MODE_2X2, FUNCT_VLOAD_TYPE_FPW, vd_n, vp_n, inc))); \
 | |
| }
 | |
| 
 | |
| #define vload3_2x2_siw(vd_n, vp_n, inc)                         \
 | |
| {                                                               \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VLOAD3(FUNCT_VLOAD_MODE_2X2, FUNCT_VLOAD_TYPE_SIW, vd_n, vp_n, inc))); \
 | |
| }
 | |
| 
 | |
| #define vload3_2x2_uiw(vd_n, vp_n, inc)                         \
 | |
| {                                                               \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VLOAD3(FUNCT_VLOAD_MODE_2X2, FUNCT_VLOAD_TYPE_UIW, vd_n, vp_n, inc))); \
 | |
| }
 | |
| 
 | |
| #define vload3_2x2_sih(vd_n, vp_n, inc)                         \
 | |
| {                                                               \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VLOAD3(FUNCT_VLOAD_MODE_2X2, FUNCT_VLOAD_TYPE_SIH, vd_n, vp_n, inc))); \
 | |
| }
 | |
| 
 | |
| #define vload3_2x2_uih(vd_n, vp_n, inc)                         \
 | |
| {                                                               \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VLOAD3(FUNCT_VLOAD_MODE_2X2, FUNCT_VLOAD_TYPE_UIH, vd_n, vp_n, inc))); \
 | |
| }
 | |
| 
 | |
| #define vload3_2x2_sib(vd_n, vp_n, inc)                         \
 | |
| {                                                               \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VLOAD3(FUNCT_VLOAD_MODE_2X2, FUNCT_VLOAD_TYPE_SIB, vd_n, vp_n, inc))); \
 | |
| }
 | |
| 
 | |
| #define vload3_2x2_uib(vd_n, vp_n, inc)                         \
 | |
| {                                                               \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VLOAD3(FUNCT_VLOAD_MODE_2X2, FUNCT_VLOAD_TYPE_UIB, vd_n, vp_n, inc))); \
 | |
| }
 | |
| 
 | |
| #define vload3_2x1_fpw(vd_n, vp_n, inc)                         \
 | |
| {                                                               \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VLOAD3(FUNCT_VLOAD_MODE_2X1, FUNCT_VLOAD_TYPE_FPW, vd_n, vp_n, inc))); \
 | |
| }
 | |
| 
 | |
| #define vload3_2x1_siw(vd_n, vp_n, inc)                         \
 | |
| {                                                               \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VLOAD3(FUNCT_VLOAD_MODE_2X1, FUNCT_VLOAD_TYPE_SIW, vd_n, vp_n, inc))); \
 | |
| }
 | |
| 
 | |
| #define vload3_2x1_uiw(vd_n, vp_n, inc)                         \
 | |
| {                                                               \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VLOAD3(FUNCT_VLOAD_MODE_2X1, FUNCT_VLOAD_TYPE_UIW, vd_n, vp_n, inc))); \
 | |
| }
 | |
| 
 | |
| #define vload3_2x1_sih(vd_n, vp_n, inc)                         \
 | |
| {                                                               \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VLOAD3(FUNCT_VLOAD_MODE_2X1, FUNCT_VLOAD_TYPE_SIH, vd_n, vp_n, inc))); \
 | |
| }
 | |
| 
 | |
| #define vload3_2x1_uih(vd_n, vp_n, inc)                         \
 | |
| {                                                               \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VLOAD3(FUNCT_VLOAD_MODE_2X1, FUNCT_VLOAD_TYPE_UIH, vd_n, vp_n, inc))); \
 | |
| }
 | |
| 
 | |
| #define vload3_2x1_sib(vd_n, vp_n, inc)                         \
 | |
| {                                                               \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VLOAD3(FUNCT_VLOAD_MODE_2X1, FUNCT_VLOAD_TYPE_SIB, vd_n, vp_n, inc))); \
 | |
| }
 | |
| 
 | |
| #define vload3_2x1_uib(vd_n, vp_n, inc)                         \
 | |
| {                                                               \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VLOAD3(FUNCT_VLOAD_MODE_2X1, FUNCT_VLOAD_TYPE_UIB, vd_n, vp_n, inc))); \
 | |
| }
 | |
| 
 | |
| #define vload3_1x1_fpw(vd_n, vp_n, inc)                         \
 | |
| {                                                               \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VLOAD3(FUNCT_VLOAD_MODE_1X1, FUNCT_VLOAD_TYPE_FPW, vd_n, vp_n, inc))); \
 | |
| }
 | |
| 
 | |
| #define vload3_1x1_siw(vd_n, vp_n, inc)                         \
 | |
| {                                                               \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VLOAD3(FUNCT_VLOAD_MODE_1X1, FUNCT_VLOAD_TYPE_SIW, vd_n, vp_n, inc))); \
 | |
| }
 | |
| 
 | |
| #define vload3_1x1_uiw(vd_n, vp_n, inc)                         \
 | |
| {                                                               \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VLOAD3(FUNCT_VLOAD_MODE_1X1, FUNCT_VLOAD_TYPE_UIW, vd_n, vp_n, inc))); \
 | |
| }
 | |
| 
 | |
| #define vload3_1x1_sih(vd_n, vp_n, inc)                         \
 | |
| {                                                               \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VLOAD3(FUNCT_VLOAD_MODE_1X1, FUNCT_VLOAD_TYPE_SIH, vd_n, vp_n, inc))); \
 | |
| }
 | |
| 
 | |
| #define vload3_1x1_uih(vd_n, vp_n, inc)                         \
 | |
| {                                                               \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VLOAD3(FUNCT_VLOAD_MODE_1X1, FUNCT_VLOAD_TYPE_UIH, vd_n, vp_n, inc))); \
 | |
| }
 | |
| 
 | |
| #define vload3_1x1_sib(vd_n, vp_n, inc)                         \
 | |
| {                                                               \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VLOAD3(FUNCT_VLOAD_MODE_1X1, FUNCT_VLOAD_TYPE_SIB, vd_n, vp_n, inc))); \
 | |
| }
 | |
| 
 | |
| #define vload3_1x1_uib(vd_n, vp_n, inc)                         \
 | |
| {                                                               \
 | |
|     asm volatile (                                              \
 | |
|         ".word " STR(VLOAD3(FUNCT_VLOAD_MODE_1X1, FUNCT_VLOAD_TYPE_UIB, vd_n, vp_n, inc))); \
 | |
| }
 |