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

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

Issue 2795143003: MIPS[64]: Support for some SIMD operations (5) (Closed)
Patch Set: Fix x64 build error Created 3 years, 7 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 2077 matching lines...) Expand 10 before | Expand all | Expand 10 after
2088 } 2088 }
2089 2089
2090 void InstructionSelector::VisitI32x4SConvertF32x4(Node* node) { 2090 void InstructionSelector::VisitI32x4SConvertF32x4(Node* node) {
2091 VisitRR(this, kMipsI32x4SConvertF32x4, node); 2091 VisitRR(this, kMipsI32x4SConvertF32x4, node);
2092 } 2092 }
2093 2093
2094 void InstructionSelector::VisitI32x4UConvertF32x4(Node* node) { 2094 void InstructionSelector::VisitI32x4UConvertF32x4(Node* node) {
2095 VisitRR(this, kMipsI32x4UConvertF32x4, node); 2095 VisitRR(this, kMipsI32x4UConvertF32x4, node);
2096 } 2096 }
2097 2097
2098 void InstructionSelector::VisitI32x4Neg(Node* node) {
2099 VisitRR(this, kMipsI32x4Neg, node);
2100 }
2101
2102 void InstructionSelector::VisitI32x4LtS(Node* node) {
2103 VisitRRR(this, kMipsI32x4LtS, node);
2104 }
2105
2106 void InstructionSelector::VisitI32x4LeS(Node* node) {
2107 VisitRRR(this, kMipsI32x4LeS, node);
2108 }
2109
2110 void InstructionSelector::VisitI32x4LtU(Node* node) {
2111 VisitRRR(this, kMipsI32x4LtU, node);
2112 }
2113
2114 void InstructionSelector::VisitI32x4LeU(Node* node) {
2115 VisitRRR(this, kMipsI32x4LeU, node);
2116 }
2117
2118 void InstructionSelector::VisitI16x8Splat(Node* node) {
2119 VisitRR(this, kMipsI16x8Splat, node);
2120 }
2121
2122 void InstructionSelector::VisitI16x8ExtractLane(Node* node) {
2123 VisitRRI(this, kMipsI16x8ExtractLane, node);
2124 }
2125
2126 void InstructionSelector::VisitI16x8ReplaceLane(Node* node) {
2127 VisitRRIR(this, kMipsI16x8ReplaceLane, node);
2128 }
2129
2130 void InstructionSelector::VisitI16x8Neg(Node* node) {
2131 VisitRR(this, kMipsI16x8Neg, node);
2132 }
2133
2134 void InstructionSelector::VisitI16x8Shl(Node* node) {
2135 VisitRRI(this, kMipsI16x8Shl, node);
2136 }
2137
2138 void InstructionSelector::VisitI16x8ShrS(Node* node) {
2139 VisitRRI(this, kMipsI16x8ShrS, node);
2140 }
2141
2142 void InstructionSelector::VisitI16x8ShrU(Node* node) {
2143 VisitRRI(this, kMipsI16x8ShrU, node);
2144 }
2145
2146 void InstructionSelector::VisitI16x8Add(Node* node) {
2147 VisitRRR(this, kMipsI16x8Add, node);
2148 }
2149
2150 void InstructionSelector::VisitI16x8AddSaturateS(Node* node) {
2151 VisitRRR(this, kMipsI16x8AddSaturateS, node);
2152 }
2153
2154 void InstructionSelector::VisitI16x8Sub(Node* node) {
2155 VisitRRR(this, kMipsI16x8Sub, node);
2156 }
2157
2158 void InstructionSelector::VisitI16x8SubSaturateS(Node* node) {
2159 VisitRRR(this, kMipsI16x8SubSaturateS, node);
2160 }
2161
2098 // static 2162 // static
2099 MachineOperatorBuilder::Flags 2163 MachineOperatorBuilder::Flags
2100 InstructionSelector::SupportedMachineOperatorFlags() { 2164 InstructionSelector::SupportedMachineOperatorFlags() {
2101 MachineOperatorBuilder::Flags flags = MachineOperatorBuilder::kNoFlags; 2165 MachineOperatorBuilder::Flags flags = MachineOperatorBuilder::kNoFlags;
2102 if ((IsMipsArchVariant(kMips32r2) || IsMipsArchVariant(kMips32r6)) && 2166 if ((IsMipsArchVariant(kMips32r2) || IsMipsArchVariant(kMips32r6)) &&
2103 IsFp64Mode()) { 2167 IsFp64Mode()) {
2104 flags |= MachineOperatorBuilder::kFloat64RoundDown | 2168 flags |= MachineOperatorBuilder::kFloat64RoundDown |
2105 MachineOperatorBuilder::kFloat64RoundUp | 2169 MachineOperatorBuilder::kFloat64RoundUp |
2106 MachineOperatorBuilder::kFloat64RoundTruncate | 2170 MachineOperatorBuilder::kFloat64RoundTruncate |
2107 MachineOperatorBuilder::kFloat64RoundTiesEven; 2171 MachineOperatorBuilder::kFloat64RoundTiesEven;
(...skipping 22 matching lines...) Expand all
2130 DCHECK(IsMipsArchVariant(kLoongson) || IsMipsArchVariant(kMips32r1) || 2194 DCHECK(IsMipsArchVariant(kLoongson) || IsMipsArchVariant(kMips32r1) ||
2131 IsMipsArchVariant(kMips32r2)); 2195 IsMipsArchVariant(kMips32r2));
2132 return MachineOperatorBuilder::AlignmentRequirements:: 2196 return MachineOperatorBuilder::AlignmentRequirements::
2133 NoUnalignedAccessSupport(); 2197 NoUnalignedAccessSupport();
2134 } 2198 }
2135 } 2199 }
2136 2200
2137 } // namespace compiler 2201 } // namespace compiler
2138 } // namespace internal 2202 } // namespace internal
2139 } // namespace v8 2203 } // namespace v8
OLDNEW
« no previous file with comments | « src/compiler/mips/instruction-codes-mips.h ('k') | src/compiler/mips64/code-generator-mips64.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698