Lines Matching refs:dt

104   explicit Dt_L_imm6_1(DataType dt);
108 Dt_L_imm6_1::Dt_L_imm6_1(DataType dt) {
109 switch (dt.GetValue()) {
153 explicit Dt_L_imm6_2(DataType dt);
157 Dt_L_imm6_2::Dt_L_imm6_2(DataType dt) {
158 switch (dt.GetValue()) {
184 explicit Dt_L_imm6_3(DataType dt);
187 Dt_L_imm6_3::Dt_L_imm6_3(DataType dt) {
188 switch (dt.GetValue()) {
208 explicit Dt_L_imm6_4(DataType dt);
211 Dt_L_imm6_4::Dt_L_imm6_4(DataType dt) {
212 switch (dt.GetValue()) {
234 explicit Dt_imm6_1(DataType dt);
238 Dt_imm6_1::Dt_imm6_1(DataType dt) {
239 switch (dt.GetValue()) {
275 explicit Dt_imm6_2(DataType dt);
279 Dt_imm6_2::Dt_imm6_2(DataType dt) {
280 switch (dt.GetValue()) {
302 explicit Dt_imm6_3(DataType dt);
305 Dt_imm6_3::Dt_imm6_3(DataType dt) {
306 switch (dt.GetValue()) {
325 explicit Dt_imm6_4(DataType dt);
329 Dt_imm6_4::Dt_imm6_4(DataType dt) {
330 switch (dt.GetValue()) {
364 explicit Dt_op_U_size_1(DataType dt);
367 Dt_op_U_size_1::Dt_op_U_size_1(DataType dt) {
368 switch (dt.GetValue()) {
400 explicit Dt_op_size_1(DataType dt);
403 Dt_op_size_1::Dt_op_size_1(DataType dt) {
404 switch (dt.GetValue()) {
424 explicit Dt_op_size_2(DataType dt);
427 Dt_op_size_2::Dt_op_size_2(DataType dt) {
428 switch (dt.GetValue()) {
454 explicit Dt_op_size_3(DataType dt);
457 Dt_op_size_3::Dt_op_size_3(DataType dt) {
458 switch (dt.GetValue()) {
484 explicit Dt_U_imm3H_1(DataType dt);
487 Dt_U_imm3H_1::Dt_U_imm3H_1(DataType dt) {
488 switch (dt.GetValue()) {
514 explicit Dt_U_opc1_opc2_1(DataType dt, const DRegisterLane& lane);
517 Dt_U_opc1_opc2_1::Dt_U_opc1_opc2_1(DataType dt, const DRegisterLane& lane) {
518 switch (dt.GetValue()) {
562 explicit Dt_opc1_opc2_1(DataType dt, const DRegisterLane& lane);
565 Dt_opc1_opc2_1::Dt_opc1_opc2_1(DataType dt, const DRegisterLane& lane) {
566 switch (dt.GetValue()) {
598 explicit Dt_imm4_1(DataType dt, const DRegisterLane& lane);
601 Dt_imm4_1::Dt_imm4_1(DataType dt, const DRegisterLane& lane) {
602 switch (dt.GetValue()) {
628 explicit Dt_B_E_1(DataType dt);
631 Dt_B_E_1::Dt_B_E_1(DataType dt) {
632 switch (dt.GetValue()) {
673 explicit Dt_op_2(DataType dt);
676 Dt_op_2::Dt_op_2(DataType dt) {
677 switch (dt.GetValue()) {
691 explicit Dt_op_3(DataType dt);
694 Dt_op_3::Dt_op_3(DataType dt) {
695 switch (dt.GetValue()) {
709 explicit Dt_U_sx_1(DataType dt);
712 Dt_U_sx_1::Dt_U_sx_1(DataType dt) {
713 switch (dt.GetValue()) {
757 explicit Dt_sz_1(DataType dt);
760 Dt_sz_1::Dt_sz_1(DataType dt) {
761 switch (dt.GetValue()) {
772 explicit Dt_F_size_1(DataType dt);
775 Dt_F_size_1::Dt_F_size_1(DataType dt) {
776 switch (dt.GetValue()) {
796 explicit Dt_F_size_2(DataType dt);
799 Dt_F_size_2::Dt_F_size_2(DataType dt) {
800 switch (dt.GetValue()) {
820 explicit Dt_F_size_3(DataType dt);
823 Dt_F_size_3::Dt_F_size_3(DataType dt) {
824 switch (dt.GetValue()) {
841 explicit Dt_F_size_4(DataType dt);
844 Dt_F_size_4::Dt_F_size_4(DataType dt) {
845 switch (dt.GetValue()) {
859 explicit Dt_U_size_1(DataType dt);
862 Dt_U_size_1::Dt_U_size_1(DataType dt) {
863 switch (dt.GetValue()) {
889 explicit Dt_U_size_2(DataType dt);
892 Dt_U_size_2::Dt_U_size_2(DataType dt) {
893 switch (dt.GetValue()) {
913 explicit Dt_U_size_3(DataType dt);
916 Dt_U_size_3::Dt_U_size_3(DataType dt) {
917 switch (dt.GetValue()) {
949 explicit Dt_size_1(DataType dt);
952 Dt_size_1::Dt_size_1(DataType dt) {
953 switch (dt.GetValue()) {
964 explicit Dt_size_2(DataType dt);
967 Dt_size_2::Dt_size_2(DataType dt) {
968 switch (dt.GetValue()) {
988 explicit Dt_size_3(DataType dt);
991 Dt_size_3::Dt_size_3(DataType dt) {
992 switch (dt.GetValue()) {
1009 explicit Dt_size_4(DataType dt);
1012 Dt_size_4::Dt_size_4(DataType dt) {
1013 switch (dt.GetValue()) {
1030 explicit Dt_size_5(DataType dt);
1033 Dt_size_5::Dt_size_5(DataType dt) {
1034 switch (dt.GetValue()) {
1051 explicit Dt_size_6(DataType dt);
1054 Dt_size_6::Dt_size_6(DataType dt) {
1055 switch (dt.GetValue()) {
1075 explicit Dt_size_7(DataType dt);
1078 Dt_size_7::Dt_size_7(DataType dt) {
1079 switch (dt.GetValue()) {
1096 Dt_size_8(DataType dt, Alignment align);
1099 Dt_size_8::Dt_size_8(DataType dt, Alignment align) {
1100 switch (dt.GetValue()) {
1123 explicit Dt_size_9(DataType dt);
1127 Dt_size_9::Dt_size_9(DataType dt) {
1128 switch (dt.GetValue()) {
1150 explicit Dt_size_10(DataType dt);
1153 Dt_size_10::Dt_size_10(DataType dt) {
1154 switch (dt.GetValue()) {
1179 explicit Dt_size_11(DataType dt);
1183 Dt_size_11::Dt_size_11(DataType dt) {
1184 switch (dt.GetValue()) {
1212 explicit Dt_size_12(DataType dt);
1216 Dt_size_12::Dt_size_12(DataType dt) {
1217 switch (dt.GetValue()) {
1251 explicit Dt_size_13(DataType dt);
1254 Dt_size_13::Dt_size_13(DataType dt) {
1255 switch (dt.GetValue()) {
1269 explicit Dt_size_14(DataType dt);
1272 Dt_size_14::Dt_size_14(DataType dt) {
1273 switch (dt.GetValue()) {
1290 explicit Dt_size_15(DataType dt);
1293 Dt_size_15::Dt_size_15(DataType dt) {
1294 switch (dt.GetValue()) {
1308 explicit Dt_size_16(DataType dt);
1311 Dt_size_16::Dt_size_16(DataType dt) {
1312 switch (dt.GetValue()) {
1323 explicit Dt_size_17(DataType dt);
1326 Dt_size_17::Dt_size_17(DataType dt) {
1327 switch (dt.GetValue()) {
1344 Index_1(const NeonRegisterList& nreglist, DataType dt);
1347 Index_1::Index_1(const NeonRegisterList& nreglist, DataType dt) {
1348 switch (dt.GetValue()) {
1385 DataType dt);
1390 DataType dt) {
1391 switch (dt.GetValue()) {
1447 DataType dt);
1452 DataType dt) {
1453 switch (dt.GetValue()) {
1514 DataType dt);
1519 DataType dt) {
1520 switch (dt.GetValue()) {
1581 Align_a_1(Alignment align, DataType dt);
1584 Align_a_1::Align_a_1(Alignment align, DataType dt) {
1587 if (dt.Is(Untyped16)) SetEncodingValue(0x1);
1590 if (dt.Is(Untyped32)) SetEncodingValue(0x1);
1602 Align_a_2(Alignment align, DataType dt);
1605 Align_a_2::Align_a_2(Alignment align, DataType dt) {
1608 if (dt.Is(Untyped8)) SetEncodingValue(0x1);
1611 if (dt.Is(Untyped16)) SetEncodingValue(0x1);
1614 if (dt.Is(Untyped32)) SetEncodingValue(0x1);
1626 Align_a_3(Alignment align, DataType dt);
1629 Align_a_3::Align_a_3(Alignment align, DataType dt) {
1632 if (dt.Is(Untyped8)) SetEncodingValue(0x1);
1635 if (dt.Is(Untyped16))
1637 else if (dt.Is(Untyped32))
1641 if (dt.Is(Untyped32)) SetEncodingValue(0x1);
13921 Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm) {
13924 Dt_U_size_1 encoded_dt(dt);
13926 // VABA{<c>}{<q>}.<dt> <Dd>, <Dn>, <Dm> ; T1
13937 // VABA{<c>}{<q>}.<dt> <Dd>, <Dn>, <Dm> ; A1
13947 Delegate(kVaba, &Assembler::vaba, cond, dt, rd, rn, rm);
13951 Condition cond, DataType dt, QRegister rd, QRegister rn, QRegister rm) {
13954 Dt_U_size_1 encoded_dt(dt);
13956 // VABA{<c>}{<q>}.<dt> <Qd>, <Qn>, <Qm> ; T1
13967 // VABA{<c>}{<q>}.<dt> <Qd>, <Qn>, <Qm> ; A1
13977 Delegate(kVaba, &Assembler::vaba, cond, dt, rd, rn, rm);
13981 Condition cond, DataType dt, QRegister rd, DRegister rn, DRegister rm) {
13984 Dt_U_size_1 encoded_dt(dt);
13986 // VABAL{<c>}{<q>}.<dt> <Qd>, <Dn>, <Dm> ; T1
13997 // VABAL{<c>}{<q>}.<dt> <Qd>, <Dn>, <Dm> ; A1
14007 Delegate(kVabal, &Assembler::vabal, cond, dt, rd, rn, rm);
14011 Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm) {
14014 Dt_U_size_1 encoded_dt(dt);
14017 if (dt.Is(F32)) {
14025 // VABD{<c>}{<q>}.<dt> {<Dd>}, <Dn>, <Dm> ; T1
14037 if (dt.Is(F32)) {
14044 // VABD{<c>}{<q>}.<dt> {<Dd>}, <Dn>, <Dm> ; A1
14054 Delegate(kVabd, &Assembler::vabd, cond, dt, rd, rn, rm);
14058 Condition cond, DataType dt, QRegister rd, QRegister rn, QRegister rm) {
14061 Dt_U_size_1 encoded_dt(dt);
14064 if (dt.Is(F32)) {
14072 // VABD{<c>}{<q>}.<dt> {<Qd>}, <Qn>, <Qm> ; T1
14084 if (dt.Is(F32)) {
14091 // VABD{<c>}{<q>}.<dt> {<Qd>}, <Qn>, <Qm> ; A1
14101 Delegate(kVabd, &Assembler::vabd, cond, dt, rd, rn, rm);
14105 Condition cond, DataType dt, QRegister rd, DRegister rn, DRegister rm) {
14108 Dt_U_size_1 encoded_dt(dt);
14110 // VABDL{<c>}{<q>}.<dt> <Qd>, <Dn>, <Dm> ; T1
14121 // VABDL{<c>}{<q>}.<dt> <Qd>, <Dn>, <Dm> ; A1
14131 Delegate(kVabdl, &Assembler::vabdl, cond, dt, rd, rn, rm);
14134 void Assembler::vabs(Condition cond, DataType dt, DRegister rd, DRegister rm) {
14137 Dt_F_size_1 encoded_dt(dt);
14139 // VABS{<c>}{<q>}.<dt> <Dd>, <Dm> ; T1
14150 if (dt.Is(F64)) {
14156 // VABS{<c>}{<q>}.<dt> <Dd>, <Dm> ; A1
14166 if (dt.Is(F64) && cond.IsNotNever()) {
14172 Delegate(kVabs, &Assembler::vabs, cond, dt, rd, rm);
14175 void Assembler::vabs(Condition cond, DataType dt, QRegister rd, QRegister rm) {
14178 Dt_F_size_1 encoded_dt(dt);
14180 // VABS{<c>}{<q>}.<dt> <Qd>, <Qm> ; T1
14191 // VABS{<c>}{<q>}.<dt> <Qd>, <Qm> ; A1
14201 Delegate(kVabs, &Assembler::vabs, cond, dt, rd, rm);
14204 void Assembler::vabs(Condition cond, DataType dt, SRegister rd, SRegister rm) {
14209 if (dt.Is(F32)) {
14216 if (dt.Is(F32) && cond.IsNotNever()) {
14222 Delegate(kVabs, &Assembler::vabs, cond, dt, rd, rm);
14226 Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm) {
14231 if (dt.Is(F32)) {
14241 if (dt.Is(F32)) {
14249 Delegate(kVacge, &Assembler::vacge, cond, dt, rd, rn, rm);
14253 Condition cond, DataType dt, QRegister rd, QRegister rn, QRegister rm) {
14258 if (dt.Is(F32)) {
14268 if (dt.Is(F32)) {
14276 Delegate(kVacge, &Assembler::vacge, cond, dt, rd, rn, rm);
14280 Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm) {
14285 if (dt.Is(F32)) {
14295 if (dt.Is(F32)) {
14303 Delegate(kVacgt, &Assembler::vacgt, cond, dt, rd, rn, rm);
14307 Condition cond, DataType dt, QRegister rd, QRegister rn, QRegister rm) {
14312 if (dt.Is(F32)) {
14322 if (dt.Is(F32)) {
14330 Delegate(kVacgt, &Assembler::vacgt, cond, dt, rd, rn, rm);
14334 Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm) {
14339 if (dt.Is(F32)) {
14349 if (dt.Is(F32)) {
14357 Delegate(kVacle, &Assembler::vacle, cond, dt, rd, rn, rm);
14361 Condition cond, DataType dt, QRegister rd, QRegister rn, QRegister rm) {
14366 if (dt.Is(F32)) {
14376 if (dt.Is(F32)) {
14384 Delegate(kVacle, &Assembler::vacle, cond, dt, rd, rn, rm);
14388 Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm) {
14393 if (dt.Is(F32)) {
14403 if (dt.Is(F32)) {
14411 Delegate(kVaclt, &Assembler::vaclt, cond, dt, rd, rn, rm);
14415 Condition cond, DataType dt, QRegister rd, QRegister rn, QRegister rm) {
14420 if (dt.Is(F32)) {
14430 if (dt.Is(F32)) {
14438 Delegate(kVaclt, &Assembler::vaclt, cond, dt, rd, rn, rm);
14442 Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm) {
14445 Dt_size_2 encoded_dt(dt);
14448 if (dt.Is(F32)) {
14457 if (dt.Is(F64)) {
14463 // VADD{<c>}{<q>}.<dt> {<Dd>}, <Dn>, <Dm> ; T1
14474 if (dt.Is(F32)) {
14482 if (dt.Is(F64) && cond.IsNotNever()) {
14487 // VADD{<c>}{<q>}.<dt> {<Dd>}, <Dn>, <Dm> ; A1
14496 Delegate(kVadd, &Assembler::vadd, cond, dt, rd, rn, rm);
14500 Condition cond, DataType dt, QRegister rd, QRegister rn, QRegister rm) {
14503 Dt_size_2 encoded_dt(dt);
14506 if (dt.Is(F32)) {
14514 // VADD{<c>}{<q>}.<dt> {<Qd>}, <Qn>, <Qm> ; T1
14525 if (dt.Is(F32)) {
14532 // VADD{<c>}{<q>}.<dt> {<Qd>}, <Qn>, <Qm> ; A1
14541 Delegate(kVadd, &Assembler::vadd, cond, dt, rd, rn, rm);
14545 Condition cond, DataType dt, SRegister rd, SRegister rn, SRegister rm) {
14550 if (dt.Is(F32)) {
14558 if (dt.Is(F32) && cond.IsNotNever()) {
14564 Delegate(kVadd, &Assembler::vadd, cond, dt, rd, rn, rm);
14568 Condition cond, DataType dt, DRegister rd, QRegister rn, QRegister rm) {
14571 Dt_size_3 encoded_dt(dt);
14573 // VADDHN{<c>}{<q>}.<dt> <Dd>, <Qn>, <Qm> ; T1
14574 if (encoded_dt.IsValid() && (dt.Is(I16) || dt.Is(I32) || dt.Is(I64))) {
14583 // VADDHN{<c>}{<q>}.<dt> <Dd>, <Qn>, <Qm> ; A1
14584 if (encoded_dt.IsValid() && (dt.Is(I16) || dt.Is(I32) || dt.Is(I64))) {
14592 Delegate(kVaddhn, &Assembler::vaddhn, cond, dt, rd, rn, rm);
14596 Condition cond, DataType dt, QRegister rd, DRegister rn, DRegister rm) {
14599 Dt_U_size_1 encoded_dt(dt);
14601 // VADDL{<c>}{<q>}.<dt> <Qd>, <Dn>, <Dm> ; T1
14612 // VADDL{<c>}{<q>}.<dt> <Qd>, <Dn>, <Dm> ; A1
14622 Delegate(kVaddl, &Assembler::vaddl, cond, dt, rd, rn, rm);
14626 Condition cond, DataType dt, QRegister rd, QRegister rn, DRegister rm) {
14629 Dt_U_size_1 encoded_dt(dt);
14631 // VADDW{<c>}{<q>}.<dt> {<Qd>}, <Qn>, <Dm> ; T1
14642 // VADDW{<c>}{<q>}.<dt> {<Qd>}, <Qn>, <Dm> ; A1
14652 Delegate(kVaddw, &Assembler::vaddw, cond, dt, rd, rn, rm);
14656 DataType dt,
14663 ImmediateVand encoded_dt(dt, operand.GetNeonImmediate());
14665 // VAND{<c>}{<q>}.<dt> {<Ddn>}, <Ddn>, #<imm> ; T1
14678 // VAND{<c>}{<q>}.<dt> {<Ddn>}, <Ddn>, #<imm> ; A1
14692 USE(dt);
14694 // VAND{<c>}{<q>}{.<dt>} {<Dd>}, <Dn>, <Dm> ; T1
14702 // VAND{<c>}{<q>}{.<dt>} {<Dd>}, <Dn>, <Dm> ; A1
14710 Delegate(kVand, &Assembler::vand, cond, dt, rd, rn, operand);
14714 DataType dt,
14721 ImmediateVand encoded_dt(dt, operand.GetNeonImmediate());
14723 // VAND{<c>}{<q>}.<dt> {<Qdn>}, <Qdn>, #<imm> ; T1
14736 // VAND{<c>}{<q>}.<dt> {<Qdn>}, <Qdn>, #<imm> ; A1
14750 USE(dt);
14752 // VAND{<c>}{<q>}{.<dt>} {<Qd>}, <Qn>, <Qm> ; T1
14760 // VAND{<c>}{<q>}{.<dt>} {<Qd>}, <Qn>, <Qm> ; A1
14768 Delegate(kVand, &Assembler::vand, cond, dt, rd, rn, operand);
14772 DataType dt,
14779 ImmediateVbic encoded_dt(dt, operand.GetNeonImmediate());
14781 // VBIC{<c>}{<q>}.<dt> {<Ddn>}, <Ddn>, #<imm> ; T1
14794 // VBIC{<c>}{<q>}.<dt> {<Ddn>}, <Ddn>, #<imm> ; A1
14808 USE(dt);
14810 // VBIC{<c>}{<q>}{.<dt>} {<Dd>}, <Dn>, <Dm> ; T1
14818 // VBIC{<c>}{<q>}{.<dt>} {<Dd>}, <Dn>, <Dm> ; A1
14826 Delegate(kVbic, &Assembler::vbic, cond, dt, rd, rn, operand);
14830 DataType dt,
14837 ImmediateVbic encoded_dt(dt, operand.GetNeonImmediate());
14839 // VBIC{<c>}{<q>}.<dt> {<Qdn>}, <Qdn>, #<imm> ; T1
14852 // VBIC{<c>}{<q>}.<dt> {<Qdn>}, <Qdn>, #<imm> ; A1
14866 USE(dt);
14868 // VBIC{<c>}{<q>}{.<dt>} {<Qd>}, <Qn>, <Qm> ; T1
14876 // VBIC{<c>}{<q>}{.<dt>} {<Qd>}, <Qn>, <Qm> ; A1
14884 Delegate(kVbic, &Assembler::vbic, cond, dt, rd, rn, operand);
14888 Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm) {
14891 USE(dt);
14893 // VBIF{<c>}{<q>}{.<dt>} {<Dd>}, <Dn>, <Dm> ; T1
14901 // VBIF{<c>}{<q>}{.<dt>} {<Dd>}, <Dn>, <Dm> ; A1
14908 Delegate(kVbif, &Assembler::vbif, cond, dt, rd, rn, rm);
14912 Condition cond, DataType dt, QRegister rd, QRegister rn, QRegister rm) {
14915 USE(dt);
14917 // VBIF{<c>}{<q>}{.<dt>} {<Qd>}, <Qn>, <Qm> ; T1
14925 // VBIF{<c>}{<q>}{.<dt>} {<Qd>}, <Qn>, <Qm> ; A1
14932 Delegate(kVbif, &Assembler::vbif, cond, dt, rd, rn, rm);
14936 Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm) {
14939 USE(dt);
14941 // VBIT{<c>}{<q>}{.<dt>} {<Dd>}, <Dn>, <Dm> ; T1
14949 // VBIT{<c>}{<q>}{.<dt>} {<Dd>}, <Dn>, <Dm> ; A1
14956 Delegate(kVbit, &Assembler::vbit, cond, dt, rd, rn, rm);
14960 Condition cond, DataType dt, QRegister rd, QRegister rn, QRegister rm) {
14963 USE(dt);
14965 // VBIT{<c>}{<q>}{.<dt>} {<Qd>}, <Qn>, <Qm> ; T1
14973 // VBIT{<c>}{<q>}{.<dt>} {<Qd>}, <Qn>, <Qm> ; A1
14980 Delegate(kVbit, &Assembler::vbit, cond, dt, rd, rn, rm);
14984 Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm) {
14987 USE(dt);
14989 // VBSL{<c>}{<q>}{.<dt>} {<Dd>}, <Dn>, <Dm> ; T1
14997 // VBSL{<c>}{<q>}{.<dt>} {<Dd>}, <Dn>, <Dm> ; A1
15004 Delegate(kVbsl, &Assembler::vbsl, cond, dt, rd, rn, rm);
15008 Condition cond, DataType dt, QRegister rd, QRegister rn, QRegister rm) {
15011 USE(dt);
15013 // VBSL{<c>}{<q>}{.<dt>} {<Qd>}, <Qn>, <Qm> ; T1
15021 // VBSL{<c>}{<q>}{.<dt>} {<Qd>}, <Qn>, <Qm> ; A1
15028 Delegate(kVbsl, &Assembler::vbsl, cond, dt, rd, rn, rm);
15032 DataType dt,
15041 Dt_F_size_2 encoded_dt(dt);
15043 // VCEQ{<c>}{<q>}.<dt> {<Dd>}, <Dm>, #0 ; T1
15055 // VCEQ{<c>}{<q>}.<dt> {<Dd>}, <Dm>, #0 ; A1
15068 Delegate(kVceq, &Assembler::vceq, cond, dt, rd, rm, operand);
15072 DataType dt,
15081 Dt_F_size_2 encoded_dt(dt);
15083 // VCEQ{<c>}{<q>}.<dt> {<Qd>}, <Qm>, #0 ; T1
15095 // VCEQ{<c>}{<q>}.<dt> {<Qd>}, <Qm>, #0 ; A1
15108 Delegate(kVceq, &Assembler::vceq, cond, dt, rd, rm, operand);
15112 Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm) {
15115 Dt_size_4 encoded_dt(dt);
15116 Dt_sz_1 encoded_dt_2(dt);
15118 // VCEQ{<c>}{<q>}.<dt> {<Dd>}, <Dn>, <Dm> ; T1
15127 // VCEQ{<c>}{<q>}.<dt> {<Dd>}, <Dn>, <Dm> ; T2
15137 // VCEQ{<c>}{<q>}.<dt> {<Dd>}, <Dn>, <Dm> ; A1
15145 // VCEQ{<c>}{<q>}.<dt> {<Dd>}, <Dn>, <Dm> ; A2
15154 Delegate(kVceq, &Assembler::vceq, cond, dt, rd, rn, rm);
15158 Condition cond, DataType dt, QRegister rd, QRegister rn, QRegister rm) {
15161 Dt_size_4 encoded_dt(dt);
15162 Dt_sz_1 encoded_dt_2(dt);
15164 // VCEQ{<c>}{<q>}.<dt> {<Qd>}, <Qn>, <Qm> ; T1
15173 // VCEQ{<c>}{<q>}.<dt> {<Qd>}, <Qn>, <Qm> ; T2
15183 // VCEQ{<c>}{<q>}.<dt> {<Qd>}, <Qn>, <Qm> ; A1
15191 // VCEQ{<c>}{<q>}.<dt> {<Qd>}, <Qn>, <Qm> ; A2
15200 Delegate(kVceq, &Assembler::vceq, cond, dt, rd, rn, rm);
15204 DataType dt,
15213 Dt_F_size_1 encoded_dt(dt);
15215 // VCGE{<c>}{<q>}.<dt> {<Dd>}, <Dm>, #0 ; T1
15227 // VCGE{<c>}{<q>}.<dt> {<Dd>}, <Dm>, #0 ; A1
15240 Delegate(kVcge, &Assembler::vcge, cond, dt, rd, rm, operand);
15244 DataType dt,
15253 Dt_F_size_1 encoded_dt(dt);
15255 // VCGE{<c>}{<q>}.<dt> {<Qd>}, <Qm>, #0 ; T1
15267 // VCGE{<c>}{<q>}.<dt> {<Qd>}, <Qm>, #0 ; A1
15280 Delegate(kVcge, &Assembler::vcge, cond, dt, rd, rm, operand);
15284 Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm) {
15287 Dt_U_size_1 encoded_dt(dt);
15289 // VCGE{<c>}{<q>}.<dt> {<Dd>}, <Dn>, <Dm> ; T1
15300 if (dt.Is(F32)) {
15309 // VCGE{<c>}{<q>}.<dt> {<Dd>}, <Dn>, <Dm> ; A1
15319 if (dt.Is(F32)) {
15327 Delegate(kVcge, &Assembler::vcge, cond, dt, rd, rn, rm);
15331 Condition cond, DataType dt, QRegister rd, QRegister rn, QRegister rm) {
15334 Dt_U_size_1 encoded_dt(dt);
15336 // VCGE{<c>}{<q>}.<dt> {<Qd>}, <Qn>, <Qm> ; T1
15347 if (dt.Is(F32)) {
15356 // VCGE{<c>}{<q>}.<dt> {<Qd>}, <Qn>, <Qm> ; A1
15366 if (dt.Is(F32)) {
15374 Delegate(kVcge, &Assembler::vcge, cond, dt, rd, rn, rm);
15378 DataType dt,
15387 Dt_F_size_1 encoded_dt(dt);
15389 // VCGT{<c>}{<q>}.<dt> {<Dd>}, <Dm>, #0 ; T1
15401 // VCGT{<c>}{<q>}.<dt> {<Dd>}, <Dm>, #0 ; A1
15414 Delegate(kVcgt, &Assembler::vcgt, cond, dt, rd, rm, operand);
15418 DataType dt,
15427 Dt_F_size_1 encoded_dt(dt);
15429 // VCGT{<c>}{<q>}.<dt> {<Qd>}, <Qm>, #0 ; T1
15441 // VCGT{<c>}{<q>}.<dt> {<Qd>}, <Qm>, #0 ; A1
15454 Delegate(kVcgt, &Assembler::vcgt, cond, dt, rd, rm, operand);
15458 Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm) {
15461 Dt_U_size_1 encoded_dt(dt);
15463 // VCGT{<c>}{<q>}.<dt> {<Dd>}, <Dn>, <Dm> ; T1
15474 if (dt.Is(F32)) {
15483 // VCGT{<c>}{<q>}.<dt> {<Dd>}, <Dn>, <Dm> ; A1
15493 if (dt.Is(F32)) {
15501 Delegate(kVcgt, &Assembler::vcgt, cond, dt, rd, rn, rm);
15505 Condition cond, DataType dt, QRegister rd, QRegister rn, QRegister rm) {
15508 Dt_U_size_1 encoded_dt(dt);
15510 // VCGT{<c>}{<q>}.<dt> {<Qd>}, <Qn>, <Qm> ; T1
15521 if (dt.Is(F32)) {
15530 // VCGT{<c>}{<q>}.<dt> {<Qd>}, <Qn>, <Qm> ; A1
15540 if (dt.Is(F32)) {
15548 Delegate(kVcgt, &Assembler::vcgt, cond, dt, rd, rn, rm);
15552 DataType dt,
15561 Dt_F_size_1 encoded_dt(dt);
15563 // VCLE{<c>}{<q>}.<dt> {<Dd>}, <Dm>, #0 ; T1
15575 // VCLE{<c>}{<q>}.<dt> {<Dd>}, <Dm>, #0 ; A1
15588 Delegate(kVcle, &Assembler::vcle, cond, dt, rd, rm, operand);
15592 DataType dt,
15601 Dt_F_size_1 encoded_dt(dt);
15603 // VCLE{<c>}{<q>}.<dt> {<Qd>}, <Qm>, #0 ; T1
15615 // VCLE{<c>}{<q>}.<dt> {<Qd>}, <Qm>, #0 ; A1
15628 Delegate(kVcle, &Assembler::vcle, cond, dt, rd, rm, operand);
15632 Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm) {
15635 Dt_U_size_1 encoded_dt(dt);
15637 // VCLE{<c>}{<q>}.<dt> {<Dd>}, <Dn>, <Dm> ; T1
15648 if (dt.Is(F32)) {
15657 // VCLE{<c>}{<q>}.<dt> {<Dd>}, <Dn>, <Dm> ; A1
15667 if (dt.Is(F32)) {
15675 Delegate(kVcle, &Assembler::vcle, cond, dt, rd, rn, rm);
15679 Condition cond, DataType dt, QRegister rd, QRegister rn, QRegister rm) {
15682 Dt_U_size_1 encoded_dt(dt);
15684 // VCLE{<c>}{<q>}.<dt> {<Qd>}, <Qn>, <Qm> ; T1
15695 if (dt.Is(F32)) {
15704 // VCLE{<c>}{<q>}.<dt> {<Qd>}, <Qn>, <Qm> ; A1
15714 if (dt.Is(F32)) {
15722 Delegate(kVcle, &Assembler::vcle, cond, dt, rd, rn, rm);
15725 void Assembler::vcls(Condition cond, DataType dt, DRegister rd, DRegister rm) {
15728 Dt_size_5 encoded_dt(dt);
15730 // VCLS{<c>}{<q>}.<dt> <Dd>, <Dm> ; T1
15740 // VCLS{<c>}{<q>}.<dt> <Dd>, <Dm> ; A1
15749 Delegate(kVcls, &Assembler::vcls, cond, dt, rd, rm);
15752 void Assembler::vcls(Condition cond, DataType dt, QRegister rd, QRegister rm) {
15755 Dt_size_5 encoded_dt(dt);
15757 // VCLS{<c>}{<q>}.<dt> <Qd>, <Qm> ; T1
15767 // VCLS{<c>}{<q>}.<dt> <Qd>, <Qm> ; A1
15776 Delegate(kVcls, &Assembler::vcls, cond, dt, rd, rm);
15780 DataType dt,
15789 Dt_F_size_1 encoded_dt(dt);
15791 // VCLT{<c>}{<q>}.<dt> {<Dd>}, <Dm>, #0 ; T1
15803 // VCLT{<c>}{<q>}.<dt> {<Dd>}, <Dm>, #0 ; A1
15816 Delegate(kVclt, &Assembler::vclt, cond, dt, rd, rm, operand);
15820 DataType dt,
15829 Dt_F_size_1 encoded_dt(dt);
15831 // VCLT{<c>}{<q>}.<dt> {<Qd>}, <Qm>, #0 ; T1
15843 // VCLT{<c>}{<q>}.<dt> {<Qd>}, <Qm>, #0 ; A1
15856 Delegate(kVclt, &Assembler::vclt, cond, dt, rd, rm, operand);
15860 Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm) {
15863 Dt_U_size_1 encoded_dt(dt);
15865 // VCLT{<c>}{<q>}.<dt> {<Dd>}, <Dn>, <Dm> ; T1
15876 if (dt.Is(F32)) {
15885 // VCLT{<c>}{<q>}.<dt> {<Dd>}, <Dn>, <Dm> ; A1
15895 if (dt.Is(F32)) {
15903 Delegate(kVclt, &Assembler::vclt, cond, dt, rd, rn, rm);
15907 Condition cond, DataType dt, QRegister rd, QRegister rn, QRegister rm) {
15910 Dt_U_size_1 encoded_dt(dt);
15912 // VCLT{<c>}{<q>}.<dt> {<Qd>}, <Qn>, <Qm> ; T1
15923 if (dt.Is(F32)) {
15932 // VCLT{<c>}{<q>}.<dt> {<Qd>}, <Qn>, <Qm> ; A1
15942 if (dt.Is(F32)) {
15950 Delegate(kVclt, &Assembler::vclt, cond, dt, rd, rn, rm);
15953 void Assembler::vclz(Condition cond, DataType dt, DRegister rd, DRegister rm) {
15956 Dt_size_4 encoded_dt(dt);
15958 // VCLZ{<c>}{<q>}.<dt> <Dd>, <Dm> ; T1
15968 // VCLZ{<c>}{<q>}.<dt> <Dd>, <Dm> ; A1
15977 Delegate(kVclz, &Assembler::vclz, cond, dt, rd, rm);
15980 void Assembler::vclz(Condition cond, DataType dt, QRegister rd, QRegister rm) {
15983 Dt_size_4 encoded_dt(dt);
15985 // VCLZ{<c>}{<q>}.<dt> <Qd>, <Qm> ; T1
15995 // VCLZ{<c>}{<q>}.<dt> <Qd>, <Qm> ; A1
16004 Delegate(kVclz, &Assembler::vclz, cond, dt, rd, rm);
16008 DataType dt,
16017 if (dt.Is(F32)) {
16024 if (dt.Is(F32) && cond.IsNotNever()) {
16034 if (dt.Is(F32) && (operand.IsFloatZero())) {
16041 if (dt.Is(F32) && (operand.IsFloatZero()) && cond.IsNotNever()) {
16047 Delegate(kVcmp, &Assembler::vcmp, cond, dt, rd, operand);
16051 DataType dt,
16060 if (dt.Is(F64)) {
16067 if (dt.Is(F64) && cond.IsNotNever()) {
16077 if (dt.Is(F64) && (operand.IsFloatZero())) {
16084 if (dt.Is(F64) && (operand.IsFloatZero()) && cond.IsNotNever()) {
16090 Delegate(kVcmp, &Assembler::vcmp, cond, dt, rd, operand);
16094 DataType dt,
16103 if (dt.Is(F32)) {
16110 if (dt.Is(F32) && cond.IsNotNever()) {
16120 if (dt.Is(F32) && (operand.IsFloatZero())) {
16127 if (dt.Is(F32) && (operand.IsFloatZero()) && cond.IsNotNever()) {
16133 Delegate(kVcmpe, &Assembler::vcmpe, cond, dt, rd, operand);
16137 DataType dt,
16146 if (dt.Is(F64)) {
16153 if (dt.Is(F64) && cond.IsNotNever()) {
16163 if (dt.Is(F64) && (operand.IsFloatZero())) {
16170 if (dt.Is(F64) && (operand.IsFloatZero()) && cond.IsNotNever()) {
16176 Delegate(kVcmpe, &Assembler::vcmpe, cond, dt, rd, operand);
16179 void Assembler::vcnt(Condition cond, DataType dt, DRegister rd, DRegister rm) {
16184 if (dt.Is(Untyped8)) {
16193 if (dt.Is(Untyped8)) {
16200 Delegate(kVcnt, &Assembler::vcnt, cond, dt, rd, rm);
16203 void Assembler::vcnt(Condition cond, DataType dt, QRegister rd, QRegister rm) {
16208 if (dt.Is(Untyped8)) {
16217 if (dt.Is(Untyped8)) {
16224 Delegate(kVcnt, &Assembler::vcnt, cond, dt, rd, rm);
16239 // VCVT{<c>}{<q>}.F64.<dt> <Dd>, <Sm> ; T1
16253 // VCVT{<c>}{<q>}.F64.<dt> <Dd>, <Sm> ; A1
16322 // VCVT{<c>}{<q>}.<dt>.<dt> <Dd>, <Dm>, #<fbits> ; T1
16333 // VCVT{<c>}{<q>}.F64.<dt> <Ddm>, <Ddm>, #<fbits> ; T1
16349 // VCVT{<c>}{<q>}.<dt>.F64 <Ddm>, <Ddm>, #<fbits> ; T1
16366 // VCVT{<c>}{<q>}.<dt>.<dt> <Dd>, <Dm>, #<fbits> ; A1
16376 // VCVT{<c>}{<q>}.F64.<dt> <Ddm>, <Ddm>, #<fbits> ; A1
16393 // VCVT{<c>}{<q>}.<dt>.F64 <Ddm>, <Ddm>, #<fbits> ; A1
16424 // VCVT{<c>}{<q>}.<dt>.<dt> <Qd>, <Qm>, #<fbits> ; T1
16436 // VCVT{<c>}{<q>}.<dt>.<dt> <Qd>, <Qm>, #<fbits> ; A1
16461 // VCVT{<c>}{<q>}.F32.<dt> <Sdm>, <Sdm>, #<fbits> ; T1
16477 // VCVT{<c>}{<q>}.<dt>.F32 <Sdm>, <Sdm>, #<fbits> ; T1
16494 // VCVT{<c>}{<q>}.F32.<dt> <Sdm>, <Sdm>, #<fbits> ; A1
16511 // VCVT{<c>}{<q>}.<dt>.F32 <Sdm>, <Sdm>, #<fbits> ; A1
16538 // VCVT{<c>}{<q>}.<dt>.<dt> <Dd>, <Dm> ; T1
16548 // VCVT{<c>}{<q>}.<dt>.<dt> <Dd>, <Dm> ; A1
16566 // VCVT{<c>}{<q>}.<dt>.<dt> <Qd>, <Qm> ; T1
16576 // VCVT{<c>}{<q>}.<dt>.<dt> <Qd>, <Qm> ; A1
16656 // VCVT{<c>}{<q>}.F32.<dt> <Sd>, <Sm> ; T1
16676 // VCVT{<c>}{<q>}.F32.<dt> <Sd>, <Sm> ; A1
16692 // VCVTA{<q>}.<dt>.F32 <Dd>, <Dm> ; T1
16700 // VCVTA{<q>}.<dt>.F32 <Dd>, <Dm> ; A1
16715 // VCVTA{<q>}.<dt>.F32 <Qd>, <Qm> ; T1
16723 // VCVTA{<q>}.<dt>.F32 <Qd>, <Qm> ; A1
16738 // VCVTA{<q>}.<dt>.F32 <Sd>, <Sm> ; T1
16746 // VCVTA{<q>}.<dt>.F32 <Sd>, <Sm> ; A1
16761 // VCVTA{<q>}.<dt>.F64 <Sd>, <Dm> ; T1
16769 // VCVTA{<q>}.<dt>.F64 <Sd>, <Dm> ; A1
16862 // VCVTM{<q>}.<dt>.F32 <Dd>, <Dm> ; T1
16870 // VCVTM{<q>}.<dt>.F32 <Dd>, <Dm> ; A1
16885 // VCVTM{<q>}.<dt>.F32 <Qd>, <Qm> ; T1
16893 // VCVTM{<q>}.<dt>.F32 <Qd>, <Qm> ; A1
16908 // VCVTM{<q>}.<dt>.F32 <Sd>, <Sm> ; T1
16916 // VCVTM{<q>}.<dt>.F32 <Sd>, <Sm> ; A1
16931 // VCVTM{<q>}.<dt>.F64 <Sd>, <Dm> ; T1
16939 // VCVTM{<q>}.<dt>.F64 <Sd>, <Dm> ; A1
16954 // VCVTN{<q>}.<dt>.F32 <Dd>, <Dm> ; T1
16962 // VCVTN{<q>}.<dt>.F32 <Dd>, <Dm> ; A1
16977 // VCVTN{<q>}.<dt>.F32 <Qd>, <Qm> ; T1
16985 // VCVTN{<q>}.<dt>.F32 <Qd>, <Qm> ; A1
17000 // VCVTN{<q>}.<dt>.F32 <Sd>, <Sm> ; T1
17008 // VCVTN{<q>}.<dt>.F32 <Sd>, <Sm> ; A1
17023 // VCVTN{<q>}.<dt>.F64 <Sd>, <Dm> ; T1
17031 // VCVTN{<q>}.<dt>.F64 <Sd>, <Dm> ; A1
17046 // VCVTP{<q>}.<dt>.F32 <Dd>, <Dm> ; T1
17054 // VCVTP{<q>}.<dt>.F32 <Dd>, <Dm> ; A1
17069 // VCVTP{<q>}.<dt>.F32 <Qd>, <Qm> ; T1
17077 // VCVTP{<q>}.<dt>.F32 <Qd>, <Qm> ; A1
17092 // VCVTP{<q>}.<dt>.F32 <Sd>, <Sm> ; T1
17100 // VCVTP{<q>}.<dt>.F32 <Sd>, <Sm> ; A1
17115 // VCVTP{<q>}.<dt>.F64 <Sd>, <Dm> ; T1
17123 // VCVTP{<q>}.<dt>.F64 <Sd>, <Dm> ; A1
17280 Condition cond, DataType dt, SRegister rd, SRegister rn, SRegister rm) {
17285 if (dt.Is(F32)) {
17293 if (dt.Is(F32) && cond.IsNotNever()) {
17299 Delegate(kVdiv, &Assembler::vdiv, cond, dt, rd, rn, rm);
17303 Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm) {
17308 if (dt.Is(F64)) {
17316 if (dt.Is(F64) && cond.IsNotNever()) {
17322 Delegate(kVdiv, &Assembler::vdiv, cond, dt, rd, rn, rm);
17325 void Assembler::vdup(Condition cond, DataType dt, QRegister rd, Register rt) {
17328 Dt_B_E_1 encoded_dt(dt);
17330 // VDUP{<c>}{<q>}.<dt> <Qd>, <Rt> ; T1
17341 // VDUP{<c>}{<q>}.<dt> <Qd>, <Rt> ; A1
17353 Delegate(kVdup, &Assembler::vdup, cond, dt, rd, rt);
17356 void Assembler::vdup(Condition cond, DataType dt, DRegister rd, Register rt) {
17359 Dt_B_E_1 encoded_dt(dt);
17361 // VDUP{<c>}{<q>}.<dt> <Dd>, <Rt> ; T1
17372 // VDUP{<c>}{<q>}.<dt> <Dd>, <Rt> ; A1
17384 Delegate(kVdup, &Assembler::vdup, cond, dt, rd, rt);
17388 DataType dt,
17393 Dt_imm4_1 encoded_dt(dt, rm);
17395 // VDUP{<c>}{<q>}.<dt> <Dd>, <Dm[x]> ; T1
17405 // VDUP{<c>}{<q>}.<dt> <Dd>, <Dm[x]> ; A1
17414 Delegate(kVdup, &Assembler::vdup, cond, dt, rd, rm);
17418 DataType dt,
17423 Dt_imm4_1 encoded_dt(dt, rm);
17425 // VDUP{<c>}{<q>}.<dt> <Qd>, <Dm[x]> ; T1
17435 // VDUP{<c>}{<q>}.<dt> <Qd>, <Dm[x]> ; A1
17444 Delegate(kVdup, &Assembler::vdup, cond, dt, rd, rm);
17448 Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm) {
17451 USE(dt);
17453 // VEOR{<c>}{<q>}{.<dt>} {<Dd>}, <Dn>, <Dm> ; T1
17461 // VEOR{<c>}{<q>}{.<dt>} {<Dd>}, <Dn>, <Dm> ; A1
17468 Delegate(kVeor, &Assembler::veor, cond, dt, rd, rn, rm);
17472 Condition cond, DataType dt, QRegister rd, QRegister rn, QRegister rm) {
17475 USE(dt);
17477 // VEOR{<c>}{<q>}{.<dt>} {<Qd>}, <Qn>, <Qm> ; T1
17485 // VEOR{<c>}{<q>}{.<dt>} {<Qd>}, <Qn>, <Qm> ; A1
17492 Delegate(kVeor, &Assembler::veor, cond, dt, rd, rn, rm);
17496 DataType dt,
17508 if (dt.Is(Untyped8) && (imm <= 7)) {
17516 // VEXT{<c>}{<q>}.<dt> {<Dd>}, <Dn>, <Dm>, #<imm> ; T1
17517 if ((dt.Is(Untyped16) || dt.Is(Untyped32)) &&
17518 (imm <= (128 / dt.GetSize()) - 1) && ((imm % dt.GetSize()) == 0)) {
17520 uint32_t imm4 = imm / dt.GetSize();
17529 if (dt.Is(Untyped8) && (imm <= 7)) {
17536 // VEXT{<c>}{<q>}.<dt> {<Dd>}, <Dn>, <Dm>, #<imm> ; A1
17537 if ((dt.Is(Untyped16) || dt.Is(Untyped32)) &&
17538 (imm <= (128 / dt.GetSize()) - 1) && ((imm % dt.GetSize()) == 0)) {
17540 uint32_t imm4 = imm / dt.GetSize();
17549 Delegate(kVext, &Assembler::vext, cond, dt, rd, rn, rm, operand);
17553 DataType dt,
17565 if (dt.Is(Untyped8) && (imm <= 15)) {
17573 // VEXT{<c>}{<q>}.<dt> {<Qd>}, <Qn>, <Qm>, #<imm> ; T1
17574 if ((dt.Is(Untyped16) || dt.Is(Untyped32) || dt.Is(Untyped64)) &&
17575 (imm <= (64 / dt.GetSize()) - 1) && ((imm % dt.GetSize()) == 0)) {
17577 uint32_t imm4 = imm / dt.GetSize();
17586 if (dt.Is(Untyped8) && (imm <= 15)) {
17593 // VEXT{<c>}{<q>}.<dt> {<Qd>}, <Qn>, <Qm>, #<imm> ; A1
17594 if ((dt.Is(Untyped16) || dt.Is(Untyped32) || dt.Is(Untyped64)) &&
17595 (imm <= (64 / dt.GetSize()) - 1) && ((imm % dt.GetSize()) == 0)) {
17597 uint32_t imm4 = imm / dt.GetSize();
17606 Delegate(kVext, &Assembler::vext, cond, dt, rd, rn, rm, operand);
17610 Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm) {
17615 if (dt.Is(F32)) {
17624 if (dt.Is(F64)) {
17632 if (dt.Is(F32)) {
17640 if (dt.Is(F64) && cond.IsNotNever()) {
17646 Delegate(kVfma, &Assembler::vfma, cond, dt, rd, rn, rm);
17650 Condition cond, DataType dt, QRegister rd, QRegister rn, QRegister rm) {
17655 if (dt.Is(F32)) {
17665 if (dt.Is(F32)) {
17673 Delegate(kVfma, &Assembler::vfma, cond, dt, rd, rn, rm);
17677 Condition cond, DataType dt, SRegister rd, SRegister rn, SRegister rm) {
17682 if (dt.Is(F32)) {
17690 if (dt.Is(F32) && cond.IsNotNever()) {
17696 Delegate(kVfma, &Assembler::vfma, cond, dt, rd, rn, rm);
17700 Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm) {
17705 if (dt.Is(F32)) {
17714 if (dt.Is(F64)) {
17722 if (dt.Is(F32)) {
17730 if (dt.Is(F64) && cond.IsNotNever()) {
17736 Delegate(kVfms, &Assembler::vfms, cond, dt, rd, rn, rm);
17740 Condition cond, DataType dt, QRegister rd, QRegister rn, QRegister rm) {
17745 if (dt.Is(F32)) {
17755 if (dt.Is(F32)) {
17763 Delegate(kVfms, &Assembler::vfms, cond, dt, rd, rn, rm);
17767 Condition cond, DataType dt, SRegister rd, SRegister rn, SRegister rm) {
17772 if (dt.Is(F32)) {
17780 if (dt.Is(F32) && cond.IsNotNever()) {
17786 Delegate(kVfms, &Assembler::vfms, cond, dt, rd, rn, rm);
17790 Condition cond, DataType dt, SRegister rd, SRegister rn, SRegister rm) {
17795 if (dt.Is(F32)) {
17803 if (dt.Is(F32) && cond.IsNotNever()) {
17809 Delegate(kVfnma, &Assembler::vfnma, cond, dt, rd, rn, rm);
17813 Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm) {
17818 if (dt.Is(F64)) {
17826 if (dt.Is(F64) && cond.IsNotNever()) {
17832 Delegate(kVfnma, &Assembler::vfnma, cond, dt, rd, rn, rm);
17836 Condition cond, DataType dt, SRegister rd, SRegister rn, SRegister rm) {
17841 if (dt.Is(F32)) {
17849 if (dt.Is(F32) && cond.IsNotNever()) {
17855 Delegate(kVfnms, &Assembler::vfnms, cond, dt, rd, rn, rm);
17859 Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm) {
17864 if (dt.Is(F64)) {
17872 if (dt.Is(F64) && cond.IsNotNever()) {
17878 Delegate(kVfnms, &Assembler::vfnms, cond, dt, rd, rn, rm);
17882 Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm) {
17885 Dt_U_size_1 encoded_dt(dt);
17887 // VHADD{<c>}{<q>}.<dt> {<Dd>}, <Dn>, <Dm> ; T1
17898 // VHADD{<c>}{<q>}.<dt> {<Dd>}, <Dn>, <Dm> ; A1
17908 Delegate(kVhadd, &Assembler::vhadd, cond, dt, rd, rn, rm);
17912 Condition cond, DataType dt, QRegister rd, QRegister rn, QRegister rm) {
17915 Dt_U_size_1 encoded_dt(dt);
17917 // VHADD{<c>}{<q>}.<dt> {<Qd>}, <Qn>, <Qm> ; T1
17928 // VHADD{<c>}{<q>}.<dt> {<Qd>}, <Qn>, <Qm> ; A1
17938 Delegate(kVhadd, &Assembler::vhadd, cond, dt, rd, rn, rm);
17942 Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm) {
17945 Dt_U_size_1 encoded_dt(dt);
17947 // VHSUB{<c>}{<q>}.<dt> {<Dd>}, <Dn>, <Dm> ; T1
17958 // VHSUB{<c>}{<q>}.<dt> {<Dd>}, <Dn>, <Dm> ; A1
17968 Delegate(kVhsub, &Assembler::vhsub, cond, dt, rd, rn, rm);
17972 Condition cond, DataType dt, QRegister rd, QRegister rn, QRegister rm) {
17975 Dt_U_size_1 encoded_dt(dt);
17977 // VHSUB{<c>}{<q>}.<dt> {<Qd>}, <Qn>, <Qm> ; T1
17988 // VHSUB{<c>}{<q>}.<dt> {<Qd>}, <Qn>, <Qm> ; A1
17998 Delegate(kVhsub, &Assembler::vhsub, cond, dt, rd, rn, rm);
18002 DataType dt,
18010 Dt_size_6 encoded_dt(dt);
18011 Dt_size_7 encoded_dt_2(dt);
18013 Align_a_1 encoded_align_2(align, dt);
18014 Align_index_align_1 encoded_align_3(align, nreglist, dt);
18016 // VLD1{<c>}{<q>}.<dt> <list>, [<Rn>{:<align>}] ; T1
18048 // VLD1{<c>}{<q>}.<dt> <list>, [<Rn>{:<align>}]! ; T1
18080 // VLD1{<c>}{<q>}.<dt> <list>, [<Rn>{:<align>}] ; T1
18096 // VLD1{<c>}{<q>}.<dt> <list>, [<Rn>{:<align>}]! ; T1
18112 // VLD1{<c>}{<q>}.<dt> <list>, [<Rn>{:<align>}] ; T1
18125 // VLD1{<c>}{<q>}.<dt> <list>, [<Rn>{:<align>}]! ; T1
18139 // VLD1{<c>}{<q>}.<dt> <list>, [<Rn>{:<align>}] ; A1
18170 // VLD1{<c>}{<q>}.<dt> <list>, [<Rn>{:<align>}]! ; A1
18201 // VLD1{<c>}{<q>}.<dt> <list>, [<Rn>{:<align>}] ; A1
18216 // VLD1{<c>}{<q>}.<dt> <list>, [<Rn>{:<align>}]! ; A1
18231 // VLD1{<c>}{<q>}.<dt> <list>, [<Rn>{:<align>}] ; A1
18243 // VLD1{<c>}{<q>}.<dt> <list>, [<Rn>{:<align>}]! ; A1
18261 Dt_size_6 encoded_dt(dt);
18262 Dt_size_7 encoded_dt_2(dt);
18264 Align_a_1 encoded_align_2(align, dt);
18265 Align_index_align_1 encoded_align_3(align, nreglist, dt);
18267 // VLD1{<c>}{<q>}.<dt> <list>, [<Rn>{:<align>}], <Rm> ; T1
18298 // VLD1{<c>}{<q>}.<dt> <list>, [<Rn>{:<align>}], <Rm> ; T1
18313 // VLD1{<c>}{<q>}.<dt> <list>, [<Rn>{:<align>}], <Rm> ; T1
18328 // VLD1{<c>}{<q>}.<dt> <list>, [<Rn>{:<align>}], <Rm> ; A1
18358 // VLD1{<c>}{<q>}.<dt> <list>, [<Rn>{:<align>}], <Rm> ; A1
18372 // VLD1{<c>}{<q>}.<dt> <list>, [<Rn>{:<align>}], <Rm> ; A1
18386 Delegate(kVld1, &Assembler::vld1, cond, dt, nreglist, operand);
18390 DataType dt,
18398 Dt_size_7 encoded_dt(dt);
18400 Align_a_2 encoded_align_2(align, dt);
18401 Align_index_align_2 encoded_align_3(align, nreglist, dt);
18403 // VLD2{<c>}{<q>}.<dt> <list>, [<Rn>{:<align>}] ; T1
18430 // VLD2{<c>}{<q>}.<dt> <list>, [<Rn>{:<align>}]! ; T1
18457 // VLD2{<c>}{<q>}.<dt> <list>, [<Rn>{:<align>}] ; T1
18474 // VLD2{<c>}{<q>}.<dt> <list>, [<Rn>{:<align>}]! ; T1
18491 // VLD2{<c>}{<q>}.<dt> <list>, [<Rn>{:<align>}] ; T1
18506 // VLD2{<c>}{<q>}.<dt> <list>, [<Rn>{:<align>}]! ; T1
18522 // VLD2{<c>}{<q>}.<dt> <list>, [<Rn>{:<align>}] ; A1
18548 // VLD2{<c>}{<q>}.<dt> <list>, [<Rn>{:<align>}]! ; A1
18574 // VLD2{<c>}{<q>}.<dt> <list>, [<Rn>{:<align>}] ; A1
18590 // VLD2{<c>}{<q>}.<dt> <list>, [<Rn>{:<align>}]! ; A1
18606 // VLD2{<c>}{<q>}.<dt> <list>, [<Rn>{:<align>}] ; A1
18620 // VLD2{<c>}{<q>}.<dt> <list>, [<Rn>{:<align>}]! ; A1
18640 Dt_size_7 encoded_dt(dt);
18642 Align_a_2 encoded_align_2(align, dt);
18643 Align_index_align_2 encoded_align_3(align, nreglist, dt);
18645 // VLD2{<c>}{<q>}.<dt> <list>, [<Rn>{:<align>}], <Rm> ; T1
18671 // VLD2{<c>}{<q>}.<dt> <list>, [<Rn>{:<align>}], <Rm> ; T1
18687 // VLD2{<c>}{<q>}.<dt> <list>, [<Rn>{:<align>}], <Rm> ; T1
18703 // VLD2{<c>}{<q>}.<dt> <list>, [<Rn>{:<align>}], <Rm> ; A1
18728 // VLD2{<c>}{<q>}.<dt> <list>, [<Rn>{:<align>}], <Rm> ; A1
18743 // VLD2{<c>}{<q>}.<dt> <list>, [<Rn>{:<align>}], <Rm> ; A1
18758 Delegate(kVld2, &Assembler::vld2, cond, dt, nreglist, operand);
18762 DataType dt,
18770 Dt_size_7 encoded_dt(dt);
18773 // VLD3{<c>}{<q>}.<dt> <list>, [<Rn>{:<align>}] ; T1
18790 // VLD3{<c>}{<q>}.<dt> <list>, [<Rn>{:<align>}]! ; T1
18808 // VLD3{<c>}{<q>}.<dt> <list>, [<Rn>{:<align>}] ; A1
18824 // VLD3{<c>}{<q>}.<dt> <list>, [<Rn>{:<align>}]! ; A1
18846 Dt_size_7 encoded_dt(dt);
18849 // VLD3{<c>}{<q>}.<dt> <list>, [<Rn>{:<align>}], <Rm> ; T1
18866 // VLD3{<c>}{<q>}.<dt> <list>, [<Rn>{:<align>}], <Rm> ; A1
18883 Delegate(kVld3, &Assembler::vld3, cond, dt, nreglist, operand);
18887 DataType dt,
18894 Dt_size_7 encoded_dt(dt);
18895 Index_1 encoded_align_1(nreglist, dt);
18897 // VLD3{<c>}{<q>}.<dt> <list>, [<Rn>] ; T1
18912 // VLD3{<c>}{<q>}.<dt> <list>, [<Rn>]! ; T1
18927 // VLD3{<c>}{<q>}.<dt> <list>, [<Rn>] ; T1
18941 // VLD3{<c>}{<q>}.<dt> <list>, [<Rn>]! ; T1
18956 // VLD3{<c>}{<q>}.<dt> <list>, [<Rn>] ; A1
18970 // VLD3{<c>}{<q>}.<dt> <list>, [<Rn>]! ; A1
18984 // VLD3{<c>}{<q>}.<dt> <list>, [<Rn>] ; A1
18997 // VLD3{<c>}{<q>}.<dt> <list>, [<Rn>]! ; A1
19016 Dt_size_7 encoded_dt(dt);
19017 Index_1 encoded_align_1(nreglist, dt);
19019 // VLD3{<c>}{<q>}.<dt> <list>, [<Rn>], #<Rm> ; T1
19035 // VLD3{<c>}{<q>}.<dt> <list>, [<Rn>], #<Rm> ; T1
19052 // VLD3{<c>}{<q>}.<dt> <list>, [<Rn>], #<Rm> ; A1
19067 // VLD3{<c>}{<q>}.<dt> <list>, [<Rn>], #<Rm> ; A1
19083 Delegate(kVld3, &Assembler::vld3, cond, dt, nreglist, operand);
19087 DataType dt,
19095 Dt_size_7 encoded_dt(dt);
19096 Dt_size_8 encoded_dt_2(dt, align);
19098 Align_a_3 encoded_align_2(align, dt);
19099 Align_index_align_3 encoded_align_3(align, nreglist, dt);
19101 // VLD4{<c>}{<q>}.<dt> <list>, [<Rn>{:<align>}] ; T1
19118 // VLD4{<c>}{<q>}.<dt> <list>, [<Rn>{:<align>}]! ; T1
19135 // VLD4{<c>}{<q>}.<dt> <list>, [<Rn>{:<align>}] ; T1
19152 // VLD4{<c>}{<q>}.<dt> <list>, [<Rn>{:<align>}]! ; T1
19169 // VLD4{<c>}{<q>}.<dt> <list>, [<Rn>{:<align>}] ; T1
19184 // VLD4{<c>}{<q>}.<dt> <list>, [<Rn>{:<align>}]! ; T1
19200 // VLD4{<c>}{<q>}.<dt> <list>, [<Rn>{:<align>}] ; A1
19216 // VLD4{<c>}{<q>}.<dt> <list>, [<Rn>{:<align>}]! ; A1
19232 // VLD4{<c>}{<q>}.<dt> <list>, [<Rn>{:<align>}] ; A1
19248 // VLD4{<c>}{<q>}.<dt> <list>, [<Rn>{:<align>}]! ; A1
19264 // VLD4{<c>}{<q>}.<dt> <list>, [<Rn>{:<align>}] ; A1
19278 // VLD4{<c>}{<q>}.<dt> <list>, [<Rn>{:<align>}]! ; A1
19298 Dt_size_7 encoded_dt(dt);
19299 Dt_size_8 encoded_dt_2(dt, align);
19301 Align_a_3 encoded_align_2(align, dt);
19302 Align_index_align_3 encoded_align_3(align, nreglist, dt);
19304 // VLD4{<c>}{<q>}.<dt> <list>, [<Rn>{:<align>}], <Rm> ; T1
19320 // VLD4{<c>}{<q>}.<dt> <list>, [<Rn>{:<align>}], <Rm> ; T1
19336 // VLD4{<c>}{<q>}.<dt> <list>, [<Rn>{:<align>}], <Rm> ; T1
19352 // VLD4{<c>}{<q>}.<dt> <list>, [<Rn>{:<align>}], <Rm> ; A1
19367 // VLD4{<c>}{<q>}.<dt> <list>, [<Rn>{:<align>}], <Rm> ; A1
19382 // VLD4{<c>}{<q>}.<dt> <list>, [<Rn>{:<align>}], <Rm> ; A1
19397 Delegate(kVld4, &Assembler::vld4, cond, dt, nreglist, operand);
19401 DataType dt,
19407 USE(dt);
19433 Delegate(kVldm, &Assembler::vldm, cond, dt, rn, write_back, dreglist);
19437 DataType dt,
19443 USE(dt);
19467 Delegate(kVldm, &Assembler::vldm, cond, dt, rn, write_back, sreglist);
19471 DataType dt,
19477 USE(dt);
19502 Delegate(kVldmdb, &Assembler::vldmdb, cond, dt, rn, write_back, dreglist);
19506 DataType dt,
19512 USE(dt);
19534 Delegate(kVldmdb, &Assembler::vldmdb, cond, dt, rn, write_back, sreglist);
19538 DataType dt,
19544 USE(dt);
19570 Delegate(kVldmia, &Assembler::vldmia, cond, dt, rn, write_back, dreglist);
19574 DataType dt,
19580 USE(dt);
19604 Delegate(kVldmia, &Assembler::vldmia, cond, dt, rn, write_back, sreglist);
19608 DataType dt,
19620 if (dt.IsNoneOr(Untyped64) &&
19649 if (dt.IsNoneOr(Untyped64) &&
19678 Delegate(kVldr, &Assembler::vldr, cond, dt, rd, location);
19682 DataType dt,
19691 if (dt.IsNoneOr(Untyped64)) {
19697 if (dt.IsNoneOr(Untyped64) && cond.IsNotNever()) {
19706 DataType dt,
19716 if (dt.IsNoneOr(Untyped64) && (offset >= -1020) && (offset <= 1020) &&
19725 if (dt.IsNoneOr(Untyped64) && (offset >= -1020) && (offset <= 1020) &&
19737 if (dt.IsNoneOr(Untyped64) && (offset >= -1020) && (offset <= 1020) &&
19747 if (dt.IsNoneOr(Untyped64) && (offset >= -1020) && (offset <= 1020) &&
19758 Delegate(kVldr, &Assembler::vldr, cond, dt, rd, operand);
19762 DataType dt,
19774 if (dt.IsNoneOr(Untyped32) &&
19803 if (dt.IsNoneOr(Untyped32) &&
19832 Delegate(kVldr, &Assembler::vldr, cond, dt, rd, location);
19836 DataType dt,
19845 if (dt.IsNoneOr(Untyped32)) {
19851 if (dt.IsNoneOr(Untyped32) && cond.IsNotNever()) {
19860 DataType dt,
19870 if (dt.IsNoneOr(Untyped32) && (offset >= -1020) && (offset <= 1020) &&
19879 if (dt.IsNoneOr(Untyped32) && (offset >= -1020) && (offset <= 1020) &&
19891 if (dt.IsNoneOr(Untyped32) && (offset >= -1020) && (offset <= 1020) &&
19901 if (dt.IsNoneOr(Untyped32) && (offset >= -1020) && (offset <= 1020) &&
19912 Delegate(kVldr, &Assembler::vldr, cond, dt, rd, operand);
19916 Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm) {
19919 Dt_U_size_1 encoded_dt(dt);
19922 if (dt.Is(F32)) {
19930 // VMAX{<c>}{<q>}.<dt> {<Dd>}, <Dn>, <Dm> ; T1
19942 if (dt.Is(F32)) {
19949 // VMAX{<c>}{<q>}.<dt> {<Dd>}, <Dn>, <Dm> ; A1
19959 Delegate(kVmax, &Assembler::vmax, cond, dt, rd, rn, rm);
19963 Condition cond, DataType dt, QRegister rd, QRegister rn, QRegister rm) {
19966 Dt_U_size_1 encoded_dt(dt);
19969 if (dt.Is(F32)) {
19977 // VMAX{<c>}{<q>}.<dt> {<Qd>}, <Qn>, <Qm> ; T1
19989 if (dt.Is(F32)) {
19996 // VMAX{<c>}{<q>}.<dt> {<Qd>}, <Qn>, <Qm> ; A1
20006 Delegate(kVmax, &Assembler::vmax, cond, dt, rd, rn, rm);
20009 void Assembler::vmaxnm(DataType dt, DRegister rd, DRegister rn, DRegister rm) {
20014 if (OutsideITBlock() && dt.Is(F32)) {
20021 if (OutsideITBlock() && dt.Is(F64)) {
20029 if (dt.Is(F32)) {
20035 if (dt.Is(F64)) {
20041 Delegate(kVmaxnm, &Assembler::vmaxnm, dt, rd, rn, rm);
20044 void Assembler::vmaxnm(DataType dt, QRegister rd, QRegister rn, QRegister rm) {
20049 if (OutsideITBlock() && dt.Is(F32)) {
20057 if (dt.Is(F32)) {
20063 Delegate(kVmaxnm, &Assembler::vmaxnm, dt, rd, rn, rm);
20066 void Assembler::vmaxnm(DataType dt, SRegister rd, SRegister rn, SRegister rm) {
20071 if (OutsideITBlock() && dt.Is(F32)) {
20079 if (dt.Is(F32)) {
20085 Delegate(kVmaxnm, &Assembler::vmaxnm, dt, rd, rn, rm);
20089 Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm) {
20092 Dt_U_size_1 encoded_dt(dt);
20095 if (dt.Is(F32)) {
20103 // VMIN{<c>}{<q>}.<dt> {<Dd>}, <Dn>, <Dm> ; T1
20115 if (dt.Is(F32)) {
20122 // VMIN{<c>}{<q>}.<dt> {<Dd>}, <Dn>, <Dm> ; A1
20132 Delegate(kVmin, &Assembler::vmin, cond, dt, rd, rn, rm);
20136 Condition cond, DataType dt, QRegister rd, QRegister rn, QRegister rm) {
20139 Dt_U_size_1 encoded_dt(dt);
20142 if (dt.Is(F32)) {
20150 // VMIN{<c>}{<q>}.<dt> {<Qd>}, <Qn>, <Qm> ; T1
20162 if (dt.Is(F32)) {
20169 // VMIN{<c>}{<q>}.<dt> {<Qd>}, <Qn>, <Qm> ; A1
20179 Delegate(kVmin, &Assembler::vmin, cond, dt, rd, rn, rm);
20182 void Assembler::vminnm(DataType dt, DRegister rd, DRegister rn, DRegister rm) {
20187 if (OutsideITBlock() && dt.Is(F32)) {
20194 if (OutsideITBlock() && dt.Is(F64)) {
20202 if (dt.Is(F32)) {
20208 if (dt.Is(F64)) {
20214 Delegate(kVminnm, &Assembler::vminnm, dt, rd, rn, rm);
20217 void Assembler::vminnm(DataType dt, QRegister rd, QRegister rn, QRegister rm) {
20222 if (OutsideITBlock() && dt.Is(F32)) {
20230 if (dt.Is(F32)) {
20236 Delegate(kVminnm, &Assembler::vminnm, dt, rd, rn, rm);
20239 void Assembler::vminnm(DataType dt, SRegister rd, SRegister rn, SRegister rm) {
20244 if (OutsideITBlock() && dt.Is(F32)) {
20252 if (dt.Is(F32)) {
20258 Delegate(kVminnm, &Assembler::vminnm, dt, rd, rn, rm);
20262 Condition cond, DataType dt, DRegister rd, DRegister rn, DRegisterLane rm) {
20265 Dt_size_9 encoded_dt(dt);
20269 (((dt.GetSize() == 16) && (rm.GetCode() <= 7) && (rm.GetLane() <= 3)) ||
20270 ((dt.GetSize() == 32) && (rm.GetCode() <= 15) &&
20275 rn.Encode(7, 16) | rm.EncodeX(dt, 5, 0));
20283 (((dt.GetSize() == 16) && (rm.GetCode() <= 7) && (rm.GetLane() <= 3)) ||
20284 ((dt.GetSize() == 32) && (rm.GetCode() <= 15) &&
20289 rn.Encode(7, 16) | rm.EncodeX(dt, 5, 0));
20294 Delegate(kVmla, &Assembler::vmla, cond, dt, rd, rn, rm);
20298 Condition cond, DataType dt, QRegister rd, QRegister rn, DRegisterLane rm) {
20301 Dt_size_9 encoded_dt(dt);
20305 (((dt.GetSize() == 16) && (rm.GetCode() <= 7) && (rm.GetLane() <= 3)) ||
20306 ((dt.GetSize() == 32) && (rm.GetCode() <= 15) &&
20311 rn.Encode(7, 16) | rm.EncodeX(dt, 5, 0));
20319 (((dt.GetSize() == 16) && (rm.GetCode() <= 7) && (rm.GetLane() <= 3)) ||
20320 ((dt.GetSize() == 32) && (rm.GetCode() <= 15) &&
20325 rn.Encode(7, 16) | rm.EncodeX(dt, 5, 0));
20330 Delegate(kVmla, &Assembler::vmla, cond, dt, rd, rn, rm);
20334 Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm) {
20337 Dt_size_10 encoded_dt(dt);
20340 if (dt.Is(F32)) {
20349 if (dt.Is(F64)) {
20366 if (dt.Is(F32)) {
20374 if (dt.Is(F64) && cond.IsNotNever()) {
20388 Delegate(kVmla, &Assembler::vmla, cond, dt, rd, rn, rm);
20392 Condition cond, DataType dt, QRegister rd, QRegister rn, QRegister rm) {
20395 Dt_size_10 encoded_dt(dt);
20398 if (dt.Is(F32)) {
20417 if (dt.Is(F32)) {
20433 Delegate(kVmla, &Assembler::vmla, cond, dt, rd, rn, rm);
20437 Condition cond, DataType dt, SRegister rd, SRegister rn, SRegister rm) {
20442 if (dt.Is(F32)) {
20450 if (dt.Is(F32) && cond.IsNotNever()) {
20456 Delegate(kVmla, &Assembler::vmla, cond, dt, rd, rn, rm);
20460 Condition cond, DataType dt, QRegister rd, DRegister rn, DRegisterLane rm) {
20463 Dt_size_11 encoded_dt(dt);
20467 (((dt.GetSize() == 16) && (rm.GetCode() <= 7) && (rm.GetLane() <= 3)) ||
20468 ((dt.GetSize() == 32) && (rm.GetCode() <= 15) &&
20473 rn.Encode(7, 16) | rm.EncodeX(dt, 5, 0));
20481 (((dt.GetSize() == 16) && (rm.GetCode() <= 7) && (rm.GetLane() <= 3)) ||
20482 ((dt.GetSize() == 32) && (rm.GetCode() <= 15) &&
20487 rn.Encode(7, 16) | rm.EncodeX(dt, 5, 0));
20492 Delegate(kVmlal, &Assembler::vmlal, cond, dt, rd, rn, rm);
20496 Condition cond, DataType dt, QRegister rd, DRegister rn, DRegister rm) {
20499 Dt_size_12 encoded_dt(dt);
20522 Delegate(kVmlal, &Assembler::vmlal, cond, dt, rd, rn, rm);
20526 Condition cond, DataType dt, DRegister rd, DRegister rn, DRegisterLane rm) {
20529 Dt_size_9 encoded_dt(dt);
20533 (((dt.GetSize() == 16) && (rm.GetCode() <= 7) && (rm.GetLane() <= 3)) ||
20534 ((dt.GetSize() == 32) && (rm.GetCode() <= 15) &&
20539 rn.Encode(7, 16) | rm.EncodeX(dt, 5, 0));
20547 (((dt.GetSize() == 16) && (rm.GetCode() <= 7) && (rm.GetLane() <= 3)) ||
20548 ((dt.GetSize() == 32) && (rm.GetCode() <= 15) &&
20553 rn.Encode(7, 16) | rm.EncodeX(dt, 5, 0));
20558 Delegate(kVmls, &Assembler::vmls, cond, dt, rd, rn, rm);
20562 Condition cond, DataType dt, QRegister rd, QRegister rn, DRegisterLane rm) {
20565 Dt_size_9 encoded_dt(dt);
20569 (((dt.GetSize() == 16) && (rm.GetCode() <= 7) && (rm.GetLane() <= 3)) ||
20570 ((dt.GetSize() == 32) && (rm.GetCode() <= 15) &&
20575 rn.Encode(7, 16) | rm.EncodeX(dt, 5, 0));
20583 (((dt.GetSize() == 16) && (rm.GetCode() <= 7) && (rm.GetLane() <= 3)) ||
20584 ((dt.GetSize() == 32) && (rm.GetCode() <= 15) &&
20589 rn.Encode(7, 16) | rm.EncodeX(dt, 5, 0));
20594 Delegate(kVmls, &Assembler::vmls, cond, dt, rd, rn, rm);
20598 Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm) {
20601 Dt_size_10 encoded_dt(dt);
20604 if (dt.Is(F32)) {
20613 if (dt.Is(F64)) {
20630 if (dt.Is(F32)) {
20638 if (dt.Is(F64) && cond.IsNotNever()) {
20652 Delegate(kVmls, &Assembler::vmls, cond, dt, rd, rn, rm);
20656 Condition cond, DataType dt, QRegister rd, QRegister rn, QRegister rm) {
20659 Dt_size_10 encoded_dt(dt);
20662 if (dt.Is(F32)) {
20681 if (dt.Is(F32)) {
20697 Delegate(kVmls, &Assembler::vmls, cond, dt, rd, rn, rm);
20701 Condition cond, DataType dt, SRegister rd, SRegister rn, SRegister rm) {
20706 if (dt.Is(F32)) {
20714 if (dt.Is(F32) && cond.IsNotNever()) {
20720 Delegate(kVmls, &Assembler::vmls, cond, dt, rd, rn, rm);
20724 Condition cond, DataType dt, QRegister rd, DRegister rn, DRegisterLane rm) {
20727 Dt_size_11 encoded_dt(dt);
20731 (((dt.GetSize() == 16) && (rm.GetCode() <= 7) && (rm.GetLane() <= 3)) ||
20732 ((dt.GetSize() == 32) && (rm.GetCode() <= 15) &&
20737 rn.Encode(7, 16) | rm.EncodeX(dt, 5, 0));
20745 (((dt.GetSize() == 16) && (rm.GetCode() <= 7) && (rm.GetLane() <= 3)) ||
20746 ((dt.GetSize() == 32) && (rm.GetCode() <= 15) &&
20751 rn.Encode(7, 16) | rm.EncodeX(dt, 5, 0));
20756 Delegate(kVmlsl, &Assembler::vmlsl, cond, dt, rd, rn, rm);
20760 Condition cond, DataType dt, QRegister rd, DRegister rn, DRegister rm) {
20763 Dt_size_12 encoded_dt(dt);
20786 Delegate(kVmlsl, &Assembler::vmlsl, cond, dt, rd, rn, rm);
20930 DataType dt,
20935 Dt_opc1_opc2_1 encoded_dt(dt, rd);
20956 Delegate(kVmov, &Assembler::vmov, cond, dt, rd, rt);
20960 DataType dt,
20966 ImmediateVmov encoded_dt(dt, operand.GetNeonImmediate());
20968 // VMOV{<c>}{<q>}.<dt> <Dd>, #<imm> ; T1
20982 // VMOV{<c>}{<q>}.<dt> <Dd>, #<imm> ; A1
20999 if (dt.Is(F64) && vfp.IsValid()) {
21008 if (dt.Is(F64) && vfp.IsValid() && cond.IsNotNever()) {
21020 if (dt.Is(F64)) {
21025 // VMOV{<c>}{<q>}{.<dt>} <Dd>, <Dm> ; T1
21026 if (!dt.Is(F64)) {
21036 if (dt.Is(F64) && cond.IsNotNever()) {
21041 // VMOV{<c>}{<q>}{.<dt>} <Dd>, <Dm> ; A1
21042 if (!dt.Is(F64)) {
21051 Delegate(kVmov, &Assembler::vmov, cond, dt, rd, operand);
21055 DataType dt,
21061 ImmediateVmov encoded_dt(dt, operand.GetNeonImmediate());
21063 // VMOV{<c>}{<q>}.<dt> <Qd>, #<imm> ; T1
21077 // VMOV{<c>}{<q>}.<dt> <Qd>, #<imm> ; A1
21093 // VMOV{<c>}{<q>}{.<dt>} <Qd>, <Qm> ; T1
21094 if (!dt.Is(F64)) {
21103 // VMOV{<c>}{<q>}{.<dt>} <Qd>, <Qm> ; A1
21104 if (!dt.Is(F64)) {
21113 Delegate(kVmov, &Assembler::vmov, cond, dt, rd, operand);
21117 DataType dt,
21126 if (dt.Is(F32) && vfp.IsValid()) {
21135 if (dt.Is(F32) && vfp.IsValid() && cond.IsNotNever()) {
21147 if (dt.Is(F32)) {
21154 if (dt.Is(F32) && cond.IsNotNever()) {
21161 Delegate(kVmov, &Assembler::vmov, cond, dt, rd, operand);
21165 DataType dt,
21170 Dt_U_opc1_opc2_1 encoded_dt(dt, rn);
21172 // VMOV{<c>}{<q>}{.<dt>} <Rt>, <Dn[x]> ; T1
21182 // VMOV{<c>}{<q>}{.<dt>} <Rt>, <Dn[x]> ; A1
21193 Delegate(kVmov, &Assembler::vmov, cond, dt, rt, rn);
21196 void Assembler::vmovl(Condition cond, DataType dt, QRegister rd, DRegister rm) {
21199 Dt_U_imm3H_1 encoded_dt(dt);
21201 // VMOVL{<c>}{<q>}.<dt> <Qd>, <Dm> ; T1
21212 // VMOVL{<c>}{<q>}.<dt> <Qd>, <Dm> ; A1
21222 Delegate(kVmovl, &Assembler::vmovl, cond, dt, rd, rm);
21225 void Assembler::vmovn(Condition cond, DataType dt, DRegister rd, QRegister rm) {
21228 Dt_size_3 encoded_dt(dt);
21230 // VMOVN{<c>}{<q>}.<dt> <Dd>, <Qm> ; T1
21240 // VMOVN{<c>}{<q>}.<dt> <Dd>, <Qm> ; A1
21249 Delegate(kVmovn, &Assembler::vmovn, cond, dt, rd, rm);
21296 DataType dt,
21303 Dt_F_size_3 encoded_dt(dt);
21305 // VMUL{<c>}{<q>}.<dt> {<Dd>}, <Dn>, <Dm>[<index>] ; T1
21307 ((dt.Is(I16) && (index <= 3) && (dm.GetCode() <= 7)) ||
21308 (!dt.Is(I16) && (index <= 1) && (dm.GetCode() <= 15)))) {
21311 if (dt.Is(I16)) {
21324 // VMUL{<c>}{<q>}.<dt> {<Dd>}, <Dn>, <Dm>[<index>] ; A1
21326 ((dt.Is(I16) && (index <= 3) && (dm.GetCode() <= 7)) ||
21327 (!dt.Is(I16) && (index <= 1) && (dm.GetCode() <= 15)))) {
21330 if (dt.Is(I16)) {
21342 Delegate(kVmul, &Assembler::vmul, cond, dt, rd, rn, dm, index);
21346 DataType dt,
21353 Dt_F_size_3 encoded_dt(dt);
21355 // VMUL{<c>}{<q>}.<dt> {<Qd>}, <Qn>, <Dm>[<index>] ; T1
21357 ((dt.Is(I16) && (index <= 3) && (dm.GetCode() <= 7)) ||
21358 (!dt.Is(I16) && (index <= 1) && (dm.GetCode() <= 15)))) {
21361 if (dt.Is(I16)) {
21374 // VMUL{<c>}{<q>}.<dt> {<Qd>}, <Qn>, <Dm>[<index>] ; A1
21376 ((dt.Is(I16) && (index <= 3) && (dm.GetCode() <= 7)) ||
21377 (!dt.Is(I16) && (index <= 1) && (dm.GetCode() <= 15)))) {
21380 if (dt.Is(I16)) {
21392 Delegate(kVmul, &Assembler::vmul, cond, dt, rd, rn, dm, index);
21396 Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm) {
21399 Dt_op_size_1 encoded_dt(dt);
21402 if (dt.Is(F32)) {
21411 if (dt.Is(F64)) {
21417 // VMUL{<c>}{<q>}.<dt> {<Dd>}, <Dn>, <Dm> ; T1
21429 if (dt.Is(F32)) {
21437 if (dt.Is(F64) && cond.IsNotNever()) {
21442 // VMUL{<c>}{<q>}.<dt> {<Dd>}, <Dn>, <Dm> ; A1
21452 Delegate(kVmul, &Assembler::vmul, cond, dt, rd, rn, rm);
21456 Condition cond, DataType dt, QRegister rd, QRegister rn, QRegister rm) {
21459 Dt_op_size_1 encoded_dt(dt);
21462 if (dt.Is(F32)) {
21470 // VMUL{<c>}{<q>}.<dt> {<Qd>}, <Qn>, <Qm> ; T1
21482 if (dt.Is(F32)) {
21489 // VMUL{<c>}{<q>}.<dt> {<Qd>}, <Qn>, <Qm> ; A1
21499 Delegate(kVmul, &Assembler::vmul, cond, dt, rd, rn, rm);
21503 Condition cond, DataType dt, SRegister rd, SRegister rn, SRegister rm) {
21508 if (dt.Is(F32)) {
21516 if (dt.Is(F32) && cond.IsNotNever()) {
21522 Delegate(kVmul, &Assembler::vmul, cond, dt, rd, rn, rm);
21526 DataType dt,
21533 Dt_U_size_2 encoded_dt(dt);
21535 // VMULL{<c>}{<q>}.<dt> <Qd>, <Dn>, <Dm>[<index>] ; T1
21537 (((dt.Is(S16) || dt.Is(U16)) && (index <= 3) && (dm.GetCode() <= 7)) ||
21538 (!dt.Is(S16) && !dt.Is(U16) && (index <= 1) &&
21542 if (dt.Is(S16) || dt.Is(U16)) {
21555 // VMULL{<c>}{<q>}.<dt> <Qd>, <Dn>, <Dm>[<index>] ; A1
21557 (((dt.Is(S16) || dt.Is(U16)) && (index <= 3) && (dm.GetCode() <= 7)) ||
21558 (!dt.Is(S16) && !dt.Is(U16) && (index <= 1) &&
21562 if (dt.Is(S16) || dt.Is(U16)) {
21574 Delegate(kVmull, &Assembler::vmull, cond, dt, rd, rn, dm, index);
21578 Condition cond, DataType dt, QRegister rd, DRegister rn, DRegister rm) {
21581 Dt_op_U_size_1 encoded_dt(dt);
21583 // VMULL{<c>}{<q>}.<dt> <Qd>, <Dn>, <Dm> ; T1
21595 // VMULL{<c>}{<q>}.<dt> <Qd>, <Dn>, <Dm> ; A1
21606 Delegate(kVmull, &Assembler::vmull, cond, dt, rd, rn, rm);
21610 DataType dt,
21616 ImmediateVmvn encoded_dt(dt, operand.GetNeonImmediate());
21618 // VMVN{<c>}{<q>}.<dt> <Dd>, #<imm> ; T1
21631 // VMVN{<c>}{<q>}.<dt> <Dd>, #<imm> ; A1
21645 USE(dt);
21647 // VMVN{<c>}{<q>}{.<dt>} <Dd>, <Dm> ; T1
21654 // VMVN{<c>}{<q>}{.<dt>} <Dd>, <Dm> ; A1
21661 Delegate(kVmvn, &Assembler::vmvn, cond, dt, rd, operand);
21665 DataType dt,
21671 ImmediateVmvn encoded_dt(dt, operand.GetNeonImmediate());
21673 // VMVN{<c>}{<q>}.<dt> <Qd>, #<imm> ; T1
21686 // VMVN{<c>}{<q>}.<dt> <Qd>, #<imm> ; A1
21700 USE(dt);
21702 // VMVN{<c>}{<q>}{.<dt>} <Qd>, <Qm> ; T1
21709 // VMVN{<c>}{<q>}{.<dt>} <Qd>, <Qm> ; A1
21716 Delegate(kVmvn, &Assembler::vmvn, cond, dt, rd, operand);
21719 void Assembler::vneg(Condition cond, DataType dt, DRegister rd, DRegister rm) {
21722 Dt_F_size_1 encoded_dt(dt);
21724 // VNEG{<c>}{<q>}.<dt> <Dd>, <Dm> ; T1
21735 if (dt.Is(F64)) {
21741 // VNEG{<c>}{<q>}.<dt> <Dd>, <Dm> ; A1
21751 if (dt.Is(F64) && cond.IsNotNever()) {
21757 Delegate(kVneg, &Assembler::vneg, cond, dt, rd, rm);
21760 void Assembler::vneg(Condition cond, DataType dt, QRegister rd, QRegister rm) {
21763 Dt_F_size_1 encoded_dt(dt);
21765 // VNEG{<c>}{<q>}.<dt> <Qd>, <Qm> ; T1
21776 // VNEG{<c>}{<q>}.<dt> <Qd>, <Qm> ; A1
21786 Delegate(kVneg, &Assembler::vneg, cond, dt, rd, rm);
21789 void Assembler::vneg(Condition cond, DataType dt, SRegister rd, SRegister rm) {
21794 if (dt.Is(F32)) {
21801 if (dt.Is(F32) && cond.IsNotNever()) {
21807 Delegate(kVneg, &Assembler::vneg, cond, dt, rd, rm);
21811 Condition cond, DataType dt, SRegister rd, SRegister rn, SRegister rm) {
21816 if (dt.Is(F32)) {
21824 if (dt.Is(F32) && cond.IsNotNever()) {
21830 Delegate(kVnmla, &Assembler::vnmla, cond, dt, rd, rn, rm);
21834 Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm) {
21839 if (dt.Is(F64)) {
21847 if (dt.Is(F64) && cond.IsNotNever()) {
21853 Delegate(kVnmla, &Assembler::vnmla, cond, dt, rd, rn, rm);
21857 Condition cond, DataType dt, SRegister rd, SRegister rn, SRegister rm) {
21862 if (dt.Is(F32)) {
21870 if (dt.Is(F32) && cond.IsNotNever()) {
21876 Delegate(kVnmls, &Assembler::vnmls, cond, dt, rd, rn, rm);
21880 Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm) {
21885 if (dt.Is(F64)) {
21893 if (dt.Is(F64) && cond.IsNotNever()) {
21899 Delegate(kVnmls, &Assembler::vnmls, cond, dt, rd, rn, rm);
21903 Condition cond, DataType dt, SRegister rd, SRegister rn, SRegister rm) {
21908 if (dt.Is(F32)) {
21916 if (dt.Is(F32) && cond.IsNotNever()) {
21922 Delegate(kVnmul, &Assembler::vnmul, cond, dt, rd, rn, rm);
21926 Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm) {
21931 if (dt.Is(F64)) {
21939 if (dt.Is(F64) && cond.IsNotNever()) {
21945 Delegate(kVnmul, &Assembler::vnmul, cond, dt, rd, rn, rm);
21949 DataType dt,
21956 ImmediateVorn encoded_dt(dt, operand.GetNeonImmediate());
21958 // VORN{<c>}{<q>}.<dt> {<Ddn>}, <Ddn>, #<imm> ; T1
21971 // VORN{<c>}{<q>}.<dt> {<Ddn>}, <Ddn>, #<imm> ; A1
21985 USE(dt);
21987 // VORN{<c>}{<q>}{.<dt>} {<Dd>}, <Dn>, <Dm> ; T1
21995 // VORN{<c>}{<q>}{.<dt>} {<Dd>}, <Dn>, <Dm> ; A1
22003 Delegate(kVorn, &Assembler::vorn, cond, dt, rd, rn, operand);
22007 DataType dt,
22014 ImmediateVorn encoded_dt(dt, operand.GetNeonImmediate());
22016 // VORN{<c>}{<q>}.<dt> {<Qdn>}, <Qdn>, #<imm> ; T1
22029 // VORN{<c>}{<q>}.<dt> {<Qdn>}, <Qdn>, #<imm> ; A1
22043 USE(dt);
22045 // VORN{<c>}{<q>}{.<dt>} {<Qd>}, <Qn>, <Qm> ; T1
22053 // VORN{<c>}{<q>}{.<dt>} {<Qd>}, <Qn>, <Qm> ; A1
22061 Delegate(kVorn, &Assembler::vorn, cond, dt, rd, rn, operand);
22065 DataType dt,
22073 USE(dt);
22075 // VORR{<c>}{<q>}{.<dt>} {<Dd>}, <Dn>, <Dm> ; T1
22083 // VORR{<c>}{<q>}{.<dt>} {<Dd>}, <Dn>, <Dm> ; A1
22092 ImmediateVorr encoded_dt(dt, operand.GetNeonImmediate());
22094 // VORR{<c>}{<q>}.<dt> {<Ddn>}, <Ddn>, #<imm> ; T1
22107 // VORR{<c>}{<q>}.<dt> {<Ddn>}, <Ddn>, #<imm> ; A1
22119 Delegate(kVorr, &Assembler::vorr, cond, dt, rd, rn, operand);
22123 DataType dt,
22131 USE(dt);
22133 // VORR{<c>}{<q>}{.<dt>} {<Qd>}, <Qn>, <Qm> ; T1
22141 // VORR{<c>}{<q>}{.<dt>} {<Qd>}, <Qn>, <Qm> ; A1
22150 ImmediateVorr encoded_dt(dt, operand.GetNeonImmediate());
22152 // VORR{<c>}{<q>}.<dt> {<Qdn>}, <Qdn>, #<imm> ; T1
22165 // VORR{<c>}{<q>}.<dt> {<Qdn>}, <Qdn>, #<imm> ; A1
22177 Delegate(kVorr, &Assembler::vorr, cond, dt, rd, rn, operand);
22181 DataType dt,
22186 Dt_op_size_2 encoded_dt(dt);
22188 // VPADAL{<c>}{<q>}.<dt> <Dd>, <Dm> ; T1
22199 // VPADAL{<c>}{<q>}.<dt> <Dd>, <Dm> ; A1
22209 Delegate(kVpadal, &Assembler::vpadal, cond, dt, rd, rm);
22213 DataType dt,
22218 Dt_op_size_2 encoded_dt(dt);
22220 // VPADAL{<c>}{<q>}.<dt> <Qd>, <Qm> ; T1
22231 // VPADAL{<c>}{<q>}.<dt> <Qd>, <Qm> ; A1
22241 Delegate(kVpadal, &Assembler::vpadal, cond, dt, rd, rm);
22245 Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm) {
22248 Dt_size_4 encoded_dt(dt);
22251 if (dt.Is(F32)) {
22259 // VPADD{<c>}{<q>}.<dt> {<Dd>}, <Dn>, <Dm> ; T1
22270 if (dt.Is(F32)) {
22277 // VPADD{<c>}{<q>}.<dt> {<Dd>}, <Dn>, <Dm> ; A1
22286 Delegate(kVpadd, &Assembler::vpadd, cond, dt, rd, rn, rm);
22290 DataType dt,
22295 Dt_op_size_2 encoded_dt(dt);
22297 // VPADDL{<c>}{<q>}.<dt> <Dd>, <Dm> ; T1
22308 // VPADDL{<c>}{<q>}.<dt> <Dd>, <Dm> ; A1
22318 Delegate(kVpaddl, &Assembler::vpaddl, cond, dt, rd, rm);
22322 DataType dt,
22327 Dt_op_size_2 encoded_dt(dt);
22329 // VPADDL{<c>}{<q>}.<dt> <Qd>, <Qm> ; T1
22340 // VPADDL{<c>}{<q>}.<dt> <Qd>, <Qm> ; A1
22350 Delegate(kVpaddl, &Assembler::vpaddl, cond, dt, rd, rm);
22354 Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm) {
22357 Dt_U_size_1 encoded_dt(dt);
22360 if (dt.Is(F32)) {
22368 // VPMAX{<c>}{<q>}.<dt> {<Dd>}, <Dn>, <Dm> ; T1
22380 if (dt.Is(F32)) {
22387 // VPMAX{<c>}{<q>}.<dt> {<Dd>}, <Dn>, <Dm> ; A1
22397 Delegate(kVpmax, &Assembler::vpmax, cond, dt, rd, rn, rm);
22401 Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm) {
22404 Dt_U_size_1 encoded_dt(dt);
22407 if (dt.Is(F32)) {
22415 // VPMIN{<c>}{<q>}.<dt> {<Dd>}, <Dn>, <Dm> ; T1
22427 if (dt.Is(F32)) {
22434 // VPMIN{<c>}{<q>}.<dt> {<Dd>}, <Dn>, <Dm> ; A1
22444 Delegate(kVpmin, &Assembler::vpmin, cond, dt, rd, rn, rm);
22447 void Assembler::vpop(Condition cond, DataType dt, DRegisterList dreglist) {
22450 USE(dt);
22471 Delegate(kVpop, &Assembler::vpop, cond, dt, dreglist);
22474 void Assembler::vpop(Condition cond, DataType dt, SRegisterList sreglist) {
22477 USE(dt);
22495 Delegate(kVpop, &Assembler::vpop, cond, dt, sreglist);
22498 void Assembler::vpush(Condition cond, DataType dt, DRegisterList dreglist) {
22501 USE(dt);
22522 Delegate(kVpush, &Assembler::vpush, cond, dt, dreglist);
22525 void Assembler::vpush(Condition cond, DataType dt, SRegisterList sreglist) {
22528 USE(dt);
22546 Delegate(kVpush, &Assembler::vpush, cond, dt, sreglist);
22549 void Assembler::vqabs(Condition cond, DataType dt, DRegister rd, DRegister rm) {
22552 Dt_size_5 encoded_dt(dt);
22554 // VQABS{<c>}{<q>}.<dt> <Dd>, <Dm> ; T1
22564 // VQABS{<c>}{<q>}.<dt> <Dd>, <Dm> ; A1
22573 Delegate(kVqabs, &Assembler::vqabs, cond, dt, rd, rm);
22576 void Assembler::vqabs(Condition cond, DataType dt, QRegister rd, QRegister rm) {
22579 Dt_size_5 encoded_dt(dt);
22581 // VQABS{<c>}{<q>}.<dt> <Qd>, <Qm> ; T1
22591 // VQABS{<c>}{<q>}.<dt> <Qd>, <Qm> ; A1
22600 Delegate(kVqabs, &Assembler::vqabs, cond, dt, rd, rm);
22604 Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm) {
22607 Dt_U_size_3 encoded_dt(dt);
22609 // VQADD{<c>}{<q>}.<dt> {<Dd>}, <Dn>, <Dm> ; T1
22620 // VQADD{<c>}{<q>}.<dt> {<Dd>}, <Dn>, <Dm> ; A1
22630 Delegate(kVqadd, &Assembler::vqadd, cond, dt, rd, rn, rm);
22634 Condition cond, DataType dt, QRegister rd, QRegister rn, QRegister rm) {
22637 Dt_U_size_3 encoded_dt(dt);
22639 // VQADD{<c>}{<q>}.<dt> {<Qd>}, <Qn>, <Qm> ; T1
22650 // VQADD{<c>}{<q>}.<dt> {<Qd>}, <Qn>, <Qm> ; A1
22660 Delegate(kVqadd, &Assembler::vqadd, cond, dt, rd, rn, rm);
22664 Condition cond, DataType dt, QRegister rd, DRegister rn, DRegister rm) {
22667 Dt_size_13 encoded_dt(dt);
22669 // VQDMLAL{<c>}{<q>}.<dt> <Qd>, <Dn>, <Dm> ; T1
22670 if (encoded_dt.IsValid() && (dt.Is(S16) || dt.Is(S32))) {
22679 // VQDMLAL{<c>}{<q>}.<dt> <Qd>, <Dn>, <Dm> ; A1
22680 if (encoded_dt.IsValid() && (dt.Is(S16) || dt.Is(S32))) {
22688 Delegate(kVqdmlal, &Assembler::vqdmlal, cond, dt, rd, rn, rm);
22692 DataType dt,
22699 Dt_size_13 encoded_dt(dt);
22701 // VQDMLAL{<c>}{<q>}.<dt> <Qd>, <Dn>, <Dm>[<index>] ; T2
22703 ((dt.Is(S16) && (index <= 3) && (dm.GetCode() <= 7)) ||
22704 (!dt.Is(S16) && (index <= 1) && (dm.GetCode() <= 15))) &&
22705 (dt.Is(S16) || dt.Is(S32))) {
22708 if (dt.Is(S16)) {
22720 // VQDMLAL{<c>}{<q>}.<dt> <Qd>, <Dn>, <Dm>[<index>] ; A2
22722 ((dt.Is(S16) && (index <= 3) && (dm.GetCode() <= 7)) ||
22723 (!dt.Is(S16) && (index <= 1) && (dm.GetCode() <= 15))) &&
22724 (dt.Is(S16) || dt.Is(S32))) {
22727 if (dt.Is(S16)) {
22738 Delegate(kVqdmlal, &Assembler::vqdmlal, cond, dt, rd, rn, dm, index);
22742 Condition cond, DataType dt, QRegister rd, DRegister rn, DRegister rm) {
22745 Dt_size_13 encoded_dt(dt);
22747 // VQDMLSL{<c>}{<q>}.<dt> <Qd>, <Dn>, <Dm> ; T1
22748 if (encoded_dt.IsValid() && (dt.Is(S16) || dt.Is(S32))) {
22757 // VQDMLSL{<c>}{<q>}.<dt> <Qd>, <Dn>, <Dm> ; A1
22758 if (encoded_dt.IsValid() && (dt.Is(S16) || dt.Is(S32))) {
22766 Delegate(kVqdmlsl, &Assembler::vqdmlsl, cond, dt, rd, rn, rm);
22770 DataType dt,
22777 Dt_size_13 encoded_dt(dt);
22779 // VQDMLSL{<c>}{<q>}.<dt> <Qd>, <Dn>, <Dm>[<index>] ; T2
22781 ((dt.Is(S16) && (index <= 3) && (dm.GetCode() <= 7)) ||
22782 (!dt.Is(S16) && (index <= 1) && (dm.GetCode() <= 15))) &&
22783 (dt.Is(S16) || dt.Is(S32))) {
22786 if (dt.Is(S16)) {
22798 // VQDMLSL{<c>}{<q>}.<dt> <Qd>, <Dn>, <Dm>[<index>] ; A2
22800 ((dt.Is(S16) && (index <= 3) && (dm.GetCode() <= 7)) ||
22801 (!dt.Is(S16) && (index <= 1) && (dm.GetCode() <= 15))) &&
22802 (dt.Is(S16) || dt.Is(S32))) {
22805 if (dt.Is(S16)) {
22816 Delegate(kVqdmlsl, &Assembler::vqdmlsl, cond, dt, rd, rn, dm, index);
22820 Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm) {
22823 Dt_size_13 encoded_dt(dt);
22825 // VQDMULH{<c>}{<q>}.<dt> {<Dd>}, <Dn>, <Dm> ; T1
22835 // VQDMULH{<c>}{<q>}.<dt> {<Dd>}, <Dn>, <Dm> ; A1
22844 Delegate(kVqdmulh, &Assembler::vqdmulh, cond, dt, rd, rn, rm);
22848 Condition cond, DataType dt, QRegister rd, QRegister rn, QRegister rm) {
22851 Dt_size_13 encoded_dt(dt);
22853 // VQDMULH{<c>}{<q>}.<dt> {<Qd>}, <Qn>, <Qm> ; T1
22863 // VQDMULH{<c>}{<q>}.<dt> {<Qd>}, <Qn>, <Qm> ; A1
22872 Delegate(kVqdmulh, &Assembler::vqdmulh, cond, dt, rd, rn, rm);
22876 Condition cond, DataType dt, DRegister rd, DRegister rn, DRegisterLane rm) {
22879 Dt_size_13 encoded_dt(dt);
22881 // VQDMULH{<c>}{<q>}.<dt> {<Dd>}, <Dn>, <Dm[x]> ; T2
22883 (((dt.GetSize() == 16) && (rm.GetCode() <= 7) && (rm.GetLane() <= 3)) ||
22884 ((dt.GetSize() == 32) && (rm.GetCode() <= 15) &&
22886 (dt.Is(S16) || dt.Is(S32))) {
22889 rd.Encode(22, 12) | rn.Encode(7, 16) | rm.EncodeX(dt, 5, 0));
22895 // VQDMULH{<c>}{<q>}.<dt> {<Dd>}, <Dn>, <Dm[x]> ; A2
22897 (((dt.GetSize() == 16) && (rm.GetCode() <= 7) && (rm.GetLane() <= 3)) ||
22898 ((dt.GetSize() == 32) && (rm.GetCode() <= 15) &&
22900 (dt.Is(S16) || dt.Is(S32))) {
22903 rd.Encode(22, 12) | rn.Encode(7, 16) | rm.EncodeX(dt, 5, 0));
22908 Delegate(kVqdmulh, &Assembler::vqdmulh, cond, dt, rd, rn, rm);
22912 Condition cond, DataType dt, QRegister rd, QRegister rn, DRegisterLane rm) {
22915 Dt_size_13 encoded_dt(dt);
22917 // VQDMULH{<c>}{<q>}.<dt> {<Qd>}, <Qn>, <Dm[x]> ; T2
22919 (((dt.GetSize() == 16) && (rm.GetCode() <= 7) && (rm.GetLane() <= 3)) ||
22920 ((dt.GetSize() == 32) && (rm.GetCode() <= 15) &&
22922 (dt.Is(S16) || dt.Is(S32))) {
22925 rd.Encode(22, 12) | rn.Encode(7, 16) | rm.EncodeX(dt, 5, 0));
22931 // VQDMULH{<c>}{<q>}.<dt> {<Qd>}, <Qn>, <Dm[x]> ; A2
22933 (((dt.GetSize() == 16) && (rm.GetCode() <= 7) && (rm.GetLane() <= 3)) ||
22934 ((dt.GetSize() == 32) && (rm.GetCode() <= 15) &&
22936 (dt.Is(S16) || dt.Is(S32))) {
22939 rd.Encode(22, 12) | rn.Encode(7, 16) | rm.EncodeX(dt, 5, 0));
22944 Delegate(kVqdmulh, &Assembler::vqdmulh, cond, dt, rd, rn, rm);
22948 Condition cond, DataType dt, QRegister rd, DRegister rn, DRegister rm) {
22951 Dt_size_13 encoded_dt(dt);
22953 // VQDMULL{<c>}{<q>}.<dt> <Qd>, <Dn>, <Dm> ; T1
22954 if (encoded_dt.IsValid() && (dt.Is(S16) || dt.Is(S32))) {
22963 // VQDMULL{<c>}{<q>}.<dt> <Qd>, <Dn>, <Dm> ; A1
22964 if (encoded_dt.IsValid() && (dt.Is(S16) || dt.Is(S32))) {
22972 Delegate(kVqdmull, &Assembler::vqdmull, cond, dt, rd, rn, rm);
22976 Condition cond, DataType dt, QRegister rd, DRegister rn, DRegisterLane rm) {
22979 Dt_size_13 encoded_dt(dt);
22981 // VQDMULL{<c>}{<q>}.<dt> <Qd>, <Dn>, <Dm[x]> ; T2
22983 (((dt.GetSize() == 16) && (rm.GetCode() <= 7) && (rm.GetLane() <= 3)) ||
22984 ((dt.GetSize() == 32) && (rm.GetCode() <= 15) &&
22986 (dt.Is(S16) || dt.Is(S32))) {
22989 rd.Encode(22, 12) | rn.Encode(7, 16) | rm.EncodeX(dt, 5, 0));
22995 // VQDMULL{<c>}{<q>}.<dt> <Qd>, <Dn>, <Dm[x]> ; A2
22997 (((dt.GetSize() == 16) && (rm.GetCode() <= 7) && (rm.GetLane() <= 3)) ||
22998 ((dt.GetSize() == 32) && (rm.GetCode() <= 15) &&
23000 (dt.Is(S16) || dt.Is(S32))) {
23003 rd.Encode(22, 12) | rn.Encode(7, 16) | rm.EncodeX(dt, 5, 0));
23008 Delegate(kVqdmull, &Assembler::vqdmull, cond, dt, rd, rn, rm);
23012 DataType dt,
23017 Dt_op_size_3 encoded_dt(dt);
23019 // VQMOVN{<c>}{<q>}.<dt> <Dd>, <Qm> ; T1
23030 // VQMOVN{<c>}{<q>}.<dt> <Dd>, <Qm> ; A1
23040 Delegate(kVqmovn, &Assembler::vqmovn, cond, dt, rd, rm);
23044 DataType dt,
23049 Dt_size_14 encoded_dt(dt);
23051 // VQMOVUN{<c>}{<q>}.<dt> <Dd>, <Qm> ; T1
23061 // VQMOVUN{<c>}{<q>}.<dt> <Dd>, <Qm> ; A1
23070 Delegate(kVqmovun, &Assembler::vqmovun, cond, dt, rd, rm);
23073 void Assembler::vqneg(Condition cond, DataType dt, DRegister rd, DRegister rm) {
23076 Dt_size_5 encoded_dt(dt);
23078 // VQNEG{<c>}{<q>}.<dt> <Dd>, <Dm> ; T1
23088 // VQNEG{<c>}{<q>}.<dt> <Dd>, <Dm> ; A1
23097 Delegate(kVqneg, &Assembler::vqneg, cond, dt, rd, rm);
23100 void Assembler::vqneg(Condition cond, DataType dt, QRegister rd, QRegister rm) {
23103 Dt_size_5 encoded_dt(dt);
23105 // VQNEG{<c>}{<q>}.<dt> <Qd>, <Qm> ; T1
23115 // VQNEG{<c>}{<q>}.<dt> <Qd>, <Qm> ; A1
23124 Delegate(kVqneg, &Assembler::vqneg, cond, dt, rd, rm);
23128 Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm) {
23131 Dt_size_13 encoded_dt(dt);
23133 // VQRDMULH{<c>}{<q>}.<dt> {<Dd>}, <Dn>, <Dm> ; T1
23143 // VQRDMULH{<c>}{<q>}.<dt> {<Dd>}, <Dn>, <Dm> ; A1
23152 Delegate(kVqrdmulh, &Assembler::vqrdmulh, cond, dt, rd, rn, rm);
23156 Condition cond, DataType dt, QRegister rd, QRegister rn, QRegister rm) {
23159 Dt_size_13 encoded_dt(dt);
23161 // VQRDMULH{<c>}{<q>}.<dt> {<Qd>}, <Qn>, <Qm> ; T1
23171 // VQRDMULH{<c>}{<q>}.<dt> {<Qd>}, <Qn>, <Qm> ; A1
23180 Delegate(kVqrdmulh, &Assembler::vqrdmulh, cond, dt, rd, rn, rm);
23184 Condition cond, DataType dt, DRegister rd, DRegister rn, DRegisterLane rm) {
23187 Dt_size_13 encoded_dt(dt);
23189 // VQRDMULH{<c>}{<q>}.<dt> {<Dd>}, <Dn>, <Dm[x]> ; T2
23191 (((dt.GetSize() == 16) && (rm.GetCode() <= 7) && (rm.GetLane() <= 3)) ||
23192 ((dt.GetSize() == 32) && (rm.GetCode() <= 15) &&
23194 (dt.Is(S16) || dt.Is(S32))) {
23197 rd.Encode(22, 12) | rn.Encode(7, 16) | rm.EncodeX(dt, 5, 0));
23203 // VQRDMULH{<c>}{<q>}.<dt> {<Dd>}, <Dn>, <Dm[x]> ; A2
23205 (((dt.GetSize() == 16) && (rm.GetCode() <= 7) && (rm.GetLane() <= 3)) ||
23206 ((dt.GetSize() == 32) && (rm.GetCode() <= 15) &&
23208 (dt.Is(S16) || dt.Is(S32))) {
23211 rd.Encode(22, 12) | rn.Encode(7, 16) | rm.EncodeX(dt, 5, 0));
23216 Delegate(kVqrdmulh, &Assembler::vqrdmulh, cond, dt, rd, rn, rm);
23220 Condition cond, DataType dt, QRegister rd, QRegister rn, DRegisterLane rm) {
23223 Dt_size_13 encoded_dt(dt);
23225 // VQRDMULH{<c>}{<q>}.<dt> {<Qd>}, <Qn>, <Dm[x]> ; T2
23227 (((dt.GetSize() == 16) && (rm.GetCode() <= 7) && (rm.GetLane() <= 3)) ||
23228 ((dt.GetSize() == 32) && (rm.GetCode() <= 15) &&
23230 (dt.Is(S16) || dt.Is(S32))) {
23233 rd.Encode(22, 12) | rn.Encode(7, 16) | rm.EncodeX(dt, 5, 0));
23239 // VQRDMULH{<c>}{<q>}.<dt> {<Qd>}, <Qn>, <Dm[x]> ; A2
23241 (((dt.GetSize() == 16) && (rm.GetCode() <= 7) && (rm.GetLane() <= 3)) ||
23242 ((dt.GetSize() == 32) && (rm.GetCode() <= 15) &&
23244 (dt.Is(S16) || dt.Is(S32))) {
23247 rd.Encode(22, 12) | rn.Encode(7, 16) | rm.EncodeX(dt, 5, 0));
23252 Delegate(kVqrdmulh, &Assembler::vqrdmulh, cond, dt, rd, rn, rm);
23256 Condition cond, DataType dt, DRegister rd, DRegister rm, DRegister rn) {
23259 Dt_U_size_3 encoded_dt(dt);
23261 // VQRSHL{<c>}{<q>}.<dt> {<Dd>}, <Dm>, <Dn> ; T1
23272 // VQRSHL{<c>}{<q>}.<dt> {<Dd>}, <Dm>, <Dn> ; A1
23282 Delegate(kVqrshl, &Assembler::vqrshl, cond, dt, rd, rm, rn);
23286 Condition cond, DataType dt, QRegister rd, QRegister rm, QRegister rn) {
23289 Dt_U_size_3 encoded_dt(dt);
23291 // VQRSHL{<c>}{<q>}.<dt> {<Qd>}, <Qm>, <Qn> ; T1
23302 // VQRSHL{<c>}{<q>}.<dt> {<Qd>}, <Qm>, <Qn> ; A1
23312 Delegate(kVqrshl, &Assembler::vqrshl, cond, dt, rd, rm, rn);
23316 DataType dt,
23325 Dt_op_size_3 encoded_dt(dt);
23326 Dt_imm6_1 encoded_dt_2(dt);
23328 // VQRSHRN{<c>}{<q>}.<dt> <Dd>, <Qm>, #0 ; T1
23340 if (encoded_dt_2.IsValid() && (imm >= 1) && (imm <= dt.GetSize() / 2)) {
23342 uint32_t imm6 = dt.GetSize() / 2 - imm;
23352 // VQRSHRN{<c>}{<q>}.<dt> <Dd>, <Qm>, #0 ; A1
23363 if (encoded_dt_2.IsValid() && (imm >= 1) && (imm <= dt.GetSize() / 2)) {
23365 uint32_t imm6 = dt.GetSize() / 2 - imm;
23375 Delegate(kVqrshrn, &Assembler::vqrshrn, cond, dt, rd, rm, operand);
23379 DataType dt,
23388 Dt_imm6_2 encoded_dt(dt);
23389 Dt_size_14 encoded_dt_2(dt);
23392 if (encoded_dt.IsValid() && (imm >= 1) && (imm <= dt.GetSize() / 2)) {
23394 uint32_t imm6 = dt.GetSize() / 2 - imm;
23402 // VQRSHRUN{<c>}{<q>}.<dt> <Dd>, <Qm>, #0 ; T1
23413 if (encoded_dt.IsValid() && (imm >= 1) && (imm <= dt.GetSize() / 2)) {
23415 uint32_t imm6 = dt.GetSize() / 2 - imm;
23422 // VQRSHRUN{<c>}{<q>}.<dt> <Dd>, <Qm>, #0 ; A1
23433 Delegate(kVqrshrun, &Assembler::vqrshrun, cond, dt, rd, rm, operand);
23437 DataType dt,
23445 Dt_U_size_3 encoded_dt(dt);
23447 // VQSHL{<c>}{<q>}.<dt> {<Dd>}, <Dm>, <Dn> ; T1
23459 // VQSHL{<c>}{<q>}.<dt> {<Dd>}, <Dm>, <Dn> ; A1
23473 Dt_L_imm6_1 encoded_dt(dt);
23476 if (encoded_dt.IsValid() && (imm <= dt.GetSize() - 1)) {
23489 if (encoded_dt.IsValid() && (imm <= dt.GetSize() - 1)) {
23502 Delegate(kVqshl, &Assembler::vqshl, cond, dt, rd, rm, operand);
23506 DataType dt,
23514 Dt_U_size_3 encoded_dt(dt);
23516 // VQSHL{<c>}{<q>}.<dt> {<Qd>}, <Qm>, <Qn> ; T1
23528 // VQSHL{<c>}{<q>}.<dt> {<Qd>}, <Qm>, <Qn> ; A1
23542 Dt_L_imm6_1 encoded_dt(dt);
23545 if (encoded_dt.IsValid() && (imm <= dt.GetSize() - 1)) {
23558 if (encoded_dt.IsValid() && (imm <= dt.GetSize() - 1)) {
23571 Delegate(kVqshl, &Assembler::vqshl, cond, dt, rd, rm, operand);
23575 DataType dt,
23584 Dt_L_imm6_2 encoded_dt(dt);
23587 if (encoded_dt.IsValid() && (imm <= dt.GetSize() - 1)) {
23600 if (encoded_dt.IsValid() && (imm <= dt.GetSize() - 1)) {
23613 Delegate(kVqshlu, &Assembler::vqshlu, cond, dt, rd, rm, operand);
23617 DataType dt,
23626 Dt_L_imm6_2 encoded_dt(dt);
23629 if (encoded_dt.IsValid() && (imm <= dt.GetSize() - 1)) {
23642 if (encoded_dt.IsValid() && (imm <= dt.GetSize() - 1)) {
23655 Delegate(kVqshlu, &Assembler::vqshlu, cond, dt, rd, rm, operand);
23659 DataType dt,
23668 Dt_op_size_3 encoded_dt(dt);
23669 Dt_imm6_1 encoded_dt_2(dt);
23671 // VQSHRN{<c>}{<q>}.<dt> <Dd>, <Qm>, #0 ; T1
23683 if (encoded_dt_2.IsValid() && (imm >= 1) && (imm <= dt.GetSize() / 2)) {
23685 uint32_t imm6 = dt.GetSize() / 2 - imm;
23695 // VQSHRN{<c>}{<q>}.<dt> <Dd>, <Qm>, #0 ; A1
23706 if (encoded_dt_2.IsValid() && (imm >= 1) && (imm <= dt.GetSize() / 2)) {
23708 uint32_t imm6 = dt.GetSize() / 2 - imm;
23718 Delegate(kVqshrn, &Assembler::vqshrn, cond, dt, rd, rm, operand);
23722 DataType dt,
23731 Dt_imm6_2 encoded_dt(dt);
23732 Dt_size_14 encoded_dt_2(dt);
23735 if (encoded_dt.IsValid() && (imm >= 1) && (imm <= dt.GetSize() / 2)) {
23737 uint32_t imm6 = dt.GetSize() / 2 - imm;
23745 // VQSHRUN{<c>}{<q>}.<dt> <Dd>, <Qm>, #0 ; T1
23756 if (encoded_dt.IsValid() && (imm >= 1) && (imm <= dt.GetSize() / 2)) {
23758 uint32_t imm6 = dt.GetSize() / 2 - imm;
23765 // VQSHRUN{<c>}{<q>}.<dt> <Dd>, <Qm>, #0 ; A1
23776 Delegate(kVqshrun, &Assembler::vqshrun, cond, dt, rd, rm, operand);
23780 Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm) {
23783 Dt_U_size_3 encoded_dt(dt);
23785 // VQSUB{<c>}{<q>}.<dt> {<Dd>}, <Dn>, <Dm> ; T1
23796 // VQSUB{<c>}{<q>}.<dt> {<Dd>}, <Dn>, <Dm> ; A1
23806 Delegate(kVqsub, &Assembler::vqsub, cond, dt, rd, rn, rm);
23810 Condition cond, DataType dt, QRegister rd, QRegister rn, QRegister rm) {
23813 Dt_U_size_3 encoded_dt(dt);
23815 // VQSUB{<c>}{<q>}.<dt> {<Qd>}, <Qn>, <Qm> ; T1
23826 // VQSUB{<c>}{<q>}.<dt> {<Qd>}, <Qn>, <Qm> ; A1
23836 Delegate(kVqsub, &Assembler::vqsub, cond, dt, rd, rn, rm);
23840 Condition cond, DataType dt, DRegister rd, QRegister rn, QRegister rm) {
23843 Dt_size_3 encoded_dt(dt);
23845 // VRADDHN{<c>}{<q>}.<dt> <Dd>, <Qn>, <Qm> ; T1
23846 if (encoded_dt.IsValid() && (dt.Is(I16) || dt.Is(I32) || dt.Is(I64))) {
23855 // VRADDHN{<c>}{<q>}.<dt> <Dd>, <Qn>, <Qm> ; A1
23856 if (encoded_dt.IsValid() && (dt.Is(I16) || dt.Is(I32) || dt.Is(I64))) {
23864 Delegate(kVraddhn, &Assembler::vraddhn, cond, dt, rd, rn, rm);
23868 DataType dt,
23873 Dt_F_size_4 encoded_dt(dt);
23875 // VRECPE{<c>}{<q>}.<dt> <Dd>, <Dm> ; T1
23886 // VRECPE{<c>}{<q>}.<dt> <Dd>, <Dm> ; A1
23896 Delegate(kVrecpe, &Assembler::vrecpe, cond, dt, rd, rm);
23900 DataType dt,
23905 Dt_F_size_4 encoded_dt(dt);
23907 // VRECPE{<c>}{<q>}.<dt> <Qd>, <Qm> ; T1
23918 // VRECPE{<c>}{<q>}.<dt> <Qd>, <Qm> ; A1
23928 Delegate(kVrecpe, &Assembler::vrecpe, cond, dt, rd, rm);
23932 Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm) {
23937 if (dt.Is(F32)) {
23947 if (dt.Is(F32)) {
23955 Delegate(kVrecps, &Assembler::vrecps, cond, dt, rd, rn, rm);
23959 Condition cond, DataType dt, QRegister rd, QRegister rn, QRegister rm) {
23964 if (dt.Is(F32)) {
23974 if (dt.Is(F32)) {
23982 Delegate(kVrecps, &Assembler::vrecps, cond, dt, rd, rn, rm);
23986 DataType dt,
23991 Dt_size_1 encoded_dt(dt);
23993 // VREV16{<c>}{<q>}.<dt> <Dd>, <Dm> ; T1
24003 // VREV16{<c>}{<q>}.<dt> <Dd>, <Dm> ; A1
24012 Delegate(kVrev16, &Assembler::vrev16, cond, dt, rd, rm);
24016 DataType dt,
24021 Dt_size_1 encoded_dt(dt);
24023 // VREV16{<c>}{<q>}.<dt> <Qd>, <Qm> ; T1
24033 // VREV16{<c>}{<q>}.<dt> <Qd>, <Qm> ; A1
24042 Delegate(kVrev16, &Assembler::vrev16, cond, dt, rd, rm);
24046 DataType dt,
24051 Dt_size_15 encoded_dt(dt);
24053 // VREV32{<c>}{<q>}.<dt> <Dd>, <Dm> ; T1
24063 // VREV32{<c>}{<q>}.<dt> <Dd>, <Dm> ; A1
24072 Delegate(kVrev32, &Assembler::vrev32, cond, dt, rd, rm);
24076 DataType dt,
24081 Dt_size_15 encoded_dt(dt);
24083 // VREV32{<c>}{<q>}.<dt> <Qd>, <Qm> ; T1
24093 // VREV32{<c>}{<q>}.<dt> <Qd>, <Qm> ; A1
24102 Delegate(kVrev32, &Assembler::vrev32, cond, dt, rd, rm);
24106 DataType dt,
24111 Dt_size_7 encoded_dt(dt);
24113 // VREV64{<c>}{<q>}.<dt> <Dd>, <Dm> ; T1
24123 // VREV64{<c>}{<q>}.<dt> <Dd>, <Dm> ; A1
24132 Delegate(kVrev64, &Assembler::vrev64, cond, dt, rd, rm);
24136 DataType dt,
24141 Dt_size_7 encoded_dt(dt);
24143 // VREV64{<c>}{<q>}.<dt> <Qd>, <Qm> ; T1
24153 // VREV64{<c>}{<q>}.<dt> <Qd>, <Qm> ; A1
24162 Delegate(kVrev64, &Assembler::vrev64, cond, dt, rd, rm);
24166 Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm) {
24169 Dt_U_size_1 encoded_dt(dt);
24171 // VRHADD{<c>}{<q>}.<dt> {<Dd>}, <Dn>, <Dm> ; T1
24182 // VRHADD{<c>}{<q>}.<dt> {<Dd>}, <Dn>, <Dm> ; A1
24192 Delegate(kVrhadd, &Assembler::vrhadd, cond, dt, rd, rn, rm);
24196 Condition cond, DataType dt, QRegister rd, QRegister rn, QRegister rm) {
24199 Dt_U_size_1 encoded_dt(dt);
24201 // VRHADD{<c>}{<q>}.<dt> {<Qd>}, <Qn>, <Qm> ; T1
24212 // VRHADD{<c>}{<q>}.<dt> {<Qd>}, <Qn>, <Qm> ; A1
24222 Delegate(kVrhadd, &Assembler::vrhadd, cond, dt, rd, rn, rm);
24225 void Assembler::vrinta(DataType dt, DRegister rd, DRegister rm) {
24228 Dt_size_16 encoded_dt(dt);
24230 // VRINTA{<q>}.<dt> <Dd>, <Dm> ; T1
24238 if (dt.Is(F64)) {
24244 // VRINTA{<q>}.<dt> <Dd>, <Dm> ; A1
24251 if (dt.Is(F64)) {
24256 Delegate(kVrinta, &Assembler::vrinta, dt, rd, rm);
24259 void Assembler::vrinta(DataType dt, QRegister rd, QRegister rm) {
24262 Dt_size_16 encoded_dt(dt);
24264 // VRINTA{<q>}.<dt> <Qd>, <Qm> ; T1
24272 // VRINTA{<q>}.<dt> <Qd>, <Qm> ; A1
24279 Delegate(kVrinta, &Assembler::vrinta, dt, rd, rm);
24282 void Assembler::vrinta(DataType dt, SRegister rd, SRegister rm) {
24287 if (dt.Is(F32)) {
24294 if (dt.Is(F32)) {
24299 Delegate(kVrinta, &Assembler::vrinta, dt, rd, rm);
24302 void Assembler::vrintm(DataType dt, DRegister rd, DRegister rm) {
24305 Dt_size_16 encoded_dt(dt);
24307 // VRINTM{<q>}.<dt> <Dd>, <Dm> ; T1
24315 if (dt.Is(F64)) {
24321 // VRINTM{<q>}.<dt> <Dd>, <Dm> ; A1
24328 if (dt.Is(F64)) {
24333 Delegate(kVrintm, &Assembler::vrintm, dt, rd, rm);
24336 void Assembler::vrintm(DataType dt, QRegister rd, QRegister rm) {
24339 Dt_size_16 encoded_dt(dt);
24341 // VRINTM{<q>}.<dt> <Qd>, <Qm> ; T1
24349 // VRINTM{<q>}.<dt> <Qd>, <Qm> ; A1
24356 Delegate(kVrintm, &Assembler::vrintm, dt, rd, rm);
24359 void Assembler::vrintm(DataType dt, SRegister rd, SRegister rm) {
24364 if (dt.Is(F32)) {
24371 if (dt.Is(F32)) {
24376 Delegate(kVrintm, &Assembler::vrintm, dt, rd, rm);
24379 void Assembler::vrintn(DataType dt, DRegister rd, DRegister rm) {
24382 Dt_size_16 encoded_dt(dt);
24384 // VRINTN{<q>}.<dt> <Dd>, <Dm> ; T1
24392 if (dt.Is(F64)) {
24398 // VRINTN{<q>}.<dt> <Dd>, <Dm> ; A1
24405 if (dt.Is(F64)) {
24410 Delegate(kVrintn, &Assembler::vrintn, dt, rd, rm);
24413 void Assembler::vrintn(DataType dt, QRegister rd, QRegister rm) {
24416 Dt_size_16 encoded_dt(dt);
24418 // VRINTN{<q>}.<dt> <Qd>, <Qm> ; T1
24426 // VRINTN{<q>}.<dt> <Qd>, <Qm> ; A1
24433 Delegate(kVrintn, &Assembler::vrintn, dt, rd, rm);
24436 void Assembler::vrintn(DataType dt, SRegister rd, SRegister rm) {
24441 if (dt.Is(F32)) {
24448 if (dt.Is(F32)) {
24453 Delegate(kVrintn, &Assembler::vrintn, dt, rd, rm);
24456 void Assembler::vrintp(DataType dt, DRegister rd, DRegister rm) {
24459 Dt_size_16 encoded_dt(dt);
24461 // VRINTP{<q>}.<dt> <Dd>, <Dm> ; T1
24469 if (dt.Is(F64)) {
24475 // VRINTP{<q>}.<dt> <Dd>, <Dm> ; A1
24482 if (dt.Is(F64)) {
24487 Delegate(kVrintp, &Assembler::vrintp, dt, rd, rm);
24490 void Assembler::vrintp(DataType dt, QRegister rd, QRegister rm) {
24493 Dt_size_16 encoded_dt(dt);
24495 // VRINTP{<q>}.<dt> <Qd>, <Qm> ; T1
24503 // VRINTP{<q>}.<dt> <Qd>, <Qm> ; A1
24510 Delegate(kVrintp, &Assembler::vrintp, dt, rd, rm);
24513 void Assembler::vrintp(DataType dt, SRegister rd, SRegister rm) {
24518 if (dt.Is(F32)) {
24525 if (dt.Is(F32)) {
24530 Delegate(kVrintp, &Assembler::vrintp, dt, rd, rm);
24534 DataType dt,
24541 if (dt.Is(F32)) {
24548 if (dt.Is(F32) && cond.IsNotNever()) {
24554 Delegate(kVrintr, &Assembler::vrintr, cond, dt, rd, rm);
24558 DataType dt,
24565 if (dt.Is(F64)) {
24572 if (dt.Is(F64) && cond.IsNotNever()) {
24578 Delegate(kVrintr, &Assembler::vrintr, cond, dt, rd, rm);
24582 DataType dt,
24587 Dt_size_16 encoded_dt(dt);
24589 // VRINTX{<q>}.<dt> <Dd>, <Dm> ; T1
24597 if (dt.Is(F64)) {
24603 // VRINTX{<q>}.<dt> <Dd>, <Dm> ; A1
24610 if (dt.Is(F64) && cond.IsNotNever()) {
24616 Delegate(kVrintx, &Assembler::vrintx, cond, dt, rd, rm);
24619 void Assembler::vrintx(DataType dt, QRegister rd, QRegister rm) {
24622 Dt_size_16 encoded_dt(dt);
24624 // VRINTX{<q>}.<dt> <Qd>, <Qm> ; T1
24632 // VRINTX{<q>}.<dt> <Qd>, <Qm> ; A1
24639 Delegate(kVrintx, &Assembler::vrintx, dt, rd, rm);
24643 DataType dt,
24650 if (dt.Is(F32)) {
24657 if (dt.Is(F32) && cond.IsNotNever()) {
24663 Delegate(kVrintx, &Assembler::vrintx, cond, dt, rd, rm);
24667 DataType dt,
24672 Dt_size_16 encoded_dt(dt);
24674 // VRINTZ{<q>}.<dt> <Dd>, <Dm> ; T1
24682 if (dt.Is(F64)) {
24688 // VRINTZ{<q>}.<dt> <Dd>, <Dm> ; A1
24695 if (dt.Is(F64) && cond.IsNotNever()) {
24701 Delegate(kVrintz, &Assembler::vrintz, cond, dt, rd, rm);
24704 void Assembler::vrintz(DataType dt, QRegister rd, QRegister rm) {
24707 Dt_size_16 encoded_dt(dt);
24709 // VRINTZ{<q>}.<dt> <Qd>, <Qm> ; T1
24717 // VRINTZ{<q>}.<dt> <Qd>, <Qm> ; A1
24724 Delegate(kVrintz, &Assembler::vrintz, dt, rd, rm);
24728 DataType dt,
24735 if (dt.Is(F32)) {
24742 if (dt.Is(F32) && cond.IsNotNever()) {
24748 Delegate(kVrintz, &Assembler::vrintz, cond, dt, rd, rm);
24752 Condition cond, DataType dt, DRegister rd, DRegister rm, DRegister rn) {
24755 Dt_U_size_3 encoded_dt(dt);
24757 // VRSHL{<c>}{<q>}.<dt> {<Dd>}, <Dm>, <Dn> ; T1
24768 // VRSHL{<c>}{<q>}.<dt> {<Dd>}, <Dm>, <Dn> ; A1
24778 Delegate(kVrshl, &Assembler::vrshl, cond, dt, rd, rm, rn);
24782 Condition cond, DataType dt, QRegister rd, QRegister rm, QRegister rn) {
24785 Dt_U_size_3 encoded_dt(dt);
24787 // VRSHL{<c>}{<q>}.<dt> {<Qd>}, <Qm>, <Qn> ; T1
24798 // VRSHL{<c>}{<q>}.<dt> {<Qd>}, <Qm>, <Qn> ; A1
24808 Delegate(kVrshl, &Assembler::vrshl, cond, dt, rd, rm, rn);
24812 DataType dt,
24821 Dt_L_imm6_1 encoded_dt(dt);
24824 if (encoded_dt.IsValid() && (imm >= 1) && (imm <= dt.GetSize())) {
24826 uint32_t imm6 = dt.GetSize() - imm;
24835 // VRSHR{<c>}{<q>}.<dt> <Dd>, <Dm>, #0 ; T1
24836 if ((dt.Is(kDataTypeS) || dt.Is(kDataTypeU)) && (imm == 0)) {
24846 if (encoded_dt.IsValid() && (imm >= 1) && (imm <= dt.GetSize())) {
24848 uint32_t imm6 = dt.GetSize() - imm;
24856 // VRSHR{<c>}{<q>}.<dt> <Dd>, <Dm>, #0 ; A1
24857 if ((dt.Is(kDataTypeS) || dt.Is(kDataTypeU)) && (imm == 0)) {
24867 Delegate(kVrshr, &Assembler::vrshr, cond, dt, rd, rm, operand);
24871 DataType dt,
24880 Dt_L_imm6_1 encoded_dt(dt);
24883 if (encoded_dt.IsValid() && (imm >= 1) && (imm <= dt.GetSize())) {
24885 uint32_t imm6 = dt.GetSize() - imm;
24894 // VRSHR{<c>}{<q>}.<dt> <Qd>, <Qm>, #0 ; T1
24895 if ((dt.Is(kDataTypeS) || dt.Is(kDataTypeU)) && (imm == 0)) {
24905 if (encoded_dt.IsValid() && (imm >= 1) && (imm <= dt.GetSize())) {
24907 uint32_t imm6 = dt.GetSize() - imm;
24915 // VRSHR{<c>}{<q>}.<dt> <Qd>, <Qm>, #0 ; A1
24916 if ((dt.Is(kDataTypeS) || dt.Is(kDataTypeU)) && (imm == 0)) {
24926 Delegate(kVrshr, &Assembler::vrshr, cond, dt, rd, rm, operand);
24930 DataType dt,
24939 Dt_imm6_3 encoded_dt(dt);
24940 Dt_size_3 encoded_dt_2(dt);
24943 if (encoded_dt.IsValid() && (imm >= 1) && (imm <= dt.GetSize() / 2)) {
24945 uint32_t imm6 = dt.GetSize() / 2 - imm;
24953 // VRSHRN{<c>}{<q>}.<dt> <Dd>, <Qm>, #0 ; T1
24964 if (encoded_dt.IsValid() && (imm >= 1) && (imm <= dt.GetSize() / 2)) {
24966 uint32_t imm6 = dt.GetSize() / 2 - imm;
24973 // VRSHRN{<c>}{<q>}.<dt> <Dd>, <Qm>, #0 ; A1
24984 Delegate(kVrshrn, &Assembler::vrshrn, cond, dt, rd, rm, operand);
24988 DataType dt,
24993 Dt_F_size_4 encoded_dt(dt);
24995 // VRSQRTE{<c>}{<q>}.<dt> <Dd>, <Dm> ; T1
25006 // VRSQRTE{<c>}{<q>}.<dt> <Dd>, <Dm> ; A1
25016 Delegate(kVrsqrte, &Assembler::vrsqrte, cond, dt, rd, rm);
25020 DataType dt,
25025 Dt_F_size_4 encoded_dt(dt);
25027 // VRSQRTE{<c>}{<q>}.<dt> <Qd>, <Qm> ; T1
25038 // VRSQRTE{<c>}{<q>}.<dt> <Qd>, <Qm> ; A1
25048 Delegate(kVrsqrte, &Assembler::vrsqrte, cond, dt, rd, rm);
25052 Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm) {
25057 if (dt.Is(F32)) {
25067 if (dt.Is(F32)) {
25075 Delegate(kVrsqrts, &Assembler::vrsqrts, cond, dt, rd, rn, rm);
25079 Condition cond, DataType dt, QRegister rd, QRegister rn, QRegister rm) {
25084 if (dt.Is(F32)) {
25094 if (dt.Is(F32)) {
25102 Delegate(kVrsqrts, &Assembler::vrsqrts, cond, dt, rd, rn, rm);
25106 DataType dt,
25115 Dt_L_imm6_1 encoded_dt(dt);
25118 if (encoded_dt.IsValid() && (imm >= 1) && (imm <= dt.GetSize())) {
25120 uint32_t imm6 = dt.GetSize() - imm;
25131 if (encoded_dt.IsValid() && (imm >= 1) && (imm <= dt.GetSize())) {
25133 uint32_t imm6 = dt.GetSize() - imm;
25144 Delegate(kVrsra, &Assembler::vrsra, cond, dt, rd, rm, operand);
25148 DataType dt,
25157 Dt_L_imm6_1 encoded_dt(dt);
25160 if (encoded_dt.IsValid() && (imm >= 1) && (imm <= dt.GetSize())) {
25162 uint32_t imm6 = dt.GetSize() - imm;
25173 if (encoded_dt.IsValid() && (imm >= 1) && (imm <= dt.GetSize())) {
25175 uint32_t imm6 = dt.GetSize() - imm;
25186 Delegate(kVrsra, &Assembler::vrsra, cond, dt, rd, rm, operand);
25190 Condition cond, DataType dt, DRegister rd, QRegister rn, QRegister rm) {
25193 Dt_size_3 encoded_dt(dt);
25195 // VRSUBHN{<c>}{<q>}.<dt> <Dd>, <Qn>, <Qm> ; T1
25196 if (encoded_dt.IsValid() && (dt.Is(I16) || dt.Is(I32) || dt.Is(I64))) {
25205 // VRSUBHN{<c>}{<q>}.<dt> <Dd>, <Qn>, <Qm> ; A1
25206 if (encoded_dt.IsValid() && (dt.Is(I16) || dt.Is(I32) || dt.Is(I64))) {
25214 Delegate(kVrsubhn, &Assembler::vrsubhn, cond, dt, rd, rn, rm);
25217 void Assembler::vseleq(DataType dt, DRegister rd, DRegister rn, DRegister rm) {
25222 if (OutsideITBlock() && dt.Is(F64)) {
25230 if (dt.Is(F64)) {
25236 Delegate(kVseleq, &Assembler::vseleq, dt, rd, rn, rm);
25239 void Assembler::vseleq(DataType dt, SRegister rd, SRegister rn, SRegister rm) {
25244 if (OutsideITBlock() && dt.Is(F32)) {
25252 if (dt.Is(F32)) {
25258 Delegate(kVseleq, &Assembler::vseleq, dt, rd, rn, rm);
25261 void Assembler::vselge(DataType dt, DRegister rd, DRegister rn, DRegister rm) {
25266 if (OutsideITBlock() && dt.Is(F64)) {
25274 if (dt.Is(F64)) {
25280 Delegate(kVselge, &Assembler::vselge, dt, rd, rn, rm);
25283 void Assembler::vselge(DataType dt, SRegister rd, SRegister rn, SRegister rm) {
25288 if (OutsideITBlock() && dt.Is(F32)) {
25296 if (dt.Is(F32)) {
25302 Delegate(kVselge, &Assembler::vselge, dt, rd, rn, rm);
25305 void Assembler::vselgt(DataType dt, DRegister rd, DRegister rn, DRegister rm) {
25310 if (OutsideITBlock() && dt.Is(F64)) {
25318 if (dt.Is(F64)) {
25324 Delegate(kVselgt, &Assembler::vselgt, dt, rd, rn, rm);
25327 void Assembler::vselgt(DataType dt, SRegister rd, SRegister rn, SRegister rm) {
25332 if (OutsideITBlock() && dt.Is(F32)) {
25340 if (dt.Is(F32)) {
25346 Delegate(kVselgt, &Assembler::vselgt, dt, rd, rn, rm);
25349 void Assembler::vselvs(DataType dt, DRegister rd, DRegister rn, DRegister rm) {
25354 if (OutsideITBlock() && dt.Is(F64)) {
25362 if (dt.Is(F64)) {
25368 Delegate(kVselvs, &Assembler::vselvs, dt, rd, rn, rm);
25371 void Assembler::vselvs(DataType dt, SRegister rd, SRegister rn, SRegister rm) {
25376 if (OutsideITBlock() && dt.Is(F32)) {
25384 if (dt.Is(F32)) {
25390 Delegate(kVselvs, &Assembler::vselvs, dt, rd, rn, rm);
25394 DataType dt,
25403 Dt_L_imm6_3 encoded_dt(dt);
25406 if (encoded_dt.IsValid() && (imm <= dt.GetSize() - 1)) {
25419 if (encoded_dt.IsValid() && (imm <= dt.GetSize() - 1)) {
25434 Dt_U_size_3 encoded_dt(dt);
25436 // VSHL{<c>}{<q>}.<dt> {<Dd>}, <Dm>, <Dn> ; T1
25448 // VSHL{<c>}{<q>}.<dt> {<Dd>}, <Dm>, <Dn> ; A1
25459 Delegate(kVshl, &Assembler::vshl, cond, dt, rd, rm, operand);
25463 DataType dt,
25472 Dt_L_imm6_3 encoded_dt(dt);
25475 if (encoded_dt.IsValid() && (imm <= dt.GetSize() - 1)) {
25488 if (encoded_dt.IsValid() && (imm <= dt.GetSize() - 1)) {
25503 Dt_U_size_3 encoded_dt(dt);
25505 // VSHL{<c>}{<q>}.<dt> {<Qd>}, <Qm>, <Qn> ; T1
25517 // VSHL{<c>}{<q>}.<dt> {<Qd>}, <Qm>, <Qn> ; A1
25528 Delegate(kVshl, &Assembler::vshl, cond, dt, rd, rm, operand);
25532 DataType dt,
25541 Dt_imm6_4 encoded_dt(dt);
25542 Dt_size_17 encoded_dt_2(dt);
25545 if (encoded_dt.IsValid() && (imm >= 1) && (imm <= dt.GetSize() - 1)) {
25547 uint32_t imm6 = dt.GetSize() + imm;
25556 if (encoded_dt_2.IsValid() && (imm == dt.GetSize())) {
25566 if (encoded_dt.IsValid() && (imm >= 1) && (imm <= dt.GetSize() - 1)) {
25568 uint32_t imm6 = dt.GetSize() + imm;
25576 if (encoded_dt_2.IsValid() && (imm == dt.GetSize())) {
25586 Delegate(kVshll, &Assembler::vshll, cond, dt, rd, rm, operand);
25590 DataType dt,
25599 Dt_L_imm6_1 encoded_dt(dt);
25602 if (encoded_dt.IsValid() && (imm >= 1) && (imm <= dt.GetSize())) {
25604 uint32_t imm6 = dt.GetSize() - imm;
25613 // VSHR{<c>}{<q>}.<dt> <Dd>, <Dm>, #0 ; T1
25614 if ((dt.Is(kDataTypeS) || dt.Is(kDataTypeU)) && (imm == 0)) {
25624 if (encoded_dt.IsValid() && (imm >= 1) && (imm <= dt.GetSize())) {
25626 uint32_t imm6 = dt.GetSize() - imm;
25634 // VSHR{<c>}{<q>}.<dt> <Dd>, <Dm>, #0 ; A1
25635 if ((dt.Is(kDataTypeS) || dt.Is(kDataTypeU)) && (imm == 0)) {
25645 Delegate(kVshr, &Assembler::vshr, cond, dt, rd, rm, operand);
25649 DataType dt,
25658 Dt_L_imm6_1 encoded_dt(dt);
25661 if (encoded_dt.IsValid() && (imm >= 1) && (imm <= dt.GetSize())) {
25663 uint32_t imm6 = dt.GetSize() - imm;
25672 // VSHR{<c>}{<q>}.<dt> <Qd>, <Qm>, #0 ; T1
25673 if ((dt.Is(kDataTypeS) || dt.Is(kDataTypeU)) && (imm == 0)) {
25683 if (encoded_dt.IsValid() && (imm >= 1) && (imm <= dt.GetSize())) {
25685 uint32_t imm6 = dt.GetSize() - imm;
25693 // VSHR{<c>}{<q>}.<dt> <Qd>, <Qm>, #0 ; A1
25694 if ((dt.Is(kDataTypeS) || dt.Is(kDataTypeU)) && (imm == 0)) {
25704 Delegate(kVshr, &Assembler::vshr, cond, dt, rd, rm, operand);
25708 DataType dt,
25717 Dt_imm6_3 encoded_dt(dt);
25718 Dt_size_3 encoded_dt_2(dt);
25721 if (encoded_dt.IsValid() && (imm >= 1) && (imm <= dt.GetSize() / 2)) {
25723 uint32_t imm6 = dt.GetSize() / 2 - imm;
25731 // VSHRN{<c>}{<q>}.<dt> <Dd>, <Qm>, #0 ; T1
25742 if (encoded_dt.IsValid() && (imm >= 1) && (imm <= dt.GetSize() / 2)) {
25744 uint32_t imm6 = dt.GetSize() / 2 - imm;
25751 // VSHRN{<c>}{<q>}.<dt> <Dd>, <Qm>, #0 ; A1
25762 Delegate(kVshrn, &Assembler::vshrn, cond, dt, rd, rm, operand);
25766 DataType dt,
25775 Dt_L_imm6_4 encoded_dt(dt);
25777 // VSLI{<c>}{<q>}.<dt> {<Dd>}, <Dm>, #<imm> ; T1
25778 if (encoded_dt.IsValid() && (imm <= dt.GetSize() - 1)) {
25790 // VSLI{<c>}{<q>}.<dt> {<Dd>}, <Dm>, #<imm> ; A1
25791 if (encoded_dt.IsValid() && (imm <= dt.GetSize() - 1)) {
25804 Delegate(kVsli, &Assembler::vsli, cond, dt, rd, rm, operand);
25808 DataType dt,
25817 Dt_L_imm6_4 encoded_dt(dt);
25819 // VSLI{<c>}{<q>}.<dt> {<Qd>}, <Qm>, #<imm> ; T1
25820 if (encoded_dt.IsValid() && (imm <= dt.GetSize() - 1)) {
25832 // VSLI{<c>}{<q>}.<dt> {<Qd>}, <Qm>, #<imm> ; A1
25833 if (encoded_dt.IsValid() && (imm <= dt.GetSize() - 1)) {
25846 Delegate(kVsli, &Assembler::vsli, cond, dt, rd, rm, operand);
25849 void Assembler::vsqrt(Condition cond, DataType dt, SRegister rd, SRegister rm) {
25854 if (dt.Is(F32)) {
25861 if (dt.Is(F32) && cond.IsNotNever()) {
25867 Delegate(kVsqrt, &Assembler::vsqrt, cond, dt, rd, rm);
25870 void Assembler::vsqrt(Condition cond, DataType dt, DRegister rd, DRegister rm) {
25875 if (dt.Is(F64)) {
25882 if (dt.Is(F64) && cond.IsNotNever()) {
25888 Delegate(kVsqrt, &Assembler::vsqrt, cond, dt, rd, rm);
25892 DataType dt,
25901 Dt_L_imm6_1 encoded_dt(dt);
25904 if (encoded_dt.IsValid() && (imm >= 1) && (imm <= dt.GetSize())) {
25906 uint32_t imm6 = dt.GetSize() - imm;
25917 if (encoded_dt.IsValid() && (imm >= 1) && (imm <= dt.GetSize())) {
25919 uint32_t imm6 = dt.GetSize() - imm;
25930 Delegate(kVsra, &Assembler::vsra, cond, dt, rd, rm, operand);
25934 DataType dt,
25943 Dt_L_imm6_1 encoded_dt(dt);
25946 if (encoded_dt.IsValid() && (imm >= 1) && (imm <= dt.GetSize())) {
25948 uint32_t imm6 = dt.GetSize() - imm;
25959 if (encoded_dt.IsValid() && (imm >= 1) && (imm <= dt.GetSize())) {
25961 uint32_t imm6 = dt.GetSize() - imm;
25972 Delegate(kVsra, &Assembler::vsra, cond, dt, rd, rm, operand);
25976 DataType dt,
25985 Dt_L_imm6_4 encoded_dt(dt);
25987 // VSRI{<c>}{<q>}.<dt> {<Dd>}, <Dm>, #<imm> ; T1
25988 if (encoded_dt.IsValid() && (imm >= 1) && (imm <= dt.GetSize())) {
25990 uint32_t imm6 = dt.GetSize() - imm;
26000 // VSRI{<c>}{<q>}.<dt> {<Dd>}, <Dm>, #<imm> ; A1
26001 if (encoded_dt.IsValid() && (imm >= 1) && (imm <= dt.GetSize())) {
26003 uint32_t imm6 = dt.GetSize() - imm;
26014 Delegate(kVsri, &Assembler::vsri, cond, dt, rd, rm, operand);
26018 DataType dt,
26027 Dt_L_imm6_4 encoded_dt(dt);
26029 // VSRI{<c>}{<q>}.<dt> {<Qd>}, <Qm>, #<imm> ; T1
26030 if (encoded_dt.IsValid() && (imm >= 1) && (imm <= dt.GetSize())) {
26032 uint32_t imm6 = dt.GetSize() - imm;
26042 // VSRI{<c>}{<q>}.<dt> {<Qd>}, <Qm>, #<imm> ; A1
26043 if (encoded_dt.IsValid() && (imm >= 1) && (imm <= dt.GetSize())) {
26045 uint32_t imm6 = dt.GetSize() - imm;
26056 Delegate(kVsri, &Assembler::vsri, cond, dt, rd, rm, operand);
26060 DataType dt,
26068 Dt_size_6 encoded_dt(dt);
26069 Dt_size_7 encoded_dt_2(dt);
26071 Align_index_align_1 encoded_align_2(align, nreglist, dt);
26073 // VST1{<c>}{<q>}.<dt> <list>, [<Rn>{:<align>}] ; T1
26105 // VST1{<c>}{<q>}.<dt> <list>, [<Rn>{:<align>}]! ; T1
26137 // VST1{<c>}{<q>}.<dt> <list>, [<Rn>{:<align>}] ; T1
26150 // VST1{<c>}{<q>}.<dt> <list>, [<Rn>{:<align>}]! ; T1
26164 // VST1{<c>}{<q>}.<dt> <list>, [<Rn>{:<align>}] ; A1
26195 // VST1{<c>}{<q>}.<dt> <list>, [<Rn>{:<align>}]! ; A1
26226 // VST1{<c>}{<q>}.<dt> <list>, [<Rn>{:<align>}] ; A1
26238 // VST1{<c>}{<q>}.<dt> <list>, [<Rn>{:<align>}]! ; A1
26256 Dt_size_6 encoded_dt(dt);
26257 Dt_size_7 encoded_dt_2(dt);
26259 Align_index_align_1 encoded_align_2(align, nreglist, dt);
26261 // VST1{<c>}{<q>}.<dt> <list>, [<Rn>{:<align>}], <Rm> ; T1
26292 // VST1{<c>}{<q>}.<dt> <list>, [<Rn>{:<align>}], <Rm> ; T1
26307 // VST1{<c>}{<q>}.<dt> <list>, [<Rn>{:<align>}], <Rm> ; A1
26337 // VST1{<c>}{<q>}.<dt> <list>, [<Rn>{:<align>}], <Rm> ; A1
26351 Delegate(kVst1, &Assembler::vst1, cond, dt, nreglist, operand);
26355 DataType dt,
26363 Dt_size_7 encoded_dt(dt);
26365 Align_index_align_2 encoded_align_2(align, nreglist, dt);
26367 // VST2{<c>}{<q>}.<dt> <list>, [<Rn>{:<align>}] ; T1
26394 // VST2{<c>}{<q>}.<dt> <list>, [<Rn>{:<align>}]! ; T1
26421 // VST2{<c>}{<q>}.<dt> <list>, [<Rn>{:<align>}] ; T1
26436 // VST2{<c>}{<q>}.<dt> <list>, [<Rn>{:<align>}]! ; T1
26452 // VST2{<c>}{<q>}.<dt> <list>, [<Rn>{:<align>}] ; A1
26478 // VST2{<c>}{<q>}.<dt> <list>, [<Rn>{:<align>}]! ; A1
26504 // VST2{<c>}{<q>}.<dt> <list>, [<Rn>{:<align>}] ; A1
26518 // VST2{<c>}{<q>}.<dt> <list>, [<Rn>{:<align>}]! ; A1
26538 Dt_size_7 encoded_dt(dt);
26540 Align_index_align_2 encoded_align_2(align, nreglist, dt);
26542 // VST2{<c>}{<q>}.<dt> <list>, [<Rn>{:<align>}], <Rm> ; T1
26568 // VST2{<c>}{<q>}.<dt> <list>, [<Rn>{:<align>}], <Rm> ; T1
26584 // VST2{<c>}{<q>}.<dt> <list>, [<Rn>{:<align>}], <Rm> ; A1
26609 // VST2{<c>}{<q>}.<dt> <list>, [<Rn>{:<align>}], <Rm> ; A1
26624 Delegate(kVst2, &Assembler::vst2, cond, dt, nreglist, operand);
26628 DataType dt,
26636 Dt_size_7 encoded_dt(dt);
26639 // VST3{<c>}{<q>}.<dt> <list>, [<Rn>{:<align>}] ; T1
26656 // VST3{<c>}{<q>}.<dt> <list>, [<Rn>{:<align>}]! ; T1
26674 // VST3{<c>}{<q>}.<dt> <list>, [<Rn>{:<align>}] ; A1
26690 // VST3{<c>}{<q>}.<dt> <list>, [<Rn>{:<align>}]! ; A1
26712 Dt_size_7 encoded_dt(dt);
26715 // VST3{<c>}{<q>}.<dt> <list>, [<Rn>{:<align>}], <Rm> ; T1
26732 // VST3{<c>}{<q>}.<dt> <list>, [<Rn>{:<align>}], <Rm> ; A1
26749 Delegate(kVst3, &Assembler::vst3, cond, dt, nreglist, operand);
26753 DataType dt,
26760 Dt_size_7 encoded_dt(dt);
26761 Index_1 encoded_align_1(nreglist, dt);
26763 // VST3{<c>}{<q>}.<dt> <list>, [<Rn>] ; T1
26777 // VST3{<c>}{<q>}.<dt> <list>, [<Rn>]! ; T1
26792 // VST3{<c>}{<q>}.<dt> <list>, [<Rn>] ; A1
26805 // VST3{<c>}{<q>}.<dt> <list>, [<Rn>]! ; A1
26824 Dt_size_7 encoded_dt(dt);
26825 Index_1 encoded_align_1(nreglist, dt);
26827 // VST3{<c>}{<q>}.<dt> <list>, [<Rn>], #<Rm> ; T1
26844 // VST3{<c>}{<q>}.<dt> <list>, [<Rn>], #<Rm> ; A1
26860 Delegate(kVst3, &Assembler::vst3, cond, dt, nreglist, operand);
26864 DataType dt,
26872 Dt_size_7 encoded_dt(dt);
26874 Align_index_align_3 encoded_align_2(align, nreglist, dt);
26876 // VST4{<c>}{<q>}.<dt> <list>, [<Rn>{:<align>}] ; T1
26893 // VST4{<c>}{<q>}.<dt> <list>, [<Rn>{:<align>}]! ; T1
26910 // VST4{<c>}{<q>}.<dt> <list>, [<Rn>{:<align>}] ; T1
26925 // VST4{<c>}{<q>}.<dt> <list>, [<Rn>{:<align>}]! ; T1
26941 // VST4{<c>}{<q>}.<dt> <list>, [<Rn>{:<align>}] ; A1
26957 // VST4{<c>}{<q>}.<dt> <list>, [<Rn>{:<align>}]! ; A1
26973 // VST4{<c>}{<q>}.<dt> <list>, [<Rn>{:<align>}] ; A1
26987 // VST4{<c>}{<q>}.<dt> <list>, [<Rn>{:<align>}]! ; A1
27007 Dt_size_7 encoded_dt(dt);
27009 Align_index_align_3 encoded_align_2(align, nreglist, dt);
27011 // VST4{<c>}{<q>}.<dt> <list>, [<Rn>{:<align>}], <Rm> ; T1
27027 // VST4{<c>}{<q>}.<dt> <list>, [<Rn>{:<align>}], <Rm> ; T1
27043 // VST4{<c>}{<q>}.<dt> <list>, [<Rn>{:<align>}], <Rm> ; A1
27058 // VST4{<c>}{<q>}.<dt> <list>, [<Rn>{:<align>}], <Rm> ; A1
27073 Delegate(kVst4, &Assembler::vst4, cond, dt, nreglist, operand);
27077 DataType dt,
27083 USE(dt);
27109 Delegate(kVstm, &Assembler::vstm, cond, dt, rn, write_back, dreglist);
27113 DataType dt,
27119 USE(dt);
27143 Delegate(kVstm, &Assembler::vstm, cond, dt, rn, write_back, sreglist);
27147 DataType dt,
27153 USE(dt);
27178 Delegate(kVstmdb, &Assembler::vstmdb, cond, dt, rn, write_back, dreglist);
27182 DataType dt,
27188 USE(dt);
27210 Delegate(kVstmdb, &Assembler::vstmdb, cond, dt, rn, write_back, sreglist);
27214 DataType dt,
27220 USE(dt);
27246 Delegate(kVstmia, &Assembler::vstmia, cond, dt, rn, write_back, dreglist);
27250 DataType dt,
27256 USE(dt);
27280 Delegate(kVstmia, &Assembler::vstmia, cond, dt, rn, write_back, sreglist);
27284 DataType dt,
27294 if (dt.IsNoneOr(Untyped64) && (offset >= -1020) && (offset <= 1020) &&
27306 if (dt.IsNoneOr(Untyped64) && (offset >= -1020) && (offset <= 1020) &&
27316 Delegate(kVstr, &Assembler::vstr, cond, dt, rd, operand);
27320 DataType dt,
27330 if (dt.IsNoneOr(Untyped32) && (offset >= -1020) && (offset <= 1020) &&
27342 if (dt.IsNoneOr(Untyped32) && (offset >= -1020) && (offset <= 1020) &&
27352 Delegate(kVstr, &Assembler::vstr, cond, dt, rd, operand);
27356 Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm) {
27359 Dt_size_2 encoded_dt(dt);
27362 if (dt.Is(F32)) {
27371 if (dt.Is(F64)) {
27377 // VSUB{<c>}{<q>}.<dt> {<Dd>}, <Dn>, <Dm> ; T1
27388 if (dt.Is(F32)) {
27396 if (dt.Is(F64) && cond.IsNotNever()) {
27401 // VSUB{<c>}{<q>}.<dt> {<Dd>}, <Dn>, <Dm> ; A1
27410 Delegate(kVsub, &Assembler::vsub, cond, dt, rd, rn, rm);
27414 Condition cond, DataType dt, QRegister rd, QRegister rn, QRegister rm) {
27417 Dt_size_2 encoded_dt(dt);
27420 if (dt.Is(F32)) {
27428 // VSUB{<c>}{<q>}.<dt> {<Qd>}, <Qn>, <Qm> ; T1
27439 if (dt.Is(F32)) {
27446 // VSUB{<c>}{<q>}.<dt> {<Qd>}, <Qn>, <Qm> ; A1
27455 Delegate(kVsub, &Assembler::vsub, cond, dt, rd, rn, rm);
27459 Condition cond, DataType dt, SRegister rd, SRegister rn, SRegister rm) {
27464 if (dt.Is(F32)) {
27472 if (dt.Is(F32) && cond.IsNotNever()) {
27478 Delegate(kVsub, &Assembler::vsub, cond, dt, rd, rn, rm);
27482 Condition cond, DataType dt, DRegister rd, QRegister rn, QRegister rm) {
27485 Dt_size_3 encoded_dt(dt);
27487 // VSUBHN{<c>}{<q>}.<dt> <Dd>, <Qn>, <Qm> ; T1
27488 if (encoded_dt.IsValid() && (dt.Is(I16) || dt.Is(I32) || dt.Is(I64))) {
27497 // VSUBHN{<c>}{<q>}.<dt> <Dd>, <Qn>, <Qm> ; A1
27498 if (encoded_dt.IsValid() && (dt.Is(I16) || dt.Is(I32) || dt.Is(I64))) {
27506 Delegate(kVsubhn, &Assembler::vsubhn, cond, dt, rd, rn, rm);
27510 Condition cond, DataType dt, QRegister rd, DRegister rn, DRegister rm) {
27513 Dt_U_size_1 encoded_dt(dt);
27515 // VSUBL{<c>}{<q>}.<dt> <Qd>, <Dn>, <Dm> ; T1
27526 // VSUBL{<c>}{<q>}.<dt> <Qd>, <Dn>, <Dm> ; A1
27536 Delegate(kVsubl, &Assembler::vsubl, cond, dt, rd, rn, rm);
27540 Condition cond, DataType dt, QRegister rd, QRegister rn, DRegister rm) {
27543 Dt_U_size_1 encoded_dt(dt);
27545 // VSUBW{<c>}{<q>}.<dt> {<Qd>}, <Qn>, <Dm> ; T1
27556 // VSUBW{<c>}{<q>}.<dt> {<Qd>}, <Qn>, <Dm> ; A1
27566 Delegate(kVsubw, &Assembler::vsubw, cond, dt, rd, rn, rm);
27569 void Assembler::vswp(Condition cond, DataType dt, DRegister rd, DRegister rm) {
27572 USE(dt);
27574 // VSWP{<c>}{<q>}{.<dt>} <Dd>, <Dm> ; T1
27581 // VSWP{<c>}{<q>}{.<dt>} <Dd>, <Dm> ; A1
27587 Delegate(kVswp, &Assembler::vswp, cond, dt, rd, rm);
27590 void Assembler::vswp(Condition cond, DataType dt, QRegister rd, QRegister rm) {
27593 USE(dt);
27595 // VSWP{<c>}{<q>}{.<dt>} <Qd>, <Qm> ; T1
27602 // VSWP{<c>}{<q>}{.<dt>} <Qd>, <Qm> ; A1
27608 Delegate(kVswp, &Assembler::vswp, cond, dt, rd, rm);
27612 DataType dt,
27620 if (dt.Is(Untyped8) && nreglist.IsTransferMultipleLanes() &&
27633 if (dt.Is(Untyped8) && nreglist.IsTransferMultipleLanes() &&
27644 Delegate(kVtbl, &Assembler::vtbl, cond, dt, rd, nreglist, rm);
27648 DataType dt,
27656 if (dt.Is(Untyped8) && nreglist.IsTransferMultipleLanes() &&
27669 if (dt.Is(Untyped8) && nreglist.IsTransferMultipleLanes() &&
27680 Delegate(kVtbx, &Assembler::vtbx, cond, dt, rd, nreglist, rm);
27683 void Assembler::vtrn(Condition cond, DataType dt, DRegister rd, DRegister rm) {
27686 Dt_size_7 encoded_dt(dt);
27688 // VTRN{<c>}{<q>}.<dt> <Dd>, <Dm> ; T1
27698 // VTRN{<c>}{<q>}.<dt> <Dd>, <Dm> ; A1
27707 Delegate(kVtrn, &Assembler::vtrn, cond, dt, rd, rm);
27710 void Assembler::vtrn(Condition cond, DataType dt, QRegister rd, QRegister rm) {
27713 Dt_size_7 encoded_dt(dt);
27715 // VTRN{<c>}{<q>}.<dt> <Qd>, <Qm> ; T1
27725 // VTRN{<c>}{<q>}.<dt> <Qd>, <Qm> ; A1
27734 Delegate(kVtrn, &Assembler::vtrn, cond, dt, rd, rm);
27738 Condition cond, DataType dt, DRegister rd, DRegister rn, DRegister rm) {
27741 Dt_size_7 encoded_dt(dt);
27743 // VTST{<c>}{<q>}.<dt> {<Dd>}, <Dn>, <Dm> ; T1
27753 // VTST{<c>}{<q>}.<dt> {<Dd>}, <Dn>, <Dm> ; A1
27762 Delegate(kVtst, &Assembler::vtst, cond, dt, rd, rn, rm);
27766 Condition cond, DataType dt, QRegister rd, QRegister rn, QRegister rm) {
27769 Dt_size_7 encoded_dt(dt);
27771 // VTST{<c>}{<q>}.<dt> {<Qd>}, <Qn>, <Qm> ; T1
27781 // VTST{<c>}{<q>}.<dt> {<Qd>}, <Qn>, <Qm> ; A1
27790 Delegate(kVtst, &Assembler::vtst, cond, dt, rd, rn, rm);
27793 void Assembler::vuzp(Condition cond, DataType dt, DRegister rd, DRegister rm) {
27796 Dt_size_15 encoded_dt(dt);
27798 // VUZP{<c>}{<q>}.<dt> <Dd>, <Dm> ; T1
27808 if (dt.Is(Untyped32)) {
27816 // VUZP{<c>}{<q>}.<dt> <Dd>, <Dm> ; A1
27825 if (dt.Is(Untyped32)) {
27832 Delegate(kVuzp, &Assembler::vuzp, cond, dt, rd, rm);
27835 void Assembler::vuzp(Condition cond, DataType dt, QRegister rd, QRegister rm) {
27838 Dt_size_7 encoded_dt(dt);
27840 // VUZP{<c>}{<q>}.<dt> <Qd>, <Qm> ; T1
27850 // VUZP{<c>}{<q>}.<dt> <Qd>, <Qm> ; A1
27859 Delegate(kVuzp, &Assembler::vuzp, cond, dt, rd, rm);
27862 void Assembler::vzip(Condition cond, DataType dt, DRegister rd, DRegister rm) {
27865 Dt_size_15 encoded_dt(dt);
27867 // VZIP{<c>}{<q>}.<dt> <Dd>, <Dm> ; T1
27877 if (dt.Is(Untyped32)) {
27885 // VZIP{<c>}{<q>}.<dt> <Dd>, <Dm> ; A1
27894 if (dt.Is(Untyped32)) {
27901 Delegate(kVzip, &Assembler::vzip, cond, dt, rd, rm);
27904 void Assembler::vzip(Condition cond, DataType dt, QRegister rd, QRegister rm) {
27907 Dt_size_7 encoded_dt(dt);
27909 // VZIP{<c>}{<q>}.<dt> <Qd>, <Qm> ; T1
27919 // VZIP{<c>}{<q>}.<dt> <Qd>, <Qm> ; A1
27928 Delegate(kVzip, &Assembler::vzip, cond, dt, rd, rm);