Index: src/x64/macro-assembler-x64.cc |
diff --git a/src/x64/macro-assembler-x64.cc b/src/x64/macro-assembler-x64.cc |
index 407703ef8ffb303d4e46f4f35681edb31aa62a8d..28fa6f512125aae134be84fc749e8493dedb5846 100644 |
--- a/src/x64/macro-assembler-x64.cc |
+++ b/src/x64/macro-assembler-x64.cc |
@@ -2974,6 +2974,32 @@ void MacroAssembler::Ucomisd(XMMRegister src1, const Operand& src2) { |
} |
+// ---------------------------------------------------------------------------- |
+ |
+void MacroAssembler::Absps(XMMRegister dst) { |
+ static const struct V8_ALIGNED(16) { |
+ uint32_t a; |
+ uint32_t b; |
+ uint32_t c; |
+ uint32_t d; |
+ } float_absolute_constant = {0x7FFFFFFF, 0x7FFFFFFF, 0x7FFFFFFF, 0x7FFFFFFF}; |
+ Set(kScratchRegister, reinterpret_cast<intptr_t>(&float_absolute_constant)); |
Benedikt Meurer
2016/07/18 04:47:52
Can we somehow put this somewhere near the roots a
|
+ Andps(dst, Operand(kScratchRegister, 0)); |
+} |
+ |
+ |
+void MacroAssembler::Negps(XMMRegister dst) { |
+ static const struct V8_ALIGNED(16) { |
+ uint32_t a; |
+ uint32_t b; |
+ uint32_t c; |
+ uint32_t d; |
+ } float_negate_constant = {0x80000000, 0x80000000, 0x80000000, 0x80000000}; |
+ Set(kScratchRegister, reinterpret_cast<intptr_t>(&float_negate_constant)); |
+ Xorps(dst, Operand(kScratchRegister, 0)); |
bbudge
2016/07/18 14:08:09
It seems like we could avoid the memory access wit
|
+} |
+ |
+ |
void MacroAssembler::Cmp(Register dst, Handle<Object> source) { |
AllowDeferredHandleDereference smi_check; |
if (source->IsSmi()) { |