@@ -212,7 +212,7 @@ class MacroAssembler: public Assembler {
212212
213213 inline void movw (Register Rd, Register Rn) {
214214 if (Rd == sp || Rn == sp) {
215- addw (Rd, Rn, 0U );
215+ Assembler:: addw (Rd, Rn, 0U );
216216 } else {
217217 orrw (Rd, zr, Rn);
218218 }
@@ -221,7 +221,7 @@ class MacroAssembler: public Assembler {
221221 assert (Rd != r31_sp && Rn != r31_sp, " should be" );
222222 if (Rd == Rn) {
223223 } else if (Rd == sp || Rn == sp) {
224- add (Rd, Rn, 0U );
224+ Assembler:: add (Rd, Rn, 0U );
225225 } else {
226226 orr (Rd, zr, Rn);
227227 }
@@ -1169,17 +1169,17 @@ class MacroAssembler: public Assembler {
11691169
11701170 // If a constant does not fit in an immediate field, generate some
11711171 // number of MOV instructions and then perform the operation
1172- void wrap_add_sub_imm_insn (Register Rd, Register Rn, unsigned imm,
1172+ void wrap_add_sub_imm_insn (Register Rd, Register Rn, uint64_t imm,
11731173 add_sub_imm_insn insn1,
1174- add_sub_reg_insn insn2);
1174+ add_sub_reg_insn insn2, bool is32 );
11751175 // Separate vsn which sets the flags
1176- void wrap_adds_subs_imm_insn (Register Rd, Register Rn, unsigned imm,
1177- add_sub_imm_insn insn1,
1178- add_sub_reg_insn insn2);
1176+ void wrap_adds_subs_imm_insn (Register Rd, Register Rn, uint64_t imm,
1177+ add_sub_imm_insn insn1,
1178+ add_sub_reg_insn insn2, bool is32 );
11791179
1180- #define WRAP (INSN ) \
1181- void INSN (Register Rd, Register Rn, unsigned imm) { \
1182- wrap_add_sub_imm_insn (Rd, Rn, imm, &Assembler::INSN, &Assembler::INSN); \
1180+ #define WRAP (INSN, is32 ) \
1181+ void INSN (Register Rd, Register Rn, uint64_t imm) { \
1182+ wrap_add_sub_imm_insn (Rd, Rn, imm, &Assembler::INSN, &Assembler::INSN, is32 ); \
11831183 } \
11841184 \
11851185 void INSN (Register Rd, Register Rn, Register Rm, \
@@ -1196,12 +1196,12 @@ class MacroAssembler: public Assembler {
11961196 Assembler::INSN (Rd, Rn, Rm, option, amount); \
11971197 }
11981198
1199- WRAP (add) WRAP(addw) WRAP(sub) WRAP(subw)
1199+ WRAP (add, false ) WRAP(addw, true ) WRAP(sub, false ) WRAP(subw, true )
12001200
12011201#undef WRAP
1202- #define WRAP (INSN ) \
1203- void INSN (Register Rd, Register Rn, unsigned imm) { \
1204- wrap_adds_subs_imm_insn (Rd, Rn, imm, &Assembler::INSN, &Assembler::INSN); \
1202+ #define WRAP (INSN, is32 ) \
1203+ void INSN (Register Rd, Register Rn, uint64_t imm) { \
1204+ wrap_adds_subs_imm_insn (Rd, Rn, imm, &Assembler::INSN, &Assembler::INSN, is32 ); \
12051205 } \
12061206 \
12071207 void INSN (Register Rd, Register Rn, Register Rm, \
@@ -1218,7 +1218,7 @@ class MacroAssembler: public Assembler {
12181218 Assembler::INSN (Rd, Rn, Rm, option, amount); \
12191219 }
12201220
1221- WRAP (adds) WRAP(addsw) WRAP(subs) WRAP(subsw)
1221+ WRAP (adds, false ) WRAP(addsw, true ) WRAP(subs, false ) WRAP(subsw, true )
12221222
12231223 void add (Register Rd, Register Rn, RegisterOrConstant increment);
12241224 void addw (Register Rd, Register Rn, RegisterOrConstant increment);
0 commit comments