| OLD | NEW |
| 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/compiler/code-generator.h" | 5 #include "src/compiler/code-generator.h" |
| 6 #include "src/compilation-info.h" | 6 #include "src/compilation-info.h" |
| 7 #include "src/compiler/code-generator-impl.h" | 7 #include "src/compiler/code-generator-impl.h" |
| 8 #include "src/compiler/gap-resolver.h" | 8 #include "src/compiler/gap-resolver.h" |
| 9 #include "src/compiler/node-matchers.h" | 9 #include "src/compiler/node-matchers.h" |
| 10 #include "src/compiler/osr.h" | 10 #include "src/compiler/osr.h" |
| (...skipping 2094 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2105 case kMips64F32x4Neg: { | 2105 case kMips64F32x4Neg: { |
| 2106 CpuFeatureScope msa_scope(masm(), MIPS_SIMD); | 2106 CpuFeatureScope msa_scope(masm(), MIPS_SIMD); |
| 2107 __ bnegi_w(i.OutputSimd128Register(), i.InputSimd128Register(0), 31); | 2107 __ bnegi_w(i.OutputSimd128Register(), i.InputSimd128Register(0), 31); |
| 2108 break; | 2108 break; |
| 2109 } | 2109 } |
| 2110 case kMips64F32x4RecipApprox: { | 2110 case kMips64F32x4RecipApprox: { |
| 2111 CpuFeatureScope msa_scope(masm(), MIPS_SIMD); | 2111 CpuFeatureScope msa_scope(masm(), MIPS_SIMD); |
| 2112 __ frcp_w(i.OutputSimd128Register(), i.InputSimd128Register(0)); | 2112 __ frcp_w(i.OutputSimd128Register(), i.InputSimd128Register(0)); |
| 2113 break; | 2113 break; |
| 2114 } | 2114 } |
| 2115 case kMips64F32x4RecipRefine: { | |
| 2116 CpuFeatureScope msa_scope(masm(), MIPS_SIMD); | |
| 2117 Simd128Register dst = i.OutputSimd128Register(); | |
| 2118 // Emulate with 2.0f - a * b | |
| 2119 __ ldi_w(kSimd128ScratchReg, 2); | |
| 2120 __ ffint_u_w(kSimd128ScratchReg, kSimd128ScratchReg); | |
| 2121 __ fmul_w(dst, i.InputSimd128Register(0), i.InputSimd128Register(1)); | |
| 2122 __ fsub_w(dst, kSimd128ScratchReg, dst); | |
| 2123 break; | |
| 2124 } | |
| 2125 case kMips64F32x4RecipSqrtApprox: { | 2115 case kMips64F32x4RecipSqrtApprox: { |
| 2126 CpuFeatureScope msa_scope(masm(), MIPS_SIMD); | 2116 CpuFeatureScope msa_scope(masm(), MIPS_SIMD); |
| 2127 __ frsqrt_w(i.OutputSimd128Register(), i.InputSimd128Register(0)); | 2117 __ frsqrt_w(i.OutputSimd128Register(), i.InputSimd128Register(0)); |
| 2128 break; | 2118 break; |
| 2129 } | 2119 } |
| 2130 case kMips64F32x4RecipSqrtRefine: { | |
| 2131 CpuFeatureScope msa_scope(masm(), MIPS_SIMD); | |
| 2132 Simd128Register dst = i.OutputSimd128Register(); | |
| 2133 // Emulate with (3.0f - a * b) * 0.5f; | |
| 2134 __ ldi_w(kSimd128ScratchReg, 3); | |
| 2135 __ ffint_u_w(kSimd128ScratchReg, kSimd128ScratchReg); | |
| 2136 __ fmul_w(dst, i.InputSimd128Register(0), i.InputSimd128Register(1)); | |
| 2137 __ fsub_w(dst, kSimd128ScratchReg, dst); | |
| 2138 __ ldi_w(kSimd128ScratchReg, 0x3f); | |
| 2139 __ slli_w(kSimd128ScratchReg, kSimd128ScratchReg, 24); | |
| 2140 __ fmul_w(dst, dst, kSimd128ScratchReg); | |
| 2141 break; | |
| 2142 } | |
| 2143 case kMips64F32x4Add: { | 2120 case kMips64F32x4Add: { |
| 2144 CpuFeatureScope msa_scope(masm(), MIPS_SIMD); | 2121 CpuFeatureScope msa_scope(masm(), MIPS_SIMD); |
| 2145 __ fadd_w(i.OutputSimd128Register(), i.InputSimd128Register(0), | 2122 __ fadd_w(i.OutputSimd128Register(), i.InputSimd128Register(0), |
| 2146 i.InputSimd128Register(1)); | 2123 i.InputSimd128Register(1)); |
| 2147 break; | 2124 break; |
| 2148 } | 2125 } |
| 2149 case kMips64F32x4Sub: { | 2126 case kMips64F32x4Sub: { |
| 2150 CpuFeatureScope msa_scope(masm(), MIPS_SIMD); | 2127 CpuFeatureScope msa_scope(masm(), MIPS_SIMD); |
| 2151 __ fsub_w(i.OutputSimd128Register(), i.InputSimd128Register(0), | 2128 __ fsub_w(i.OutputSimd128Register(), i.InputSimd128Register(0), |
| 2152 i.InputSimd128Register(1)); | 2129 i.InputSimd128Register(1)); |
| (...skipping 810 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2963 padding_size -= v8::internal::Assembler::kInstrSize; | 2940 padding_size -= v8::internal::Assembler::kInstrSize; |
| 2964 } | 2941 } |
| 2965 } | 2942 } |
| 2966 } | 2943 } |
| 2967 | 2944 |
| 2968 #undef __ | 2945 #undef __ |
| 2969 | 2946 |
| 2970 } // namespace compiler | 2947 } // namespace compiler |
| 2971 } // namespace internal | 2948 } // namespace internal |
| 2972 } // namespace v8 | 2949 } // namespace v8 |
| OLD | NEW |