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

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

Issue 2778203002: MIPS[64]: Support for some SIMD operations (4) (Closed)
Patch Set: 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 1873 matching lines...) Expand 10 before | Expand all | Expand 10 after
1884 addr_reg, g.TempImmediate(0), g.UseRegisterOrImmediateZero(value)); 1884 addr_reg, g.TempImmediate(0), g.UseRegisterOrImmediateZero(value));
1885 } 1885 }
1886 } 1886 }
1887 1887
1888 void InstructionSelector::VisitAtomicExchange(Node* node) { UNIMPLEMENTED(); } 1888 void InstructionSelector::VisitAtomicExchange(Node* node) { UNIMPLEMENTED(); }
1889 1889
1890 void InstructionSelector::VisitAtomicCompareExchange(Node* node) { 1890 void InstructionSelector::VisitAtomicCompareExchange(Node* node) {
1891 UNIMPLEMENTED(); 1891 UNIMPLEMENTED();
1892 } 1892 }
1893 1893
1894 void InstructionSelector::VisitFloat32x4Abs(Node* node) {
1895 VisitRR(this, kMipsFloat32x4Abs, node);
1896 }
1897
1898 void InstructionSelector::VisitFloat32x4Neg(Node* node) {
1899 VisitRR(this, kMipsFloat32x4Neg, node);
1900 }
1901
1902 void InstructionSelector::VisitFloat32x4RecipApprox(Node* node) {
1903 VisitRR(this, kMipsFloat32x4RecipApprox, node);
1904 }
1905
1906 void InstructionSelector::VisitFloat32x4RecipRefine(Node* node) {
1907 VisitRRR(this, kMipsFloat32x4RecipRefine, node);
1908 }
1909
1910 void InstructionSelector::VisitFloat32x4RecipSqrtApprox(Node* node) {
1911 VisitRR(this, kMipsFloat32x4RecipSqrtApprox, node);
1912 }
1913
1914 void InstructionSelector::VisitFloat32x4RecipSqrtRefine(Node* node) {
1915 VisitRRR(this, kMipsFloat32x4RecipSqrtRefine, node);
1916 }
1917
1918 void InstructionSelector::VisitFloat32x4Add(Node* node) {
1919 VisitRRR(this, kMipsFloat32x4Add, node);
1920 }
1921
1922 void InstructionSelector::VisitFloat32x4Sub(Node* node) {
1923 VisitRRR(this, kMipsFloat32x4Sub, node);
1924 }
1925
1926 void InstructionSelector::VisitFloat32x4Mul(Node* node) {
1927 VisitRRR(this, kMipsFloat32x4Mul, node);
1928 }
1929
1930 void InstructionSelector::VisitFloat32x4Max(Node* node) {
1931 VisitRRR(this, kMipsFloat32x4Max, node);
1932 }
1933
1934 void InstructionSelector::VisitFloat32x4Min(Node* node) {
1935 VisitRRR(this, kMipsFloat32x4Min, node);
1936 }
1937
1938 void InstructionSelector::VisitFloat32x4Equal(Node* node) {
1939 VisitRRR(this, kMipsFloat32xEqual, node);
1940 }
1941
1942 void InstructionSelector::VisitFloat32x4NotEqual(Node* node) {
1943 VisitRRR(this, kMipsFloat32x4NotEqual, node);
1944 }
1945
1946 void InstructionSelector::VisitFloat32x4LessThan(Node* node) {
1947 VisitRRR(this, kMipsFloat32xLessThan, node);
1948 }
1949
1950 void InstructionSelector::VisitFloat32x4LessThanOrEqual(Node* node) {
1951 VisitRRR(this, kMipsFloat32xLessThanOrEqual, node);
1952 }
1953
1954 void InstructionSelector::VisitInt32x4FromFloat32x4(Node* node) {
1955 VisitRR(this, kMipsInt32x4FromFloat32x4, node);
1956 }
1957
1958 void InstructionSelector::VisitUint32x4FromFloat32x4(Node* node) {
1959 VisitRR(this, kMipsUint32x4FromFloat32x4, node);
1960 }
1961
1894 // static 1962 // static
1895 MachineOperatorBuilder::Flags 1963 MachineOperatorBuilder::Flags
1896 InstructionSelector::SupportedMachineOperatorFlags() { 1964 InstructionSelector::SupportedMachineOperatorFlags() {
1897 MachineOperatorBuilder::Flags flags = MachineOperatorBuilder::kNoFlags; 1965 MachineOperatorBuilder::Flags flags = MachineOperatorBuilder::kNoFlags;
1898 if ((IsMipsArchVariant(kMips32r2) || IsMipsArchVariant(kMips32r6)) && 1966 if ((IsMipsArchVariant(kMips32r2) || IsMipsArchVariant(kMips32r6)) &&
1899 IsFp64Mode()) { 1967 IsFp64Mode()) {
1900 flags |= MachineOperatorBuilder::kFloat64RoundDown | 1968 flags |= MachineOperatorBuilder::kFloat64RoundDown |
1901 MachineOperatorBuilder::kFloat64RoundUp | 1969 MachineOperatorBuilder::kFloat64RoundUp |
1902 MachineOperatorBuilder::kFloat64RoundTruncate | 1970 MachineOperatorBuilder::kFloat64RoundTruncate |
1903 MachineOperatorBuilder::kFloat64RoundTiesEven; 1971 MachineOperatorBuilder::kFloat64RoundTiesEven;
(...skipping 22 matching lines...) Expand all
1926 DCHECK(IsMipsArchVariant(kLoongson) || IsMipsArchVariant(kMips32r1) || 1994 DCHECK(IsMipsArchVariant(kLoongson) || IsMipsArchVariant(kMips32r1) ||
1927 IsMipsArchVariant(kMips32r2)); 1995 IsMipsArchVariant(kMips32r2));
1928 return MachineOperatorBuilder::AlignmentRequirements:: 1996 return MachineOperatorBuilder::AlignmentRequirements::
1929 NoUnalignedAccessSupport(); 1997 NoUnalignedAccessSupport();
1930 } 1998 }
1931 } 1999 }
1932 2000
1933 } // namespace compiler 2001 } // namespace compiler
1934 } // namespace internal 2002 } // namespace internal
1935 } // namespace v8 2003 } // namespace v8
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698