Lines Matching refs:src
5 #include "src/codegen/shared-ia32-x64/macro-assembler-shared-ia32-x64.h"
7 #include "src/codegen/assembler.h"
8 #include "src/codegen/cpu-features.h"
9 #include "src/codegen/register.h"
12 #include "src/codegen/ia32/register-ia32.h"
14 #include "src/codegen/x64/register-x64.h"
20 // should call I8x16Splat |src| being Register.
30 void SharedTurboAssembler::Move(Register dst, uint32_t src) {
33 mov(dst, Immediate(src));
35 movl(dst, Immediate(src));
41 void SharedTurboAssembler::Move(Register dst, Register src) {
43 if (dst != src) {
45 mov(dst, src);
47 movq(dst, src);
54 void SharedTurboAssembler::Add(Register dst, Immediate src) {
57 add(dst, src);
59 addq(dst, src);
65 void SharedTurboAssembler::And(Register dst, Immediate src) {
68 and_(dst, src);
70 if (is_uint32(src.value())) {
71 andl(dst, src);
73 andq(dst, src);
132 void SharedTurboAssembler::F64x2ExtractLane(DoubleRegister dst, XMMRegister src,
136 if (dst != src) {
137 Movaps(dst, src);
143 // Pass src as operand to avoid false-dependency on dst.
144 vmovhlps(dst, src, src);
146 movhlps(dst, src);
151 void SharedTurboAssembler::F64x2ReplaceLane(XMMRegister dst, XMMRegister src,
157 vmovsd(dst, src, rep);
159 vmovlhps(dst, src, rep);
163 if (dst != src) {
165 movaps(dst, src);
185 XMMRegister src = dst == lhs ? rhs : lhs;
186 movaps(scratch, src);
188 minps(dst, src);
214 XMMRegister src = dst == lhs ? rhs : lhs;
215 movaps(scratch, src);
217 maxps(dst, src);
256 XMMRegister src = dst == lhs ? rhs : lhs;
257 movaps(scratch, src);
259 minpd(dst, src);
295 XMMRegister src = dst == lhs ? rhs : lhs;
296 movaps(scratch, src);
298 maxpd(dst, src);
314 void SharedTurboAssembler::F32x4Splat(XMMRegister dst, DoubleRegister src) {
318 vbroadcastss(dst, src);
321 vshufps(dst, src, src, 0);
323 if (dst == src) {
325 shufps(dst, src, 0);
327 pshufd(dst, src, 0);
332 void SharedTurboAssembler::F32x4ExtractLane(FloatRegister dst, XMMRegister src,
339 if (dst != src) {
340 Movaps(dst, src);
343 Movshdup(dst, src);
344 } else if (lane == 2 && dst == src) {
345 // Check dst == src to avoid false dependency on dst.
346 Movhlps(dst, src);
347 } else if (dst == src) {
348 Shufps(dst, src, src, lane);
350 Pshufd(dst, src, lane);
354 void SharedTurboAssembler::S128Store32Lane(Operand dst, XMMRegister src,
358 Movss(dst, src);
361 Extractps(dst, src, laneidx);
366 void SharedTurboAssembler::I8x16SplatPreAvx2(XMMRegister dst, Op src,
371 Movd(dst, src);
376 void SharedTurboAssembler::I8x16Splat(XMMRegister dst, Register src,
381 Movd(scratch, src);
384 I8x16SplatPreAvx2(dst, src, scratch);
388 void SharedTurboAssembler::I8x16Splat(XMMRegister dst, Operand src,
391 DCHECK_OPERAND_IS_NOT_REG(src);
394 vpbroadcastb(dst, src);
396 I8x16SplatPreAvx2(dst, src, scratch);
528 void SharedTurboAssembler::I16x8SplatPreAvx2(XMMRegister dst, Op src) {
530 Movd(dst, src);
535 void SharedTurboAssembler::I16x8Splat(XMMRegister dst, Register src) {
539 Movd(dst, src);
542 I16x8SplatPreAvx2(dst, src);
546 void SharedTurboAssembler::I16x8Splat(XMMRegister dst, Operand src) {
548 DCHECK_OPERAND_IS_NOT_REG(src);
551 vpbroadcastw(dst, src);
553 I16x8SplatPreAvx2(dst, src);
641 XMMRegister src) {
645 // src = |a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p| (high)
647 vpunpckhbw(dst, src, src);
651 if (dst == src) {
653 movhlps(dst, src);
657 pshufd(dst, src, 0xEE);
664 XMMRegister src,
670 // src = |a|b|c|d|e|f|g|h | i|j|k|l|m|n|o|p|
672 XMMRegister tmp = dst == src ? scratch : dst;
674 vpunpckhbw(dst, src, tmp);
677 if (dst == src) {
683 pshufd(dst, src, 0xEE);
708 XMMRegister src,
713 // src = |a|b|c|d|e|f|g|h| (low)
715 vpsrld(tmp, src, 16);
717 vpblendw(dst, src, tmp, 0xAA);
724 movaps(tmp, src);
726 if (dst != src) {
727 movaps(dst, src);
732 // src = |a|b|c|d|e|f|g|h|
737 andps(tmp, src);
739 if (dst != src) {
740 movaps(dst, src);
770 XMMRegister src) {
774 // src = |a|b|c|d|e|f|g|h| (high)
776 vpunpckhwd(dst, src, src);
780 if (dst == src) {
782 movhlps(dst, src);
786 pshufd(dst, src, 0xEE);
793 XMMRegister src,
799 // src = |a|b|c|d|e|f|g|h|
801 XMMRegister tmp = dst == src ? scratch : dst;
803 vpunpckhwd(dst, src, tmp);
805 if (dst == src) {
812 pshufd(dst, src, 0xEE);
818 void SharedTurboAssembler::I64x2Neg(XMMRegister dst, XMMRegister src,
824 vpsubq(dst, scratch, src);
826 if (dst == src) {
827 movaps(scratch, src);
828 std::swap(src, scratch);
831 psubq(dst, src);
835 void SharedTurboAssembler::I64x2Abs(XMMRegister dst, XMMRegister src,
840 XMMRegister tmp = dst == src ? scratch : dst;
842 vpsubq(tmp, tmp, src);
843 vblendvpd(dst, src, tmp, src);
846 movshdup(scratch, src);
847 if (dst != src) {
848 movaps(dst, src);
925 void SharedTurboAssembler::I64x2ShrS(XMMRegister dst, XMMRegister src,
930 DCHECK_NE(xmm_tmp, src);
944 if (!CpuFeatures::IsSupported(AVX) && (dst != src)) {
945 movaps(dst, src);
946 src = dst;
950 Pxor(dst, src, xmm_tmp);
958 void SharedTurboAssembler::I64x2ShrS(XMMRegister dst, XMMRegister src,
964 DCHECK_NE(xmm_tmp, src);
966 DCHECK_NE(xmm_shift, src);
978 if (!CpuFeatures::IsSupported(AVX) && (dst != src)) {
979 movaps(dst, src);
980 src = dst;
982 Pxor(dst, src, xmm_tmp);
1070 XMMRegister src) {
1074 vpunpckhqdq(dst, src, src);
1078 if (dst == src) {
1079 movhlps(dst, src);
1081 pshufd(dst, src, 0xEE);
1088 XMMRegister src,
1094 vpunpckhdq(dst, src, scratch);
1096 if (dst == src) {
1103 pshufd(dst, src, 0xEE);
1109 void SharedTurboAssembler::S128Not(XMMRegister dst, XMMRegister src,
1112 if (dst == src) {
1117 Pxor(dst, src);
1142 void SharedTurboAssembler::S128Load8Splat(XMMRegister dst, Operand src,
1150 vpbroadcastb(dst, src);
1154 vpinsrb(dst, scratch, src, uint8_t{0});
1159 pinsrb(dst, src, uint8_t{0});
1165 void SharedTurboAssembler::S128Load16Splat(XMMRegister dst, Operand src,
1173 vpbroadcastw(dst, src);
1177 vpinsrw(dst, scratch, src, uint8_t{0});
1181 pinsrw(dst, src, uint8_t{0});
1187 void SharedTurboAssembler::S128Load32Splat(XMMRegister dst, Operand src) {
1194 vbroadcastss(dst, src);
1196 movss(dst, src);
1201 void SharedTurboAssembler::S128Store64Lane(Operand dst, XMMRegister src,
1205 Movlps(dst, src);
1208 Movhps(dst, src);