cen64/arch/x86_64/rsp/gcc/vabs.s
Derek "Turtle" Roe 8b89df2fdc See long description
Replaced all references to simulation with emulation
Updated copyright year
Updated .gitignore to reduce chances of random files being uploaded to
the repo
Added .gitattributes to normalize all text files, and to ignore binary
files (which includes the logo and the NEC PDF)
2015-07-01 18:44:21 -05:00

63 lines
1.1 KiB
ArmAsm

//
// arch/x86_64/rsp/gcc/vabs.s
//
// CEN64: Cycle-Accurate Nintendo 64 Emulator.
// Copyright (C) 2015, Tyler J. Stachecki.
//
// This file is subject to the terms and conditions defined in
// 'LICENSE', which is part of this source code package.
//
.include "rsp/gcc/defs.h"
.text
.ifdef __MINGW__
.globl RSP_VABS
.def RSP_VABS; .scl 2; .type 32; .endef
.seh_proc RSP_VABS
.ifndef __VECTORCALL__
RSP_VABS:
movdqa (%r8), %xmm0
movdqa (%r9), %xmm1
pxor %xmm2, %xmm2
.endif
.else
.global RSP_VABS
.type RSP_VABS, @function
RSP_VABS:
.endif
.ifdef __AVX__
vpsraw $0xf, %xmm1, %xmm3
vpsignw %xmm1, %xmm0, acc_lo
vpaddw %xmm3, acc_lo, %xmm2
vpsubsw %xmm3, %xmm2, %xmm0
retq
.elseif __SSSE3__ == 1
psignw %xmm1, %xmm0
psraw $0xF, %xmm1
movdqa %xmm0, acc_lo
paddw %xmm1, %xmm0
psubsw %xmm1, %xmm0
retq
.else
pcmpeqw %xmm1, %xmm2
psraw $0xF, %xmm1
pandn %xmm0, %xmm2
pxor %xmm1, %xmm2
movdqa %xmm2, acc_lo
psubsw %xmm1, %xmm2
psubw %xmm1, acc_lo
movdqa %xmm2, %xmm0
retq
.endif
.ifdef __MINGW__
.seh_endproc
.else
.size RSP_VABS,.-RSP_VABS
.endif