Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions .github/workflows/arm64test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -37,13 +37,13 @@ jobs:
fail-fast: false

matrix:
build_type: [arm64-Release]
build_type: [arm64-Debug, arm64-Release]

steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1

- name: Clone test repository
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
repository: walbourn/directxmathtest
path: Tests
Expand Down
36 changes: 18 additions & 18 deletions Inc/DirectXMathVector.inl
Original file line number Diff line number Diff line change
Expand Up @@ -10834,40 +10834,40 @@ _Use_decl_annotations_ inline XMFLOAT3* XM_CALLCONV XMVector3ProjectStream(XMFLO
pInputVector += sizeof(XMFLOAT3) * 4;

float32x2_t r3 = vget_low_f32(Transform.r[3]);
float32x2_t r = vget_low_f32(Transform.r[0]);
XMVECTOR vResult0 = vmlaq_lane_f32(vdupq_lane_f32(r3, 0), V.val[0], r, 0); // Ax+M
XMVECTOR vResult1 = vmlaq_lane_f32(vdupq_lane_f32(r3, 1), V.val[0], r, 1); // Bx+N
float32x2_t r = vget_low_f32(Transform.r[2]);
XMVECTOR vResult0 = vmlaq_lane_f32(vdupq_lane_f32(r3, 0), V.val[2], r, 0); // Iz+M
XMVECTOR vResult1 = vmlaq_lane_f32(vdupq_lane_f32(r3, 1), V.val[2], r, 1); // Jz+N

XM_PREFETCH(pInputVector);

r3 = vget_high_f32(Transform.r[3]);
r = vget_high_f32(Transform.r[0]);
XMVECTOR vResult2 = vmlaq_lane_f32(vdupq_lane_f32(r3, 0), V.val[0], r, 0); // Cx+O
XMVECTOR W = vmlaq_lane_f32(vdupq_lane_f32(r3, 1), V.val[0], r, 1); // Dx+P
r = vget_high_f32(Transform.r[2]);
XMVECTOR vResult2 = vmlaq_lane_f32(vdupq_lane_f32(r3, 0), V.val[2], r, 0); // Kz+O
XMVECTOR W = vmlaq_lane_f32(vdupq_lane_f32(r3, 1), V.val[2], r, 1); // Lz+P

XM_PREFETCH(pInputVector + XM_CACHE_LINE_SIZE);

r = vget_low_f32(Transform.r[1]);
vResult0 = vmlaq_lane_f32(vResult0, V.val[1], r, 0); // Ax+Ey+M
vResult1 = vmlaq_lane_f32(vResult1, V.val[1], r, 1); // Bx+Fy+N
vResult0 = vmlaq_lane_f32(vResult0, V.val[1], r, 0); // Ey+Iz+M
vResult1 = vmlaq_lane_f32(vResult1, V.val[1], r, 1); // Fy+Jz+N

XM_PREFETCH(pInputVector + (XM_CACHE_LINE_SIZE * 2));

r = vget_high_f32(Transform.r[1]);
vResult2 = vmlaq_lane_f32(vResult2, V.val[1], r, 0); // Cx+Gy+O
W = vmlaq_lane_f32(W, V.val[1], r, 1); // Dx+Hy+P
vResult2 = vmlaq_lane_f32(vResult2, V.val[1], r, 0); // Gy+Kz+O
W = vmlaq_lane_f32(W, V.val[1], r, 1); // Hy+Lz+P

XM_PREFETCH(pInputVector + (XM_CACHE_LINE_SIZE * 3));

r = vget_low_f32(Transform.r[2]);
vResult0 = vmlaq_lane_f32(vResult0, V.val[2], r, 0); // Ax+Ey+Iz+M
vResult1 = vmlaq_lane_f32(vResult1, V.val[2], r, 1); // Bx+Fy+Jz+N
r = vget_low_f32(Transform.r[0]);
vResult0 = vmlaq_lane_f32(vResult0, V.val[0], r, 0); // Ax+Ey+Iz+M
vResult1 = vmlaq_lane_f32(vResult1, V.val[0], r, 1); // Bx+Fy+Jz+N

XM_PREFETCH(pInputVector + (XM_CACHE_LINE_SIZE * 4));

r = vget_high_f32(Transform.r[2]);
vResult2 = vmlaq_lane_f32(vResult2, V.val[2], r, 0); // Cx+Gy+Kz+O
W = vmlaq_lane_f32(W, V.val[2], r, 1); // Dx+Hy+Lz+P
r = vget_high_f32(Transform.r[0]);
vResult2 = vmlaq_lane_f32(vResult2, V.val[0], r, 0); // Cx+Gy+Kz+O
W = vmlaq_lane_f32(W, V.val[0], r, 1); // Dx+Hy+Lz+P

XM_PREFETCH(pInputVector + (XM_CACHE_LINE_SIZE * 5));

Expand Down Expand Up @@ -10912,9 +10912,9 @@ _Use_decl_annotations_ inline XMFLOAT3* XM_CALLCONV XMVector3ProjectStream(XMFLO
float32x2_t VH = vld1_lane_f32(reinterpret_cast<const float*>(pInputVector) + 2, zero, 0);
pInputVector += InputStride;

XMVECTOR vResult = vmlaq_lane_f32(Transform.r[3], Transform.r[0], VL, 0); // X
XMVECTOR vResult = vmlaq_lane_f32(Transform.r[3], Transform.r[2], VH, 0); // Z
vResult = vmlaq_lane_f32(vResult, Transform.r[1], VL, 1); // Y
vResult = vmlaq_lane_f32(vResult, Transform.r[2], VH, 0); // Z
vResult = vmlaq_lane_f32(vResult, Transform.r[0], VL, 0); // X

VH = vget_high_f32(vResult);
XMVECTOR W = vdupq_lane_f32(VH, 1);
Expand Down
Loading