x64: Sink constant loads into xmm instructions (#5880)
A number of places in the x64 backend make use of 128-bit constants for various wasm SIMD-related instructions although most of them currently use the `x64_xmm_load_const` helper to load the constant into a register. Almost all xmm instructions, however, enable using a memory operand which means that these loads can be folded into instructions to help reduce register pressure. Automatic conversions were added for a `VCodeConstant` into an `XmmMem` value and then explicit loads were all removed in favor of forwarding the `XmmMem` value directly to the underlying instruction. Note that some instances of `x64_xmm_load_const` remain since they're used in contexts where load sinking won't work (e.g. they're the first operand, not the second for non-commutative instructions).
This commit is contained in:
@@ -304,10 +304,8 @@ block0(v0: i32x4):
|
||||
; pushq %rbp
|
||||
; movq %rsp, %rbp
|
||||
; block0:
|
||||
; movdqu const(0), %xmm2
|
||||
; unpcklps %xmm0, %xmm2, %xmm0
|
||||
; movdqu const(1), %xmm6
|
||||
; subpd %xmm0, %xmm6, %xmm0
|
||||
; unpcklps %xmm0, const(0), %xmm0
|
||||
; subpd %xmm0, const(1), %xmm0
|
||||
; movq %rbp, %rsp
|
||||
; popq %rbp
|
||||
; ret
|
||||
@@ -317,14 +315,16 @@ block0(v0: i32x4):
|
||||
; pushq %rbp
|
||||
; movq %rsp, %rbp
|
||||
; block1: ; offset 0x4
|
||||
; movdqu 0x14(%rip), %xmm2
|
||||
; unpcklps %xmm2, %xmm0
|
||||
; movdqu 0x19(%rip), %xmm6
|
||||
; subpd %xmm6, %xmm0
|
||||
; unpcklps 0x15(%rip), %xmm0
|
||||
; subpd 0x1d(%rip), %xmm0
|
||||
; movq %rbp, %rsp
|
||||
; popq %rbp
|
||||
; retq
|
||||
; addb %al, (%rax)
|
||||
; addb %al, (%rax)
|
||||
; addb %al, (%rax)
|
||||
; addb %al, (%rax)
|
||||
; addb %al, (%rax)
|
||||
; xorb %al, (%rbx)
|
||||
; addb %dh, (%rax)
|
||||
; addb %al, (%r8)
|
||||
|
||||
@@ -566,10 +566,9 @@ block0(v0: f64x2):
|
||||
; movq %rsp, %rbp
|
||||
; block0:
|
||||
; vcmppd $0 %xmm0, %xmm0, %xmm2
|
||||
; movupd const(0), %xmm4
|
||||
; vandps %xmm2, %xmm4, %xmm6
|
||||
; vminpd %xmm0, %xmm6, %xmm8
|
||||
; vcvttpd2dq %xmm8, %xmm0
|
||||
; vandps %xmm2, const(0), %xmm4
|
||||
; vminpd %xmm0, %xmm4, %xmm6
|
||||
; vcvttpd2dq %xmm6, %xmm0
|
||||
; movq %rbp, %rsp
|
||||
; popq %rbp
|
||||
; ret
|
||||
@@ -580,19 +579,13 @@ block0(v0: f64x2):
|
||||
; movq %rsp, %rbp
|
||||
; block1: ; offset 0x4
|
||||
; vcmpeqpd %xmm0, %xmm0, %xmm2
|
||||
; movupd 0x1f(%rip), %xmm4
|
||||
; vandps %xmm4, %xmm2, %xmm6
|
||||
; vminpd %xmm6, %xmm0, %xmm8
|
||||
; vcvttpd2dq %xmm8, %xmm0
|
||||
; vandps 0xf(%rip), %xmm2, %xmm4
|
||||
; vminpd %xmm4, %xmm0, %xmm6
|
||||
; vcvttpd2dq %xmm6, %xmm0
|
||||
; movq %rbp, %rsp
|
||||
; popq %rbp
|
||||
; retq
|
||||
; addb %al, (%rax)
|
||||
; addb %al, (%rax)
|
||||
; addb %al, (%rax)
|
||||
; addb %al, (%rax)
|
||||
; addb %al, (%rax)
|
||||
; addb %al, (%rax)
|
||||
; addb %al, (%rax)
|
||||
; addb %al, %al
|
||||
; sarb $0xff, %bh
|
||||
|
||||
|
||||
@@ -63,13 +63,12 @@ block0(v0: f64x2):
|
||||
; pushq %rbp
|
||||
; movq %rsp, %rbp
|
||||
; block0:
|
||||
; movdqa %xmm0, %xmm4
|
||||
; cmppd $0, %xmm4, %xmm0, %xmm4
|
||||
; movupd const(0), %xmm5
|
||||
; andps %xmm4, %xmm5, %xmm4
|
||||
; movdqa %xmm0, %xmm8
|
||||
; minpd %xmm8, %xmm4, %xmm8
|
||||
; cvttpd2dq %xmm8, %xmm0
|
||||
; movdqa %xmm0, %xmm3
|
||||
; cmppd $0, %xmm3, %xmm0, %xmm3
|
||||
; andps %xmm3, const(0), %xmm3
|
||||
; movdqa %xmm0, %xmm6
|
||||
; minpd %xmm6, %xmm3, %xmm6
|
||||
; cvttpd2dq %xmm6, %xmm0
|
||||
; movq %rbp, %rsp
|
||||
; popq %rbp
|
||||
; ret
|
||||
@@ -79,20 +78,22 @@ block0(v0: f64x2):
|
||||
; pushq %rbp
|
||||
; movq %rsp, %rbp
|
||||
; block1: ; offset 0x4
|
||||
; movdqa %xmm0, %xmm4
|
||||
; cmpeqpd %xmm0, %xmm4
|
||||
; movupd 0x1b(%rip), %xmm5
|
||||
; andps %xmm5, %xmm4
|
||||
; movdqa %xmm0, %xmm8
|
||||
; minpd %xmm4, %xmm8
|
||||
; cvttpd2dq %xmm8, %xmm0
|
||||
; movdqa %xmm0, %xmm3
|
||||
; cmpeqpd %xmm0, %xmm3
|
||||
; andps 0x1c(%rip), %xmm3
|
||||
; movdqa %xmm0, %xmm6
|
||||
; minpd %xmm3, %xmm6
|
||||
; cvttpd2dq %xmm6, %xmm0
|
||||
; movq %rbp, %rsp
|
||||
; popq %rbp
|
||||
; retq
|
||||
; addb %al, (%rax)
|
||||
; addb %al, (%rax)
|
||||
; addb %al, (%rax)
|
||||
; sarb $0xff, %bh
|
||||
; addb %al, (%rax)
|
||||
; addb %al, (%rax)
|
||||
; addb %al, (%rax)
|
||||
; addb %al, %al
|
||||
|
||||
function %f4(i16x8, i16x8) -> i8x16 {
|
||||
block0(v0: i16x8, v1: i16x8):
|
||||
|
||||
@@ -55,12 +55,11 @@ block0(v0: i8x16, v1: i8x16):
|
||||
; pushq %rbp
|
||||
; movq %rsp, %rbp
|
||||
; block0:
|
||||
; movdqa %xmm0, %xmm7
|
||||
; movdqu const(1), %xmm0
|
||||
; movdqu const(0), %xmm6
|
||||
; movdqa %xmm7, %xmm9
|
||||
; vpermi2b %xmm1, %xmm9, %xmm6, %xmm6
|
||||
; andps %xmm0, %xmm6, %xmm0
|
||||
; movdqa %xmm0, %xmm6
|
||||
; movdqu const(0), %xmm0
|
||||
; movdqa %xmm6, %xmm7
|
||||
; vpermi2b %xmm1, %xmm7, %xmm0, %xmm0
|
||||
; andps %xmm0, const(1), %xmm0
|
||||
; movq %rbp, %rsp
|
||||
; popq %rbp
|
||||
; ret
|
||||
@@ -70,12 +69,11 @@ block0(v0: i8x16, v1: i8x16):
|
||||
; pushq %rbp
|
||||
; movq %rsp, %rbp
|
||||
; block1: ; offset 0x4
|
||||
; movdqa %xmm0, %xmm7
|
||||
; movdqu 0x30(%rip), %xmm0
|
||||
; movdqu 0x18(%rip), %xmm6
|
||||
; movdqa %xmm7, %xmm9
|
||||
; vpermi2b %xmm1, %xmm9, %xmm6
|
||||
; andps %xmm6, %xmm0
|
||||
; movdqa %xmm0, %xmm6
|
||||
; movdqu 0x20(%rip), %xmm0
|
||||
; movdqa %xmm6, %xmm7
|
||||
; vpermi2b %xmm1, %xmm7, %xmm0
|
||||
; andps 0x1f(%rip), %xmm0
|
||||
; movq %rbp, %rsp
|
||||
; popq %rbp
|
||||
; retq
|
||||
@@ -89,7 +87,9 @@ block0(v0: i8x16, v1: i8x16):
|
||||
; addb %al, (%rax)
|
||||
; addb %al, (%rax)
|
||||
; addb %al, (%rax)
|
||||
; cmpb $0xff, %bh
|
||||
; addb %al, (%rax)
|
||||
; addb %al, (%rax)
|
||||
; addb %al, -1(%rax)
|
||||
|
||||
function %f3(i8x16, i8x16) -> i8x16 {
|
||||
block0(v0: i8x16, v1: i8x16):
|
||||
|
||||
@@ -574,10 +574,9 @@ block0(v0: i16x8, v1: i16x8):
|
||||
; pushq %rbp
|
||||
; movq %rsp, %rbp
|
||||
; block0:
|
||||
; movdqu const(0), %xmm3
|
||||
; vpmulhrsw %xmm0, %xmm1, %xmm5
|
||||
; vpcmpeqw %xmm3, %xmm5, %xmm7
|
||||
; vpxor %xmm5, %xmm7, %xmm0
|
||||
; vpmulhrsw %xmm0, %xmm1, %xmm3
|
||||
; vpcmpeqw %xmm3, const(0), %xmm5
|
||||
; vpxor %xmm3, %xmm5, %xmm0
|
||||
; movq %rbp, %rsp
|
||||
; popq %rbp
|
||||
; ret
|
||||
@@ -587,14 +586,15 @@ block0(v0: i16x8, v1: i16x8):
|
||||
; pushq %rbp
|
||||
; movq %rsp, %rbp
|
||||
; block1: ; offset 0x4
|
||||
; movdqu 0x14(%rip), %xmm3
|
||||
; vpmulhrsw %xmm1, %xmm0, %xmm5
|
||||
; vpcmpeqw %xmm5, %xmm3, %xmm7
|
||||
; vpxor %xmm7, %xmm5, %xmm0
|
||||
; vpmulhrsw %xmm1, %xmm0, %xmm3
|
||||
; vpcmpeqw 0xf(%rip), %xmm3, %xmm5
|
||||
; vpxor %xmm5, %xmm3, %xmm0
|
||||
; movq %rbp, %rsp
|
||||
; popq %rbp
|
||||
; retq
|
||||
; addb %al, (%rax)
|
||||
; addb %al, (%rax)
|
||||
; addb %al, (%rax)
|
||||
; addb %al, -0x7fff8000(%rax)
|
||||
; addb %al, -0x7fff8000(%rax)
|
||||
|
||||
@@ -671,10 +671,8 @@ block0(v0: i32x4):
|
||||
; pushq %rbp
|
||||
; movq %rsp, %rbp
|
||||
; block0:
|
||||
; movdqu const(0), %xmm2
|
||||
; vunpcklps %xmm0, %xmm2, %xmm4
|
||||
; movdqu const(1), %xmm6
|
||||
; vsubpd %xmm4, %xmm6, %xmm0
|
||||
; vunpcklps %xmm0, const(0), %xmm2
|
||||
; vsubpd %xmm2, const(1), %xmm0
|
||||
; movq %rbp, %rsp
|
||||
; popq %rbp
|
||||
; ret
|
||||
@@ -684,10 +682,8 @@ block0(v0: i32x4):
|
||||
; pushq %rbp
|
||||
; movq %rsp, %rbp
|
||||
; block1: ; offset 0x4
|
||||
; movdqu 0x24(%rip), %xmm2
|
||||
; vunpcklps %xmm2, %xmm0, %xmm4
|
||||
; movdqu 0x28(%rip), %xmm6
|
||||
; vsubpd %xmm6, %xmm4, %xmm0
|
||||
; vunpcklps 0x14(%rip), %xmm0, %xmm2
|
||||
; vsubpd 0x1c(%rip), %xmm2, %xmm0
|
||||
; movq %rbp, %rsp
|
||||
; popq %rbp
|
||||
; retq
|
||||
@@ -695,10 +691,6 @@ block0(v0: i32x4):
|
||||
; addb %al, (%rax)
|
||||
; addb %al, (%rax)
|
||||
; addb %al, (%rax)
|
||||
; addb %al, (%rax)
|
||||
; addb %al, (%rax)
|
||||
; addb %al, (%rax)
|
||||
; addb %al, (%rax)
|
||||
; addb %dh, (%rax)
|
||||
; addb %al, (%r8)
|
||||
; xorb %al, (%rbx)
|
||||
@@ -1283,8 +1275,7 @@ block0(v0: i16x8):
|
||||
; pushq %rbp
|
||||
; movq %rsp, %rbp
|
||||
; block0:
|
||||
; movdqu const(0), %xmm2
|
||||
; vpmaddwd %xmm0, %xmm2, %xmm0
|
||||
; vpmaddwd %xmm0, const(0), %xmm0
|
||||
; movq %rbp, %rsp
|
||||
; popq %rbp
|
||||
; ret
|
||||
@@ -1294,8 +1285,7 @@ block0(v0: i16x8):
|
||||
; pushq %rbp
|
||||
; movq %rsp, %rbp
|
||||
; block1: ; offset 0x4
|
||||
; movdqu 0x14(%rip), %xmm2
|
||||
; vpmaddwd %xmm2, %xmm0, %xmm0
|
||||
; vpmaddwd 0x14(%rip), %xmm0, %xmm0
|
||||
; movq %rbp, %rsp
|
||||
; popq %rbp
|
||||
; retq
|
||||
@@ -1304,6 +1294,8 @@ block0(v0: i16x8):
|
||||
; addb %al, (%rax)
|
||||
; addb %al, (%rax)
|
||||
; addb %al, (%rax)
|
||||
; addb %al, (%rax)
|
||||
; addb %al, (%rax)
|
||||
; addb %al, (%rcx)
|
||||
; addb %al, (%rcx)
|
||||
; addb %al, (%rcx)
|
||||
@@ -1357,12 +1349,10 @@ block0(v0: f64x2):
|
||||
; block0:
|
||||
; xorpd %xmm2, %xmm2, %xmm2
|
||||
; vmaxpd %xmm0, %xmm2, %xmm4
|
||||
; movupd const(0), %xmm6
|
||||
; vminpd %xmm4, %xmm6, %xmm8
|
||||
; vroundpd $3, %xmm8, %xmm10
|
||||
; movupd const(1), %xmm12
|
||||
; vaddpd %xmm10, %xmm12, %xmm14
|
||||
; vshufps $136 %xmm14, %xmm2, %xmm0
|
||||
; vminpd %xmm4, const(0), %xmm6
|
||||
; vroundpd $3, %xmm6, %xmm8
|
||||
; vaddpd %xmm8, const(1), %xmm10
|
||||
; vshufps $136 %xmm10, %xmm2, %xmm0
|
||||
; movq %rbp, %rsp
|
||||
; popq %rbp
|
||||
; ret
|
||||
@@ -1374,22 +1364,17 @@ block0(v0: f64x2):
|
||||
; block1: ; offset 0x4
|
||||
; xorpd %xmm2, %xmm2
|
||||
; vmaxpd %xmm2, %xmm0, %xmm4
|
||||
; movupd 0x2c(%rip), %xmm6
|
||||
; vminpd %xmm6, %xmm4, %xmm8
|
||||
; vroundpd $3, %xmm8, %xmm10
|
||||
; movupd 0x29(%rip), %xmm12
|
||||
; vaddpd %xmm12, %xmm10, %xmm14
|
||||
; vshufps $0x88, %xmm2, %xmm14, %xmm0
|
||||
; vminpd 0x1c(%rip), %xmm4, %xmm6
|
||||
; vroundpd $3, %xmm6, %xmm8
|
||||
; vaddpd 0x1e(%rip), %xmm8, %xmm10
|
||||
; vshufps $0x88, %xmm2, %xmm10, %xmm0
|
||||
; movq %rbp, %rsp
|
||||
; popq %rbp
|
||||
; retq
|
||||
; addb %al, (%rax)
|
||||
; addb %al, (%rax)
|
||||
; addb %al, (%rax)
|
||||
; addb %al, (%rax)
|
||||
; addb %al, (%rax)
|
||||
; addb %al, (%rax)
|
||||
; loopne 0x43
|
||||
; loopne 0x33
|
||||
|
||||
function %i8x16_shl(i8x16, i32) -> i8x16 {
|
||||
block0(v0: i8x16, v1: i32):
|
||||
|
||||
@@ -17,12 +17,10 @@ block0:
|
||||
; movq %rsp, %rbp
|
||||
; block0:
|
||||
; movdqu const(3), %xmm0
|
||||
; movdqu const(2), %xmm4
|
||||
; movdqu const(0), %xmm2
|
||||
; pshufb %xmm0, %xmm2, %xmm0
|
||||
; movdqu const(1), %xmm6
|
||||
; pshufb %xmm4, %xmm6, %xmm4
|
||||
; por %xmm0, %xmm4, %xmm0
|
||||
; movdqu const(2), %xmm2
|
||||
; pshufb %xmm0, const(0), %xmm0
|
||||
; pshufb %xmm2, const(1), %xmm2
|
||||
; por %xmm0, %xmm2, %xmm0
|
||||
; movq %rbp, %rsp
|
||||
; popq %rbp
|
||||
; ret
|
||||
@@ -32,13 +30,11 @@ block0:
|
||||
; pushq %rbp
|
||||
; movq %rsp, %rbp
|
||||
; block1: ; offset 0x4
|
||||
; movdqu 0x64(%rip), %xmm0
|
||||
; movdqu 0x4c(%rip), %xmm4
|
||||
; movdqu 0x24(%rip), %xmm2
|
||||
; pshufb %xmm2, %xmm0
|
||||
; movdqu 0x27(%rip), %xmm6
|
||||
; pshufb %xmm6, %xmm4
|
||||
; por %xmm4, %xmm0
|
||||
; movdqu 0x54(%rip), %xmm0
|
||||
; movdqu 0x3c(%rip), %xmm2
|
||||
; pshufb 0x13(%rip), %xmm0
|
||||
; pshufb 0x1a(%rip), %xmm2
|
||||
; por %xmm2, %xmm0
|
||||
; movq %rbp, %rsp
|
||||
; popq %rbp
|
||||
; retq
|
||||
@@ -50,10 +46,6 @@ block0:
|
||||
; addb %al, (%rax)
|
||||
; addb %al, (%rax)
|
||||
; addb %al, (%rax)
|
||||
; addb %al, (%rax)
|
||||
; addb %al, (%rax)
|
||||
; addb %al, (%rax)
|
||||
; addb %al, (%rax)
|
||||
; addb $0x80, -0x7f7f7f80(%rax)
|
||||
; addb $0x80, -0x7f7f7f80(%rax)
|
||||
; addb $0, 0x101(%rax)
|
||||
@@ -84,8 +76,7 @@ block0:
|
||||
; movq %rsp, %rbp
|
||||
; block0:
|
||||
; movdqu const(1), %xmm0
|
||||
; movdqu const(0), %xmm1
|
||||
; pshufb %xmm0, %xmm1, %xmm0
|
||||
; pshufb %xmm0, const(0), %xmm0
|
||||
; movq %rbp, %rsp
|
||||
; popq %rbp
|
||||
; ret
|
||||
@@ -96,8 +87,7 @@ block0:
|
||||
; movq %rsp, %rbp
|
||||
; block1: ; offset 0x4
|
||||
; movdqu 0x24(%rip), %xmm0
|
||||
; movdqu 0xc(%rip), %xmm1
|
||||
; pshufb %xmm1, %xmm0
|
||||
; pshufb 0xb(%rip), %xmm0
|
||||
; movq %rbp, %rsp
|
||||
; popq %rbp
|
||||
; retq
|
||||
@@ -109,6 +99,8 @@ block0:
|
||||
; addb %al, (%rax)
|
||||
; addb %al, (%rax)
|
||||
; addb %al, (%rax)
|
||||
; addb %al, (%rax)
|
||||
; addb %al, (%rax)
|
||||
; addb %al, (%rcx, %rax)
|
||||
; addb %al, (%rax)
|
||||
; addb %al, (%rax)
|
||||
@@ -131,10 +123,9 @@ block0:
|
||||
; movq %rsp, %rbp
|
||||
; block0:
|
||||
; movdqu const(1), %xmm0
|
||||
; movdqu const(1), %xmm2
|
||||
; movdqu const(0), %xmm3
|
||||
; paddusb %xmm2, %xmm3, %xmm2
|
||||
; pshufb %xmm0, %xmm2, %xmm0
|
||||
; movdqu const(1), %xmm1
|
||||
; paddusb %xmm1, const(0), %xmm1
|
||||
; pshufb %xmm0, %xmm1, %xmm0
|
||||
; movq %rbp, %rsp
|
||||
; popq %rbp
|
||||
; ret
|
||||
@@ -145,16 +136,17 @@ block0:
|
||||
; movq %rsp, %rbp
|
||||
; block1: ; offset 0x4
|
||||
; movdqu 0x34(%rip), %xmm0
|
||||
; movdqu 0x2c(%rip), %xmm2
|
||||
; movdqu 0x14(%rip), %xmm3
|
||||
; paddusb %xmm3, %xmm2
|
||||
; pshufb %xmm2, %xmm0
|
||||
; movdqu 0x2c(%rip), %xmm1
|
||||
; paddusb 0x14(%rip), %xmm1
|
||||
; pshufb %xmm1, %xmm0
|
||||
; movq %rbp, %rsp
|
||||
; popq %rbp
|
||||
; retq
|
||||
; addb %al, (%rax)
|
||||
; addb %al, (%rax)
|
||||
; addb %al, (%rax)
|
||||
; addb %al, (%rax)
|
||||
; addb %al, (%rax)
|
||||
; jo 0xa2
|
||||
; jo 0xa4
|
||||
; jo 0xa6
|
||||
|
||||
@@ -55,8 +55,7 @@ block0(v0: i16x8):
|
||||
; pushq %rbp
|
||||
; movq %rsp, %rbp
|
||||
; block0:
|
||||
; movdqu const(0), %xmm2
|
||||
; pmaddwd %xmm0, %xmm2, %xmm0
|
||||
; pmaddwd %xmm0, const(0), %xmm0
|
||||
; movq %rbp, %rsp
|
||||
; popq %rbp
|
||||
; ret
|
||||
@@ -66,8 +65,7 @@ block0(v0: i16x8):
|
||||
; pushq %rbp
|
||||
; movq %rsp, %rbp
|
||||
; block1: ; offset 0x4
|
||||
; movdqu 0x14(%rip), %xmm2
|
||||
; pmaddwd %xmm2, %xmm0
|
||||
; pmaddwd 0x14(%rip), %xmm0
|
||||
; movq %rbp, %rsp
|
||||
; popq %rbp
|
||||
; retq
|
||||
@@ -76,6 +74,8 @@ block0(v0: i16x8):
|
||||
; addb %al, (%rax)
|
||||
; addb %al, (%rax)
|
||||
; addb %al, (%rax)
|
||||
; addb %al, (%rax)
|
||||
; addb %al, (%rax)
|
||||
; addb %al, (%rcx)
|
||||
; addb %al, (%rcx)
|
||||
; addb %al, (%rcx)
|
||||
@@ -97,8 +97,7 @@ block0(v0: i8x16):
|
||||
; pushq %rbp
|
||||
; movq %rsp, %rbp
|
||||
; block0:
|
||||
; movdqu const(0), %xmm2
|
||||
; pmaddubsw %xmm0, %xmm2, %xmm0
|
||||
; pmaddubsw %xmm0, const(0), %xmm0
|
||||
; movq %rbp, %rsp
|
||||
; popq %rbp
|
||||
; ret
|
||||
@@ -108,8 +107,7 @@ block0(v0: i8x16):
|
||||
; pushq %rbp
|
||||
; movq %rsp, %rbp
|
||||
; block1: ; offset 0x4
|
||||
; movdqu 0x14(%rip), %xmm2
|
||||
; pmaddubsw %xmm2, %xmm0
|
||||
; pmaddubsw 0x13(%rip), %xmm0
|
||||
; movq %rbp, %rsp
|
||||
; popq %rbp
|
||||
; retq
|
||||
@@ -118,6 +116,8 @@ block0(v0: i8x16):
|
||||
; addb %al, (%rax)
|
||||
; addb %al, (%rax)
|
||||
; addb %al, (%rax)
|
||||
; addb %al, (%rax)
|
||||
; addb %al, (%rax)
|
||||
; addl %eax, (%rcx)
|
||||
; addl %eax, (%rcx)
|
||||
; addl %eax, (%rcx)
|
||||
@@ -139,12 +139,9 @@ block0(v0: i16x8):
|
||||
; pushq %rbp
|
||||
; movq %rsp, %rbp
|
||||
; block0:
|
||||
; movdqu const(0), %xmm2
|
||||
; pxor %xmm0, %xmm2, %xmm0
|
||||
; movdqu const(1), %xmm6
|
||||
; pmaddwd %xmm0, %xmm6, %xmm0
|
||||
; movdqu const(2), %xmm10
|
||||
; paddd %xmm0, %xmm10, %xmm0
|
||||
; pxor %xmm0, const(0), %xmm0
|
||||
; pmaddwd %xmm0, const(1), %xmm0
|
||||
; paddd %xmm0, const(2), %xmm0
|
||||
; movq %rbp, %rsp
|
||||
; popq %rbp
|
||||
; ret
|
||||
@@ -154,16 +151,20 @@ block0(v0: i16x8):
|
||||
; pushq %rbp
|
||||
; movq %rsp, %rbp
|
||||
; block1: ; offset 0x4
|
||||
; movdqu 0x24(%rip), %xmm2
|
||||
; pxor %xmm2, %xmm0
|
||||
; movdqu 0x28(%rip), %xmm6
|
||||
; pmaddwd %xmm6, %xmm0
|
||||
; movdqu 0x2b(%rip), %xmm10
|
||||
; paddd %xmm10, %xmm0
|
||||
; pxor 0x24(%rip), %xmm0
|
||||
; pmaddwd 0x2c(%rip), %xmm0
|
||||
; paddd 0x34(%rip), %xmm0
|
||||
; movq %rbp, %rsp
|
||||
; popq %rbp
|
||||
; retq
|
||||
; addb %al, (%rax)
|
||||
; addb %al, (%rax)
|
||||
; addb %al, (%rax)
|
||||
; addb %al, (%rax)
|
||||
; addb %al, (%rax)
|
||||
; addb %al, (%rax)
|
||||
; addb %al, (%rax)
|
||||
; addb %al, (%rax)
|
||||
; addb $0x80, (%rax)
|
||||
; addb %al, -0x7fff8000(%rax)
|
||||
; addb %al, -0x7fff8000(%rax)
|
||||
|
||||
@@ -11,9 +11,9 @@ block0(v0: i16x8, v1: i16x8):
|
||||
; pushq %rbp
|
||||
; movq %rsp, %rbp
|
||||
; block0:
|
||||
; movdqu const(0), %xmm5
|
||||
; pmulhrsw %xmm0, %xmm1, %xmm0
|
||||
; pcmpeqw %xmm5, %xmm0, %xmm5
|
||||
; movdqa %xmm0, %xmm5
|
||||
; pcmpeqw %xmm5, const(0), %xmm5
|
||||
; pxor %xmm0, %xmm5, %xmm0
|
||||
; movq %rbp, %rsp
|
||||
; popq %rbp
|
||||
@@ -24,9 +24,9 @@ block0(v0: i16x8, v1: i16x8):
|
||||
; pushq %rbp
|
||||
; movq %rsp, %rbp
|
||||
; block1: ; offset 0x4
|
||||
; movdqu 0x14(%rip), %xmm5
|
||||
; pmulhrsw %xmm1, %xmm0
|
||||
; pcmpeqw %xmm0, %xmm5
|
||||
; movdqa %xmm0, %xmm5
|
||||
; pcmpeqw 0xb(%rip), %xmm5
|
||||
; pxor %xmm5, %xmm0
|
||||
; movq %rbp, %rsp
|
||||
; popq %rbp
|
||||
|
||||
@@ -14,13 +14,11 @@ block0(v0: f64x2):
|
||||
; movq %rsp, %rbp
|
||||
; block0:
|
||||
; xorpd %xmm2, %xmm2, %xmm2
|
||||
; movdqa %xmm0, %xmm6
|
||||
; maxpd %xmm6, %xmm2, %xmm6
|
||||
; movupd const(0), %xmm7
|
||||
; minpd %xmm6, %xmm7, %xmm6
|
||||
; roundpd $3, %xmm6, %xmm0
|
||||
; movupd const(1), %xmm12
|
||||
; addpd %xmm0, %xmm12, %xmm0
|
||||
; movdqa %xmm0, %xmm5
|
||||
; maxpd %xmm5, %xmm2, %xmm5
|
||||
; minpd %xmm5, const(0), %xmm5
|
||||
; roundpd $3, %xmm5, %xmm0
|
||||
; addpd %xmm0, const(1), %xmm0
|
||||
; shufps $136, %xmm0, %xmm2, %xmm0
|
||||
; movq %rbp, %rsp
|
||||
; popq %rbp
|
||||
@@ -32,20 +30,15 @@ block0(v0: f64x2):
|
||||
; movq %rsp, %rbp
|
||||
; block1: ; offset 0x4
|
||||
; xorpd %xmm2, %xmm2
|
||||
; movdqa %xmm0, %xmm6
|
||||
; maxpd %xmm2, %xmm6
|
||||
; movupd 0x28(%rip), %xmm7
|
||||
; minpd %xmm7, %xmm6
|
||||
; roundpd $3, %xmm6, %xmm0
|
||||
; movupd 0x25(%rip), %xmm12
|
||||
; addpd %xmm12, %xmm0
|
||||
; movdqa %xmm0, %xmm5
|
||||
; maxpd %xmm2, %xmm5
|
||||
; minpd 0x18(%rip), %xmm5
|
||||
; roundpd $3, %xmm5, %xmm0
|
||||
; addpd 0x1a(%rip), %xmm0
|
||||
; shufps $0x88, %xmm2, %xmm0
|
||||
; movq %rbp, %rsp
|
||||
; popq %rbp
|
||||
; retq
|
||||
; addb %al, (%rax)
|
||||
; addb %al, (%rax)
|
||||
; addb %al, (%rax)
|
||||
; addb %al, (%rax)
|
||||
; addb %ah, %al
|
||||
|
||||
|
||||
Reference in New Issue
Block a user