cen64/arch/x86_64/rsp/gcc/vge.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

85 lines
1.6 KiB
ArmAsm

//
// arch/x86_64/rsp/gcc/vge.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_VGE
.def RSP_VGE; .scl 2; .type 32; .endef
.seh_proc RSP_VGE
.ifndef __VECTORCALL__
RSP_VGE:
movdqa (%r8), %xmm0
movdqa (%r9), %xmm1
pxor %xmm2, %xmm2
.endif
.else
.global RSP_VGE
.type RSP_VGE, @function
RSP_VGE:
.endif
.ifdef __AVX__
vpand vco_lo, vco_hi, %xmm2
vpcmpeqw %xmm1, %xmm0, %xmm3
vpcmpgtw %xmm0, %xmm1, %xmm4
pxor vco_hi, vco_hi
pandn %xmm3, %xmm2
pxor vco_lo, vco_lo
vpor %xmm2, %xmm4, vcc_lo
pxor vcc_hi, vcc_hi
vpblendvb vcc_lo, %xmm1, %xmm0, %xmm0
movdqa %xmm0, acc_lo
retq
.elseif __SSE4_1__ == 1
movdqa %xmm0, acc_lo
movdqa %xmm0, %xmm2
movdqa %xmm1, %xmm0
pand vco_lo, vco_hi
pcmpgtw %xmm2, %xmm0
pxor vcc_hi, vcc_hi
pcmpeqw %xmm1, %xmm2
pandn %xmm2, vco_hi
pxor vco_lo, vco_lo
por vco_hi, %xmm0
pxor vco_hi, vco_hi
pblendvb %xmm0, %xmm1, acc_lo
movdqa %xmm0, vcc_lo
movdqa acc_lo, %xmm0
retq
.else
movdqa %xmm1, acc_lo
movdqa %xmm1, %xmm2
pand vco_lo, vco_hi
pcmpgtw %xmm0, %xmm1
pcmpeqw %xmm0, %xmm2
pxor vcc_hi, vcc_hi
pandn %xmm2, vco_hi
pxor vco_lo, vco_lo
por vco_hi, %xmm1
movdqa %xmm1,vcc_lo
pand %xmm1, acc_lo
pandn %xmm0, %xmm1
por %xmm1, acc_lo
movdqa acc_lo, %xmm0
pxor vco_hi, vco_hi
retq
.endif
.ifdef __MINGW__
.seh_endproc
.else
.size RSP_VGE,.-RSP_VGE
.endif