2025-04-23 00:09:35 -04:00

98 lines
4.8 KiB
C

/*++
Copyright (c) Microsoft Corporation. All rights reserved.
Module Name:
xboxmath.h
Abstract:
Xbox math general library interface to XNA Math
--*/
#pragma once
#ifndef __XBOXMATH2_H__
#define __XBOXMATH2_H__
#if defined(_VMX1_INTRINSICS_) || defined(_VMX32_INTRINSICS_)
#error XNA math does not support VMX1 or VMX32
#endif
#ifdef _NO_INTRINSICS_
#define _XM_NO_INTRINSICS_
#endif
#ifdef _VMX128_INTRINSICS_
#define _XM_VMX128_INTRINSICS_
#endif
#ifdef _NOALIGNMENT_
#define XM_NO_ALIGNMENT
#endif
#include "xnamath.h"
/****************************************************************************
*
* Compatibility types
*
****************************************************************************/
typedef XMFLOAT2A XMFLOAT2A16;
typedef XMFLOAT3A XMFLOAT3A16;
typedef XMFLOAT4A XMFLOAT4A16;
typedef XMFLOAT4X3A XMFLOAT4X3A16;
typedef XMFLOAT4X4A XMFLOAT4X4A16;
typedef XMVECTORU32 XMVECTORI;
/****************************************************************************
*
* Compatibility aliases
*
****************************************************************************/
XMFINLINE XMVECTOR XMLoadScalar(CONST VOID* pSource) { return XMLoadFloat((CONST FLOAT*)pSource); }
XMFINLINE XMVECTOR XMLoadVector2(CONST VOID* pSource) { return XMLoadFloat2((CONST XMFLOAT2*)pSource); }
XMFINLINE XMVECTOR XMLoadVector2A(CONST VOID* pSource) { return XMLoadFloat2A((CONST XMFLOAT2A*)pSource); }
XMFINLINE XMVECTOR XMLoadVector3(CONST VOID* pSource) { return XMLoadFloat3((CONST XMFLOAT3*)pSource); }
XMFINLINE XMVECTOR XMLoadVector3A(CONST VOID* pSource) { return XMLoadFloat3A((CONST XMFLOAT3A*)pSource); }
XMFINLINE XMVECTOR XMLoadVector4(CONST VOID* pSource) { return XMLoadFloat4((CONST XMFLOAT4*)pSource); }
XMFINLINE XMVECTOR XMLoadVector4A(CONST VOID* pSource) { return XMLoadFloat4A((CONST XMFLOAT4A*)pSource); }
XMFINLINE XMVECTOR XMLoadVector2A16(CONST VOID* pSource) { return XMLoadVector2A(pSource); }
XMFINLINE XMVECTOR XMLoadVector3A16(CONST VOID* pSource) { return XMLoadVector3A(pSource); }
XMFINLINE XMVECTOR XMLoadVector4A16(CONST VOID* pSource) { return XMLoadVector4A(pSource); }
XMFINLINE XMVECTOR XMLoadFloat2A16(CONST XMFLOAT2A16* pSource) { return XMLoadFloat2A(pSource); }
XMFINLINE XMVECTOR XMLoadFloat3A16(CONST XMFLOAT3A16* pSource) { return XMLoadFloat3A(pSource); }
XMFINLINE XMVECTOR XMLoadFloat4A16(CONST XMFLOAT4A16* pSource) { return XMLoadFloat4A(pSource); }
XMFINLINE XMMATRIX XMLoadFloat4x3A16(CONST XMFLOAT4X3A16* pSource) { return XMLoadFloat4x3A(pSource); }
XMFINLINE XMMATRIX XMLoadFloat4x4A16(CONST XMFLOAT4X4A16* pSource) { return XMLoadFloat4x4A(pSource); }
XMFINLINE VOID XMStoreScalar(VOID* pDestination, FXMVECTOR V) { XMStoreFloat((FLOAT*)pDestination, V); }
XMFINLINE VOID XMStoreVector2(VOID* pDestination, FXMVECTOR V) { XMStoreFloat2((XMFLOAT2*)pDestination, V); }
XMFINLINE VOID XMStoreVector2A(VOID* pDestination, FXMVECTOR V) { XMStoreFloat2A((XMFLOAT2A*)pDestination, V); }
XMFINLINE VOID XMStoreVector3(VOID* pDestination, FXMVECTOR V) { XMStoreFloat3((XMFLOAT3*)pDestination, V); }
XMFINLINE VOID XMStoreVector3A(VOID* pDestination, FXMVECTOR V) { XMStoreFloat3A((XMFLOAT3A*)pDestination, V); }
XMFINLINE VOID XMStoreVector4(VOID* pDestination, FXMVECTOR V) { XMStoreFloat4((XMFLOAT4*)pDestination, V); }
XMFINLINE VOID XMStoreVector4A(VOID* pDestination, FXMVECTOR V) { XMStoreFloat4A((XMFLOAT4A*)pDestination, V); }
XMFINLINE VOID XMStoreVector4NC(VOID* pDestination, FXMVECTOR V) { XMStoreFloat4NC((XMFLOAT4*)pDestination, V); }
XMFINLINE VOID XMStoreVector2A16(VOID* pDestination, FXMVECTOR V) { XMStoreVector2A(pDestination, V); }
XMFINLINE VOID XMStoreVector3A16(VOID* pDestination, FXMVECTOR V) { XMStoreVector3A(pDestination, V); }
XMFINLINE VOID XMStoreVector4A16(VOID* pDestination, FXMVECTOR V) { XMStoreVector4A(pDestination, V); }
XMFINLINE VOID XMStoreFloat2A16(XMFLOAT2A16* pDestination, FXMVECTOR V) { XMStoreFloat2A(pDestination, V); }
XMFINLINE VOID XMStoreFloat3A16(XMFLOAT3A16* pDestination, FXMVECTOR V) { XMStoreFloat3A(pDestination, V); }
XMFINLINE VOID XMStoreFloat4A16(XMFLOAT4A16* pDestination, FXMVECTOR V) { XMStoreFloat4A(pDestination, V); }
XMFINLINE VOID XMStoreFloat4x3A16(XMFLOAT4X3A16* pDestination, CXMMATRIX M) { XMStoreFloat4x3A(pDestination, M); }
XMFINLINE VOID XMStoreFloat4x4A16(XMFLOAT4X4A16* pDestination, CXMMATRIX M) { XMStoreFloat4x4A(pDestination, M); }
XMFINLINE XMVECTOR XMVectorMinimize(FXMVECTOR V1, FXMVECTOR V2) { return XMVectorMin(V1, V2); }
XMFINLINE XMVECTOR XMVectorMaximize(FXMVECTOR V1, FXMVECTOR V2) { return XMVectorMax(V1, V2); }
#endif // __XBOXMATH2_H__