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

Side by Side Diff: src/compiler/ia32/code-generator-ia32.cc

Issue 2060233002: [turbofan] Prevent storing signalling NaNs into holey double arrays. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Test Created 4 years, 6 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
OLDNEW
1 // Copyright 2013 the V8 project authors. All rights reserved. 1 // Copyright 2013 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "src/compiler/code-generator.h" 5 #include "src/compiler/code-generator.h"
6 6
7 #include "src/ast/scopes.h" 7 #include "src/ast/scopes.h"
8 #include "src/compiler/code-generator-impl.h" 8 #include "src/compiler/code-generator-impl.h"
9 #include "src/compiler/gap-resolver.h" 9 #include "src/compiler/gap-resolver.h"
10 #include "src/compiler/node-matchers.h" 10 #include "src/compiler/node-matchers.h"
(...skipping 1124 matching lines...) Expand 10 before | Expand all | Expand 10 after
1135 break; 1135 break;
1136 } 1136 }
1137 case kAVXFloat64Neg: { 1137 case kAVXFloat64Neg: {
1138 // TODO(bmeurer): Use RIP relative 128-bit constants. 1138 // TODO(bmeurer): Use RIP relative 128-bit constants.
1139 __ pcmpeqd(kScratchDoubleReg, kScratchDoubleReg); 1139 __ pcmpeqd(kScratchDoubleReg, kScratchDoubleReg);
1140 __ psllq(kScratchDoubleReg, 63); 1140 __ psllq(kScratchDoubleReg, 63);
1141 CpuFeatureScope avx_scope(masm(), AVX); 1141 CpuFeatureScope avx_scope(masm(), AVX);
1142 __ vxorpd(i.OutputDoubleRegister(), kScratchDoubleReg, i.InputOperand(0)); 1142 __ vxorpd(i.OutputDoubleRegister(), kScratchDoubleReg, i.InputOperand(0));
1143 break; 1143 break;
1144 } 1144 }
1145 case kSSEFloat64SilenceNaN:
1146 __ xorpd(kScratchDoubleReg, kScratchDoubleReg);
1147 __ subsd(i.InputDoubleRegister(0), kScratchDoubleReg);
1148 break;
1145 case kIA32Movsxbl: 1149 case kIA32Movsxbl:
1146 __ movsx_b(i.OutputRegister(), i.MemoryOperand()); 1150 __ movsx_b(i.OutputRegister(), i.MemoryOperand());
1147 break; 1151 break;
1148 case kIA32Movzxbl: 1152 case kIA32Movzxbl:
1149 __ movzx_b(i.OutputRegister(), i.MemoryOperand()); 1153 __ movzx_b(i.OutputRegister(), i.MemoryOperand());
1150 break; 1154 break;
1151 case kIA32Movb: { 1155 case kIA32Movb: {
1152 size_t index = 0; 1156 size_t index = 0;
1153 Operand operand = i.MemoryOperand(&index); 1157 Operand operand = i.MemoryOperand(&index);
1154 if (HasImmediateInput(instr, index)) { 1158 if (HasImmediateInput(instr, index)) {
(...skipping 828 matching lines...) Expand 10 before | Expand all | Expand 10 after
1983 int padding_size = last_lazy_deopt_pc_ + space_needed - current_pc; 1987 int padding_size = last_lazy_deopt_pc_ + space_needed - current_pc;
1984 __ Nop(padding_size); 1988 __ Nop(padding_size);
1985 } 1989 }
1986 } 1990 }
1987 1991
1988 #undef __ 1992 #undef __
1989 1993
1990 } // namespace compiler 1994 } // namespace compiler
1991 } // namespace internal 1995 } // namespace internal
1992 } // namespace v8 1996 } // namespace v8
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698