| instruction group KelvinVectorMemoryInst[32] : KelvinV2ArgsType { |
| // Kelvin Memory Vector instructions (Load / Store). |
| |
| //vld |
| vld_b_x : KelvinV2ArgsType : func2 == 0b00'0000, vs2 == 0, sz == 0b00, m == 0b00, func1 == 0b111, form == 0b11; |
| vld_h_x : KelvinV2ArgsType : func2 == 0b00'0000, vs2 == 0, sz == 0b01, m == 0b00, func1 == 0b111, form == 0b11; |
| vld_w_x : KelvinV2ArgsType : func2 == 0b00'0000, vs2 == 0, sz == 0b10, m == 0b00, func1 == 0b111, form == 0b11; |
| vld_b_p_x : KelvinV2ArgsType : func2 == 0b00'0100, vs2 == 0, sz == 0b00, m == 0b00, func1 == 0b111, form == 0b11; |
| vld_h_p_x : KelvinV2ArgsType : func2 == 0b00'0100, vs2 == 0, sz == 0b01, m == 0b00, func1 == 0b111, form == 0b11; |
| vld_w_p_x : KelvinV2ArgsType : func2 == 0b00'0100, vs2 == 0, sz == 0b10, m == 0b00, func1 == 0b111, form == 0b11; |
| vld_b_x_m : KelvinV2ArgsType : func2 == 0b00'0000, vs2 == 0, sz == 0b00, m == 0b01, func1 == 0b111, form == 0b11; |
| vld_h_x_m : KelvinV2ArgsType : func2 == 0b00'0000, vs2 == 0, sz == 0b01, m == 0b01, func1 == 0b111, form == 0b11; |
| vld_w_x_m : KelvinV2ArgsType : func2 == 0b00'0000, vs2 == 0, sz == 0b10, m == 0b01, func1 == 0b111, form == 0b11; |
| vld_b_p_x_m : KelvinV2ArgsType : func2 == 0b00'0100, vs2 == 0, sz == 0b00, m == 0b01, func1 == 0b111, form == 0b11; |
| vld_h_p_x_m : KelvinV2ArgsType : func2 == 0b00'0100, vs2 == 0, sz == 0b01, m == 0b01, func1 == 0b111, form == 0b11; |
| vld_w_p_x_m : KelvinV2ArgsType : func2 == 0b00'0100, vs2 == 0, sz == 0b10, m == 0b01, func1 == 0b111, form == 0b11; |
| vld_b_p_xx : KelvinV2ArgsType : func2 == 0b00'0100, vs2 != 0, sz == 0b00, m == 0b00, func1 == 0b111, form == 0b11; |
| vld_h_p_xx : KelvinV2ArgsType : func2 == 0b00'0100, vs2 != 0, sz == 0b01, m == 0b00, func1 == 0b111, form == 0b11; |
| vld_w_p_xx : KelvinV2ArgsType : func2 == 0b00'0100, vs2 != 0, sz == 0b10, m == 0b00, func1 == 0b111, form == 0b11; |
| vld_b_p_xx_m : KelvinV2ArgsType : func2 == 0b00'0100, vs2 != 0, sz == 0b00, m == 0b01, func1 == 0b111, form == 0b11; |
| vld_h_p_xx_m : KelvinV2ArgsType : func2 == 0b00'0100, vs2 != 0, sz == 0b01, m == 0b01, func1 == 0b111, form == 0b11; |
| vld_w_p_xx_m : KelvinV2ArgsType : func2 == 0b00'0100, vs2 != 0, sz == 0b10, m == 0b01, func1 == 0b111, form == 0b11; |
| vld_b_l_xx : KelvinV2ArgsType : func2 == 0b00'0001, vs2 != 0, sz == 0b00, m == 0b00, func1 == 0b111, form == 0b11; |
| vld_h_l_xx : KelvinV2ArgsType : func2 == 0b00'0001, vs2 != 0, sz == 0b01, m == 0b00, func1 == 0b111, form == 0b11; |
| vld_w_l_xx : KelvinV2ArgsType : func2 == 0b00'0001, vs2 != 0, sz == 0b10, m == 0b00, func1 == 0b111, form == 0b11; |
| vld_b_lp_xx : KelvinV2ArgsType : func2 == 0b00'0101, vs2 != 0, sz == 0b00, m == 0b00, func1 == 0b111, form == 0b11; |
| vld_h_lp_xx : KelvinV2ArgsType : func2 == 0b00'0101, vs2 != 0, sz == 0b01, m == 0b00, func1 == 0b111, form == 0b11; |
| vld_w_lp_xx : KelvinV2ArgsType : func2 == 0b00'0101, vs2 != 0, sz == 0b10, m == 0b00, func1 == 0b111, form == 0b11; |
| vld_b_l_xx_m : KelvinV2ArgsType : func2 == 0b00'0001, vs2 != 0, sz == 0b00, m == 0b01, func1 == 0b111, form == 0b11; |
| vld_h_l_xx_m : KelvinV2ArgsType : func2 == 0b00'0001, vs2 != 0, sz == 0b01, m == 0b01, func1 == 0b111, form == 0b11; |
| vld_w_l_xx_m : KelvinV2ArgsType : func2 == 0b00'0001, vs2 != 0, sz == 0b10, m == 0b01, func1 == 0b111, form == 0b11; |
| vld_b_lp_xx_m : KelvinV2ArgsType : func2 == 0b00'0101, vs2 != 0, sz == 0b00, m == 0b01, func1 == 0b111, form == 0b11; |
| vld_h_lp_xx_m : KelvinV2ArgsType : func2 == 0b00'0101, vs2 != 0, sz == 0b01, m == 0b01, func1 == 0b111, form == 0b11; |
| vld_w_lp_xx_m : KelvinV2ArgsType : func2 == 0b00'0101, vs2 != 0, sz == 0b10, m == 0b01, func1 == 0b111, form == 0b11; |
| vld_b_s_xx : KelvinV2ArgsType : func2 == 0b00'0010, vs2 != 0, sz == 0b00, m == 0b00, func1 == 0b111, form == 0b11; |
| vld_h_s_xx : KelvinV2ArgsType : func2 == 0b00'0010, vs2 != 0, sz == 0b01, m == 0b00, func1 == 0b111, form == 0b11; |
| vld_w_s_xx : KelvinV2ArgsType : func2 == 0b00'0010, vs2 != 0, sz == 0b10, m == 0b00, func1 == 0b111, form == 0b11; |
| vld_b_sp_xx : KelvinV2ArgsType : func2 == 0b00'0110, vs2 != 0, sz == 0b00, m == 0b00, func1 == 0b111, form == 0b11; |
| vld_h_sp_xx : KelvinV2ArgsType : func2 == 0b00'0110, vs2 != 0, sz == 0b01, m == 0b00, func1 == 0b111, form == 0b11; |
| vld_w_sp_xx : KelvinV2ArgsType : func2 == 0b00'0110, vs2 != 0, sz == 0b10, m == 0b00, func1 == 0b111, form == 0b11; |
| vld_b_s_xx_m : KelvinV2ArgsType : func2 == 0b00'0010, vs2 != 0, sz == 0b00, m == 0b01, func1 == 0b111, form == 0b11; |
| vld_h_s_xx_m : KelvinV2ArgsType : func2 == 0b00'0010, vs2 != 0, sz == 0b01, m == 0b01, func1 == 0b111, form == 0b11; |
| vld_w_s_xx_m : KelvinV2ArgsType : func2 == 0b00'0010, vs2 != 0, sz == 0b10, m == 0b01, func1 == 0b111, form == 0b11; |
| vld_b_sp_xx_m : KelvinV2ArgsType : func2 == 0b00'0110, vs2 != 0, sz == 0b00, m == 0b01, func1 == 0b111, form == 0b11; |
| vld_h_sp_xx_m : KelvinV2ArgsType : func2 == 0b00'0110, vs2 != 0, sz == 0b01, m == 0b01, func1 == 0b111, form == 0b11; |
| vld_w_sp_xx_m : KelvinV2ArgsType : func2 == 0b00'0110, vs2 != 0, sz == 0b10, m == 0b01, func1 == 0b111, form == 0b11; |
| vld_b_tp_xx : KelvinV2ArgsType : func2 == 0b00'0111, vs2 != 0, sz == 0b00, m == 0b00, func1 == 0b111, form == 0b11; |
| vld_h_tp_xx : KelvinV2ArgsType : func2 == 0b00'0111, vs2 != 0, sz == 0b01, m == 0b00, func1 == 0b111, form == 0b11; |
| vld_w_tp_xx : KelvinV2ArgsType : func2 == 0b00'0111, vs2 != 0, sz == 0b10, m == 0b00, func1 == 0b111, form == 0b11; |
| vld_b_tp_xx_m : KelvinV2ArgsType : func2 == 0b00'0111, vs2 != 0, sz == 0b00, m == 0b01, func1 == 0b111, form == 0b11; |
| vld_h_tp_xx_m : KelvinV2ArgsType : func2 == 0b00'0111, vs2 != 0, sz == 0b01, m == 0b01, func1 == 0b111, form == 0b11; |
| vld_w_tp_xx_m : KelvinV2ArgsType : func2 == 0b00'0111, vs2 != 0, sz == 0b10, m == 0b01, func1 == 0b111, form == 0b11; |
| |
| // vst, note the `vs2`s below are actually xs2, and `vd` is actually the source vector register. |
| vst_b_x : KelvinV2ArgsType : func2 == 0b00'1000, vs2 == 0, sz == 0b00, m == 0b00, func1 == 0b111, form == 0b11; |
| vst_h_x : KelvinV2ArgsType : func2 == 0b00'1000, vs2 == 0, sz == 0b01, m == 0b00, func1 == 0b111, form == 0b11; |
| vst_w_x : KelvinV2ArgsType : func2 == 0b00'1000, vs2 == 0, sz == 0b10, m == 0b00, func1 == 0b111, form == 0b11; |
| vst_b_p_x : KelvinV2ArgsType : func2 == 0b00'1100, vs2 == 0, sz == 0b00, m == 0b00, func1 == 0b111, form == 0b11; |
| vst_h_p_x : KelvinV2ArgsType : func2 == 0b00'1100, vs2 == 0, sz == 0b01, m == 0b00, func1 == 0b111, form == 0b11; |
| vst_w_p_x : KelvinV2ArgsType : func2 == 0b00'1100, vs2 == 0, sz == 0b10, m == 0b00, func1 == 0b111, form == 0b11; |
| vst_b_x_m : KelvinV2ArgsType : func2 == 0b00'1000, vs2 == 0, sz == 0b00, m == 0b01, func1 == 0b111, form == 0b11; |
| vst_h_x_m : KelvinV2ArgsType : func2 == 0b00'1000, vs2 == 0, sz == 0b01, m == 0b01, func1 == 0b111, form == 0b11; |
| vst_w_x_m : KelvinV2ArgsType : func2 == 0b00'1000, vs2 == 0, sz == 0b10, m == 0b01, func1 == 0b111, form == 0b11; |
| vst_b_p_x_m : KelvinV2ArgsType : func2 == 0b00'1100, vs2 == 0, sz == 0b00, m == 0b01, func1 == 0b111, form == 0b11; |
| vst_h_p_x_m : KelvinV2ArgsType : func2 == 0b00'1100, vs2 == 0, sz == 0b01, m == 0b01, func1 == 0b111, form == 0b11; |
| vst_w_p_x_m : KelvinV2ArgsType : func2 == 0b00'1100, vs2 == 0, sz == 0b10, m == 0b01, func1 == 0b111, form == 0b11; |
| vst_b_p_xx : KelvinV2ArgsType : func2 == 0b00'1100, vs2 != 0, sz == 0b00, m == 0b00, func1 == 0b111, form == 0b11; |
| vst_h_p_xx : KelvinV2ArgsType : func2 == 0b00'1100, vs2 != 0, sz == 0b01, m == 0b00, func1 == 0b111, form == 0b11; |
| vst_w_p_xx : KelvinV2ArgsType : func2 == 0b00'1100, vs2 != 0, sz == 0b10, m == 0b00, func1 == 0b111, form == 0b11; |
| vst_b_p_xx_m : KelvinV2ArgsType : func2 == 0b00'1100, vs2 != 0, sz == 0b00, m == 0b01, func1 == 0b111, form == 0b11; |
| vst_h_p_xx_m : KelvinV2ArgsType : func2 == 0b00'1100, vs2 != 0, sz == 0b01, m == 0b01, func1 == 0b111, form == 0b11; |
| vst_w_p_xx_m : KelvinV2ArgsType : func2 == 0b00'1100, vs2 != 0, sz == 0b10, m == 0b01, func1 == 0b111, form == 0b11; |
| vst_b_l_xx : KelvinV2ArgsType : func2 == 0b00'1001, vs2 != 0, sz == 0b00, m == 0b00, func1 == 0b111, form == 0b11; |
| vst_h_l_xx : KelvinV2ArgsType : func2 == 0b00'1001, vs2 != 0, sz == 0b01, m == 0b00, func1 == 0b111, form == 0b11; |
| vst_w_l_xx : KelvinV2ArgsType : func2 == 0b00'1001, vs2 != 0, sz == 0b10, m == 0b00, func1 == 0b111, form == 0b11; |
| vst_b_lp_xx : KelvinV2ArgsType : func2 == 0b00'1101, vs2 != 0, sz == 0b00, m == 0b00, func1 == 0b111, form == 0b11; |
| vst_h_lp_xx : KelvinV2ArgsType : func2 == 0b00'1101, vs2 != 0, sz == 0b01, m == 0b00, func1 == 0b111, form == 0b11; |
| vst_w_lp_xx : KelvinV2ArgsType : func2 == 0b00'1101, vs2 != 0, sz == 0b10, m == 0b00, func1 == 0b111, form == 0b11; |
| vst_b_l_xx_m : KelvinV2ArgsType : func2 == 0b00'1001, vs2 != 0, sz == 0b00, m == 0b01, func1 == 0b111, form == 0b11; |
| vst_h_l_xx_m : KelvinV2ArgsType : func2 == 0b00'1001, vs2 != 0, sz == 0b01, m == 0b01, func1 == 0b111, form == 0b11; |
| vst_w_l_xx_m : KelvinV2ArgsType : func2 == 0b00'1001, vs2 != 0, sz == 0b10, m == 0b01, func1 == 0b111, form == 0b11; |
| vst_b_lp_xx_m : KelvinV2ArgsType : func2 == 0b00'1101, vs2 != 0, sz == 0b00, m == 0b01, func1 == 0b111, form == 0b11; |
| vst_h_lp_xx_m : KelvinV2ArgsType : func2 == 0b00'1101, vs2 != 0, sz == 0b01, m == 0b01, func1 == 0b111, form == 0b11; |
| vst_w_lp_xx_m : KelvinV2ArgsType : func2 == 0b00'1101, vs2 != 0, sz == 0b10, m == 0b01, func1 == 0b111, form == 0b11; |
| vst_b_s_xx : KelvinV2ArgsType : func2 == 0b00'1010, vs2 != 0, sz == 0b00, m == 0b00, func1 == 0b111, form == 0b11; |
| vst_h_s_xx : KelvinV2ArgsType : func2 == 0b00'1010, vs2 != 0, sz == 0b01, m == 0b00, func1 == 0b111, form == 0b11; |
| vst_w_s_xx : KelvinV2ArgsType : func2 == 0b00'1010, vs2 != 0, sz == 0b10, m == 0b00, func1 == 0b111, form == 0b11; |
| vst_b_sp_xx : KelvinV2ArgsType : func2 == 0b00'1110, vs2 != 0, sz == 0b00, m == 0b00, func1 == 0b111, form == 0b11; |
| vst_h_sp_xx : KelvinV2ArgsType : func2 == 0b00'1110, vs2 != 0, sz == 0b01, m == 0b00, func1 == 0b111, form == 0b11; |
| vst_w_sp_xx : KelvinV2ArgsType : func2 == 0b00'1110, vs2 != 0, sz == 0b10, m == 0b00, func1 == 0b111, form == 0b11; |
| vst_b_s_xx_m : KelvinV2ArgsType : func2 == 0b00'1010, vs2 != 0, sz == 0b00, m == 0b01, func1 == 0b111, form == 0b11; |
| vst_h_s_xx_m : KelvinV2ArgsType : func2 == 0b00'1010, vs2 != 0, sz == 0b01, m == 0b01, func1 == 0b111, form == 0b11; |
| vst_w_s_xx_m : KelvinV2ArgsType : func2 == 0b00'1010, vs2 != 0, sz == 0b10, m == 0b01, func1 == 0b111, form == 0b11; |
| vst_b_sp_xx_m : KelvinV2ArgsType : func2 == 0b00'1110, vs2 != 0, sz == 0b00, m == 0b01, func1 == 0b111, form == 0b11; |
| vst_h_sp_xx_m : KelvinV2ArgsType : func2 == 0b00'1110, vs2 != 0, sz == 0b01, m == 0b01, func1 == 0b111, form == 0b11; |
| vst_w_sp_xx_m : KelvinV2ArgsType : func2 == 0b00'1110, vs2 != 0, sz == 0b10, m == 0b01, func1 == 0b111, form == 0b11; |
| vst_b_tp_xx : KelvinV2ArgsType : func2 == 0b00'1111, vs2 != 0, sz == 0b00, m == 0b00, func1 == 0b111, form == 0b11; |
| vst_h_tp_xx : KelvinV2ArgsType : func2 == 0b00'1111, vs2 != 0, sz == 0b01, m == 0b00, func1 == 0b111, form == 0b11; |
| vst_w_tp_xx : KelvinV2ArgsType : func2 == 0b00'1111, vs2 != 0, sz == 0b10, m == 0b00, func1 == 0b111, form == 0b11; |
| vst_b_tp_xx_m : KelvinV2ArgsType : func2 == 0b00'1111, vs2 != 0, sz == 0b00, m == 0b01, func1 == 0b111, form == 0b11; |
| vst_h_tp_xx_m : KelvinV2ArgsType : func2 == 0b00'1111, vs2 != 0, sz == 0b01, m == 0b01, func1 == 0b111, form == 0b11; |
| vst_w_tp_xx_m : KelvinV2ArgsType : func2 == 0b00'1111, vs2 != 0, sz == 0b10, m == 0b01, func1 == 0b111, form == 0b11; |
| vstq_b_s_xx : KelvinV2ArgsType : func2 == 0b01'1010, vs2 != 0, sz == 0b00, m == 0b00, func1 == 0b111, form == 0b11; |
| vstq_h_s_xx : KelvinV2ArgsType : func2 == 0b01'1010, vs2 != 0, sz == 0b01, m == 0b00, func1 == 0b111, form == 0b11; |
| vstq_w_s_xx : KelvinV2ArgsType : func2 == 0b01'1010, vs2 != 0, sz == 0b10, m == 0b00, func1 == 0b111, form == 0b11; |
| vstq_b_sp_xx : KelvinV2ArgsType : func2 == 0b01'1110, vs2 != 0, sz == 0b00, m == 0b00, func1 == 0b111, form == 0b11; |
| vstq_h_sp_xx : KelvinV2ArgsType : func2 == 0b01'1110, vs2 != 0, sz == 0b01, m == 0b00, func1 == 0b111, form == 0b11; |
| vstq_w_sp_xx : KelvinV2ArgsType : func2 == 0b01'1110, vs2 != 0, sz == 0b10, m == 0b00, func1 == 0b111, form == 0b11; |
| vstq_b_s_xx_m : KelvinV2ArgsType : func2 == 0b01'1010, vs2 != 0, sz == 0b00, m == 0b01, func1 == 0b111, form == 0b11; |
| vstq_h_s_xx_m : KelvinV2ArgsType : func2 == 0b01'1010, vs2 != 0, sz == 0b01, m == 0b01, func1 == 0b111, form == 0b11; |
| vstq_w_s_xx_m : KelvinV2ArgsType : func2 == 0b01'1010, vs2 != 0, sz == 0b10, m == 0b01, func1 == 0b111, form == 0b11; |
| vstq_b_sp_xx_m : KelvinV2ArgsType : func2 == 0b01'1110, vs2 != 0, sz == 0b00, m == 0b01, func1 == 0b111, form == 0b11; |
| vstq_h_sp_xx_m : KelvinV2ArgsType : func2 == 0b01'1110, vs2 != 0, sz == 0b01, m == 0b01, func1 == 0b111, form == 0b11; |
| vstq_w_sp_xx_m : KelvinV2ArgsType : func2 == 0b01'1110, vs2 != 0, sz == 0b10, m == 0b01, func1 == 0b111, form == 0b11; |
| |
| // vdup |
| vdup_b_x : KelvinV2ArgsType : func2 == 0b01'0000, vs1 == 0, sz == 0b00, m == 0b00, func1 == 0b111, form == 0b11; |
| vdup_h_x : KelvinV2ArgsType : func2 == 0b01'0000, vs1 == 0, sz == 0b01, m == 0b00, func1 == 0b111, form == 0b11; |
| vdup_w_x : KelvinV2ArgsType : func2 == 0b01'0000, vs1 == 0, sz == 0b10, m == 0b00, func1 == 0b111, form == 0b11; |
| vdup_b_x_m : KelvinV2ArgsType : func2 == 0b01'0000, vs1 == 0, sz == 0b00, m == 0b01, func1 == 0b111, form == 0b11; |
| vdup_h_x_m : KelvinV2ArgsType : func2 == 0b01'0000, vs1 == 0, sz == 0b01, m == 0b01, func1 == 0b111, form == 0b11; |
| vdup_w_x_m : KelvinV2ArgsType : func2 == 0b01'0000, vs1 == 0, sz == 0b10, m == 0b01, func1 == 0b111, form == 0b11; |
| |
| // vcget |
| vcget : KelvinV2ArgsType : func2 == 0b01'0100, vs2 == 0, vs1 == 0, vd == 48, func1 == 0b111, form == 0b11; |
| |
| // acset / actr / adwinit |
| acset : KelvinV2ArgsType : func2 == 0b01'0000, vs2 == 0, m == 0, vd == 48; |
| actr : KelvinV2ArgsType : func2 == 0b01'0001, vs2 == 0, vs1_low3 == 0, m == 0, vd == 48; |
| adwinit : KelvinV2ArgsType : func2 == 0b01'0010, vs2 == 0, vs1_low2 == 0, sz == 0b00, m == 0, vd_low2 == 0; |
| }; |