cen64/arch/x86_64/rsp/gcc/vmrg.s
Derek "Turtle" Roe c4afd44ed7 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-03 08:18:16 -04:00

63 lines
1.1 KiB
ArmAsm

//
// arch/x86_64/rsp/gcc/vmrg.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_VMRG
.def RSP_VMRG; .scl 2; .type 32; .endef
.seh_proc RSP_VMRG
.ifndef __VECTORCALL__
RSP_VMRG:
movdqa (%r8), %xmm0
movdqa (%r9), %xmm1
#pxor %xmm2, %xmm2
.endif
.else
.global RSP_VMRG
.type RSP_VMRG, @function
RSP_VMRG:
.endif
.ifdef __AVX__
vpblendvb vcc_lo, %xmm1, %xmm0, %xmm0
pxor vco_lo, vco_lo
movdqa %xmm0, acc_lo
pxor vco_hi, vco_hi
retq
.elseif __SSE4_1__ == 1
movdqa %xmm0, acc_lo
movdqa vcc_lo, %xmm0
pxor vco_lo, vco_lo
pblendvb %xmm0, %xmm1, acc_lo
pxor vco_hi, vco_hi
movdqa acc_lo, %xmm0
retq
.else
movdqa vcc_lo, acc_lo
pxor vco_lo, vco_lo
pand acc_lo, %xmm1
pandn %xmm0, acc_lo
pxor vco_hi, vco_hi
por %xmm1, acc_lo
movdqa acc_lo, %xmm0
retq
.endif
.ifdef __MINGW__
.seh_endproc
.else
.size RSP_VMRG,.-RSP_VMRG
.endif