blob: 9f9c40509fe82436e61ac47d7c3050c4c82a82b4 [file]
//-------------------------------------------------------------------------------------------------------
// 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