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

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

Issue 194753002: A64: Fix Fmov with signalling NaN literals. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 6 years, 9 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
« no previous file with comments | « src/a64/assembler-a64.cc ('k') | src/a64/macro-assembler-a64-inl.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 339 matching lines...) Expand 10 before | Expand all | Expand 10 after
350 const FPRegister& fn, 350 const FPRegister& fn,
351 const FPRegister& fm); 351 const FPRegister& fm);
352 inline void Fmin(const FPRegister& fd, 352 inline void Fmin(const FPRegister& fd,
353 const FPRegister& fn, 353 const FPRegister& fn,
354 const FPRegister& fm); 354 const FPRegister& fm);
355 inline void Fminnm(const FPRegister& fd, 355 inline void Fminnm(const FPRegister& fd,
356 const FPRegister& fn, 356 const FPRegister& fn,
357 const FPRegister& fm); 357 const FPRegister& fm);
358 inline void Fmov(FPRegister fd, FPRegister fn); 358 inline void Fmov(FPRegister fd, FPRegister fn);
359 inline void Fmov(FPRegister fd, Register rn); 359 inline void Fmov(FPRegister fd, Register rn);
360 // Provide explicit double and float interfaces for FP immediate moves, rather
361 // than relying on implicit C++ casts. This allows signalling NaNs to be
362 // preserved when the immediate matches the format of fd. Most systems convert
363 // signalling NaNs to quiet NaNs when converting between float and double.
360 inline void Fmov(FPRegister fd, double imm); 364 inline void Fmov(FPRegister fd, double imm);
365 inline void Fmov(FPRegister fd, float imm);
366 // Provide a template to allow other types to be converted automatically.
367 template<typename T>
368 void Fmov(FPRegister fd, T imm) {
369 ASSERT(allow_macro_instructions_);
370 Fmov(fd, static_cast<double>(imm));
371 }
361 inline void Fmov(Register rd, FPRegister fn); 372 inline void Fmov(Register rd, FPRegister fn);
362 inline void Fmsub(const FPRegister& fd, 373 inline void Fmsub(const FPRegister& fd,
363 const FPRegister& fn, 374 const FPRegister& fn,
364 const FPRegister& fm, 375 const FPRegister& fm,
365 const FPRegister& fa); 376 const FPRegister& fa);
366 inline void Fmul(const FPRegister& fd, 377 inline void Fmul(const FPRegister& fd,
367 const FPRegister& fn, 378 const FPRegister& fn,
368 const FPRegister& fm); 379 const FPRegister& fm);
369 inline void Fneg(const FPRegister& fd, const FPRegister& fn); 380 inline void Fneg(const FPRegister& fd, const FPRegister& fn);
370 inline void Fnmadd(const FPRegister& fd, 381 inline void Fnmadd(const FPRegister& fd,
(...skipping 16 matching lines...) Expand all
387 inline void Isb(); 398 inline void Isb();
388 inline void Ldnp(const CPURegister& rt, 399 inline void Ldnp(const CPURegister& rt,
389 const CPURegister& rt2, 400 const CPURegister& rt2,
390 const MemOperand& src); 401 const MemOperand& src);
391 inline void Ldp(const CPURegister& rt, 402 inline void Ldp(const CPURegister& rt,
392 const CPURegister& rt2, 403 const CPURegister& rt2,
393 const MemOperand& src); 404 const MemOperand& src);
394 inline void Ldpsw(const Register& rt, 405 inline void Ldpsw(const Register& rt,
395 const Register& rt2, 406 const Register& rt2,
396 const MemOperand& src); 407 const MemOperand& src);
408 // Provide both double and float interfaces for FP immediate loads, rather
409 // than relying on implicit C++ casts. This allows signalling NaNs to be
410 // preserved when the immediate matches the format of fd. Most systems convert
411 // signalling NaNs to quiet NaNs when converting between float and double.
397 inline void Ldr(const FPRegister& ft, double imm); 412 inline void Ldr(const FPRegister& ft, double imm);
413 inline void Ldr(const FPRegister& ft, float imm);
398 inline void Ldr(const Register& rt, uint64_t imm); 414 inline void Ldr(const Register& rt, uint64_t imm);
399 inline void Lsl(const Register& rd, const Register& rn, unsigned shift); 415 inline void Lsl(const Register& rd, const Register& rn, unsigned shift);
400 inline void Lsl(const Register& rd, const Register& rn, const Register& rm); 416 inline void Lsl(const Register& rd, const Register& rn, const Register& rm);
401 inline void Lsr(const Register& rd, const Register& rn, unsigned shift); 417 inline void Lsr(const Register& rd, const Register& rn, unsigned shift);
402 inline void Lsr(const Register& rd, const Register& rn, const Register& rm); 418 inline void Lsr(const Register& rd, const Register& rn, const Register& rm);
403 inline void Madd(const Register& rd, 419 inline void Madd(const Register& rd,
404 const Register& rn, 420 const Register& rn,
405 const Register& rm, 421 const Register& rm,
406 const Register& ra); 422 const Register& ra);
407 inline void Mneg(const Register& rd, const Register& rn, const Register& rm); 423 inline void Mneg(const Register& rd, const Register& rn, const Register& rm);
(...skipping 1866 matching lines...) Expand 10 before | Expand all | Expand 10 after
2274 #error "Unsupported option" 2290 #error "Unsupported option"
2275 #define CODE_COVERAGE_STRINGIFY(x) #x 2291 #define CODE_COVERAGE_STRINGIFY(x) #x
2276 #define CODE_COVERAGE_TOSTRING(x) CODE_COVERAGE_STRINGIFY(x) 2292 #define CODE_COVERAGE_TOSTRING(x) CODE_COVERAGE_STRINGIFY(x)
2277 #define __FILE_LINE__ __FILE__ ":" CODE_COVERAGE_TOSTRING(__LINE__) 2293 #define __FILE_LINE__ __FILE__ ":" CODE_COVERAGE_TOSTRING(__LINE__)
2278 #define ACCESS_MASM(masm) masm->stop(__FILE_LINE__); masm-> 2294 #define ACCESS_MASM(masm) masm->stop(__FILE_LINE__); masm->
2279 #else 2295 #else
2280 #define ACCESS_MASM(masm) masm-> 2296 #define ACCESS_MASM(masm) masm->
2281 #endif 2297 #endif
2282 2298
2283 #endif // V8_A64_MACRO_ASSEMBLER_A64_H_ 2299 #endif // V8_A64_MACRO_ASSEMBLER_A64_H_
OLDNEW
« no previous file with comments | « src/a64/assembler-a64.cc ('k') | src/a64/macro-assembler-a64-inl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698