@@ -954,6 +954,10 @@ class Assembler : public AbstractAssembler {
954954 vshuf_h_op = 0b01110001011110101 ,
955955 vshuf_w_op = 0b01110001011110110 ,
956956 vshuf_d_op = 0b01110001011110111 ,
957+ vslti_b_op = 0b01110010100001100 ,
958+ vslti_h_op = 0b01110010100001101 ,
959+ vslti_w_op = 0b01110010100001110 ,
960+ vslti_d_op = 0b01110010100001111 ,
957961 vslti_bu_op = 0b01110010100010000 ,
958962 vslti_hu_op = 0b01110010100010001 ,
959963 vslti_wu_op = 0b01110010100010010 ,
@@ -1130,6 +1134,10 @@ class Assembler : public AbstractAssembler {
11301134 xvshuf_w_op = 0b01110101011110110 ,
11311135 xvshuf_d_op = 0b01110101011110111 ,
11321136 xvperm_w_op = 0b01110101011111010 ,
1137+ xvslti_b_op = 0b01110110100001100 ,
1138+ xvslti_h_op = 0b01110110100001101 ,
1139+ xvslti_w_op = 0b01110110100001110 ,
1140+ xvslti_d_op = 0b01110110100001111 ,
11331141 xvslti_bu_op = 0b01110110100010000 ,
11341142 xvslti_hu_op = 0b01110110100010001 ,
11351143 xvslti_wu_op = 0b01110110100010010 ,
@@ -1221,6 +1229,14 @@ class Assembler : public AbstractAssembler {
12211229 unknow_ops14 = 0b11111111111111
12221230 };
12231231
1232+ // 13-bit opcode, highest 13 bits: bits[31...19]
1233+ enum ops13 {
1234+ vldrepl_d_op = 0b0011000000010 ,
1235+ xvldrepl_d_op = 0b0011001000010 ,
1236+
1237+ unknow_ops13 = 0b1111111111111
1238+ };
1239+
12241240 // 12-bit opcode, highest 12 bits: bits[31...20]
12251241 enum ops12 {
12261242 fmadd_s_op = 0b000010000001 ,
@@ -1258,10 +1274,20 @@ class Assembler : public AbstractAssembler {
12581274 xvbitsel_v_op = 0b000011010010 ,
12591275 vshuf_b_op = 0b000011010101 ,
12601276 xvshuf_b_op = 0b000011010110 ,
1277+ vldrepl_w_op = 0b001100000010 ,
1278+ xvldrepl_w_op = 0b001100100010 ,
12611279
12621280 unknow_ops12 = 0b111111111111
12631281 };
12641282
1283+ // 11-bit opcode, highest 11 bits: bits[31...21]
1284+ enum ops11 {
1285+ vldrepl_h_op = 0b00110000010 ,
1286+ xvldrepl_h_op = 0b00110010010 ,
1287+
1288+ unknow_ops11 = 0b11111111111
1289+ };
1290+
12651291 // 10-bit opcode, highest 10 bits: bits[31...22]
12661292 enum ops10 {
12671293 bstr_w_op = 0b0000000001 ,
@@ -1297,6 +1323,8 @@ class Assembler : public AbstractAssembler {
12971323 xvst_op = 0b0010110011 ,
12981324 ldl_w_op = 0b0010111000 ,
12991325 ldr_w_op = 0b0010111001 ,
1326+ vldrepl_b_op = 0b0011000010 ,
1327+ xvldrepl_b_op = 0b0011001010 ,
13001328
13011329 unknow_ops10 = 0b1111111111
13021330 };
@@ -1475,10 +1503,25 @@ class Assembler : public AbstractAssembler {
14751503 // | opcode | I8 | rj | rd |
14761504 static inline int insn_I8RR (int op, int imm8, int rj, int rd) { /* assert(is_simm(imm8, 8), "not a signed 8-bit int");*/ return (op<<18 ) | (low (imm8, 8 )<<10 ) | (rj<<5 ) | rd; }
14771505
1506+ // 2RI9-type
1507+ // 31 19 18 10 9 5 4 0
1508+ // | opcode | I9 | rj | vd |
1509+ static inline int insn_I9RR (int op, int imm9, int rj, int vd) { return (op<<19 ) | (low (imm9, 9 )<<10 ) | (rj<<5 ) | vd; }
1510+
1511+ // 2RI10-type
1512+ // 31 20 19 10 9 5 4 0
1513+ // | opcode | I10 | rj | vd |
1514+ static inline int insn_I10RR (int op, int imm10, int rj, int vd) { return (op<<20 ) | (low (imm10, 10 )<<10 ) | (rj<<5 ) | vd; }
1515+
1516+ // 2RI11-type
1517+ // 31 21 20 10 9 5 4 0
1518+ // | opcode | I11 | rj | vd |
1519+ static inline int insn_I11RR (int op, int imm11, int rj, int vd) { return (op<<21 ) | (low (imm11, 11 )<<10 ) | (rj<<5 ) | vd; }
1520+
14781521 // 2RI12-type
14791522 // 31 22 21 10 9 5 4 0
14801523 // | opcode | I12 | rj | rd |
1481- static inline int insn_I12RR (int op, int imm12, int rj, int rd) { /* assert(is_simm(imm12, 12), "not a signed 12-bit int"); */ return (op<<22 ) | (low (imm12, 12 )<<10 ) | (rj<<5 ) | rd; }
1524+ static inline int insn_I12RR (int op, int imm12, int rj, int rd) { return (op<<22 ) | (low (imm12, 12 )<<10 ) | (rj<<5 ) | rd; }
14821525
14831526 // 2RI14-type
14841527 // 31 24 23 10 9 5 4 0
@@ -2866,6 +2909,15 @@ class Assembler : public AbstractAssembler {
28662909 void xvslt_wu (FloatRegister xd, FloatRegister xj, FloatRegister xk) { ASSERT_LASX emit_int32 (insn_RRR (xvslt_wu_op, (int )xk->encoding (), (int )xj->encoding (), (int )xd->encoding ())); }
28672910 void xvslt_du (FloatRegister xd, FloatRegister xj, FloatRegister xk) { ASSERT_LASX emit_int32 (insn_RRR (xvslt_du_op, (int )xk->encoding (), (int )xj->encoding (), (int )xd->encoding ())); }
28682911
2912+ void vslti_b (FloatRegister vd, FloatRegister vj, int si5) { ASSERT_LSX assert (is_simm (si5, 5 ), " not a signed 5-bit int" ); emit_int32 (insn_I5RR ( vslti_b_op, si5, (int )vj->encoding (), (int )vd->encoding ())); }
2913+ void vslti_h (FloatRegister vd, FloatRegister vj, int si5) { ASSERT_LSX assert (is_simm (si5, 5 ), " not a signed 5-bit int" ); emit_int32 (insn_I5RR ( vslti_h_op, si5, (int )vj->encoding (), (int )vd->encoding ())); }
2914+ void vslti_w (FloatRegister vd, FloatRegister vj, int si5) { ASSERT_LSX assert (is_simm (si5, 5 ), " not a signed 5-bit int" ); emit_int32 (insn_I5RR ( vslti_w_op, si5, (int )vj->encoding (), (int )vd->encoding ())); }
2915+ void vslti_d (FloatRegister vd, FloatRegister vj, int si5) { ASSERT_LSX assert (is_simm (si5, 5 ), " not a signed 5-bit int" ); emit_int32 (insn_I5RR ( vslti_d_op, si5, (int )vj->encoding (), (int )vd->encoding ())); }
2916+ void xvslti_b (FloatRegister xd, FloatRegister xj, int si5) { ASSERT_LASX assert (is_simm (si5, 5 ), " not a signed 5-bit int" ); emit_int32 (insn_I5RR (xvslti_b_op, si5, (int )xj->encoding (), (int )xd->encoding ())); }
2917+ void xvslti_h (FloatRegister xd, FloatRegister xj, int si5) { ASSERT_LASX assert (is_simm (si5, 5 ), " not a signed 5-bit int" ); emit_int32 (insn_I5RR (xvslti_h_op, si5, (int )xj->encoding (), (int )xd->encoding ())); }
2918+ void xvslti_w (FloatRegister xd, FloatRegister xj, int si5) { ASSERT_LASX assert (is_simm (si5, 5 ), " not a signed 5-bit int" ); emit_int32 (insn_I5RR (xvslti_w_op, si5, (int )xj->encoding (), (int )xd->encoding ())); }
2919+ void xvslti_d (FloatRegister xd, FloatRegister xj, int si5) { ASSERT_LASX assert (is_simm (si5, 5 ), " not a signed 5-bit int" ); emit_int32 (insn_I5RR (xvslti_d_op, si5, (int )xj->encoding (), (int )xd->encoding ())); }
2920+
28692921 void vslti_bu (FloatRegister vd, FloatRegister vj, int ui5) { ASSERT_LSX emit_int32 (insn_I5RR ( vslti_bu_op, ui5, (int )vj->encoding (), (int )vd->encoding ())); }
28702922 void vslti_hu (FloatRegister vd, FloatRegister vj, int ui5) { ASSERT_LSX emit_int32 (insn_I5RR ( vslti_hu_op, ui5, (int )vj->encoding (), (int )vd->encoding ())); }
28712923 void vslti_wu (FloatRegister vd, FloatRegister vj, int ui5) { ASSERT_LSX emit_int32 (insn_I5RR ( vslti_wu_op, ui5, (int )vj->encoding (), (int )vd->encoding ())); }
@@ -3104,6 +3156,15 @@ class Assembler : public AbstractAssembler {
31043156 void vstx (FloatRegister vd, Register rj, Register rk) { ASSERT_LSX emit_int32 (insn_RRR ( vstx_op, (int )rk->encoding (), (int )rj->encoding (), (int )vd->encoding ())); }
31053157 void xvstx (FloatRegister xd, Register rj, Register rk) { ASSERT_LASX emit_int32 (insn_RRR (xvstx_op, (int )rk->encoding (), (int )rj->encoding (), (int )xd->encoding ())); }
31063158
3159+ void vldrepl_d (FloatRegister vd, Register rj, int si9) { ASSERT_LSX assert (is_simm (si9, 9 ), " not a signed 9-bit int" ); emit_int32 (insn_I9RR ( vldrepl_d_op, si9, (int )rj->encoding (), (int )vd->encoding ()));}
3160+ void vldrepl_w (FloatRegister vd, Register rj, int si10) { ASSERT_LSX assert (is_simm (si10, 10 ), " not a signed 10-bit int" ); emit_int32 (insn_I10RR ( vldrepl_w_op, si10, (int )rj->encoding (), (int )vd->encoding ()));}
3161+ void vldrepl_h (FloatRegister vd, Register rj, int si11) { ASSERT_LSX assert (is_simm (si11, 11 ), " not a signed 11-bit int" ); emit_int32 (insn_I11RR ( vldrepl_h_op, si11, (int )rj->encoding (), (int )vd->encoding ()));}
3162+ void vldrepl_b (FloatRegister vd, Register rj, int si12) { ASSERT_LSX assert (is_simm (si12, 12 ), " not a signed 12-bit int" ); emit_int32 (insn_I12RR ( vldrepl_b_op, si12, (int )rj->encoding (), (int )vd->encoding ()));}
3163+ void xvldrepl_d (FloatRegister xd, Register rj, int si9) { ASSERT_LASX assert (is_simm (si9, 9 ), " not a signed 9-bit int" ); emit_int32 (insn_I9RR (xvldrepl_d_op, si9, (int )rj->encoding (), (int )xd->encoding ()));}
3164+ void xvldrepl_w (FloatRegister xd, Register rj, int si10) { ASSERT_LASX assert (is_simm (si10, 10 ), " not a signed 10-bit int" ); emit_int32 (insn_I10RR (xvldrepl_w_op, si10, (int )rj->encoding (), (int )xd->encoding ()));}
3165+ void xvldrepl_h (FloatRegister xd, Register rj, int si11) { ASSERT_LASX assert (is_simm (si11, 11 ), " not a signed 11-bit int" ); emit_int32 (insn_I11RR (xvldrepl_h_op, si11, (int )rj->encoding (), (int )xd->encoding ()));}
3166+ void xvldrepl_b (FloatRegister xd, Register rj, int si12) { ASSERT_LASX assert (is_simm (si12, 12 ), " not a signed 12-bit int" ); emit_int32 (insn_I12RR (xvldrepl_b_op, si12, (int )rj->encoding (), (int )xd->encoding ()));}
3167+
31073168#undef ASSERT_LSX
31083169#undef ASSERT_LASX
31093170
0 commit comments