| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- //-------------------------------------------------------------------------------------------------------
- // Copyright (C) Microsoft Corporation and contributors. All rights reserved.
- // Licensed under the MIT license. See LICENSE.txt file in the project root for full license information.
- //-------------------------------------------------------------------------------------------------------
- #pragma once
- namespace Js {
- struct SIMDFloat32x4Operation
- {
- // following are operation wrappers of SIMD.Float32x4 general implementation
- static SIMDValue OpFloat32x4(float x, float y, float z, float w);
- static SIMDValue OpFloat32x4(const SIMDValue& v);
- static SIMDValue OpSplat(float x);
- // conversion
- static SIMDValue OpFromFloat64x2(const SIMDValue& value);
- static SIMDValue OpFromInt32x4(const SIMDValue& value);
- static SIMDValue OpFromUint32x4(const SIMDValue& value);
- // Unary Ops
- static SIMDValue OpAbs(const SIMDValue& v);
- static SIMDValue OpNeg(const SIMDValue& v);
- static SIMDValue OpNot(const SIMDValue& v);
- static SIMDValue OpReciprocal(const SIMDValue& v);
- static SIMDValue OpReciprocalSqrt(const SIMDValue& v);
- static SIMDValue OpSqrt(const SIMDValue& v);
- // Binary Ops
- static SIMDValue OpAdd(const SIMDValue& aValue, const SIMDValue& bValue);
- static SIMDValue OpSub(const SIMDValue& aValue, const SIMDValue& bValue);
- static SIMDValue OpMul(const SIMDValue& aValue, const SIMDValue& bValue);
- static SIMDValue OpDiv(const SIMDValue& aValue, const SIMDValue& bValue);
- static SIMDValue OpAnd(const SIMDValue& aValue, const SIMDValue& bValue);
- static SIMDValue OpOr (const SIMDValue& aValue, const SIMDValue& bValue);
- static SIMDValue OpXor(const SIMDValue& aValue, const SIMDValue& bValue);
- static SIMDValue OpMin(const SIMDValue& aValue, const SIMDValue& bValue);
- static SIMDValue OpMax(const SIMDValue& aValue, const SIMDValue& bValue);
- static SIMDValue OpScale(const SIMDValue& Value, float scaleValue);
- static SIMDValue OpLessThan(const SIMDValue& aValue, const SIMDValue& bValue);
- static SIMDValue OpLessThanOrEqual(const SIMDValue& aValue, const SIMDValue& bValue);
- static SIMDValue OpEqual(const SIMDValue& aValue, const SIMDValue& bValue);
- static SIMDValue OpNotEqual(const SIMDValue& aValue, const SIMDValue& bValue);
- static SIMDValue OpGreaterThan(const SIMDValue& aValue, const SIMDValue& bValue);
- static SIMDValue OpGreaterThanOrEqual(const SIMDValue& aValue, const SIMDValue& bValue);
- static SIMDValue OpClamp(const SIMDValue& value, const SIMDValue& upper, const SIMDValue& lower);
- static SIMDValue OpSelect(const SIMDValue& mV, const SIMDValue& tV, const SIMDValue& fV);
- };
- } // namespace Js
|