Lines Matching defs:const
53 int64_t value() const { return value_; }
54 RelocInfo::Mode rmode() const { return rmode_; }
85 static Operand EmbeddedStringConstant(const StringConstantBase* str);
87 inline bool IsHeapObjectRequest() const;
88 inline HeapObjectRequest heap_object_request() const;
89 inline Immediate immediate_for_heap_object_request() const;
99 inline bool IsImmediate() const;
100 inline bool IsShiftedRegister() const;
101 inline bool IsExtendedRegister() const;
102 inline bool IsZero() const;
106 inline Operand ToExtendedRegister() const;
109 inline Operand ToW() const;
111 inline Immediate immediate() const;
112 inline int64_t ImmediateValue() const;
113 inline RelocInfo::Mode ImmediateRMode() const;
114 inline Register reg() const;
115 inline Shift shift() const;
116 inline Extend extend() const;
117 inline unsigned shift_amount() const;
120 bool NeedsRelocation(const Assembler* assembler) const;
141 inline explicit MemOperand(Register base, const Operand& offset,
144 const Register& base() const { return base_; }
145 const Register& regoffset() const { return regoffset_; }
146 int64_t offset() const { return offset_; }
147 AddrMode addrmode() const { return addrmode_; }
148 Shift shift() const { return shift_; }
149 Extend extend() const { return extend_; }
150 unsigned shift_amount() const { return shift_amount_; }
151 inline bool IsImmediateOffset() const;
152 inline bool IsRegisterOffset() const;
153 inline bool IsPreIndex() const;
154 inline bool IsPostIndex() const;
178 explicit Assembler(const AssemblerOptions&,
302 uint64_t SizeOfGeneratedCode() const {
308 uint64_t SizeOfCodeGeneratedSince(const Label* label) {
317 uint64_t InstructionsGeneratedSince(const Label* label) {
335 bool is_veneer_pool_blocked() const {
344 int buffer_space() const;
370 void br(const Register& xn);
373 void blr(const Register& xn);
376 void ret(const Register& xn = lr);
395 void cbz(const Register& rt, Label* label);
396 void cbz(const Register& rt, int imm19);
399 void cbnz(const Register& rt, Label* label);
400 void cbnz(const Register& rt, int imm19);
403 void tbz(const Register& rt, unsigned bit_pos, Label* label);
404 void tbz(const Register& rt, unsigned bit_pos, int imm14);
407 void tbnz(const Register& rt, unsigned bit_pos, Label* label);
408 void tbnz(const Register& rt, unsigned bit_pos, int imm14);
413 void adr(const Register& rd, Label* label);
414 void adr(const Register& rd, int imm21);
418 void add(const Register& rd, const Register& rn, const Operand& operand);
421 void adds(const Register& rd, const Register& rn, const Operand& operand);
424 void cmn(const Register& rn, const Operand& operand);
427 void sub(const Register& rd, const Register& rn, const Operand& operand);
430 void subs(const Register& rd, const Register& rn, const Operand& operand);
433 void cmp(const Register& rn, const Operand& operand);
436 void neg(const Register& rd, const Operand& operand);
439 void negs(const Register& rd, const Operand& operand);
442 void adc(const Register& rd, const Register& rn, const Operand& operand);
445 void adcs(const Register& rd, const Register& rn, const Operand& operand);
448 void sbc(const Register& rd, const Register& rn, const Operand& operand);
451 void sbcs(const Register& rd, const Register& rn, const Operand& operand);
454 void ngc(const Register& rd, const Operand& operand);
457 void ngcs(const Register& rd, const Operand& operand);
461 void and_(const Register& rd, const Register& rn, const Operand& operand);
464 void ands(const Register& rd, const Register& rn, const Operand& operand);
467 void tst(const Register& rn, const Operand& operand);
470 void bic(const Register& rd, const Register& rn, const Operand& operand);
473 void bics(const Register& rd, const Register& rn, const Operand& operand);
476 void and_(const VRegister& vd, const VRegister& vn, const VRegister& vm);
479 void bic(const VRegister& vd, const int imm8, const int left_shift = 0);
482 void bic(const VRegister& vd, const VRegister& vn, const VRegister& vm);
485 void bif(const VRegister& vd, const VRegister& vn, const VRegister& vm);
488 void bit(const VRegister& vd, const VRegister& vn, const VRegister& vm);
491 void bsl(const VRegister& vd, const VRegister& vn, const VRegister& vm);
494 void pmul(const VRegister& vd, const VRegister& vn, const VRegister& vm);
497 void movi(const VRegister& vd, const uint64_t imm, Shift shift = LSL,
498 const int shift_amount = 0);
501 void mvn(const VRegister& vd, const VRegister& vn);
504 void mvni(const VRegister& vd, const int imm8, Shift shift = LSL,
505 const int shift_amount = 0);
508 void suqadd(const VRegister& vd, const VRegister& vn);
511 void usqadd(const VRegister& vd, const VRegister& vn);
514 void abs(const VRegister& vd, const VRegister& vn);
517 void sqabs(const VRegister& vd, const VRegister& vn);
520 void neg(const VRegister& vd, const VRegister& vn);
523 void sqneg(const VRegister& vd, const VRegister& vn);
526 void not_(const VRegister& vd, const VRegister& vn);
529 void xtn(const VRegister& vd, const VRegister& vn);
532 void xtn2(const VRegister& vd, const VRegister& vn);
535 void sqxtn(const VRegister& vd, const VRegister& vn);
538 void sqxtn2(const VRegister& vd, const VRegister& vn);
541 void uqxtn(const VRegister& vd, const VRegister& vn);
544 void uqxtn2(const VRegister& vd, const VRegister& vn);
547 void sqxtun(const VRegister& vd, const VRegister& vn);
550 void sqxtun2(const VRegister& vd, const VRegister& vn);
553 void mov(const VRegister& vd, const VRegister& vn);
556 void orn(const VRegister& vd, const VRegister& vn, const VRegister& vm);
559 void eor(const VRegister& vd, const VRegister& vn, const VRegister& vm);
562 void orr(const Register& rd, const Register& rn, const Operand& operand);
565 void orr(const VRegister& vd, const VRegister& vn, const VRegister& vm);
568 void orr(const VRegister& vd, const int imm8, const int left_shift = 0);
571 void orn(const Register& rd, const Register& rn, const Operand& operand);
574 void eor(const Register& rd, const Register& rn, const Operand& operand);
577 void eon(const Register& rd, const Register& rn, const Operand& operand);
580 void lslv(const Register& rd, const Register& rn, const Register& rm);
583 void lsrv(const Register& rd, const Register& rn, const Register& rm);
586 void asrv(const Register& rd, const Register& rn, const Register& rm);
589 void rorv(const Register& rd, const Register& rn, const Register& rm);
593 void bfm(const Register& rd, const Register& rn, int immr, int imms);
596 void sbfm(const Register& rd, const Register& rn, int immr, int imms);
599 void ubfm(const Register& rd, const Register& rn, int immr, int imms);
603 void bfi(const Register& rd, const Register& rn, int lsb, int width) {
610 void bfxil(const Register& rd, const Register& rn, int lsb, int width) {
618 void asr(const Register& rd, const Register& rn, int shift) {
624 void sbfiz(const Register& rd, const Register& rn, int lsb, int width) {
631 void sbfx(const Register& rd, const Register& rn, int lsb, int width) {
638 void sxtb(const Register& rd, const Register& rn) { sbfm(rd, rn, 0, 7); }
641 void sxth(const Register& rd, const Register& rn) { sbfm(rd, rn, 0, 15); }
644 void sxtw(const Register& rd, const Register& rn) { sbfm(rd, rn, 0, 31); }
648 void lsl(const Register& rd, const Register& rn, int shift) {
655 void lsr(const Register& rd, const Register& rn, int shift) {
661 void ubfiz(const Register& rd, const Register& rn, int lsb, int width) {
668 void ubfx(const Register& rd, const Register& rn, int lsb, int width) {
675 void uxtb(const Register& rd, const Register& rn) { ubfm(rd, rn, 0, 7); }
678 void uxth(const Register& rd, const Register& rn) { ubfm(rd, rn, 0, 15); }
681 void uxtw(const Register& rd, const Register& rn) { ubfm(rd, rn, 0, 31); }
684 void extr(const Register& rd, const Register& rn, const Register& rm,
688 void csel(const Register& rd, const Register& rn, const Register& rm,
692 void csinc(const Register& rd, const Register& rn, const Register& rm,
696 void csinv(const Register& rd, const Register& rn, const Register& rm,
700 void csneg(const Register& rd, const Register& rn, const Register& rm,
704 void cset(const Register& rd, Condition cond);
707 void csetm(const Register& rd, Condition cond);
710 void cinc(const Register& rd, const Register& rn, Condition cond);
713 void cinv(const Register& rd, const Register& rn, Condition cond);
716 void cneg(const Register& rd, const Register& rn, Condition cond);
719 void ror(const Register& rd, const Register& rs, unsigned shift) {
725 void ccmn(const Register& rn, const Operand& operand, StatusFlags nzcv,
729 void ccmp(const Register& rn, const Operand& operand, StatusFlags nzcv,
734 void mul(const Register& rd, const Register& rn, const Register& rm);
737 void madd(const Register& rd, const Register& rn, const Register& rm,
738 const Register& ra);
741 void mneg(const Register& rd, const Register& rn, const Register& rm);
744 void msub(const Register& rd, const Register& rn, const Register& rm,
745 const Register& ra);
748 void smull(const Register& rd, const Register& rn, const Register& rm);
751 void smulh(const Register& rd, const Register& rn, const Register& rm);
754 void smaddl(const Register& rd, const Register& rn, const Register& rm,
755 const Register& ra);
758 void umaddl(const Register& rd, const Register& rn, const Register& rm,
759 const Register& ra);
762 void smsubl(const Register& rd, const Register& rn, const Register& rm,
763 const Register& ra);
766 void umsubl(const Register& rd, const Register& rn, const Register& rm,
767 const Register& ra);
770 void sdiv(const Register& rd, const Register& rn, const Register& rm);
773 void udiv(const Register& rd, const Register& rn, const Register& rm);
776 void rbit(const Register& rd, const Register& rn);
777 void rev16(const Register& rd, const Register& rn);
778 void rev32(const Register& rd, const Register& rn);
779 void rev(const Register& rd, const Register& rn);
780 void clz(const Register& rd, const Register& rn);
781 void cls(const Register& rd, const Register& rn);
802 void ldr(const CPURegister& rt, const MemOperand& src);
805 void str(const CPURegister& rt, const MemOperand& dst);
808 void ldrsw(const Register& rt, const MemOperand& src);
811 void ldrb(const Register& rt, const MemOperand& src);
814 void strb(const Register& rt, const MemOperand& dst);
817 void ldrsb(const Register& rt, const MemOperand& src);
820 void ldrh(const Register& rt, const MemOperand& src);
823 void strh(const Register& rt, const MemOperand& dst);
826 void ldrsh(const Register& rt, const MemOperand& src);
829 void ldp(const CPURegister& rt, const CPURegister& rt2,
830 const MemOperand& src);
833 void stp(const CPURegister& rt, const CPURegister& rt2,
834 const MemOperand& dst);
837 void ldpsw(const Register& rt, const Register& rt2, const MemOperand& src);
840 void ldr_pcrel(const CPURegister& rt, int imm19);
843 void ldr(const CPURegister& rt, const Immediate& imm);
844 void ldr(const CPURegister& rt, const Operand& operand);
847 void ldar(const Register& rt, const Register& rn);
850 void ldaxr(const Register& rt, const Register& rn);
853 void stlr(const Register& rt, const Register& rn);
856 void stlxr(const Register& rs, const Register& rt, const Register& rn);
859 void ldarb(const Register& rt, const Register& rn);
862 void ldaxrb(const Register& rt, const Register& rn);
865 void stlrb(const Register& rt, const Register& rn);
868 void stlxrb(const Register& rs, const Register& rt, const Register& rn);
871 void ldarh(const Register& rt, const Register& rn);
874 void ldaxrh(const Register& rt, const Register& rn);
877 void stlrh(const Register& rt, const Register& rn);
880 void stlxrh(const Register& rs, const Register& rt, const Register& rn);
893 void movk(const Register& rd, uint64_t imm, int shift = -1) {
898 void movn(const Register& rd, uint64_t imm, int shift = -1) {
903 void movz(const Register& rd, uint64_t imm, int shift = -1) {
915 void mov(const Register& rd, const Register& rn);
918 void mvn(const Register& rd, const Operand& operand);
922 void mrs(const Register& rt, SystemRegister sysreg);
925 void msr(SystemRegister sysreg, const Register& rt);
961 void add(const VRegister& vd, const VRegister& vn, const VRegister& vm);
964 void uhadd(const VRegister& vd, const VRegister& vn, const VRegister& vm);
967 void sub(const VRegister& vd, const VRegister& vn, const VRegister& vm);
970 void shadd(const VRegister& vd, const VRegister& vn, const VRegister& vm);
973 void mul(const VRegister& vd, const VRegister& vn, const VRegister& vm,
977 void mla(const VRegister& vd, const VRegister& vn, const VRegister& vm,
981 void mls(const VRegister& vd, const VRegister& vn, const VRegister& vm,
985 void smlal(const VRegister& vd, const VRegister& vn, const VRegister& vm,
989 void smlal2(const VRegister& vd, const VRegister& vn, const VRegister& vm,
993 void umlal(const VRegister& vd, const VRegister& vn, const VRegister& vm,
997 void umlal2(const VRegister& vd, const VRegister& vn, const VRegister& vm,
1001 void smlsl(const VRegister& vd, const VRegister& vn, const VRegister& vm,
1005 void smlsl2(const VRegister& vd, const VRegister& vn, const VRegister& vm,
1009 void umlsl(const VRegister& vd, const VRegister& vn, const VRegister& vm,
1013 void umlsl2(const VRegister& vd, const VRegister& vn, const VRegister& vm,
1017 void smull(const VRegister& vd, const VRegister& vn, const VRegister& vm,
1021 void smull2(const VRegister& vd, const VRegister& vn, const VRegister& vm,
1025 void umull(const VRegister& vd, const VRegister& vn, const VRegister& vm,
1029 void umull2(const VRegister& vd, const VRegister& vn, const VRegister& vm,
1033 void addhn(const VRegister& vd, const VRegister& vn, const VRegister& vm);
1036 void addhn2(const VRegister& vd, const VRegister& vn, const VRegister& vm);
1039 void sqdmull(const VRegister& vd, const VRegister& vn, const VRegister& vm,
1043 void sqdmull2(const VRegister& vd, const VRegister& vn, const VRegister& vm,
1047 void sqdmlal(const VRegister& vd, const VRegister& vn, const VRegister& vm,
1051 void sqdmlal2(const VRegister& vd, const VRegister& vn, const VRegister& vm,
1055 void sqdmlsl(const VRegister& vd, const VRegister& vn, const VRegister& vm,
1059 void sqdmlsl2(const VRegister& vd, const VRegister& vn, const VRegister& vm,
1063 void cmeq(const VRegister& vd, const VRegister& vn, int value);
1066 void cmge(const VRegister& vd, const VRegister& vn, int value);
1069 void cmgt(const VRegister& vd, const VRegister& vn, int value);
1072 void cmle(const VRegister& vd, const VRegister& vn, int value);
1075 void cmlt(const VRegister& vd, const VRegister& vn, int value);
1078 void urhadd(const VRegister& vd, const VRegister& vn, const VRegister& vm);
1081 void cmeq(const VRegister& vd, const VRegister& vn, const VRegister& vm);
1084 void cmge(const VRegister& vd, const VRegister& vn, const VRegister& vm);
1087 void cmgt(const VRegister& vd, const VRegister& vn, const VRegister& vm);
1090 void cmhi(const VRegister& vd, const VRegister& vn, const VRegister& vm);
1093 void cmhs(const VRegister& vd, const VRegister& vn, const VRegister& vm);
1096 void cmtst(const VRegister& vd, const VRegister& vn, const VRegister& vm);
1099 void sshl(const VRegister& vd, const VRegister& vn, const VRegister& vm);
1102 void ushl(const VRegister& vd, const VRegister& vn, const VRegister& vm);
1105 void sqdmlsl(const VRegister& vd, const VRegister& vn, const VRegister& vm);
1108 void sqdmlsl2(const VRegister& vd, const VRegister& vn, const VRegister& vm);
1111 void sqdmull(const VRegister& vd, const VRegister& vn, const VRegister& vm);
1114 void sqdmull2(const VRegister& vd, const VRegister& vn, const VRegister& vm);
1117 void sqdmulh(const VRegister& vd, const VRegister& vn, const VRegister& vm);
1120 void sqrdmulh(const VRegister& vd, const VRegister& vn, const VRegister& vm);
1123 void sqdmulh(const VRegister& vd, const VRegister& vn, const VRegister& vm,
1127 void sqrdmulh(const VRegister& vd, const VRegister& vn, const VRegister& vm,
1131 void umull(const VRegister& vd, const VRegister& vn, const VRegister& vm);
1134 void umull2(const VRegister& vd, const VRegister& vn, const VRegister& vm);
1137 void raddhn(const VRegister& vd, const VRegister& vn, const VRegister& vm);
1140 void subhn(const VRegister& vd, const VRegister& vn, const VRegister& vm);
1143 void subhn2(const VRegister& vd, const VRegister& vn, const VRegister& vm);
1146 void raddhn2(const VRegister& vd, const VRegister& vn, const VRegister& vm);
1149 void rsubhn(const VRegister& vd, const VRegister& vn, const VRegister& vm);
1152 void rsubhn2(const VRegister& vd, const VRegister& vn, const VRegister& vm);
1155 void sqshl(const VRegister& vd, const VRegister& vn, const VRegister& vm);
1158 void uqshl(const VRegister& vd, const VRegister& vn, const VRegister& vm);
1161 void srshl(const VRegister& vd, const VRegister& vn, const VRegister& vm);
1164 void urshl(const VRegister& vd, const VRegister& vn, const VRegister& vm);
1167 void sqrshl(const VRegister& vd, const VRegister& vn, const VRegister& vm);
1170 void uqrshl(const VRegister& vd, const VRegister& vn, const VRegister& vm);
1173 void sabd(const VRegister& vd, const VRegister& vn, const VRegister& vm);
1176 void uaba(const VRegister& vd, const VRegister& vn, const VRegister& vm);
1179 void sli(const VRegister& vd, const VRegister& vn, int shift);
1182 void sri(const VRegister& vd, const VRegister& vn, int shift);
1185 void smax(const VRegister& vd, const VRegister& vn, const VRegister& vm);
1188 void smaxp(const VRegister& vd, const VRegister& vn, const VRegister& vm);
1191 void addv(const VRegister& vd, const VRegister& vn);
1194 void saddlv(const VRegister& vd, const VRegister& vn);
1197 void uaddlv(const VRegister& vd, const VRegister& vn);
1200 void fmaxnmv(const VRegister& vd, const VRegister& vn);
1203 void fmaxv(const VRegister& vd, const VRegister& vn);
1206 void fminnmv(const VRegister& vd, const VRegister& vn);
1209 void fminv(const VRegister& vd, const VRegister& vn);
1212 void smaxv(const VRegister& vd, const VRegister& vn);
1215 void smin(const VRegister& vd, const VRegister& vn, const VRegister& vm);
1218 void sminp(const VRegister& vd, const VRegister& vn, const VRegister& vm);
1221 void sminv(const VRegister& vd, const VRegister& vn);
1224 void st1(const VRegister& vt, const MemOperand& src);
1227 void st1(const VRegister& vt, const VRegister& vt2, const MemOperand& src);
1230 void st1(const VRegister& vt, const VRegister& vt2, const VRegister& vt3,
1231 const MemOperand& src);
1234 void st1(const VRegister& vt, const VRegister& vt2, const VRegister& vt3,
1235 const VRegister& vt4, const MemOperand& src);
1238 void st1(const VRegister& vt, int lane, const MemOperand& src);
1241 void st2(const VRegister& vt, const VRegister& vt2, const MemOperand& src);
1244 void st2(const VRegister& vt, const VRegister& vt2, int lane,
1245 const MemOperand& src);
1248 void st3(const VRegister& vt, const VRegister& vt2, const VRegister& vt3,
1249 const MemOperand& src);
1252 void st3(const VRegister& vt, const VRegister& vt2, const VRegister& vt3,
1253 int lane, const MemOperand& src);
1256 void st4(const VRegister& vt, const VRegister& vt2, const VRegister& vt3,
1257 const VRegister& vt4, const MemOperand& src);
1260 void st4(const VRegister& vt, const VRegister& vt2, const VRegister& vt3,
1261 const VRegister& vt4, int lane, const MemOperand& src);
1264 void uaddl(const VRegister& vd, const VRegister& vn, const VRegister& vm);
1267 void uaddl2(const VRegister& vd, const VRegister& vn, const VRegister& vm);
1270 void uaddw(const VRegister& vd, const VRegister& vn, const VRegister& vm);
1273 void uaddw2(const VRegister& vd, const VRegister& vn, const VRegister& vm);
1276 void saddl(const VRegister& vd, const VRegister& vn, const VRegister& vm);
1279 void saddl2(const VRegister& vd, const VRegister& vn, const VRegister& vm);
1282 void saddw(const VRegister& vd, const VRegister& vn, const VRegister& vm);
1285 void saddw2(const VRegister& vd, const VRegister& vn, const VRegister& vm);
1288 void usubl(const VRegister& vd, const VRegister& vn, const VRegister& vm);
1291 void usubl2(const VRegister& vd, const VRegister& vn, const VRegister& vm);
1294 void usubw(const VRegister& vd, const VRegister& vn, const VRegister& vm);
1297 void ssubl(const VRegister& vd, const VRegister& vn, const VRegister& vm);
1300 void ssubl2(const VRegister& vd, const VRegister& vn, const VRegister& vm);
1303 void ssubw(const VRegister& vd, const VRegister& vn, const VRegister& vm);
1306 void ssubw2(const VRegister& vd, const VRegister& vn, const VRegister& vm);
1309 void usubw2(const VRegister& vd, const VRegister& vn, const VRegister& vm);
1312 void umax(const VRegister& vd, const VRegister& vn, const VRegister& vm);
1315 void umaxp(const VRegister& vd, const VRegister& vn, const VRegister& vm);
1318 void umaxv(const VRegister& vd, const VRegister& vn);
1321 void umin(const VRegister& vd, const VRegister& vn, const VRegister& vm);
1324 void uminp(const VRegister& vd, const VRegister& vn, const VRegister& vm);
1327 void uminv(const VRegister& vd, const VRegister& vn);
1330 void trn1(const VRegister& vd, const VRegister& vn, const VRegister& vm);
1333 void trn2(const VRegister& vd, const VRegister& vn, const VRegister& vm);
1336 void uzp1(const VRegister& vd, const VRegister& vn, const VRegister& vm);
1339 void uzp2(const VRegister& vd, const VRegister& vn, const VRegister& vm);
1342 void zip1(const VRegister& vd, const VRegister& vn, const VRegister& vm);
1345 void zip2(const VRegister& vd, const VRegister& vn, const VRegister& vm);
1348 void sshr(const VRegister& vd, const VRegister& vn, int shift);
1351 void ushr(const VRegister& vd, const VRegister& vn, int shift);
1354 void srshr(const VRegister& vd, const VRegister& vn, int shift);
1357 void urshr(const VRegister& vd, const VRegister& vn, int shift);
1360 void ssra(const VRegister& vd, const VRegister& vn, int shift);
1363 void usra(const VRegister& vd, const VRegister& vn, int shift);
1366 void srsra(const VRegister& vd, const VRegister& vn, int shift);
1369 void ursra(const VRegister& vd, const VRegister& vn, int shift);
1372 void shrn(const VRegister& vd, const VRegister& vn, int shift);
1375 void shrn2(const VRegister& vd, const VRegister& vn, int shift);
1378 void rshrn(const VRegister& vd, const VRegister& vn, int shift);
1381 void rshrn2(const VRegister& vd, const VRegister& vn, int shift);
1384 void uqshrn(const VRegister& vd, const VRegister& vn, int shift);
1387 void uqshrn2(const VRegister& vd, const VRegister& vn, int shift);
1390 void uqrshrn(const VRegister& vd, const VRegister& vn, int shift);
1393 void uqrshrn2(const VRegister& vd, const VRegister& vn, int shift);
1396 void sqshrn(const VRegister& vd, const VRegister& vn, int shift);
1399 void sqshrn2(const VRegister& vd, const VRegister& vn, int shift);
1402 void sqrshrn(const VRegister& vd, const VRegister& vn, int shift);
1405 void sqrshrn2(const VRegister& vd, const VRegister& vn, int shift);
1408 void sqshrun(const VRegister& vd, const VRegister& vn, int shift);
1411 void sqshrun2(const VRegister& vd, const VRegister& vn, int shift);
1414 void sqrshrun(const VRegister& vd, const VRegister& vn, int shift);
1417 void sqrshrun2(const VRegister& vd, const VRegister& vn, int shift);
1420 void frecps(const VRegister& vd, const VRegister& vn, const VRegister& vm);
1423 void frecpe(const VRegister& vd, const VRegister& vn);
1426 void frsqrte(const VRegister& vd, const VRegister& vn);
1429 void frsqrts(const VRegister& vd, const VRegister& vn, const VRegister& vm);
1432 void sabal(const VRegister& vd, const VRegister& vn, const VRegister& vm);
1435 void sabal2(const VRegister& vd, const VRegister& vn, const VRegister& vm);
1438 void uabal(const VRegister& vd, const VRegister& vn, const VRegister& vm);
1441 void uabal2(const VRegister& vd, const VRegister& vn, const VRegister& vm);
1444 void sabdl(const VRegister& vd, const VRegister& vn, const VRegister& vm);
1447 void sabdl2(const VRegister& vd, const VRegister& vn, const VRegister& vm);
1450 void uabdl(const VRegister& vd, const VRegister& vn, const VRegister& vm);
1453 void uabdl2(const VRegister& vd, const VRegister& vn, const VRegister& vm);
1456 void pmull(const VRegister& vd, const VRegister& vn, const VRegister& vm);
1459 void pmull2(const VRegister& vd, const VRegister& vn, const VRegister& vm);
1462 void smlal(const VRegister& vd, const VRegister& vn, const VRegister& vm);
1465 void smlal2(const VRegister& vd, const VRegister& vn, const VRegister& vm);
1468 void umlal(const VRegister& vd, const VRegister& vn, const VRegister& vm);
1471 void umlal2(const VRegister& vd, const VRegister& vn, const VRegister& vm);
1474 void smlsl(const VRegister& vd, const VRegister& vn, const VRegister& vm);
1477 void smlsl2(const VRegister& vd, const VRegister& vn, const VRegister& vm);
1480 void umlsl(const VRegister& vd, const VRegister& vn, const VRegister& vm);
1483 void umlsl2(const VRegister& vd, const VRegister& vn, const VRegister& vm);
1486 void smull(const VRegister& vd, const VRegister& vn, const VRegister& vm);
1489 void smull2(const VRegister& vd, const VRegister& vn, const VRegister& vm);
1492 void sqdmlal(const VRegister& vd, const VRegister& vn, const VRegister& vm);
1495 void sqdmlal2(const VRegister& vd, const VRegister& vn, const VRegister& vm);
1498 void uabd(const VRegister& vd, const VRegister& vn, const VRegister& vm);
1501 void saba(const VRegister& vd, const VRegister& vn, const VRegister& vm);
1505 void fmov(const VRegister& fd, double imm);
1506 void fmov(const VRegister& fd, float imm);
1509 void fmov(const Register& rd, const VRegister& fn);
1512 void fmov(const VRegister& fd, const Register& rn);
1515 void fmov(const VRegister& fd, const VRegister& fn);
1518 void fmov(const VRegister& vd, int index, const Register& rn);
1521 void fmov(const Register& rd, const VRegister& vn, int index);
1524 void fadd(const VRegister& vd, const VRegister& vn, const VRegister& vm);
1527 void fsub(const VRegister& vd, const VRegister& vn, const VRegister& vm);
1530 void fmul(const VRegister& vd, const VRegister& vn, const VRegister& vm);
1533 void fcmeq(const VRegister& vd, const VRegister& vn, double imm);
1536 void fcmgt(const VRegister& vd, const VRegister& vn, double imm);
1539 void fcmge(const VRegister& vd, const VRegister& vn, double imm);
1542 void fcmle(const VRegister& vd, const VRegister& vn, double imm);
1545 void fcmlt(const VRegister& vd, const VRegister& vn, double imm);
1548 void fabd(const VRegister& vd, const VRegister& vn, const VRegister& vm);
1551 void faddp(const VRegister& vd, const VRegister& vn, const VRegister& vm);
1554 void faddp(const VRegister& vd, const VRegister& vn);
1557 void fmaxp(const VRegister& vd, const VRegister& vn);
1560 void fmaxnmp(const VRegister& vd, const VRegister& vn);
1563 void fminnmp(const VRegister& vd, const VRegister& vn);
1566 void fmla(const VRegister& vd, const VRegister& vn, const VRegister& vm);
1569 void fmls(const VRegister& vd, const VRegister& vn, const VRegister& vm);
1572 void fmulx(const VRegister& vd, const VRegister& vn, const VRegister& vm);
1575 void facge(const VRegister& vd, const VRegister& vn, const VRegister& vm);
1578 void facgt(const VRegister& vd, const VRegister& vn, const VRegister& vm);
1581 void fmul(const VRegister& vd, const VRegister& vn, const VRegister& vm,
1585 void fmla(const VRegister& vd, const VRegister& vn, const VRegister& vm,
1589 void fmls(const VRegister& vd, const VRegister& vn, const VRegister& vm,
1593 void fmulx(const VRegister& vd, const VRegister& vn, const VRegister& vm,
1597 void fcmeq(const VRegister& vd, const VRegister& vn, const VRegister& vm);
1600 void fcmgt(const VRegister& vd, const VRegister& vn, const VRegister& vm);
1603 void fcmge(const VRegister& vd, const VRegister& vn, const VRegister& vm);
1606 void fmaxp(const VRegister& vd, const VRegister& vn, const VRegister& vm);
1609 void fminp(const VRegister& vd, const VRegister& vn, const VRegister& vm);
1612 void fminp(const VRegister& vd, const VRegister& vn);
1615 void fmaxnmp(const VRegister& vd, const VRegister& vn, const VRegister& vm);
1618 void fminnmp(const VRegister& vd, const VRegister& vn, const VRegister& vm);
1621 void fmadd(const VRegister& vd, const VRegister& vn, const VRegister& vm,
1622 const VRegister& va);
1625 void fmsub(const VRegister& vd, const VRegister& vn, const VRegister& vm,
1626 const VRegister& va);
1629 void fnmadd(const VRegister& vd, const VRegister& vn, const VRegister& vm,
1630 const VRegister& va);
1633 void fnmsub(const VRegister& vd, const VRegister& vn, const VRegister& vm,
1634 const VRegister& va);
1637 void fnmul(const VRegister& vd, const VRegister& vn, const VRegister& vm);
1640 void frecpx(const VRegister& vd, const VRegister& vn);
1643 void fdiv(const VRegister& vd, const VRegister& vn, const VRegister& vm);
1646 void fmax(const VRegister& vd, const VRegister& vn, const VRegister& vm);
1649 void fmin(const VRegister& vd, const VRegister& vn, const VRegister& vm);
1652 void fmaxnm(const VRegister& vd, const VRegister& vn, const VRegister& vm);
1655 void fminnm(const VRegister& vd, const VRegister& vn, const VRegister& vm);
1658 void fabs(const VRegister& vd, const VRegister& vn);
1661 void fneg(const VRegister& vd, const VRegister& vn);
1664 void fsqrt(const VRegister& vd, const VRegister& vn);
1667 void frinta(const VRegister& vd, const VRegister& vn);
1670 void frinti(const VRegister& vd, const VRegister& vn);
1673 void frintm(const VRegister& vd, const VRegister& vn);
1676 void frintn(const VRegister& vd, const VRegister& vn);
1679 void frintp(const VRegister& vd, const VRegister& vn);
1682 void frintx(const VRegister& vd, const VRegister& vn);
1685 void frintz(const VRegister& vd, const VRegister& vn);
1688 void fcmp(const VRegister& vn, const VRegister& vm);
1691 void fcmp(const VRegister& vn, double value);
1694 void fccmp(const VRegister& vn, const VRegister& vm, StatusFlags nzcv,
1698 void fcsel(const VRegister& vd, const VRegister& vn, const VRegister& vm,
1702 void NEONFPConvertToInt(const Register& rd, const VRegister& vn, Instr op);
1703 void NEONFPConvertToInt(const VRegister& vd, const VRegister& vn, Instr op);
1706 void fcvt(const VRegister& vd, const VRegister& vn);
1709 void fcvtl(const VRegister& vd, const VRegister& vn);
1712 void fcvtl2(const VRegister& vd, const VRegister& vn);
1715 void fcvtn(const VRegister& vd, const VRegister& vn);
1718 void fcvtn2(const VRegister& vd, const VRegister& vn);
1721 void fcvtxn(const VRegister& vd, const VRegister& vn);
1724 void fcvtxn2(const VRegister& vd, const VRegister& vn);
1727 void fcvtas(const Register& rd, const VRegister& vn);
1730 void fcvtau(const Register& rd, const VRegister& vn);
1733 void fcvtas(const VRegister& vd, const VRegister& vn);
1736 void fcvtau(const VRegister& vd, const VRegister& vn);
1739 void fcvtms(const Register& rd, const VRegister& vn);
1742 void fcvtmu(const Register& rd, const VRegister& vn);
1745 void fcvtms(const VRegister& vd, const VRegister& vn);
1748 void fcvtmu(const VRegister& vd, const VRegister& vn);
1751 void fcvtns(const Register& rd, const VRegister& vn);
1754 void fjcvtzs(const Register& rd, const VRegister& vn);
1757 void fcvtnu(const Register& rd, const VRegister& vn);
1760 void fcvtns(const VRegister& rd, const VRegister& vn);
1763 void fcvtnu(const VRegister& rd, const VRegister& vn);
1766 void fcvtzs(const Register& rd, const VRegister& vn, int fbits = 0);
1769 void fcvtzu(const Register& rd, const VRegister& vn, int fbits = 0);
1772 void fcvtzs(const VRegister& vd, const VRegister& vn, int fbits = 0);
1775 void fcvtzu(const VRegister& vd, const VRegister& vn, int fbits = 0);
1778 void fcvtps(const Register& rd, const VRegister& vn);
1781 void fcvtpu(const Register& rd, const VRegister& vn);
1784 void fcvtps(const VRegister& vd, const VRegister& vn);
1787 void fcvtpu(const VRegister& vd, const VRegister& vn);
1790 void scvtf(const VRegister& fd, const Register& rn, int fbits = 0);
1793 void ucvtf(const VRegister& fd, const Register& rn, int fbits = 0);
1796 void scvtf(const VRegister& fd, const VRegister& vn, int fbits = 0);
1799 void ucvtf(const VRegister& fd, const VRegister& vn, int fbits = 0);
1802 void ext(const VRegister& vd, const VRegister& vn, const VRegister& vm,
1806 void dup(const VRegister& vd, const VRegister& vn, int vn_index);
1809 void dup(const VRegister& vd, const Register& rn);
1812 void ins(const VRegister& vd, int vd_index, const Register& rn);
1815 void mov(const VRegister& vd, int vd_index, const Register& rn);
1818 void umov(const Register& rd, const VRegister& vn, int vn_index);
1821 void mov(const Register& rd, const VRegister& vn, int vn_index);
1824 void mov(const VRegister& vd, const VRegister& vn, int vn_index);
1827 void ins(const VRegister& vd, int vd_index, const VRegister& vn,
1831 void mov(const VRegister& vd, int vd_index, const VRegister& vn,
1835 void smov(const Register& rd, const VRegister& vn, int vn_index);
1838 void ld1(const VRegister& vt, const MemOperand& src);
1841 void ld1(const VRegister& vt, const VRegister& vt2, const MemOperand& src);
1844 void ld1(const VRegister& vt, const VRegister& vt2, const VRegister& vt3,
1845 const MemOperand& src);
1848 void ld1(const VRegister& vt, const VRegister& vt2, const VRegister& vt3,
1849 const VRegister& vt4, const MemOperand& src);
1852 void ld1(const VRegister& vt, int lane, const MemOperand& src);
1855 void ld1r(const VRegister& vt, const MemOperand& src);
1858 void ld2(const VRegister& vt, const VRegister& vt2, const MemOperand& src);
1861 void ld2(const VRegister& vt, const VRegister& vt2, int lane,
1862 const MemOperand& src);
1865 void ld2r(const VRegister& vt, const VRegister& vt2, const MemOperand& src);
1868 void ld3(const VRegister& vt, const VRegister& vt2, const VRegister& vt3,
1869 const MemOperand& src);
1872 void ld3(const VRegister& vt, const VRegister& vt2, const VRegister& vt3,
1873 int lane, const MemOperand& src);
1876 void ld3r(const VRegister& vt, const VRegister& vt2, const VRegister& vt3,
1877 const MemOperand& src);
1880 void ld4(const VRegister& vt, const VRegister& vt2, const VRegister& vt3,
1881 const VRegister& vt4, const MemOperand& src);
1884 void ld4(const VRegister& vt, const VRegister& vt2, const VRegister& vt3,
1885 const VRegister& vt4, int lane, const MemOperand& src);
1888 void ld4r(const VRegister& vt, const VRegister& vt2, const VRegister& vt3,
1889 const VRegister& vt4, const MemOperand& src);
1892 void cls(const VRegister& vd, const VRegister& vn);
1895 void clz(const VRegister& vd, const VRegister& vn);
1898 void cnt(const VRegister& vd, const VRegister& vn);
1901 void rbit(const VRegister& vd, const VRegister& vn);
1904 void rev16(const VRegister& vd, const VRegister& vn);
1907 void rev32(const VRegister& vd, const VRegister& vn);
1910 void rev64(const VRegister& vd, const VRegister& vn);
1913 void ursqrte(const VRegister& vd, const VRegister& vn);
1916 void urecpe(const VRegister& vd, const VRegister& vn);
1919 void sadalp(const VRegister& vd, const VRegister& vn);
1922 void saddlp(const VRegister& vd, const VRegister& vn);
1925 void uaddlp(const VRegister& vd, const VRegister& vn);
1928 void uadalp(const VRegister& vd, const VRegister& vn);
1931 void shl(const VRegister& vd, const VRegister& vn, int shift);
1934 void sqshl(const VRegister& vd, const VRegister& vn, int shift);
1937 void sqshlu(const VRegister& vd, const VRegister& vn, int shift);
1940 void uqshl(const VRegister& vd, const VRegister& vn, int shift);
1943 void sshll(const VRegister& vd, const VRegister& vn, int shift);
1946 void sshll2(const VRegister& vd, const VRegister& vn, int shift);
1949 void sxtl(const VRegister& vd, const VRegister& vn);
1952 void sxtl2(const VRegister& vd, const VRegister& vn);
1955 void ushll(const VRegister& vd, const VRegister& vn, int shift);
1958 void ushll2(const VRegister& vd, const VRegister& vn, int shift);
1961 void shll(const VRegister& vd, const VRegister& vn, int shift);
1964 void shll2(const VRegister& vd, const VRegister& vn, int shift);
1967 void uxtl(const VRegister& vd, const VRegister& vn);
1970 void uxtl2(const VRegister& vd, const VRegister& vn);
1973 void srhadd(const VRegister& vd, const VRegister& vn, const VRegister& vm);
1976 void uhsub(const VRegister& vd, const VRegister& vn, const VRegister& vm);
1979 void shsub(const VRegister& vd, const VRegister& vn, const VRegister& vm);
1982 void uqadd(const VRegister& vd, const VRegister& vn, const VRegister& vm);
1985 void sqadd(const VRegister& vd, const VRegister& vn, const VRegister& vm);
1988 void uqsub(const VRegister& vd, const VRegister& vn, const VRegister& vm);
1991 void sqsub(const VRegister& vd, const VRegister& vn, const VRegister& vm);
1994 void addp(const VRegister& vd, const VRegister& vn, const VRegister& vm);
1997 void addp(const VRegister& vd, const VRegister& vn);
2000 void mla(const VRegister& vd, const VRegister& vn, const VRegister& vm);
2003 void mls(const VRegister& vd, const VRegister& vn, const VRegister& vm);
2006 void mul(const VRegister& vd, const VRegister& vn, const VRegister& vm);
2009 void tbl(const VRegister& vd, const VRegister& vn, const VRegister& vm);
2012 void tbl(const VRegister& vd, const VRegister& vn, const VRegister& vn2,
2013 const VRegister& vm);
2016 void tbl(const VRegister& vd, const VRegister& vn, const VRegister& vn2,
2017 const VRegister& vn3, const VRegister& vm);
2020 void tbl(const VRegister& vd, const VRegister& vn, const VRegister& vn2,
2021 const VRegister& vn3, const VRegister& vn4, const VRegister& vm);
2024 void tbx(const VRegister& vd, const VRegister& vn, const VRegister& vm);
2027 void tbx(const VRegister& vd, const VRegister& vn, const VRegister& vn2,
2028 const VRegister& vm);
2031 void tbx(const VRegister& vd, const VRegister& vn, const VRegister& vn2,
2032 const VRegister& vn3, const VRegister& vm);
2035 void tbx(const VRegister& vd, const VRegister& vn, const VRegister& vn2,
2036 const VRegister& vn3, const VRegister& vn4, const VRegister& vm);
2057 void EmitStringData(const char* string);
2062 void debug(const char* message, uint32_t code, Instr params = BREAK);
2096 Instruction* pc() const { return Instruction::Cast(pc_); }
2098 Instruction* InstructionAt(ptrdiff_t offset) const {
2102 ptrdiff_t InstructionOffset(Instruction* instr) const {
2388 // Check if the const pool needs to be emitted while pretending that {margin}
2453 win64_unwindinfo::BuiltinUnwindInfo GetUnwindInfo() const;
2457 inline const Register& AppropriateZeroRegFor(const CPURegister& reg) const;
2459 void LoadStore(const CPURegister& rt, const MemOperand& addr, LoadStoreOp op);
2460 void LoadStorePair(const CPURegister& rt, const CPURegister& rt2,
2461 const MemOperand& addr, LoadStorePairOp op);
2462 void LoadStoreStruct(const VRegister& vt, const MemOperand& addr,
2464 void LoadStoreStruct1(const VRegister& vt, int reg_count,
2465 const MemOperand& addr);
2466 void LoadStoreStructSingle(const VRegister& vt, uint32_t lane,
2467 const MemOperand& addr,
2469 void LoadStoreStructSingleAllLanes(const VRegister& vt,
2470 const MemOperand& addr,
2472 void LoadStoreStructVerify(const VRegister& vt, const MemOperand& addr,
2477 void Logical(const Register& rd, const Register& rn, const Operand& operand,
2479 void LogicalImmediate(const Register& rd, const Register& rn, unsigned n,
2482 void ConditionalCompare(const Register& rn, const Operand& operand,
2487 void AddSubWithCarry(const Register& rd, const Register& rn,
2488 const Operand& operand, FlagsUpdate S,
2493 void EmitShift(const Register& rd, const Register& rn, Shift shift,
2495 void EmitExtendShift(const Register& rd, const Register& rn, Extend extend,
2498 void AddSub(const Register& rd, const Register& rn, const Operand& operand,
2507 static inline LoadStoreOp LoadOpFor(const CPURegister& rt);
2508 static inline LoadStorePairOp LoadPairOpFor(const CPURegister& rt,
2509 const CPURegister& rt2);
2510 static inline LoadStoreOp StoreOpFor(const CPURegister& rt);
2511 static inline LoadStorePairOp StorePairOpFor(const CPURegister& rt,
2512 const CPURegister& rt2);
2513 static inline LoadLiteralOp LoadLiteralOpFor(const CPURegister& rt);
2525 void MoveWide(const Register& rd, uint64_t imm, int shift,
2527 void DataProcShiftedRegister(const Register& rd, const Register& rn,
2528 const Operand& operand, FlagsUpdate S, Instr op);
2529 void DataProcExtendedRegister(const Register& rd, const Register& rn,
2530 const Operand& operand, FlagsUpdate S,
2532 void ConditionalSelect(const Register& rd, const Register& rn,
2533 const Register& rm, Condition cond,
2535 void DataProcessing1Source(const Register& rd, const Register& rn,
2537 void DataProcessing3Source(const Register& rd, const Register& rn,
2538 const Register& rm, const Register& ra,
2540 void FPDataProcessing1Source(const VRegister& fd, const VRegister& fn,
2542 void FPDataProcessing2Source(const VRegister& fd, const VRegister& fn,
2543 const VRegister& fm,
2545 void FPDataProcessing3Source(const VRegister& fd, const VRegister& fn,
2546 const VRegister& fm, const VRegister& fa,
2548 void NEONAcrossLanesL(const VRegister& vd, const VRegister& vn,
2550 void NEONAcrossLanes(const VRegister& vd, const VRegister& vn,
2552 void NEONModifiedImmShiftLsl(const VRegister& vd, const int imm8,
2553 const int left_shift,
2555 void NEONModifiedImmShiftMsl(const VRegister& vd, const int imm8,
2556 const int shift_amount,
2558 void NEON3Same(const VRegister& vd, const VRegister& vn, const VRegister& vm,
2560 void NEONFP3Same(const VRegister& vd, const VRegister& vn,
2561 const VRegister& vm, Instr op);
2562 void NEON3DifferentL(const VRegister& vd, const VRegister& vn,
2563 const VRegister& vm, NEON3DifferentOp vop);
2564 void NEON3DifferentW(const VRegister& vd, const VRegister& vn,
2565 const VRegister& vm, NEON3DifferentOp vop);
2566 void NEON3DifferentHN(const VRegister& vd, const VRegister& vn,
2567 const VRegister& vm, NEON3DifferentOp vop);
2568 void NEONFP2RegMisc(const VRegister& vd, const VRegister& vn,
2570 void NEON2RegMisc(const VRegister& vd, const VRegister& vn,
2572 void NEONFP2RegMisc(const VRegister& vd, const VRegister& vn, Instr op);
2573 void NEONAddlp(const VRegister& vd, const VRegister& vn, NEON2RegMiscOp op);
2574 void NEONPerm(const VRegister& vd, const VRegister& vn, const VRegister& vm,
2576 void NEONFPByElement(const VRegister& vd, const VRegister& vn,
2577 const VRegister& vm, int vm_index,
2579 void NEONByElement(const VRegister& vd, const VRegister& vn,
2580 const VRegister& vm, int vm_index,
2582 void NEONByElementL(const VRegister& vd, const VRegister& vn,
2583 const VRegister& vm, int vm_index,
2585 void NEONShiftImmediate(const VRegister& vd, const VRegister& vn,
2587 void NEONShiftLeftImmediate(const VRegister& vd, const VRegister& vn,
2589 void NEONShiftRightImmediate(const VRegister& vd, const VRegister& vn,
2591 void NEONShiftImmediateL(const VRegister& vd, const VRegister& vn, int shift,
2593 void NEONShiftImmediateN(const VRegister& vd, const VRegister& vn, int shift,
2595 void NEONXtn(const VRegister& vd, const VRegister& vn, NEON2RegMiscOp vop);
2596 void NEONTable(const VRegister& vd, const VRegister& vn, const VRegister& vm,
2599 Instr LoadStoreStructAddrModeField(const MemOperand& addr);
2613 void CheckLabelLinkChain(Label const* label);
2627 void EmitData(void const* data, unsigned size) {
2668 size_t GetConstantPoolEntriesSizeForTesting() const {
2717 int unresolved_branches_first_limit() const {
2733 static const int kMaximalBufferSize = 512 * MB;
2768 PatchingAssembler(const AssemblerOptions& options, byte* start,