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

Side by Side Diff: src/compiler/mips/instruction-selector-mips.cc

Issue 2778203002: MIPS[64]: Support for some SIMD operations (4) (Closed)
Patch Set: rebased Created 3 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
OLDNEW
1 // Copyright 2014 the V8 project authors. All rights reserved. 1 // Copyright 2014 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/base/adapters.h" 5 #include "src/base/adapters.h"
6 #include "src/base/bits.h" 6 #include "src/base/bits.h"
7 #include "src/compiler/instruction-selector-impl.h" 7 #include "src/compiler/instruction-selector-impl.h"
8 #include "src/compiler/node-matchers.h" 8 #include "src/compiler/node-matchers.h"
9 #include "src/compiler/node-properties.h" 9 #include "src/compiler/node-properties.h"
10 10
(...skipping 1937 matching lines...) Expand 10 before | Expand all | Expand 10 after
1948 void InstructionSelector::VisitS1x8Zero(Node* node) { 1948 void InstructionSelector::VisitS1x8Zero(Node* node) {
1949 MipsOperandGenerator g(this); 1949 MipsOperandGenerator g(this);
1950 Emit(kMipsS128Zero, g.DefineSameAsFirst(node)); 1950 Emit(kMipsS128Zero, g.DefineSameAsFirst(node));
1951 } 1951 }
1952 1952
1953 void InstructionSelector::VisitS1x16Zero(Node* node) { 1953 void InstructionSelector::VisitS1x16Zero(Node* node) {
1954 MipsOperandGenerator g(this); 1954 MipsOperandGenerator g(this);
1955 Emit(kMipsS128Zero, g.DefineSameAsFirst(node)); 1955 Emit(kMipsS128Zero, g.DefineSameAsFirst(node));
1956 } 1956 }
1957 1957
1958 void InstructionSelector::VisitF32x4Abs(Node* node) {
1959 VisitRR(this, kMipsF32x4Abs, node);
1960 }
1961
1962 void InstructionSelector::VisitF32x4Neg(Node* node) {
1963 VisitRR(this, kMipsF32x4Neg, node);
1964 }
1965
1966 void InstructionSelector::VisitF32x4RecipApprox(Node* node) {
1967 VisitRR(this, kMipsF32x4RecipApprox, node);
1968 }
1969
1970 void InstructionSelector::VisitF32x4RecipRefine(Node* node) {
1971 VisitRRR(this, kMipsF32x4RecipRefine, node);
1972 }
1973
1974 void InstructionSelector::VisitF32x4RecipSqrtApprox(Node* node) {
1975 VisitRR(this, kMipsF32x4RecipSqrtApprox, node);
1976 }
1977
1978 void InstructionSelector::VisitF32x4RecipSqrtRefine(Node* node) {
1979 VisitRRR(this, kMipsF32x4RecipSqrtRefine, node);
1980 }
1981
1982 void InstructionSelector::VisitF32x4Add(Node* node) {
1983 VisitRRR(this, kMipsF32x4Add, node);
1984 }
1985
1986 void InstructionSelector::VisitF32x4Sub(Node* node) {
1987 VisitRRR(this, kMipsF32x4Sub, node);
1988 }
1989
1990 void InstructionSelector::VisitF32x4Mul(Node* node) {
1991 VisitRRR(this, kMipsF32x4Mul, node);
1992 }
1993
1994 void InstructionSelector::VisitF32x4Max(Node* node) {
1995 VisitRRR(this, kMipsF32x4Max, node);
1996 }
1997
1998 void InstructionSelector::VisitF32x4Min(Node* node) {
1999 VisitRRR(this, kMipsF32x4Min, node);
2000 }
2001
2002 void InstructionSelector::VisitF32x4Eq(Node* node) {
2003 VisitRRR(this, kMipsF32x4Eq, node);
2004 }
2005
2006 void InstructionSelector::VisitF32x4Ne(Node* node) {
2007 VisitRRR(this, kMipsF32x4Ne, node);
2008 }
2009
2010 void InstructionSelector::VisitF32x4Lt(Node* node) {
2011 VisitRRR(this, kMipsF32x4Lt, node);
2012 }
2013
2014 void InstructionSelector::VisitF32x4Le(Node* node) {
2015 VisitRRR(this, kMipsF32x4Le, node);
2016 }
2017
2018 void InstructionSelector::VisitI32x4SConvertF32x4(Node* node) {
2019 VisitRR(this, kMipsI32x4SConvertF32x4, node);
2020 }
2021
2022 void InstructionSelector::VisitI32x4UConvertF32x4(Node* node) {
2023 VisitRR(this, kMipsI32x4UConvertF32x4, node);
2024 }
2025
1958 // static 2026 // static
1959 MachineOperatorBuilder::Flags 2027 MachineOperatorBuilder::Flags
1960 InstructionSelector::SupportedMachineOperatorFlags() { 2028 InstructionSelector::SupportedMachineOperatorFlags() {
1961 MachineOperatorBuilder::Flags flags = MachineOperatorBuilder::kNoFlags; 2029 MachineOperatorBuilder::Flags flags = MachineOperatorBuilder::kNoFlags;
1962 if ((IsMipsArchVariant(kMips32r2) || IsMipsArchVariant(kMips32r6)) && 2030 if ((IsMipsArchVariant(kMips32r2) || IsMipsArchVariant(kMips32r6)) &&
1963 IsFp64Mode()) { 2031 IsFp64Mode()) {
1964 flags |= MachineOperatorBuilder::kFloat64RoundDown | 2032 flags |= MachineOperatorBuilder::kFloat64RoundDown |
1965 MachineOperatorBuilder::kFloat64RoundUp | 2033 MachineOperatorBuilder::kFloat64RoundUp |
1966 MachineOperatorBuilder::kFloat64RoundTruncate | 2034 MachineOperatorBuilder::kFloat64RoundTruncate |
1967 MachineOperatorBuilder::kFloat64RoundTiesEven; 2035 MachineOperatorBuilder::kFloat64RoundTiesEven;
(...skipping 22 matching lines...) Expand all
1990 DCHECK(IsMipsArchVariant(kLoongson) || IsMipsArchVariant(kMips32r1) || 2058 DCHECK(IsMipsArchVariant(kLoongson) || IsMipsArchVariant(kMips32r1) ||
1991 IsMipsArchVariant(kMips32r2)); 2059 IsMipsArchVariant(kMips32r2));
1992 return MachineOperatorBuilder::AlignmentRequirements:: 2060 return MachineOperatorBuilder::AlignmentRequirements::
1993 NoUnalignedAccessSupport(); 2061 NoUnalignedAccessSupport();
1994 } 2062 }
1995 } 2063 }
1996 2064
1997 } // namespace compiler 2065 } // namespace compiler
1998 } // namespace internal 2066 } // namespace internal
1999 } // namespace v8 2067 } // namespace v8
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698