@@ -739,6 +739,22 @@ class Assembler : public AbstractAssembler {
739739 vstx_op = 0b00111000010001000 ,
740740 xvldx_op = 0b00111000010010000 ,
741741 xvstx_op = 0b00111000010011000 ,
742+ amcas_b_op = 0b00111000010110000 ,
743+ amcas_h_op = 0b00111000010110001 ,
744+ amcas_w_op = 0b00111000010110010 ,
745+ amcas_d_op = 0b00111000010110011 ,
746+ amcas_db_b_op = 0b00111000010110100 ,
747+ amcas_db_h_op = 0b00111000010110101 ,
748+ amcas_db_w_op = 0b00111000010110110 ,
749+ amcas_db_d_op = 0b00111000010110111 ,
750+ amswap_b_op = 0b00111000010111000 ,
751+ amswap_h_op = 0b00111000010111001 ,
752+ amadd_b_op = 0b00111000010111010 ,
753+ amadd_h_op = 0b00111000010111011 ,
754+ amswap_db_b_op = 0b00111000010111100 ,
755+ amswap_db_h_op = 0b00111000010111101 ,
756+ amadd_db_b_op = 0b00111000010111110 ,
757+ amadd_db_h_op = 0b00111000010111111 ,
742758 amswap_w_op = 0b00111000011000000 ,
743759 amswap_d_op = 0b00111000011000001 ,
744760 amadd_w_op = 0b00111000011000010 ,
@@ -2148,8 +2164,16 @@ class Assembler : public AbstractAssembler {
21482164 void fst_s (FloatRegister fd, const Address &dst);
21492165 void fst_d (FloatRegister fd, const Address &dst);
21502166
2167+ void amcas_b (Register rd, Register rk, Register rj) { assert_different_registers (rd, rj); assert_different_registers (rd, rk); emit_int32 (insn_RRR (amcas_b_op, (int )rk->encoding (), (int )rj->encoding (), (int )rd->encoding ())); }
2168+ void amcas_h (Register rd, Register rk, Register rj) { assert_different_registers (rd, rj); assert_different_registers (rd, rk); emit_int32 (insn_RRR (amcas_h_op, (int )rk->encoding (), (int )rj->encoding (), (int )rd->encoding ())); }
2169+ void amcas_w (Register rd, Register rk, Register rj) { assert_different_registers (rd, rj); assert_different_registers (rd, rk); emit_int32 (insn_RRR (amcas_w_op, (int )rk->encoding (), (int )rj->encoding (), (int )rd->encoding ())); }
2170+ void amcas_d (Register rd, Register rk, Register rj) { assert_different_registers (rd, rj); assert_different_registers (rd, rk); emit_int32 (insn_RRR (amcas_d_op, (int )rk->encoding (), (int )rj->encoding (), (int )rd->encoding ())); }
2171+ void amswap_b (Register rd, Register rk, Register rj) { assert_different_registers (rd, rj); assert_different_registers (rd, rk); emit_int32 (insn_RRR (amswap_b_op, (int )rk->encoding (), (int )rj->encoding (), (int )rd->encoding ())); }
2172+ void amswap_h (Register rd, Register rk, Register rj) { assert_different_registers (rd, rj); assert_different_registers (rd, rk); emit_int32 (insn_RRR (amswap_h_op, (int )rk->encoding (), (int )rj->encoding (), (int )rd->encoding ())); }
21512173 void amswap_w (Register rd, Register rk, Register rj) { assert_different_registers (rd, rj); assert_different_registers (rd, rk); emit_int32 (insn_RRR (amswap_w_op, (int )rk->encoding (), (int )rj->encoding (), (int )rd->encoding ())); }
21522174 void amswap_d (Register rd, Register rk, Register rj) { assert_different_registers (rd, rj); assert_different_registers (rd, rk); emit_int32 (insn_RRR (amswap_d_op, (int )rk->encoding (), (int )rj->encoding (), (int )rd->encoding ())); }
2175+ void amadd_b (Register rd, Register rk, Register rj) { assert_different_registers (rd, rj); assert_different_registers (rd, rk); emit_int32 (insn_RRR (amadd_b_op, (int )rk->encoding (), (int )rj->encoding (), (int )rd->encoding ())); }
2176+ void amadd_h (Register rd, Register rk, Register rj) { assert_different_registers (rd, rj); assert_different_registers (rd, rk); emit_int32 (insn_RRR (amadd_h_op, (int )rk->encoding (), (int )rj->encoding (), (int )rd->encoding ())); }
21532177 void amadd_w (Register rd, Register rk, Register rj) { assert_different_registers (rd, rj); assert_different_registers (rd, rk); emit_int32 (insn_RRR (amadd_w_op, (int )rk->encoding (), (int )rj->encoding (), (int )rd->encoding ())); }
21542178 void amadd_d (Register rd, Register rk, Register rj) { assert_different_registers (rd, rj); assert_different_registers (rd, rk); emit_int32 (insn_RRR (amadd_d_op, (int )rk->encoding (), (int )rj->encoding (), (int )rd->encoding ())); }
21552179 void amand_w (Register rd, Register rk, Register rj) { assert_different_registers (rd, rj); assert_different_registers (rd, rk); emit_int32 (insn_RRR (amand_w_op, (int )rk->encoding (), (int )rj->encoding (), (int )rd->encoding ())); }
@@ -2166,8 +2190,16 @@ class Assembler : public AbstractAssembler {
21662190 void ammax_du (Register rd, Register rk, Register rj) { assert_different_registers (rd, rj); assert_different_registers (rd, rk); emit_int32 (insn_RRR (ammax_du_op, (int )rk->encoding (), (int )rj->encoding (), (int )rd->encoding ())); }
21672191 void ammin_wu (Register rd, Register rk, Register rj) { assert_different_registers (rd, rj); assert_different_registers (rd, rk); emit_int32 (insn_RRR (ammin_wu_op, (int )rk->encoding (), (int )rj->encoding (), (int )rd->encoding ())); }
21682192 void ammin_du (Register rd, Register rk, Register rj) { assert_different_registers (rd, rj); assert_different_registers (rd, rk); emit_int32 (insn_RRR (ammin_du_op, (int )rk->encoding (), (int )rj->encoding (), (int )rd->encoding ())); }
2193+ void amcas_db_b (Register rd, Register rk, Register rj) { assert_different_registers (rd, rj); assert_different_registers (rd, rk); emit_int32 (insn_RRR (amcas_db_b_op, (int )rk->encoding (), (int )rj->encoding (), (int )rd->encoding ())); }
2194+ void amcas_db_h (Register rd, Register rk, Register rj) { assert_different_registers (rd, rj); assert_different_registers (rd, rk); emit_int32 (insn_RRR (amcas_db_h_op, (int )rk->encoding (), (int )rj->encoding (), (int )rd->encoding ())); }
2195+ void amcas_db_w (Register rd, Register rk, Register rj) { assert_different_registers (rd, rj); assert_different_registers (rd, rk); emit_int32 (insn_RRR (amcas_db_w_op, (int )rk->encoding (), (int )rj->encoding (), (int )rd->encoding ())); }
2196+ void amcas_db_d (Register rd, Register rk, Register rj) { assert_different_registers (rd, rj); assert_different_registers (rd, rk); emit_int32 (insn_RRR (amcas_db_d_op, (int )rk->encoding (), (int )rj->encoding (), (int )rd->encoding ())); }
2197+ void amswap_db_b (Register rd, Register rk, Register rj) { assert_different_registers (rd, rj); assert_different_registers (rd, rk); emit_int32 (insn_RRR (amswap_db_b_op, (int )rk->encoding (), (int )rj->encoding (), (int )rd->encoding ())); }
2198+ void amswap_db_h (Register rd, Register rk, Register rj) { assert_different_registers (rd, rj); assert_different_registers (rd, rk); emit_int32 (insn_RRR (amswap_db_h_op, (int )rk->encoding (), (int )rj->encoding (), (int )rd->encoding ())); }
21692199 void amswap_db_w (Register rd, Register rk, Register rj) { assert_different_registers (rd, rj); assert_different_registers (rd, rk); emit_int32 (insn_RRR (amswap_db_w_op, (int )rk->encoding (), (int )rj->encoding (), (int )rd->encoding ())); }
21702200 void amswap_db_d (Register rd, Register rk, Register rj) { assert_different_registers (rd, rj); assert_different_registers (rd, rk); emit_int32 (insn_RRR (amswap_db_d_op, (int )rk->encoding (), (int )rj->encoding (), (int )rd->encoding ())); }
2201+ void amadd_db_b (Register rd, Register rk, Register rj) { assert_different_registers (rd, rj); assert_different_registers (rd, rk); emit_int32 (insn_RRR (amadd_db_b_op, (int )rk->encoding (), (int )rj->encoding (), (int )rd->encoding ())); }
2202+ void amadd_db_h (Register rd, Register rk, Register rj) { assert_different_registers (rd, rj); assert_different_registers (rd, rk); emit_int32 (insn_RRR (amadd_db_h_op, (int )rk->encoding (), (int )rj->encoding (), (int )rd->encoding ())); }
21712203 void amadd_db_w (Register rd, Register rk, Register rj) { assert_different_registers (rd, rj); assert_different_registers (rd, rk); emit_int32 (insn_RRR (amadd_db_w_op, (int )rk->encoding (), (int )rj->encoding (), (int )rd->encoding ())); }
21722204 void amadd_db_d (Register rd, Register rk, Register rj) { assert_different_registers (rd, rj); assert_different_registers (rd, rk); emit_int32 (insn_RRR (amadd_db_d_op, (int )rk->encoding (), (int )rj->encoding (), (int )rd->encoding ())); }
21732205 void amand_db_w (Register rd, Register rk, Register rj) { assert_different_registers (rd, rj); assert_different_registers (rd, rk); emit_int32 (insn_RRR (amand_db_w_op, (int )rk->encoding (), (int )rj->encoding (), (int )rd->encoding ())); }
@@ -3169,6 +3201,7 @@ class Assembler : public AbstractAssembler {
31693201#undef ASSERT_LASX
31703202
31713203public:
3204+ enum operand_size { byte, halfword, word, dword };
31723205 // Creation
31733206 Assembler (CodeBuffer* code) : AbstractAssembler(code) {}
31743207
0 commit comments