Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(21)

Side by Side Diff: src/arm64/macro-assembler-arm64.h

Issue 222433002: ARM64: Introduce a version of ADR handling distant targets. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Fix loop offset Created 6 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright 2013 the V8 project authors. All rights reserved. 1 // Copyright 2013 the V8 project authors. All rights reserved.
2 // Redistribution and use in source and binary forms, with or without 2 // Redistribution and use in source and binary forms, with or without
3 // modification, are permitted provided that the following conditions are 3 // modification, are permitted provided that the following conditions are
4 // met: 4 // met:
5 // 5 //
6 // * Redistributions of source code must retain the above copyright 6 // * Redistributions of source code must retain the above copyright
7 // notice, this list of conditions and the following disclaimer. 7 // notice, this list of conditions and the following disclaimer.
8 // * Redistributions in binary form must reproduce the above 8 // * Redistributions in binary form must reproduce the above
9 // copyright notice, this list of conditions and the following 9 // copyright notice, this list of conditions and the following
10 // disclaimer in the documentation and/or other materials provided 10 // disclaimer in the documentation and/or other materials provided
(...skipping 237 matching lines...) Expand 10 before | Expand all | Expand 10 after
248 #undef DECLARE_FUNCTION 248 #undef DECLARE_FUNCTION
249 249
250 void LoadStoreMacro(const CPURegister& rt, 250 void LoadStoreMacro(const CPURegister& rt,
251 const MemOperand& addr, 251 const MemOperand& addr,
252 LoadStoreOp op); 252 LoadStoreOp op);
253 253
254 // V8-specific load/store helpers. 254 // V8-specific load/store helpers.
255 void Load(const Register& rt, const MemOperand& addr, Representation r); 255 void Load(const Register& rt, const MemOperand& addr, Representation r);
256 void Store(const Register& rt, const MemOperand& addr, Representation r); 256 void Store(const Register& rt, const MemOperand& addr, Representation r);
257 257
258 enum AdrHint {
259 // The target must be within the immediate range of adr.
260 kAdrNear,
261 // The target may be outside of the immediate range of adr. Additional
262 // instructions may be emitted.
263 kAdrFar
264 };
265 void Adr(const Register& rd, Label* label, AdrHint = kAdrNear);
266
258 // Remaining instructions are simple pass-through calls to the assembler. 267 // Remaining instructions are simple pass-through calls to the assembler.
259 inline void Adr(const Register& rd, Label* label);
260 inline void Asr(const Register& rd, const Register& rn, unsigned shift); 268 inline void Asr(const Register& rd, const Register& rn, unsigned shift);
261 inline void Asr(const Register& rd, const Register& rn, const Register& rm); 269 inline void Asr(const Register& rd, const Register& rn, const Register& rm);
262 270
263 // Branch type inversion relies on these relations. 271 // Branch type inversion relies on these relations.
264 STATIC_ASSERT((reg_zero == (reg_not_zero ^ 1)) && 272 STATIC_ASSERT((reg_zero == (reg_not_zero ^ 1)) &&
265 (reg_bit_clear == (reg_bit_set ^ 1)) && 273 (reg_bit_clear == (reg_bit_set ^ 1)) &&
266 (always == (never ^ 1))); 274 (always == (never ^ 1)));
267 275
268 void B(Label* label, BranchType type, Register reg = NoReg, int bit = -1); 276 void B(Label* label, BranchType type, Register reg = NoReg, int bit = -1);
269 277
(...skipping 2029 matching lines...) Expand 10 before | Expand all | Expand 10 after
2299 #error "Unsupported option" 2307 #error "Unsupported option"
2300 #define CODE_COVERAGE_STRINGIFY(x) #x 2308 #define CODE_COVERAGE_STRINGIFY(x) #x
2301 #define CODE_COVERAGE_TOSTRING(x) CODE_COVERAGE_STRINGIFY(x) 2309 #define CODE_COVERAGE_TOSTRING(x) CODE_COVERAGE_STRINGIFY(x)
2302 #define __FILE_LINE__ __FILE__ ":" CODE_COVERAGE_TOSTRING(__LINE__) 2310 #define __FILE_LINE__ __FILE__ ":" CODE_COVERAGE_TOSTRING(__LINE__)
2303 #define ACCESS_MASM(masm) masm->stop(__FILE_LINE__); masm-> 2311 #define ACCESS_MASM(masm) masm->stop(__FILE_LINE__); masm->
2304 #else 2312 #else
2305 #define ACCESS_MASM(masm) masm-> 2313 #define ACCESS_MASM(masm) masm->
2306 #endif 2314 #endif
2307 2315
2308 #endif // V8_ARM64_MACRO_ASSEMBLER_ARM64_H_ 2316 #endif // V8_ARM64_MACRO_ASSEMBLER_ARM64_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698