You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@arrow.apache.org by ze...@apache.org on 2026/07/18 16:39:20 UTC
(arrow-go) branch main updated: fix(compute): handle comparison output offsets (#956)
This is an automated email from the ASF dual-hosted git repository.
zeroshade pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/arrow-go.git
The following commit(s) were added to refs/heads/main by this push:
new 76109bec fix(compute): handle comparison output offsets (#956)
76109bec is described below
commit 76109bec77e36523479c283c44f06e3abf5d77b6
Author: Minh Vu <vu...@gmail.com>
AuthorDate: Sat Jul 18 18:39:14 2026 +0200
fix(compute): handle comparison output offsets (#956)
Primitive comparison kernels mishandled a non-byte-aligned output offset: batch counts were derived from the original length and the leading partial byte was not clamped to the available values, so short inputs could over-read the input or corrupt bits outside the output span. This affected both the pure-Go path and the generated amd64 SIMD kernels.
Clamp the prefix to the available value count, recompute batches/tail after consuming the prefix, apply the same fix to _lib/scalar_comparison.cc, and regenerate the AVX2/SSE4 assembly. Adds a kernel-level regression covering offsets 0-7 and lengths through 65 across all operations and operand shapes, exercising both the pure-Go implementation and the runtime SIMD dispatcher.
---
.../internal/kernels/_lib/scalar_comparison.cc | 33 +-
.../kernels/_lib/scalar_comparison_avx2_amd64.s | 96529 +++++++++---------
.../kernels/_lib/scalar_comparison_sse4_amd64.s | 93385 +++++++++---------
.../kernels/scalar_comparison_avx2_amd64.s | 98603 ++++++++++---------
.../kernels/scalar_comparison_sse4_amd64.s | 85191 ++++++++--------
.../compute/internal/kernels/scalar_comparisons.go | 26 +-
.../internal/kernels/scalar_comparisons_test.go | 119 +
7 files changed, 190517 insertions(+), 183369 deletions(-)
diff --git a/arrow/compute/internal/kernels/_lib/scalar_comparison.cc b/arrow/compute/internal/kernels/_lib/scalar_comparison.cc
index 09540f36..794970a5 100644
--- a/arrow/compute/internal/kernels/_lib/scalar_comparison.cc
+++ b/arrow/compute/internal/kernels/_lib/scalar_comparison.cc
@@ -67,16 +67,21 @@ struct compare_primitive_arr_arr {
const T* right = reinterpret_cast<const T*>(right_void);
uint8_t* out_bitmap = reinterpret_cast<uint8_t*>(out_void);
static constexpr int kBatchSize = 32;
- int64_t num_batches = length / kBatchSize;
uint32_t temp_output[kBatchSize];
if (int prefix = offset % 8) {
- for (int i = prefix; i < 8; ++i) {
- set_bit_to(out_bitmap, i, Op::template Call<T>(*left++, *right++));
+ const int64_t prefix_length = length < 8 - prefix ? length : 8 - prefix;
+ for (int64_t i = 0; i < prefix_length; ++i) {
+ set_bit_to(out_bitmap, prefix + i, Op::template Call<T>(*left++, *right++));
+ }
+ length -= prefix_length;
+ if (length == 0) {
+ return;
}
out_bitmap++;
}
+ int64_t num_batches = length / kBatchSize;
for (int64_t j = 0; j < num_batches; ++j) {
for (int i = 0; i < kBatchSize; ++i) {
temp_output[i] = Op::template Call<T>(*left++, *right++);
@@ -98,16 +103,21 @@ struct compare_primitive_arr_scalar {
const T right = *reinterpret_cast<const T*>(right_void);
uint8_t* out_bitmap = reinterpret_cast<uint8_t*>(out_void);
static constexpr int kBatchSize = 32;
- int64_t num_batches = length / kBatchSize;
uint32_t temp_output[kBatchSize];
if (int prefix = offset % 8) {
- for (int i = prefix; i < 8; ++i) {
- set_bit_to(out_bitmap, i, Op::template Call<T>(*left++, right));
+ const int64_t prefix_length = length < 8 - prefix ? length : 8 - prefix;
+ for (int64_t i = 0; i < prefix_length; ++i) {
+ set_bit_to(out_bitmap, prefix + i, Op::template Call<T>(*left++, right));
+ }
+ length -= prefix_length;
+ if (length == 0) {
+ return;
}
out_bitmap++;
}
+ int64_t num_batches = length / kBatchSize;
for (int64_t j = 0; j < num_batches; ++j) {
for (int i = 0; i < kBatchSize; ++i) {
temp_output[i] = Op::template Call<T>(*left++, right);
@@ -129,16 +139,21 @@ struct compare_primitive_scalar_arr {
const T* right = reinterpret_cast<const T*>(right_void);
uint8_t* out_bitmap = reinterpret_cast<uint8_t*>(out_void);
static constexpr int kBatchSize = 32;
- int64_t num_batches = length / kBatchSize;
uint32_t temp_output[kBatchSize];
if (int prefix = offset % 8) {
- for (int i = prefix; i < 8; ++i) {
- set_bit_to(out_bitmap, i, Op::template Call<T>(left, *right++));
+ const int64_t prefix_length = length < 8 - prefix ? length : 8 - prefix;
+ for (int64_t i = 0; i < prefix_length; ++i) {
+ set_bit_to(out_bitmap, prefix + i, Op::template Call<T>(left, *right++));
+ }
+ length -= prefix_length;
+ if (length == 0) {
+ return;
}
out_bitmap++;
}
+ int64_t num_batches = length / kBatchSize;
for (int64_t j = 0; j < num_batches; ++j) {
for (int i = 0; i < kBatchSize; ++i) {
temp_output[i] = Op::template Call<T>(left, *right++);
diff --git a/arrow/compute/internal/kernels/_lib/scalar_comparison_avx2_amd64.s b/arrow/compute/internal/kernels/_lib/scalar_comparison_avx2_amd64.s
index 593d4c45..1c28cad7 100644
--- a/arrow/compute/internal/kernels/_lib/scalar_comparison_avx2_amd64.s
+++ b/arrow/compute/internal/kernels/_lib/scalar_comparison_avx2_amd64.s
@@ -15,104 +15,120 @@ comparison_equal_arr_arr_avx2: # @comparison_equal_arr_arr_avx2
push rbx
and rsp, -8
sub rsp, 72
- mov eax, r9d
- mov r14, r8
- mov r12, rcx
+ # kill: def $r9d killed $r9d def $r9
+ mov r12, r8
+ mov r15, rcx
cmp edi, 6
- jg .LBB0_29
+ jg .LBB0_35
# %bb.1:
cmp edi, 3
jle .LBB0_2
-# %bb.15:
+# %bb.18:
cmp edi, 4
- je .LBB0_68
-# %bb.16:
+ je .LBB0_83
+# %bb.19:
cmp edi, 5
- je .LBB0_79
-# %bb.17:
+ je .LBB0_97
+# %bb.20:
cmp edi, 6
- jne .LBB0_123
-# %bb.18:
- lea r15, [r14 + 31]
- test r14, r14
- cmovns r15, r14
- lea ecx, [rax + 7]
- test eax, eax
- cmovns ecx, eax
- and ecx, -8
- sub eax, ecx
- je .LBB0_22
-# %bb.19:
- cdqe
+ jne .LBB0_153
+# %bb.21:
+ lea eax, [r9 + 7]
+ test r9d, r9d
+ cmovns eax, r9d
+ and eax, -8
+ sub r9d, eax
+ je .LBB0_28
+# %bb.22:
+ mov r8d, 8
+ sub r8d, r9d
+ cmp r8, r12
+ cmovg r8, r12
+ test r8, r8
+ jle .LBB0_26
+# %bb.23:
+ movsxd r9, r9d
+ xor r10d, r10d
+ xor eax, eax
.p2align 4, 0x90
-.LBB0_20: # =>This Inner Loop Header: Depth=1
- mov ecx, dword ptr [rsi]
- add rsi, 4
- cmp ecx, dword ptr [rdx]
- lea rdx, [rdx + 4]
- sete r10b
- neg r10b
- lea rdi, [rax + 7]
- test rax, rax
- cmovns rdi, rax
+.LBB0_24: # =>This Inner Loop Header: Depth=1
+ lea rcx, [r9 + rax]
+ mov ebx, dword ptr [rsi + 4*rax]
+ cmp ebx, dword ptr [rdx + 4*rax]
+ sete r11b
+ neg r11b
+ lea rdi, [r9 + rax]
+ add rdi, 7
+ test rcx, rcx
+ cmovns rdi, rcx
sar rdi, 3
- movzx r8d, byte ptr [r12 + rdi]
- xor r10b, r8b
- lea r9d, [8*rdi]
- mov ecx, eax
- sub ecx, r9d
+ lea ebx, [8*rdi]
+ sub ecx, ebx
mov ebx, 1
- # kill: def $cl killed $cl killed $ecx
+ # kill: def $cl killed $cl killed $rcx
shl ebx, cl
- and bl, r10b
- xor bl, r8b
- mov byte ptr [r12 + rdi], bl
+ mov r14, r15
+ movzx ecx, byte ptr [r15 + rdi]
+ xor r11b, cl
+ and bl, r11b
+ xor bl, cl
+ mov byte ptr [r15 + rdi], bl
add rax, 1
- cmp rax, 8
- jne .LBB0_20
-# %bb.21:
- add r12, 1
-.LBB0_22:
- sar r15, 5
- cmp r14, 32
- jl .LBB0_26
-# %bb.23:
- mov qword ptr [rsp + 24], r14 # 8-byte Spill
- mov qword ptr [rsp + 56], r15 # 8-byte Spill
- mov qword ptr [rsp + 32], r15 # 8-byte Spill
+ add r10, -4
+ cmp r8, rax
+ jne .LBB0_24
+# %bb.25:
+ sub rsi, r10
+ sub rdx, r10
+.LBB0_26:
+ sub r12, r8
+ je .LBB0_153
+# %bb.27:
+ add r15, 1
+.LBB0_28:
+ lea rax, [r12 + 31]
+ test r12, r12
+ cmovns rax, r12
+ sar rax, 5
+ cmp r12, 32
+ jl .LBB0_32
+# %bb.29:
+ mov qword ptr [rsp + 40], r12 # 8-byte Spill
+ mov qword ptr [rsp + 64], rax # 8-byte Spill
+ mov qword ptr [rsp + 48], rax # 8-byte Spill
.p2align 4, 0x90
-.LBB0_24: # =>This Inner Loop Header: Depth=1
- mov qword ptr [rsp + 48], r12 # 8-byte Spill
+.LBB0_30: # =>This Inner Loop Header: Depth=1
+ mov qword ptr [rsp + 32], r15 # 8-byte Spill
mov eax, dword ptr [rsi]
mov ecx, dword ptr [rsi + 4]
cmp eax, dword ptr [rdx]
- sete byte ptr [rsp + 4] # 1-byte Folded Spill
+ sete byte ptr [rsp + 13] # 1-byte Folded Spill
cmp ecx, dword ptr [rdx + 4]
- sete byte ptr [rsp + 40] # 1-byte Folded Spill
+ sete byte ptr [rsp + 56] # 1-byte Folded Spill
mov eax, dword ptr [rsi + 8]
cmp eax, dword ptr [rdx + 8]
- sete byte ptr [rsp + 21] # 1-byte Folded Spill
+ sete byte ptr [rsp + 30] # 1-byte Folded Spill
mov eax, dword ptr [rsi + 12]
cmp eax, dword ptr [rdx + 12]
- sete byte ptr [rsp + 22] # 1-byte Folded Spill
+ sete byte ptr [rsp + 31] # 1-byte Folded Spill
mov eax, dword ptr [rsi + 16]
cmp eax, dword ptr [rdx + 16]
- sete byte ptr [rsp + 23] # 1-byte Folded Spill
+ sete byte ptr [rsp + 11] # 1-byte Folded Spill
mov eax, dword ptr [rsi + 20]
cmp eax, dword ptr [rdx + 20]
- sete byte ptr [rsp + 3] # 1-byte Folded Spill
+ sete byte ptr [rsp + 12] # 1-byte Folded Spill
mov eax, dword ptr [rsi + 24]
cmp eax, dword ptr [rdx + 24]
- sete byte ptr [rsp + 5] # 1-byte Folded Spill
+ sete byte ptr [rsp + 14] # 1-byte Folded Spill
mov eax, dword ptr [rsi + 28]
cmp eax, dword ptr [rdx + 28]
sete r13b
mov eax, dword ptr [rsi + 32]
cmp eax, dword ptr [rdx + 32]
- sete byte ptr [rsp + 10] # 1-byte Folded Spill
+ sete byte ptr [rsp + 19] # 1-byte Folded Spill
mov eax, dword ptr [rsi + 36]
cmp eax, dword ptr [rdx + 36]
- sete r8b
+ sete dil
mov eax, dword ptr [rsi + 40]
cmp eax, dword ptr [rdx + 40]
sete r11b
@@ -121,21 +137,21 @@ comparison_equal_arr_arr_avx2: # @comparison_equal_arr_arr_avx2
sete r15b
mov eax, dword ptr [rsi + 48]
cmp eax, dword ptr [rdx + 48]
- sete byte ptr [rsp + 6] # 1-byte Folded Spill
+ sete byte ptr [rsp + 15] # 1-byte Folded Spill
mov eax, dword ptr [rsi + 52]
cmp eax, dword ptr [rdx + 52]
- sete byte ptr [rsp + 7] # 1-byte Folded Spill
+ sete byte ptr [rsp + 16] # 1-byte Folded Spill
mov eax, dword ptr [rsi + 56]
cmp eax, dword ptr [rdx + 56]
- sete byte ptr [rsp + 8] # 1-byte Folded Spill
+ sete byte ptr [rsp + 17] # 1-byte Folded Spill
mov eax, dword ptr [rsi + 60]
cmp eax, dword ptr [rdx + 60]
- sete dil
+ sete r8b
mov eax, dword ptr [rsi + 64]
mov ebx, dword ptr [rsi + 68]
cmp eax, dword ptr [rdx + 64]
mov eax, dword ptr [rsi + 72]
- sete byte ptr [rsp + 11] # 1-byte Folded Spill
+ sete byte ptr [rsp + 20] # 1-byte Folded Spill
cmp ebx, dword ptr [rdx + 68]
mov ebx, dword ptr [rsi + 76]
sete r10b
@@ -146,144 +162,144 @@ comparison_equal_arr_arr_avx2: # @comparison_equal_arr_arr_avx2
mov ebx, dword ptr [rsi + 84]
sete r12b
cmp eax, dword ptr [rdx + 80]
- sete byte ptr [rsp + 9] # 1-byte Folded Spill
+ sete byte ptr [rsp + 18] # 1-byte Folded Spill
cmp ebx, dword ptr [rdx + 84]
mov eax, dword ptr [rsi + 88]
- sete byte ptr [rsp + 12] # 1-byte Folded Spill
+ sete byte ptr [rsp + 21] # 1-byte Folded Spill
cmp eax, dword ptr [rdx + 88]
mov eax, dword ptr [rsi + 92]
- sete byte ptr [rsp + 13] # 1-byte Folded Spill
+ sete byte ptr [rsp + 24] # 1-byte Folded Spill
cmp eax, dword ptr [rdx + 92]
mov eax, dword ptr [rsi + 96]
sete r9b
cmp eax, dword ptr [rdx + 96]
mov eax, dword ptr [rsi + 100]
- sete byte ptr [rsp + 20] # 1-byte Folded Spill
+ sete byte ptr [rsp + 29] # 1-byte Folded Spill
cmp eax, dword ptr [rdx + 100]
mov eax, dword ptr [rsi + 104]
- sete byte ptr [rsp + 14] # 1-byte Folded Spill
+ sete byte ptr [rsp + 22] # 1-byte Folded Spill
cmp eax, dword ptr [rdx + 104]
mov eax, dword ptr [rsi + 108]
- sete byte ptr [rsp + 15] # 1-byte Folded Spill
+ sete byte ptr [rsp + 23] # 1-byte Folded Spill
cmp eax, dword ptr [rdx + 108]
mov eax, dword ptr [rsi + 112]
- sete byte ptr [rsp + 16] # 1-byte Folded Spill
+ sete byte ptr [rsp + 25] # 1-byte Folded Spill
cmp eax, dword ptr [rdx + 112]
mov eax, dword ptr [rsi + 116]
- sete byte ptr [rsp + 17] # 1-byte Folded Spill
+ sete byte ptr [rsp + 26] # 1-byte Folded Spill
cmp eax, dword ptr [rdx + 116]
mov eax, dword ptr [rsi + 120]
- sete byte ptr [rsp + 19] # 1-byte Folded Spill
+ sete byte ptr [rsp + 28] # 1-byte Folded Spill
cmp eax, dword ptr [rdx + 120]
mov eax, dword ptr [rsi + 124]
- sete byte ptr [rsp + 18] # 1-byte Folded Spill
+ sete byte ptr [rsp + 27] # 1-byte Folded Spill
sub rsi, -128
cmp eax, dword ptr [rdx + 124]
sete cl
- movzx eax, byte ptr [rsp + 40] # 1-byte Folded Reload
+ movzx eax, byte ptr [rsp + 56] # 1-byte Folded Reload
add al, al
- add al, byte ptr [rsp + 4] # 1-byte Folded Reload
+ add al, byte ptr [rsp + 13] # 1-byte Folded Reload
mov ebx, eax
- movzx eax, byte ptr [rsp + 5] # 1-byte Folded Reload
+ movzx eax, byte ptr [rsp + 14] # 1-byte Folded Reload
shl al, 6
shl r13b, 7
or r13b, al
- movzx eax, byte ptr [rsp + 21] # 1-byte Folded Reload
+ movzx eax, byte ptr [rsp + 30] # 1-byte Folded Reload
shl al, 2
or al, bl
- add r8b, r8b
- add r8b, byte ptr [rsp + 10] # 1-byte Folded Reload
- movzx ebx, byte ptr [rsp + 22] # 1-byte Folded Reload
+ add dil, dil
+ add dil, byte ptr [rsp + 19] # 1-byte Folded Reload
+ movzx ebx, byte ptr [rsp + 31] # 1-byte Folded Reload
shl bl, 3
or bl, al
mov eax, ebx
shl r11b, 2
- or r11b, r8b
- movzx ebx, byte ptr [rsp + 23] # 1-byte Folded Reload
+ or r11b, dil
+ movzx ebx, byte ptr [rsp + 11] # 1-byte Folded Reload
shl bl, 4
or bl, al
- mov r8d, ebx
+ mov edi, ebx
shl r15b, 3
or r15b, r11b
- movzx ebx, byte ptr [rsp + 3] # 1-byte Folded Reload
+ movzx ebx, byte ptr [rsp + 12] # 1-byte Folded Reload
shl bl, 5
- or bl, r8b
- movzx eax, byte ptr [rsp + 6] # 1-byte Folded Reload
+ or bl, dil
+ movzx eax, byte ptr [rsp + 15] # 1-byte Folded Reload
shl al, 4
or al, r15b
- mov r8d, eax
- movzx eax, byte ptr [rsp + 7] # 1-byte Folded Reload
+ mov edi, eax
+ movzx eax, byte ptr [rsp + 16] # 1-byte Folded Reload
shl al, 5
- or al, r8b
- movzx r8d, byte ptr [rsp + 8] # 1-byte Folded Reload
- shl r8b, 6
- shl dil, 7
- or dil, r8b
+ or al, dil
+ movzx edi, byte ptr [rsp + 17] # 1-byte Folded Reload
+ shl dil, 6
+ shl r8b, 7
+ or r8b, dil
or r13b, bl
- or dil, al
+ or r8b, al
add r10b, r10b
- add r10b, byte ptr [rsp + 11] # 1-byte Folded Reload
+ add r10b, byte ptr [rsp + 20] # 1-byte Folded Reload
shl r14b, 2
or r14b, r10b
shl r12b, 3
or r12b, r14b
- movzx eax, byte ptr [rsp + 9] # 1-byte Folded Reload
+ movzx eax, byte ptr [rsp + 18] # 1-byte Folded Reload
shl al, 4
or al, r12b
mov ebx, eax
- mov r12, qword ptr [rsp + 48] # 8-byte Reload
- movzx eax, byte ptr [rsp + 12] # 1-byte Folded Reload
+ movzx eax, byte ptr [rsp + 21] # 1-byte Folded Reload
shl al, 5
or al, bl
- mov byte ptr [r12], r13b
- movzx ebx, byte ptr [rsp + 13] # 1-byte Folded Reload
+ mov rdi, qword ptr [rsp + 32] # 8-byte Reload
+ mov byte ptr [rdi], r13b
+ mov r15, qword ptr [rsp + 32] # 8-byte Reload
+ movzx ebx, byte ptr [rsp + 24] # 1-byte Folded Reload
shl bl, 6
shl r9b, 7
or r9b, bl
- mov byte ptr [r12 + 1], dil
+ mov byte ptr [r15 + 1], r8b
or r9b, al
- movzx eax, byte ptr [rsp + 14] # 1-byte Folded Reload
+ movzx eax, byte ptr [rsp + 22] # 1-byte Folded Reload
add al, al
- add al, byte ptr [rsp + 20] # 1-byte Folded Reload
+ add al, byte ptr [rsp + 29] # 1-byte Folded Reload
mov ebx, eax
- movzx eax, byte ptr [rsp + 15] # 1-byte Folded Reload
+ movzx eax, byte ptr [rsp + 23] # 1-byte Folded Reload
shl al, 2
or al, bl
mov ebx, eax
- movzx eax, byte ptr [rsp + 16] # 1-byte Folded Reload
+ movzx eax, byte ptr [rsp + 25] # 1-byte Folded Reload
shl al, 3
or al, bl
mov ebx, eax
- movzx eax, byte ptr [rsp + 17] # 1-byte Folded Reload
+ movzx eax, byte ptr [rsp + 26] # 1-byte Folded Reload
shl al, 4
or al, bl
mov ebx, eax
- movzx eax, byte ptr [rsp + 19] # 1-byte Folded Reload
+ movzx eax, byte ptr [rsp + 28] # 1-byte Folded Reload
shl al, 5
or al, bl
- movzx ebx, byte ptr [rsp + 18] # 1-byte Folded Reload
+ movzx ebx, byte ptr [rsp + 27] # 1-byte Folded Reload
shl bl, 6
shl cl, 7
or cl, bl
or cl, al
- mov byte ptr [r12 + 2], r9b
- mov byte ptr [r12 + 3], cl
+ mov byte ptr [r15 + 2], r9b
+ mov byte ptr [r15 + 3], cl
add rdx, 128
- add r12, 4
- add qword ptr [rsp + 32], -1 # 8-byte Folded Spill
- jne .LBB0_24
-# %bb.25:
- mov r14, qword ptr [rsp + 24] # 8-byte Reload
- mov r15, qword ptr [rsp + 56] # 8-byte Reload
-.LBB0_26:
- shl r15, 5
- cmp r15, r14
- jge .LBB0_123
-# %bb.27:
- sub r14, r15
+ add r15, 4
+ add qword ptr [rsp + 48], -1 # 8-byte Folded Spill
+ jne .LBB0_30
+# %bb.31:
+ mov r12, qword ptr [rsp + 40] # 8-byte Reload
+ mov rax, qword ptr [rsp + 64] # 8-byte Reload
+.LBB0_32:
+ shl rax, 5
+ sub r12, rax
+ jle .LBB0_153
+# %bb.33:
xor ecx, ecx
.p2align 4, 0x90
-.LBB0_28: # =>This Inner Loop Header: Depth=1
+.LBB0_34: # =>This Inner Loop Header: Depth=1
lea r8, [rcx + 1]
mov edi, dword ptr [rsi + 4*rcx]
cmp edi, dword ptr [rdx + 4*rcx]
@@ -291,7 +307,8 @@ comparison_equal_arr_arr_avx2: # @comparison_equal_arr_arr_avx2
neg bl
mov rdi, rcx
shr rdi, 3
- movzx r9d, byte ptr [r12 + rdi]
+ mov r10, r15
+ movzx r9d, byte ptr [r15 + rdi]
xor bl, r9b
and cl, 7
mov al, 1
@@ -299,106 +316,122 @@ comparison_equal_arr_arr_avx2: # @comparison_equal_arr_arr_avx2
shl al, cl
and al, bl
xor al, r9b
- mov byte ptr [r12 + rdi], al
+ mov byte ptr [r15 + rdi], al
mov rcx, r8
- cmp r14, r8
- jne .LBB0_28
- jmp .LBB0_123
-.LBB0_29:
+ cmp r12, r8
+ jne .LBB0_34
+ jmp .LBB0_153
+.LBB0_35:
cmp edi, 8
- jle .LBB0_30
-# %bb.43:
+ jle .LBB0_36
+# %bb.52:
cmp edi, 9
- je .LBB0_101
-# %bb.44:
+ je .LBB0_125
+# %bb.53:
cmp edi, 11
- je .LBB0_112
-# %bb.45:
+ je .LBB0_139
+# %bb.54:
cmp edi, 12
- jne .LBB0_123
-# %bb.46:
- lea r15, [r14 + 31]
- test r14, r14
- cmovns r15, r14
- lea ecx, [rax + 7]
- test eax, eax
- cmovns ecx, eax
- and ecx, -8
- sub eax, ecx
- je .LBB0_50
-# %bb.47:
- movsxd r10, eax
+ jne .LBB0_153
+# %bb.55:
+ lea eax, [r9 + 7]
+ test r9d, r9d
+ cmovns eax, r9d
+ and eax, -8
+ sub r9d, eax
+ je .LBB0_62
+# %bb.56:
+ mov r8d, 8
+ sub r8d, r9d
+ cmp r8, r12
+ cmovg r8, r12
+ test r8, r8
+ jle .LBB0_60
+# %bb.57:
+ movsxd r9, r9d
+ xor r11d, r11d
+ xor r14d, r14d
.p2align 4, 0x90
-.LBB0_48: # =>This Inner Loop Header: Depth=1
- vmovsd xmm0, qword ptr [rsi] # xmm0 = mem[0],zero
- add rsi, 8
- vucomisd xmm0, qword ptr [rdx]
- lea rdx, [rdx + 8]
- setnp cl
+.LBB0_58: # =>This Inner Loop Header: Depth=1
+ lea rcx, [r9 + r14]
+ vmovsd xmm0, qword ptr [rsi + 8*r14] # xmm0 = mem[0],zero
+ vucomisd xmm0, qword ptr [rdx + 8*r14]
+ setnp r10b
sete bl
- and bl, cl
+ and bl, r10b
neg bl
- lea rdi, [r10 + 7]
- test r10, r10
- cmovns rdi, r10
+ lea rdi, [r9 + r14]
+ add rdi, 7
+ test rcx, rcx
+ cmovns rdi, rcx
sar rdi, 3
- movzx r8d, byte ptr [r12 + rdi]
- xor bl, r8b
- lea r9d, [8*rdi]
- mov ecx, r10d
- sub ecx, r9d
+ lea eax, [8*rdi]
+ sub ecx, eax
mov eax, 1
- # kill: def $cl killed $cl killed $ecx
+ # kill: def $cl killed $cl killed $rcx
shl eax, cl
+ mov r10, r15
+ movzx ecx, byte ptr [r15 + rdi]
+ xor bl, cl
and al, bl
- xor al, r8b
- mov byte ptr [r12 + rdi], al
- add r10, 1
- cmp r10, 8
- jne .LBB0_48
-# %bb.49:
- add r12, 1
-.LBB0_50:
- sar r15, 5
- cmp r14, 32
- jl .LBB0_54
-# %bb.51:
- mov qword ptr [rsp + 24], r14 # 8-byte Spill
- mov qword ptr [rsp + 64], r15 # 8-byte Spill
- mov qword ptr [rsp + 56], r15 # 8-byte Spill
+ xor al, cl
+ mov byte ptr [r15 + rdi], al
+ add r14, 1
+ add r11, -8
+ cmp r8, r14
+ jne .LBB0_58
+# %bb.59:
+ sub rsi, r11
+ sub rdx, r11
+.LBB0_60:
+ sub r12, r8
+ je .LBB0_153
+# %bb.61:
+ add r15, 1
+.LBB0_62:
+ lea rax, [r12 + 31]
+ test r12, r12
+ cmovns rax, r12
+ sar rax, 5
+ cmp r12, 32
+ jl .LBB0_66
+# %bb.63:
+ mov qword ptr [rsp + 40], r12 # 8-byte Spill
+ mov qword ptr [rsp + 64], rax # 8-byte Spill
+ mov qword ptr [rsp + 48], rax # 8-byte Spill
.p2align 4, 0x90
-.LBB0_52: # =>This Inner Loop Header: Depth=1
- mov qword ptr [rsp + 48], r12 # 8-byte Spill
+.LBB0_64: # =>This Inner Loop Header: Depth=1
+ mov qword ptr [rsp + 32], r15 # 8-byte Spill
vmovsd xmm0, qword ptr [rsi] # xmm0 = mem[0],zero
vucomisd xmm0, qword ptr [rdx]
vmovsd xmm0, qword ptr [rsi + 8] # xmm0 = mem[0],zero
setnp al
sete cl
and cl, al
- mov byte ptr [rsp + 21], cl # 1-byte Spill
+ mov byte ptr [rsp + 29], cl # 1-byte Spill
vucomisd xmm0, qword ptr [rdx + 8]
setnp al
sete cl
and cl, al
- mov byte ptr [rsp + 13], cl # 1-byte Spill
+ mov byte ptr [rsp + 22], cl # 1-byte Spill
vmovsd xmm0, qword ptr [rsi + 16] # xmm0 = mem[0],zero
vucomisd xmm0, qword ptr [rdx + 16]
setnp al
sete cl
and cl, al
- mov byte ptr [rsp + 20], cl # 1-byte Spill
+ mov byte ptr [rsp + 28], cl # 1-byte Spill
vmovsd xmm0, qword ptr [rsi + 24] # xmm0 = mem[0],zero
vucomisd xmm0, qword ptr [rdx + 24]
setnp al
sete cl
and cl, al
- mov byte ptr [rsp + 23], cl # 1-byte Spill
+ mov byte ptr [rsp + 31], cl # 1-byte Spill
vmovsd xmm0, qword ptr [rsi + 32] # xmm0 = mem[0],zero
vucomisd xmm0, qword ptr [rdx + 32]
setnp al
sete cl
and cl, al
- mov byte ptr [rsp + 22], cl # 1-byte Spill
+ mov byte ptr [rsp + 30], cl # 1-byte Spill
vmovsd xmm0, qword ptr [rsi + 40] # xmm0 = mem[0],zero
vucomisd xmm0, qword ptr [rdx + 40]
setnp al
@@ -414,13 +447,13 @@ comparison_equal_arr_arr_avx2: # @comparison_equal_arr_arr_avx2
setnp al
sete cl
and cl, al
- mov byte ptr [rsp + 3], cl # 1-byte Spill
+ mov byte ptr [rsp + 12], cl # 1-byte Spill
vmovsd xmm0, qword ptr [rsi + 64] # xmm0 = mem[0],zero
vucomisd xmm0, qword ptr [rdx + 64]
setnp al
sete cl
and cl, al
- mov byte ptr [rsp + 19], cl # 1-byte Spill
+ mov byte ptr [rsp + 27], cl # 1-byte Spill
vmovsd xmm0, qword ptr [rsi + 72] # xmm0 = mem[0],zero
vucomisd xmm0, qword ptr [rdx + 72]
setnp al
@@ -431,117 +464,116 @@ comparison_equal_arr_arr_avx2: # @comparison_equal_arr_arr_avx2
setnp al
sete cl
and cl, al
- mov byte ptr [rsp + 18], cl # 1-byte Spill
+ mov byte ptr [rsp + 26], cl # 1-byte Spill
vmovsd xmm0, qword ptr [rsi + 88] # xmm0 = mem[0],zero
vucomisd xmm0, qword ptr [rdx + 88]
setnp al
sete cl
and cl, al
- mov byte ptr [rsp + 17], cl # 1-byte Spill
+ mov byte ptr [rsp + 25], cl # 1-byte Spill
vmovsd xmm0, qword ptr [rsi + 96] # xmm0 = mem[0],zero
vucomisd xmm0, qword ptr [rdx + 96]
setnp al
sete cl
and cl, al
- mov byte ptr [rsp + 16], cl # 1-byte Spill
+ mov byte ptr [rsp + 11], cl # 1-byte Spill
vmovsd xmm0, qword ptr [rsi + 104] # xmm0 = mem[0],zero
vucomisd xmm0, qword ptr [rdx + 104]
setnp al
sete cl
and cl, al
- mov byte ptr [rsp + 15], cl # 1-byte Spill
+ mov byte ptr [rsp + 24], cl # 1-byte Spill
vmovsd xmm0, qword ptr [rsi + 112] # xmm0 = mem[0],zero
vucomisd xmm0, qword ptr [rdx + 112]
setnp al
sete cl
and cl, al
- mov byte ptr [rsp + 12], cl # 1-byte Spill
+ mov byte ptr [rsp + 21], cl # 1-byte Spill
vmovsd xmm0, qword ptr [rsi + 120] # xmm0 = mem[0],zero
vucomisd xmm0, qword ptr [rdx + 120]
setnp al
sete cl
and cl, al
- mov byte ptr [rsp + 11], cl # 1-byte Spill
+ mov byte ptr [rsp + 20], cl # 1-byte Spill
vmovsd xmm0, qword ptr [rsi + 128] # xmm0 = mem[0],zero
vucomisd xmm0, qword ptr [rdx + 128]
setnp al
sete cl
and cl, al
- mov byte ptr [rsp + 14], cl # 1-byte Spill
+ mov byte ptr [rsp + 23], cl # 1-byte Spill
vmovsd xmm0, qword ptr [rsi + 136] # xmm0 = mem[0],zero
vucomisd xmm0, qword ptr [rdx + 136]
setnp al
sete cl
and cl, al
- mov byte ptr [rsp + 10], cl # 1-byte Spill
+ mov byte ptr [rsp + 19], cl # 1-byte Spill
vmovsd xmm0, qword ptr [rsi + 144] # xmm0 = mem[0],zero
vucomisd xmm0, qword ptr [rdx + 144]
setnp al
sete cl
and cl, al
- mov byte ptr [rsp + 9], cl # 1-byte Spill
+ mov byte ptr [rsp + 18], cl # 1-byte Spill
vmovsd xmm0, qword ptr [rsi + 152] # xmm0 = mem[0],zero
vucomisd xmm0, qword ptr [rdx + 152]
setnp al
- sete r14b
- and r14b, al
+ sete r15b
+ and r15b, al
vmovsd xmm0, qword ptr [rsi + 160] # xmm0 = mem[0],zero
vucomisd xmm0, qword ptr [rdx + 160]
setnp al
sete cl
and cl, al
- mov byte ptr [rsp + 8], cl # 1-byte Spill
+ mov byte ptr [rsp + 17], cl # 1-byte Spill
vmovsd xmm0, qword ptr [rsi + 168] # xmm0 = mem[0],zero
vucomisd xmm0, qword ptr [rdx + 168]
setnp al
sete cl
and cl, al
- mov byte ptr [rsp + 7], cl # 1-byte Spill
+ mov byte ptr [rsp + 16], cl # 1-byte Spill
vmovsd xmm0, qword ptr [rsi + 176] # xmm0 = mem[0],zero
vucomisd xmm0, qword ptr [rdx + 176]
setnp al
sete cl
and cl, al
- mov byte ptr [rsp + 5], cl # 1-byte Spill
+ mov byte ptr [rsp + 14], cl # 1-byte Spill
vmovsd xmm0, qword ptr [rsi + 184] # xmm0 = mem[0],zero
vucomisd xmm0, qword ptr [rdx + 184]
setnp al
- sete r15b
- and r15b, al
+ sete r10b
+ and r10b, al
vmovsd xmm0, qword ptr [rsi + 192] # xmm0 = mem[0],zero
vucomisd xmm0, qword ptr [rdx + 192]
setnp al
sete cl
and cl, al
- mov byte ptr [rsp + 6], cl # 1-byte Spill
+ mov byte ptr [rsp + 15], cl # 1-byte Spill
vmovsd xmm0, qword ptr [rsi + 200] # xmm0 = mem[0],zero
vucomisd xmm0, qword ptr [rdx + 200]
setnp al
- sete cl
- and cl, al
- mov byte ptr [rsp + 32], cl # 1-byte Spill
+ sete r12b
+ and r12b, al
vmovsd xmm0, qword ptr [rsi + 208] # xmm0 = mem[0],zero
vucomisd xmm0, qword ptr [rdx + 208]
setnp al
- sete r11b
- and r11b, al
+ sete r14b
+ and r14b, al
vmovsd xmm0, qword ptr [rsi + 216] # xmm0 = mem[0],zero
vucomisd xmm0, qword ptr [rdx + 216]
setnp al
- sete r10b
- and r10b, al
+ sete r11b
+ and r11b, al
vmovsd xmm0, qword ptr [rsi + 224] # xmm0 = mem[0],zero
vucomisd xmm0, qword ptr [rdx + 224]
setnp al
sete cl
and cl, al
- mov byte ptr [rsp + 4], cl # 1-byte Spill
+ mov byte ptr [rsp + 13], cl # 1-byte Spill
vmovsd xmm0, qword ptr [rsi + 232] # xmm0 = mem[0],zero
vucomisd xmm0, qword ptr [rdx + 232]
setnp al
sete cl
and cl, al
- mov byte ptr [rsp + 40], cl # 1-byte Spill
+ mov byte ptr [rsp + 56], cl # 1-byte Spill
vmovsd xmm0, qword ptr [rsi + 240] # xmm0 = mem[0],zero
vucomisd xmm0, qword ptr [rdx + 240]
setnp al
@@ -553,110 +585,108 @@ comparison_equal_arr_arr_avx2: # @comparison_equal_arr_arr_avx2
setnp al
sete r8b
and r8b, al
- movzx eax, byte ptr [rsp + 13] # 1-byte Folded Reload
+ movzx eax, byte ptr [rsp + 22] # 1-byte Folded Reload
add al, al
- add al, byte ptr [rsp + 21] # 1-byte Folded Reload
+ add al, byte ptr [rsp + 29] # 1-byte Folded Reload
shl dil, 5
shl r13b, 6
or r13b, dil
mov edi, r13d
- movzx ecx, byte ptr [rsp + 20] # 1-byte Folded Reload
+ movzx ecx, byte ptr [rsp + 28] # 1-byte Folded Reload
shl cl, 2
or cl, al
mov eax, ebx
add al, bl
- add al, byte ptr [rsp + 19] # 1-byte Folded Reload
+ add al, byte ptr [rsp + 27] # 1-byte Folded Reload
mov r13d, eax
- movzx eax, byte ptr [rsp + 3] # 1-byte Folded Reload
+ movzx eax, byte ptr [rsp + 12] # 1-byte Folded Reload
shl al, 7
or al, dil
- mov byte ptr [rsp + 3], al # 1-byte Spill
- movzx eax, byte ptr [rsp + 18] # 1-byte Folded Reload
+ mov byte ptr [rsp + 12], al # 1-byte Spill
+ movzx eax, byte ptr [rsp + 26] # 1-byte Folded Reload
shl al, 2
or al, r13b
mov edi, eax
- movzx eax, byte ptr [rsp + 23] # 1-byte Folded Reload
+ movzx eax, byte ptr [rsp + 31] # 1-byte Folded Reload
shl al, 3
or al, cl
- movzx ebx, byte ptr [rsp + 17] # 1-byte Folded Reload
+ movzx ebx, byte ptr [rsp + 25] # 1-byte Folded Reload
shl bl, 3
or bl, dil
- movzx r13d, byte ptr [rsp + 22] # 1-byte Folded Reload
+ movzx r13d, byte ptr [rsp + 30] # 1-byte Folded Reload
shl r13b, 4
or r13b, al
- movzx eax, byte ptr [rsp + 16] # 1-byte Folded Reload
+ movzx eax, byte ptr [rsp + 11] # 1-byte Folded Reload
shl al, 4
or al, bl
- mov edi, eax
- movzx ebx, byte ptr [rsp + 15] # 1-byte Folded Reload
+ mov byte ptr [rsp + 11], al # 1-byte Spill
+ movzx ebx, byte ptr [rsp + 24] # 1-byte Folded Reload
shl bl, 5
- movzx eax, byte ptr [rsp + 12] # 1-byte Folded Reload
+ movzx eax, byte ptr [rsp + 21] # 1-byte Folded Reload
shl al, 6
or al, bl
mov ebx, eax
- movzx eax, byte ptr [rsp + 11] # 1-byte Folded Reload
- shl al, 7
- or al, bl
- movzx ebx, byte ptr [rsp + 10] # 1-byte Folded Reload
+ movzx edi, byte ptr [rsp + 20] # 1-byte Folded Reload
+ shl dil, 7
+ or dil, al
+ movzx ebx, byte ptr [rsp + 19] # 1-byte Folded Reload
add bl, bl
- add bl, byte ptr [rsp + 14] # 1-byte Folded Reload
- movzx ecx, byte ptr [rsp + 9] # 1-byte Folded Reload
+ add bl, byte ptr [rsp + 23] # 1-byte Folded Reload
+ movzx ecx, byte ptr [rsp + 18] # 1-byte Folded Reload
shl cl, 2
or cl, bl
- shl r14b, 3
- or r14b, cl
- movzx ebx, byte ptr [rsp + 8] # 1-byte Folded Reload
+ shl r15b, 3
+ or r15b, cl
+ movzx ebx, byte ptr [rsp + 17] # 1-byte Folded Reload
shl bl, 4
- or bl, r14b
- mov r12, qword ptr [rsp + 48] # 8-byte Reload
- movzx r14d, byte ptr [rsp + 3] # 1-byte Folded Reload
- or r14b, r13b
- movzx r13d, byte ptr [rsp + 7] # 1-byte Folded Reload
+ or bl, r15b
+ mov r15, qword ptr [rsp + 32] # 8-byte Reload
+ movzx eax, byte ptr [rsp + 12] # 1-byte Folded Reload
+ or al, r13b
+ movzx r13d, byte ptr [rsp + 16] # 1-byte Folded Reload
shl r13b, 5
- movzx ecx, byte ptr [rsp + 5] # 1-byte Folded Reload
+ movzx ecx, byte ptr [rsp + 14] # 1-byte Folded Reload
shl cl, 6
or cl, r13b
- or al, dil
- shl r15b, 7
- or r15b, cl
- or r15b, bl
- movzx ecx, byte ptr [rsp + 32] # 1-byte Folded Reload
- add cl, cl
- add cl, byte ptr [rsp + 6] # 1-byte Folded Reload
- shl r11b, 2
- or r11b, cl
- shl r10b, 3
- or r10b, r11b
- movzx ecx, byte ptr [rsp + 4] # 1-byte Folded Reload
+ or dil, byte ptr [rsp + 11] # 1-byte Folded Reload
+ shl r10b, 7
+ or r10b, cl
+ or r10b, bl
+ add r12b, r12b
+ add r12b, byte ptr [rsp + 15] # 1-byte Folded Reload
+ shl r14b, 2
+ or r14b, r12b
+ shl r11b, 3
+ or r11b, r14b
+ movzx ecx, byte ptr [rsp + 13] # 1-byte Folded Reload
shl cl, 4
- or cl, r10b
- mov byte ptr [r12], r14b
- movzx ebx, byte ptr [rsp + 40] # 1-byte Folded Reload
+ or cl, r11b
+ mov byte ptr [r15], al
+ movzx ebx, byte ptr [rsp + 56] # 1-byte Folded Reload
shl bl, 5
shl r9b, 6
or r9b, bl
- mov byte ptr [r12 + 1], al
+ mov byte ptr [r15 + 1], dil
shl r8b, 7
or r8b, r9b
or r8b, cl
- mov byte ptr [r12 + 2], r15b
- mov byte ptr [r12 + 3], r8b
+ mov byte ptr [r15 + 2], r10b
+ mov byte ptr [r15 + 3], r8b
add rdx, 256
- add r12, 4
- add qword ptr [rsp + 56], -1 # 8-byte Folded Spill
- jne .LBB0_52
-# %bb.53:
- mov r14, qword ptr [rsp + 24] # 8-byte Reload
- mov r15, qword ptr [rsp + 64] # 8-byte Reload
-.LBB0_54:
- shl r15, 5
- cmp r15, r14
- jge .LBB0_123
-# %bb.55:
- sub r14, r15
+ add r15, 4
+ add qword ptr [rsp + 48], -1 # 8-byte Folded Spill
+ jne .LBB0_64
+# %bb.65:
+ mov r12, qword ptr [rsp + 40] # 8-byte Reload
+ mov rax, qword ptr [rsp + 64] # 8-byte Reload
+.LBB0_66:
+ shl rax, 5
+ sub r12, rax
+ jle .LBB0_153
+# %bb.67:
xor ecx, ecx
.p2align 4, 0x90
-.LBB0_56: # =>This Inner Loop Header: Depth=1
+.LBB0_68: # =>This Inner Loop Header: Depth=1
lea r9, [rcx + 1]
vmovsd xmm0, qword ptr [rsi + 8*rcx] # xmm0 = mem[0],zero
vucomisd xmm0, qword ptr [rdx + 8*rcx]
@@ -666,7 +696,8 @@ comparison_equal_arr_arr_avx2: # @comparison_equal_arr_arr_avx2
neg al
mov rdi, rcx
shr rdi, 3
- movzx r8d, byte ptr [r12 + rdi]
+ mov r10, r15
+ movzx r8d, byte ptr [r15 + rdi]
xor al, r8b
and cl, 7
mov bl, 1
@@ -674,95 +705,119 @@ comparison_equal_arr_arr_avx2: # @comparison_equal_arr_arr_avx2
shl bl, cl
and bl, al
xor bl, r8b
- mov byte ptr [r12 + rdi], bl
+ mov byte ptr [r15 + rdi], bl
mov rcx, r9
- cmp r14, r9
- jne .LBB0_56
- jmp .LBB0_123
+ cmp r12, r9
+ jne .LBB0_68
+ jmp .LBB0_153
.LBB0_2:
cmp edi, 2
- je .LBB0_57
+ mov r13, r15
+ je .LBB0_69
# %bb.3:
cmp edi, 3
- jne .LBB0_123
+ jne .LBB0_153
# %bb.4:
- lea r15, [r14 + 31]
- test r14, r14
- cmovns r15, r14
- lea ecx, [rax + 7]
- test eax, eax
- cmovns ecx, eax
- and ecx, -8
- sub eax, ecx
- je .LBB0_8
+ lea eax, [r9 + 7]
+ test r9d, r9d
+ cmovns eax, r9d
+ and eax, -8
+ sub r9d, eax
+ je .LBB0_11
# %bb.5:
- cdqe
- .p2align 4, 0x90
-.LBB0_6: # =>This Inner Loop Header: Depth=1
- movzx ecx, byte ptr [rsi]
- add rsi, 1
- cmp cl, byte ptr [rdx]
- lea rdx, [rdx + 1]
- sete r10b
- neg r10b
- lea rdi, [rax + 7]
+ mov eax, 8
+ sub eax, r9d
+ cmp rax, r12
+ cmovg rax, r12
test rax, rax
- cmovns rdi, rax
+ jle .LBB0_9
+# %bb.6:
+ mov qword ptr [rsp + 40], r12 # 8-byte Spill
+ movsxd rbx, r9d
+ mov qword ptr [rsp + 32], rax # 8-byte Spill
+ mov r9, rax
+ neg r9
+ xor r10d, r10d
+ xor r11d, r11d
+ .p2align 4, 0x90
+.LBB0_7: # =>This Inner Loop Header: Depth=1
+ movzx ecx, byte ptr [rsi + r11]
+ cmp cl, byte ptr [rdx + r11]
+ sete r12b
+ neg r12b
+ lea rdi, [rbx + 7]
+ test rbx, rbx
+ cmovns rdi, rbx
sar rdi, 3
- movzx r8d, byte ptr [r12 + rdi]
- xor r10b, r8b
- lea r9d, [8*rdi]
- mov ecx, eax
- sub ecx, r9d
- mov ebx, 1
+ movzx r14d, byte ptr [r15 + rdi]
+ lea r15d, [8*rdi]
+ mov ecx, ebx
+ sub ecx, r15d
+ mov r8, r13
+ mov eax, 1
# kill: def $cl killed $cl killed $ecx
- shl ebx, cl
- and bl, r10b
- xor bl, r8b
- mov byte ptr [r12 + rdi], bl
- add rax, 1
- cmp rax, 8
- jne .LBB0_6
-# %bb.7:
- add r12, 1
-.LBB0_8:
- sar r15, 5
- cmp r14, 32
- jl .LBB0_12
-# %bb.9:
- mov qword ptr [rsp + 24], r14 # 8-byte Spill
- mov qword ptr [rsp + 32], r15 # 8-byte Spill
- mov qword ptr [rsp + 40], r15 # 8-byte Spill
+ shl eax, cl
+ xor r12b, r14b
+ and al, r12b
+ xor al, r14b
+ mov r15, r13
+ mov byte ptr [r13 + rdi], al
+ add r11, 1
+ add rbx, 1
+ add r10, -1
+ cmp r9, r10
+ jne .LBB0_7
+# %bb.8:
+ sub rsi, r10
+ sub rdx, r10
+ mov rax, qword ptr [rsp + 32] # 8-byte Reload
+ mov r12, qword ptr [rsp + 40] # 8-byte Reload
+.LBB0_9:
+ sub r12, rax
+ je .LBB0_153
+# %bb.10:
+ add r15, 1
+.LBB0_11:
+ lea rax, [r12 + 31]
+ test r12, r12
+ cmovns rax, r12
+ sar rax, 5
+ cmp r12, 32
+ jl .LBB0_15
+# %bb.12:
+ mov qword ptr [rsp + 40], r12 # 8-byte Spill
+ mov qword ptr [rsp + 48], rax # 8-byte Spill
+ mov qword ptr [rsp + 56], rax # 8-byte Spill
.p2align 4, 0x90
-.LBB0_10: # =>This Inner Loop Header: Depth=1
- mov qword ptr [rsp + 48], r12 # 8-byte Spill
+.LBB0_13: # =>This Inner Loop Header: Depth=1
+ mov qword ptr [rsp + 32], r15 # 8-byte Spill
movzx eax, byte ptr [rsi]
movzx ecx, byte ptr [rsi + 1]
cmp al, byte ptr [rdx]
- sete byte ptr [rsp + 4] # 1-byte Folded Spill
+ sete byte ptr [rsp + 13] # 1-byte Folded Spill
cmp cl, byte ptr [rdx + 1]
sete bl
movzx eax, byte ptr [rsi + 2]
cmp al, byte ptr [rdx + 2]
- sete byte ptr [rsp + 21] # 1-byte Folded Spill
+ sete byte ptr [rsp + 30] # 1-byte Folded Spill
movzx eax, byte ptr [rsi + 3]
cmp al, byte ptr [rdx + 3]
- sete byte ptr [rsp + 22] # 1-byte Folded Spill
+ sete byte ptr [rsp + 31] # 1-byte Folded Spill
movzx eax, byte ptr [rsi + 4]
cmp al, byte ptr [rdx + 4]
- sete byte ptr [rsp + 23] # 1-byte Folded Spill
+ sete byte ptr [rsp + 11] # 1-byte Folded Spill
movzx eax, byte ptr [rsi + 5]
cmp al, byte ptr [rdx + 5]
- sete byte ptr [rsp + 3] # 1-byte Folded Spill
+ sete byte ptr [rsp + 12] # 1-byte Folded Spill
movzx eax, byte ptr [rsi + 6]
cmp al, byte ptr [rdx + 6]
- sete byte ptr [rsp + 5] # 1-byte Folded Spill
+ sete byte ptr [rsp + 14] # 1-byte Folded Spill
movzx eax, byte ptr [rsi + 7]
cmp al, byte ptr [rdx + 7]
- sete r15b
+ sete r14b
movzx eax, byte ptr [rsi + 8]
cmp al, byte ptr [rdx + 8]
- sete byte ptr [rsp + 8] # 1-byte Folded Spill
+ sete byte ptr [rsp + 17] # 1-byte Folded Spill
movzx eax, byte ptr [rsi + 9]
cmp al, byte ptr [rdx + 9]
sete dil
@@ -774,19 +829,19 @@ comparison_equal_arr_arr_avx2: # @comparison_equal_arr_arr_avx2
sete r11b
movzx eax, byte ptr [rsi + 12]
cmp al, byte ptr [rdx + 12]
- sete r14b
+ sete r15b
movzx eax, byte ptr [rsi + 13]
cmp al, byte ptr [rdx + 13]
- sete byte ptr [rsp + 6] # 1-byte Folded Spill
+ sete byte ptr [rsp + 15] # 1-byte Folded Spill
movzx eax, byte ptr [rsi + 14]
cmp al, byte ptr [rdx + 14]
- sete byte ptr [rsp + 7] # 1-byte Folded Spill
+ sete byte ptr [rsp + 16] # 1-byte Folded Spill
movzx eax, byte ptr [rsi + 15]
cmp al, byte ptr [rdx + 15]
sete r8b
movzx eax, byte ptr [rsi + 16]
cmp al, byte ptr [rdx + 16]
- sete byte ptr [rsp + 14] # 1-byte Folded Spill
+ sete byte ptr [rsp + 23] # 1-byte Folded Spill
movzx eax, byte ptr [rsi + 17]
cmp al, byte ptr [rdx + 17]
sete r12b
@@ -795,148 +850,147 @@ comparison_equal_arr_arr_avx2: # @comparison_equal_arr_arr_avx2
sete r13b
movzx eax, byte ptr [rsi + 19]
cmp al, byte ptr [rdx + 19]
- sete byte ptr [rsp + 9] # 1-byte Folded Spill
+ sete byte ptr [rsp + 18] # 1-byte Folded Spill
movzx eax, byte ptr [rsi + 20]
cmp al, byte ptr [rdx + 20]
- sete byte ptr [rsp + 10] # 1-byte Folded Spill
+ sete byte ptr [rsp + 19] # 1-byte Folded Spill
movzx eax, byte ptr [rsi + 21]
cmp al, byte ptr [rdx + 21]
- sete byte ptr [rsp + 11] # 1-byte Folded Spill
+ sete byte ptr [rsp + 20] # 1-byte Folded Spill
movzx eax, byte ptr [rsi + 22]
cmp al, byte ptr [rdx + 22]
- sete byte ptr [rsp + 12] # 1-byte Folded Spill
+ sete byte ptr [rsp + 21] # 1-byte Folded Spill
movzx eax, byte ptr [rsi + 23]
cmp al, byte ptr [rdx + 23]
sete r9b
movzx eax, byte ptr [rsi + 24]
cmp al, byte ptr [rdx + 24]
- sete byte ptr [rsp + 20] # 1-byte Folded Spill
+ sete byte ptr [rsp + 29] # 1-byte Folded Spill
movzx eax, byte ptr [rsi + 25]
cmp al, byte ptr [rdx + 25]
- sete byte ptr [rsp + 13] # 1-byte Folded Spill
+ sete byte ptr [rsp + 22] # 1-byte Folded Spill
movzx eax, byte ptr [rsi + 26]
cmp al, byte ptr [rdx + 26]
- sete byte ptr [rsp + 15] # 1-byte Folded Spill
+ sete byte ptr [rsp + 24] # 1-byte Folded Spill
movzx eax, byte ptr [rsi + 27]
cmp al, byte ptr [rdx + 27]
- sete byte ptr [rsp + 16] # 1-byte Folded Spill
+ sete byte ptr [rsp + 25] # 1-byte Folded Spill
movzx eax, byte ptr [rsi + 28]
cmp al, byte ptr [rdx + 28]
- sete byte ptr [rsp + 17] # 1-byte Folded Spill
+ sete byte ptr [rsp + 26] # 1-byte Folded Spill
movzx eax, byte ptr [rsi + 29]
cmp al, byte ptr [rdx + 29]
- sete byte ptr [rsp + 18] # 1-byte Folded Spill
+ sete byte ptr [rsp + 27] # 1-byte Folded Spill
movzx eax, byte ptr [rsi + 30]
cmp al, byte ptr [rdx + 30]
- sete byte ptr [rsp + 19] # 1-byte Folded Spill
+ sete byte ptr [rsp + 28] # 1-byte Folded Spill
movzx eax, byte ptr [rsi + 31]
add rsi, 32
cmp al, byte ptr [rdx + 31]
sete cl
add bl, bl
- add bl, byte ptr [rsp + 4] # 1-byte Folded Reload
+ add bl, byte ptr [rsp + 13] # 1-byte Folded Reload
mov eax, ebx
- movzx ebx, byte ptr [rsp + 5] # 1-byte Folded Reload
+ movzx ebx, byte ptr [rsp + 14] # 1-byte Folded Reload
shl bl, 6
- shl r15b, 7
- or r15b, bl
- movzx ebx, byte ptr [rsp + 21] # 1-byte Folded Reload
+ shl r14b, 7
+ or r14b, bl
+ movzx ebx, byte ptr [rsp + 30] # 1-byte Folded Reload
shl bl, 2
or bl, al
mov eax, ebx
add dil, dil
- add dil, byte ptr [rsp + 8] # 1-byte Folded Reload
- movzx ebx, byte ptr [rsp + 22] # 1-byte Folded Reload
+ add dil, byte ptr [rsp + 17] # 1-byte Folded Reload
+ movzx ebx, byte ptr [rsp + 31] # 1-byte Folded Reload
shl bl, 3
or bl, al
mov eax, ebx
shl r10b, 2
or r10b, dil
- movzx ebx, byte ptr [rsp + 23] # 1-byte Folded Reload
+ movzx ebx, byte ptr [rsp + 11] # 1-byte Folded Reload
shl bl, 4
or bl, al
mov edi, ebx
shl r11b, 3
or r11b, r10b
- movzx ebx, byte ptr [rsp + 3] # 1-byte Folded Reload
+ movzx ebx, byte ptr [rsp + 12] # 1-byte Folded Reload
shl bl, 5
or bl, dil
- shl r14b, 4
- or r14b, r11b
- movzx eax, byte ptr [rsp + 6] # 1-byte Folded Reload
+ shl r15b, 4
+ or r15b, r11b
+ movzx eax, byte ptr [rsp + 15] # 1-byte Folded Reload
shl al, 5
- or al, r14b
- movzx edi, byte ptr [rsp + 7] # 1-byte Folded Reload
+ or al, r15b
+ movzx edi, byte ptr [rsp + 16] # 1-byte Folded Reload
shl dil, 6
shl r8b, 7
or r8b, dil
- or r15b, bl
+ or r14b, bl
or r8b, al
add r12b, r12b
- add r12b, byte ptr [rsp + 14] # 1-byte Folded Reload
+ add r12b, byte ptr [rsp + 23] # 1-byte Folded Reload
shl r13b, 2
or r13b, r12b
- mov r12, qword ptr [rsp + 48] # 8-byte Reload
- movzx eax, byte ptr [rsp + 9] # 1-byte Folded Reload
+ movzx eax, byte ptr [rsp + 18] # 1-byte Folded Reload
shl al, 3
or al, r13b
mov ebx, eax
- movzx eax, byte ptr [rsp + 10] # 1-byte Folded Reload
+ mov r15, qword ptr [rsp + 32] # 8-byte Reload
+ movzx eax, byte ptr [rsp + 19] # 1-byte Folded Reload
shl al, 4
or al, bl
mov ebx, eax
- movzx eax, byte ptr [rsp + 11] # 1-byte Folded Reload
+ movzx eax, byte ptr [rsp + 20] # 1-byte Folded Reload
shl al, 5
or al, bl
- mov byte ptr [r12], r15b
- movzx ebx, byte ptr [rsp + 12] # 1-byte Folded Reload
+ mov byte ptr [r15], r14b
+ movzx ebx, byte ptr [rsp + 21] # 1-byte Folded Reload
shl bl, 6
shl r9b, 7
or r9b, bl
- mov byte ptr [r12 + 1], r8b
+ mov byte ptr [r15 + 1], r8b
or r9b, al
- movzx eax, byte ptr [rsp + 13] # 1-byte Folded Reload
+ movzx eax, byte ptr [rsp + 22] # 1-byte Folded Reload
add al, al
- add al, byte ptr [rsp + 20] # 1-byte Folded Reload
+ add al, byte ptr [rsp + 29] # 1-byte Folded Reload
mov ebx, eax
- movzx eax, byte ptr [rsp + 15] # 1-byte Folded Reload
+ movzx eax, byte ptr [rsp + 24] # 1-byte Folded Reload
shl al, 2
or al, bl
mov ebx, eax
- movzx eax, byte ptr [rsp + 16] # 1-byte Folded Reload
+ movzx eax, byte ptr [rsp + 25] # 1-byte Folded Reload
shl al, 3
or al, bl
mov ebx, eax
- movzx eax, byte ptr [rsp + 17] # 1-byte Folded Reload
+ movzx eax, byte ptr [rsp + 26] # 1-byte Folded Reload
shl al, 4
or al, bl
mov ebx, eax
- movzx eax, byte ptr [rsp + 18] # 1-byte Folded Reload
+ movzx eax, byte ptr [rsp + 27] # 1-byte Folded Reload
shl al, 5
or al, bl
- movzx ebx, byte ptr [rsp + 19] # 1-byte Folded Reload
+ movzx ebx, byte ptr [rsp + 28] # 1-byte Folded Reload
shl bl, 6
shl cl, 7
or cl, bl
or cl, al
- mov byte ptr [r12 + 2], r9b
- mov byte ptr [r12 + 3], cl
+ mov byte ptr [r15 + 2], r9b
+ mov byte ptr [r15 + 3], cl
add rdx, 32
- add r12, 4
- add qword ptr [rsp + 40], -1 # 8-byte Folded Spill
- jne .LBB0_10
-# %bb.11:
- mov r14, qword ptr [rsp + 24] # 8-byte Reload
- mov r15, qword ptr [rsp + 32] # 8-byte Reload
-.LBB0_12:
- shl r15, 5
- cmp r15, r14
- jge .LBB0_123
-# %bb.13:
- sub r14, r15
+ add r15, 4
+ add qword ptr [rsp + 56], -1 # 8-byte Folded Spill
+ jne .LBB0_13
+# %bb.14:
+ mov r12, qword ptr [rsp + 40] # 8-byte Reload
+ mov rax, qword ptr [rsp + 48] # 8-byte Reload
+.LBB0_15:
+ shl rax, 5
+ sub r12, rax
+ jle .LBB0_153
+# %bb.16:
xor ecx, ecx
.p2align 4, 0x90
-.LBB0_14: # =>This Inner Loop Header: Depth=1
+.LBB0_17: # =>This Inner Loop Header: Depth=1
lea r8, [rcx + 1]
movzx ebx, byte ptr [rsi + rcx]
cmp bl, byte ptr [rdx + rcx]
@@ -944,7 +998,8 @@ comparison_equal_arr_arr_avx2: # @comparison_equal_arr_arr_avx2
neg bl
mov rdi, rcx
shr rdi, 3
- movzx r9d, byte ptr [r12 + rdi]
+ mov r10, r15
+ movzx r9d, byte ptr [r15 + rdi]
xor bl, r9b
and cl, 7
mov al, 1
@@ -952,98 +1007,114 @@ comparison_equal_arr_arr_avx2: # @comparison_equal_arr_arr_avx2
shl al, cl
and al, bl
xor al, r9b
- mov byte ptr [r12 + rdi], al
+ mov byte ptr [r15 + rdi], al
mov rcx, r8
- cmp r14, r8
- jne .LBB0_14
- jmp .LBB0_123
-.LBB0_30:
+ cmp r12, r8
+ jne .LBB0_17
+ jmp .LBB0_153
+.LBB0_36:
cmp edi, 7
- je .LBB0_90
-# %bb.31:
+ je .LBB0_111
+# %bb.37:
cmp edi, 8
- jne .LBB0_123
-# %bb.32:
- lea r15, [r14 + 31]
- test r14, r14
- cmovns r15, r14
- lea ecx, [rax + 7]
- test eax, eax
- cmovns ecx, eax
- and ecx, -8
- sub eax, ecx
- je .LBB0_36
-# %bb.33:
- cdqe
+ jne .LBB0_153
+# %bb.38:
+ lea eax, [r9 + 7]
+ test r9d, r9d
+ cmovns eax, r9d
+ and eax, -8
+ sub r9d, eax
+ je .LBB0_45
+# %bb.39:
+ mov r8d, 8
+ sub r8d, r9d
+ cmp r8, r12
+ cmovg r8, r12
+ test r8, r8
+ jle .LBB0_43
+# %bb.40:
+ movsxd r9, r9d
+ xor r10d, r10d
+ xor eax, eax
.p2align 4, 0x90
-.LBB0_34: # =>This Inner Loop Header: Depth=1
- mov rcx, qword ptr [rsi]
- add rsi, 8
- cmp rcx, qword ptr [rdx]
- lea rdx, [rdx + 8]
- sete r10b
- neg r10b
- lea rdi, [rax + 7]
- test rax, rax
- cmovns rdi, rax
+.LBB0_41: # =>This Inner Loop Header: Depth=1
+ lea rcx, [r9 + rax]
+ mov rbx, qword ptr [rsi + 8*rax]
+ cmp rbx, qword ptr [rdx + 8*rax]
+ sete r11b
+ neg r11b
+ lea rdi, [r9 + rax]
+ add rdi, 7
+ test rcx, rcx
+ cmovns rdi, rcx
sar rdi, 3
- movzx r8d, byte ptr [r12 + rdi]
- xor r10b, r8b
- lea r9d, [8*rdi]
- mov ecx, eax
- sub ecx, r9d
+ lea ebx, [8*rdi]
+ sub ecx, ebx
mov ebx, 1
- # kill: def $cl killed $cl killed $ecx
+ # kill: def $cl killed $cl killed $rcx
shl ebx, cl
- and bl, r10b
- xor bl, r8b
- mov byte ptr [r12 + rdi], bl
+ mov r14, r15
+ movzx ecx, byte ptr [r15 + rdi]
+ xor r11b, cl
+ and bl, r11b
+ xor bl, cl
+ mov byte ptr [r15 + rdi], bl
add rax, 1
- cmp rax, 8
- jne .LBB0_34
-# %bb.35:
- add r12, 1
-.LBB0_36:
- sar r15, 5
- cmp r14, 32
- jl .LBB0_40
-# %bb.37:
- mov qword ptr [rsp + 24], r14 # 8-byte Spill
- mov qword ptr [rsp + 56], r15 # 8-byte Spill
- mov qword ptr [rsp + 32], r15 # 8-byte Spill
+ add r10, -8
+ cmp r8, rax
+ jne .LBB0_41
+# %bb.42:
+ sub rsi, r10
+ sub rdx, r10
+.LBB0_43:
+ sub r12, r8
+ je .LBB0_153
+# %bb.44:
+ add r15, 1
+.LBB0_45:
+ lea rax, [r12 + 31]
+ test r12, r12
+ cmovns rax, r12
+ sar rax, 5
+ cmp r12, 32
+ jl .LBB0_49
+# %bb.46:
+ mov qword ptr [rsp + 40], r12 # 8-byte Spill
+ mov qword ptr [rsp + 64], rax # 8-byte Spill
+ mov qword ptr [rsp + 48], rax # 8-byte Spill
.p2align 4, 0x90
-.LBB0_38: # =>This Inner Loop Header: Depth=1
- mov qword ptr [rsp + 48], r12 # 8-byte Spill
+.LBB0_47: # =>This Inner Loop Header: Depth=1
+ mov qword ptr [rsp + 32], r15 # 8-byte Spill
mov rax, qword ptr [rsi]
mov rcx, qword ptr [rsi + 8]
cmp rax, qword ptr [rdx]
- sete byte ptr [rsp + 4] # 1-byte Folded Spill
+ sete byte ptr [rsp + 13] # 1-byte Folded Spill
cmp rcx, qword ptr [rdx + 8]
- sete byte ptr [rsp + 40] # 1-byte Folded Spill
+ sete byte ptr [rsp + 56] # 1-byte Folded Spill
mov rax, qword ptr [rsi + 16]
cmp rax, qword ptr [rdx + 16]
- sete byte ptr [rsp + 21] # 1-byte Folded Spill
+ sete byte ptr [rsp + 30] # 1-byte Folded Spill
mov rax, qword ptr [rsi + 24]
cmp rax, qword ptr [rdx + 24]
- sete byte ptr [rsp + 22] # 1-byte Folded Spill
+ sete byte ptr [rsp + 31] # 1-byte Folded Spill
mov rax, qword ptr [rsi + 32]
cmp rax, qword ptr [rdx + 32]
- sete byte ptr [rsp + 23] # 1-byte Folded Spill
+ sete byte ptr [rsp + 11] # 1-byte Folded Spill
mov rax, qword ptr [rsi + 40]
cmp rax, qword ptr [rdx + 40]
- sete byte ptr [rsp + 3] # 1-byte Folded Spill
+ sete byte ptr [rsp + 12] # 1-byte Folded Spill
mov rax, qword ptr [rsi + 48]
cmp rax, qword ptr [rdx + 48]
- sete byte ptr [rsp + 5] # 1-byte Folded Spill
+ sete byte ptr [rsp + 14] # 1-byte Folded Spill
mov rax, qword ptr [rsi + 56]
cmp rax, qword ptr [rdx + 56]
sete r13b
mov rax, qword ptr [rsi + 64]
cmp rax, qword ptr [rdx + 64]
- sete byte ptr [rsp + 10] # 1-byte Folded Spill
+ sete byte ptr [rsp + 19] # 1-byte Folded Spill
mov rax, qword ptr [rsi + 72]
cmp rax, qword ptr [rdx + 72]
- sete r8b
+ sete dil
mov rax, qword ptr [rsi + 80]
cmp rax, qword ptr [rdx + 80]
sete r11b
@@ -1052,21 +1123,21 @@ comparison_equal_arr_arr_avx2: # @comparison_equal_arr_arr_avx2
sete r15b
mov rax, qword ptr [rsi + 96]
cmp rax, qword ptr [rdx + 96]
- sete byte ptr [rsp + 6] # 1-byte Folded Spill
+ sete byte ptr [rsp + 15] # 1-byte Folded Spill
mov rax, qword ptr [rsi + 104]
cmp rax, qword ptr [rdx + 104]
- sete byte ptr [rsp + 7] # 1-byte Folded Spill
+ sete byte ptr [rsp + 16] # 1-byte Folded Spill
mov rax, qword ptr [rsi + 112]
cmp rax, qword ptr [rdx + 112]
- sete byte ptr [rsp + 8] # 1-byte Folded Spill
+ sete byte ptr [rsp + 17] # 1-byte Folded Spill
mov rax, qword ptr [rsi + 120]
cmp rax, qword ptr [rdx + 120]
- sete dil
+ sete r8b
mov rax, qword ptr [rsi + 128]
mov rbx, qword ptr [rsi + 136]
cmp rax, qword ptr [rdx + 128]
mov rax, qword ptr [rsi + 144]
- sete byte ptr [rsp + 11] # 1-byte Folded Spill
+ sete byte ptr [rsp + 20] # 1-byte Folded Spill
cmp rbx, qword ptr [rdx + 136]
mov rbx, qword ptr [rsi + 152]
sete r10b
@@ -1077,144 +1148,144 @@ comparison_equal_arr_arr_avx2: # @comparison_equal_arr_arr_avx2
mov rbx, qword ptr [rsi + 168]
sete r12b
cmp rax, qword ptr [rdx + 160]
- sete byte ptr [rsp + 9] # 1-byte Folded Spill
+ sete byte ptr [rsp + 18] # 1-byte Folded Spill
cmp rbx, qword ptr [rdx + 168]
mov rax, qword ptr [rsi + 176]
- sete byte ptr [rsp + 12] # 1-byte Folded Spill
+ sete byte ptr [rsp + 21] # 1-byte Folded Spill
cmp rax, qword ptr [rdx + 176]
mov rax, qword ptr [rsi + 184]
- sete byte ptr [rsp + 13] # 1-byte Folded Spill
+ sete byte ptr [rsp + 24] # 1-byte Folded Spill
cmp rax, qword ptr [rdx + 184]
mov rax, qword ptr [rsi + 192]
sete r9b
cmp rax, qword ptr [rdx + 192]
mov rax, qword ptr [rsi + 200]
- sete byte ptr [rsp + 20] # 1-byte Folded Spill
+ sete byte ptr [rsp + 29] # 1-byte Folded Spill
cmp rax, qword ptr [rdx + 200]
mov rax, qword ptr [rsi + 208]
- sete byte ptr [rsp + 14] # 1-byte Folded Spill
+ sete byte ptr [rsp + 22] # 1-byte Folded Spill
cmp rax, qword ptr [rdx + 208]
mov rax, qword ptr [rsi + 216]
- sete byte ptr [rsp + 15] # 1-byte Folded Spill
+ sete byte ptr [rsp + 23] # 1-byte Folded Spill
cmp rax, qword ptr [rdx + 216]
mov rax, qword ptr [rsi + 224]
- sete byte ptr [rsp + 16] # 1-byte Folded Spill
+ sete byte ptr [rsp + 25] # 1-byte Folded Spill
cmp rax, qword ptr [rdx + 224]
mov rax, qword ptr [rsi + 232]
- sete byte ptr [rsp + 17] # 1-byte Folded Spill
+ sete byte ptr [rsp + 26] # 1-byte Folded Spill
cmp rax, qword ptr [rdx + 232]
mov rax, qword ptr [rsi + 240]
- sete byte ptr [rsp + 19] # 1-byte Folded Spill
+ sete byte ptr [rsp + 28] # 1-byte Folded Spill
cmp rax, qword ptr [rdx + 240]
mov rax, qword ptr [rsi + 248]
- sete byte ptr [rsp + 18] # 1-byte Folded Spill
+ sete byte ptr [rsp + 27] # 1-byte Folded Spill
add rsi, 256
cmp rax, qword ptr [rdx + 248]
sete cl
- movzx eax, byte ptr [rsp + 40] # 1-byte Folded Reload
+ movzx eax, byte ptr [rsp + 56] # 1-byte Folded Reload
add al, al
- add al, byte ptr [rsp + 4] # 1-byte Folded Reload
+ add al, byte ptr [rsp + 13] # 1-byte Folded Reload
mov ebx, eax
- movzx eax, byte ptr [rsp + 5] # 1-byte Folded Reload
+ movzx eax, byte ptr [rsp + 14] # 1-byte Folded Reload
shl al, 6
shl r13b, 7
or r13b, al
- movzx eax, byte ptr [rsp + 21] # 1-byte Folded Reload
+ movzx eax, byte ptr [rsp + 30] # 1-byte Folded Reload
shl al, 2
or al, bl
- add r8b, r8b
- add r8b, byte ptr [rsp + 10] # 1-byte Folded Reload
- movzx ebx, byte ptr [rsp + 22] # 1-byte Folded Reload
+ add dil, dil
+ add dil, byte ptr [rsp + 19] # 1-byte Folded Reload
+ movzx ebx, byte ptr [rsp + 31] # 1-byte Folded Reload
shl bl, 3
or bl, al
mov eax, ebx
shl r11b, 2
- or r11b, r8b
- movzx ebx, byte ptr [rsp + 23] # 1-byte Folded Reload
+ or r11b, dil
+ movzx ebx, byte ptr [rsp + 11] # 1-byte Folded Reload
shl bl, 4
or bl, al
- mov r8d, ebx
+ mov edi, ebx
shl r15b, 3
or r15b, r11b
- movzx ebx, byte ptr [rsp + 3] # 1-byte Folded Reload
+ movzx ebx, byte ptr [rsp + 12] # 1-byte Folded Reload
shl bl, 5
- or bl, r8b
- movzx eax, byte ptr [rsp + 6] # 1-byte Folded Reload
+ or bl, dil
+ movzx eax, byte ptr [rsp + 15] # 1-byte Folded Reload
shl al, 4
or al, r15b
- mov r8d, eax
- movzx eax, byte ptr [rsp + 7] # 1-byte Folded Reload
+ mov edi, eax
+ movzx eax, byte ptr [rsp + 16] # 1-byte Folded Reload
shl al, 5
- or al, r8b
- movzx r8d, byte ptr [rsp + 8] # 1-byte Folded Reload
- shl r8b, 6
- shl dil, 7
- or dil, r8b
+ or al, dil
+ movzx edi, byte ptr [rsp + 17] # 1-byte Folded Reload
+ shl dil, 6
+ shl r8b, 7
+ or r8b, dil
or r13b, bl
- or dil, al
+ or r8b, al
add r10b, r10b
- add r10b, byte ptr [rsp + 11] # 1-byte Folded Reload
+ add r10b, byte ptr [rsp + 20] # 1-byte Folded Reload
shl r14b, 2
or r14b, r10b
shl r12b, 3
or r12b, r14b
- movzx eax, byte ptr [rsp + 9] # 1-byte Folded Reload
+ movzx eax, byte ptr [rsp + 18] # 1-byte Folded Reload
shl al, 4
or al, r12b
mov ebx, eax
- mov r12, qword ptr [rsp + 48] # 8-byte Reload
- movzx eax, byte ptr [rsp + 12] # 1-byte Folded Reload
+ movzx eax, byte ptr [rsp + 21] # 1-byte Folded Reload
shl al, 5
or al, bl
- mov byte ptr [r12], r13b
- movzx ebx, byte ptr [rsp + 13] # 1-byte Folded Reload
+ mov rdi, qword ptr [rsp + 32] # 8-byte Reload
+ mov byte ptr [rdi], r13b
+ mov r15, qword ptr [rsp + 32] # 8-byte Reload
+ movzx ebx, byte ptr [rsp + 24] # 1-byte Folded Reload
shl bl, 6
shl r9b, 7
or r9b, bl
- mov byte ptr [r12 + 1], dil
+ mov byte ptr [r15 + 1], r8b
or r9b, al
- movzx eax, byte ptr [rsp + 14] # 1-byte Folded Reload
+ movzx eax, byte ptr [rsp + 22] # 1-byte Folded Reload
add al, al
- add al, byte ptr [rsp + 20] # 1-byte Folded Reload
+ add al, byte ptr [rsp + 29] # 1-byte Folded Reload
mov ebx, eax
- movzx eax, byte ptr [rsp + 15] # 1-byte Folded Reload
+ movzx eax, byte ptr [rsp + 23] # 1-byte Folded Reload
shl al, 2
or al, bl
mov ebx, eax
- movzx eax, byte ptr [rsp + 16] # 1-byte Folded Reload
+ movzx eax, byte ptr [rsp + 25] # 1-byte Folded Reload
shl al, 3
or al, bl
mov ebx, eax
- movzx eax, byte ptr [rsp + 17] # 1-byte Folded Reload
+ movzx eax, byte ptr [rsp + 26] # 1-byte Folded Reload
shl al, 4
or al, bl
mov ebx, eax
- movzx eax, byte ptr [rsp + 19] # 1-byte Folded Reload
+ movzx eax, byte ptr [rsp + 28] # 1-byte Folded Reload
shl al, 5
or al, bl
- movzx ebx, byte ptr [rsp + 18] # 1-byte Folded Reload
+ movzx ebx, byte ptr [rsp + 27] # 1-byte Folded Reload
shl bl, 6
shl cl, 7
or cl, bl
or cl, al
- mov byte ptr [r12 + 2], r9b
- mov byte ptr [r12 + 3], cl
+ mov byte ptr [r15 + 2], r9b
+ mov byte ptr [r15 + 3], cl
add rdx, 256
- add r12, 4
- add qword ptr [rsp + 32], -1 # 8-byte Folded Spill
- jne .LBB0_38
-# %bb.39:
- mov r14, qword ptr [rsp + 24] # 8-byte Reload
- mov r15, qword ptr [rsp + 56] # 8-byte Reload
-.LBB0_40:
- shl r15, 5
- cmp r15, r14
- jge .LBB0_123
-# %bb.41:
- sub r14, r15
+ add r15, 4
+ add qword ptr [rsp + 48], -1 # 8-byte Folded Spill
+ jne .LBB0_47
+# %bb.48:
+ mov r12, qword ptr [rsp + 40] # 8-byte Reload
+ mov rax, qword ptr [rsp + 64] # 8-byte Reload
+.LBB0_49:
+ shl rax, 5
+ sub r12, rax
+ jle .LBB0_153
+# %bb.50:
xor ecx, ecx
.p2align 4, 0x90
-.LBB0_42: # =>This Inner Loop Header: Depth=1
+.LBB0_51: # =>This Inner Loop Header: Depth=1
lea r8, [rcx + 1]
mov rdi, qword ptr [rsi + 8*rcx]
cmp rdi, qword ptr [rdx + 8*rcx]
@@ -1222,7 +1293,8 @@ comparison_equal_arr_arr_avx2: # @comparison_equal_arr_arr_avx2
neg bl
mov rdi, rcx
shr rdi, 3
- movzx r9d, byte ptr [r12 + rdi]
+ mov r10, r15
+ movzx r9d, byte ptr [r15 + rdi]
xor bl, r9b
and cl, 7
mov al, 1
@@ -1230,92 +1302,108 @@ comparison_equal_arr_arr_avx2: # @comparison_equal_arr_arr_avx2
shl al, cl
and al, bl
xor al, r9b
- mov byte ptr [r12 + rdi], al
+ mov byte ptr [r15 + rdi], al
mov rcx, r8
- cmp r14, r8
- jne .LBB0_42
- jmp .LBB0_123
-.LBB0_68:
- lea r15, [r14 + 31]
- test r14, r14
- cmovns r15, r14
- lea ecx, [rax + 7]
- test eax, eax
- cmovns ecx, eax
- and ecx, -8
- sub eax, ecx
- je .LBB0_72
-# %bb.69:
- cdqe
+ cmp r12, r8
+ jne .LBB0_51
+ jmp .LBB0_153
+.LBB0_83:
+ lea eax, [r9 + 7]
+ test r9d, r9d
+ cmovns eax, r9d
+ and eax, -8
+ sub r9d, eax
+ je .LBB0_90
+# %bb.84:
+ mov r8d, 8
+ sub r8d, r9d
+ cmp r8, r12
+ cmovg r8, r12
+ test r8, r8
+ jle .LBB0_88
+# %bb.85:
+ movsxd r9, r9d
+ xor r10d, r10d
+ xor eax, eax
.p2align 4, 0x90
-.LBB0_70: # =>This Inner Loop Header: Depth=1
- movzx ecx, word ptr [rsi]
- add rsi, 2
- cmp cx, word ptr [rdx]
- lea rdx, [rdx + 2]
- sete r10b
- neg r10b
- lea rdi, [rax + 7]
- test rax, rax
- cmovns rdi, rax
+.LBB0_86: # =>This Inner Loop Header: Depth=1
+ lea rcx, [r9 + rax]
+ movzx ebx, word ptr [rsi + 2*rax]
+ cmp bx, word ptr [rdx + 2*rax]
+ sete r11b
+ neg r11b
+ lea rdi, [r9 + rax]
+ add rdi, 7
+ test rcx, rcx
+ cmovns rdi, rcx
sar rdi, 3
- movzx r8d, byte ptr [r12 + rdi]
- xor r10b, r8b
- lea r9d, [8*rdi]
- mov ecx, eax
- sub ecx, r9d
+ lea ebx, [8*rdi]
+ sub ecx, ebx
mov ebx, 1
- # kill: def $cl killed $cl killed $ecx
+ # kill: def $cl killed $cl killed $rcx
shl ebx, cl
- and bl, r10b
- xor bl, r8b
- mov byte ptr [r12 + rdi], bl
+ mov r14, r15
+ movzx ecx, byte ptr [r15 + rdi]
+ xor r11b, cl
+ and bl, r11b
+ xor bl, cl
+ mov byte ptr [r15 + rdi], bl
add rax, 1
- cmp rax, 8
- jne .LBB0_70
-# %bb.71:
- add r12, 1
-.LBB0_72:
- sar r15, 5
- cmp r14, 32
- jl .LBB0_76
-# %bb.73:
- mov qword ptr [rsp + 24], r14 # 8-byte Spill
- mov qword ptr [rsp + 56], r15 # 8-byte Spill
- mov qword ptr [rsp + 32], r15 # 8-byte Spill
+ add r10, -2
+ cmp r8, rax
+ jne .LBB0_86
+# %bb.87:
+ sub rsi, r10
+ sub rdx, r10
+.LBB0_88:
+ sub r12, r8
+ je .LBB0_153
+# %bb.89:
+ add r15, 1
+.LBB0_90:
+ lea rax, [r12 + 31]
+ test r12, r12
+ cmovns rax, r12
+ sar rax, 5
+ cmp r12, 32
+ jl .LBB0_94
+# %bb.91:
+ mov qword ptr [rsp + 40], r12 # 8-byte Spill
+ mov qword ptr [rsp + 64], rax # 8-byte Spill
+ mov qword ptr [rsp + 48], rax # 8-byte Spill
.p2align 4, 0x90
-.LBB0_74: # =>This Inner Loop Header: Depth=1
- mov qword ptr [rsp + 48], r12 # 8-byte Spill
+.LBB0_92: # =>This Inner Loop Header: Depth=1
+ mov qword ptr [rsp + 32], r15 # 8-byte Spill
movzx eax, word ptr [rsi]
movzx ecx, word ptr [rsi + 2]
cmp ax, word ptr [rdx]
- sete byte ptr [rsp + 4] # 1-byte Folded Spill
+ sete byte ptr [rsp + 13] # 1-byte Folded Spill
cmp cx, word ptr [rdx + 2]
- sete byte ptr [rsp + 40] # 1-byte Folded Spill
+ sete byte ptr [rsp + 56] # 1-byte Folded Spill
movzx eax, word ptr [rsi + 4]
cmp ax, word ptr [rdx + 4]
- sete byte ptr [rsp + 21] # 1-byte Folded Spill
+ sete byte ptr [rsp + 30] # 1-byte Folded Spill
movzx eax, word ptr [rsi + 6]
cmp ax, word ptr [rdx + 6]
- sete byte ptr [rsp + 22] # 1-byte Folded Spill
+ sete byte ptr [rsp + 31] # 1-byte Folded Spill
movzx eax, word ptr [rsi + 8]
cmp ax, word ptr [rdx + 8]
- sete byte ptr [rsp + 23] # 1-byte Folded Spill
+ sete byte ptr [rsp + 11] # 1-byte Folded Spill
movzx eax, word ptr [rsi + 10]
cmp ax, word ptr [rdx + 10]
- sete byte ptr [rsp + 3] # 1-byte Folded Spill
+ sete byte ptr [rsp + 12] # 1-byte Folded Spill
movzx eax, word ptr [rsi + 12]
cmp ax, word ptr [rdx + 12]
- sete byte ptr [rsp + 5] # 1-byte Folded Spill
+ sete byte ptr [rsp + 14] # 1-byte Folded Spill
movzx eax, word ptr [rsi + 14]
cmp ax, word ptr [rdx + 14]
sete r13b
movzx eax, word ptr [rsi + 16]
cmp ax, word ptr [rdx + 16]
- sete byte ptr [rsp + 10] # 1-byte Folded Spill
+ sete byte ptr [rsp + 19] # 1-byte Folded Spill
movzx eax, word ptr [rsi + 18]
cmp ax, word ptr [rdx + 18]
- sete r8b
+ sete dil
movzx eax, word ptr [rsi + 20]
cmp ax, word ptr [rdx + 20]
sete r11b
@@ -1324,21 +1412,21 @@ comparison_equal_arr_arr_avx2: # @comparison_equal_arr_arr_avx2
sete r15b
movzx eax, word ptr [rsi + 24]
cmp ax, word ptr [rdx + 24]
- sete byte ptr [rsp + 6] # 1-byte Folded Spill
+ sete byte ptr [rsp + 15] # 1-byte Folded Spill
movzx eax, word ptr [rsi + 26]
cmp ax, word ptr [rdx + 26]
- sete byte ptr [rsp + 7] # 1-byte Folded Spill
+ sete byte ptr [rsp + 16] # 1-byte Folded Spill
movzx eax, word ptr [rsi + 28]
cmp ax, word ptr [rdx + 28]
- sete byte ptr [rsp + 8] # 1-byte Folded Spill
+ sete byte ptr [rsp + 17] # 1-byte Folded Spill
movzx eax, word ptr [rsi + 30]
cmp ax, word ptr [rdx + 30]
- sete dil
+ sete r8b
movzx eax, word ptr [rsi + 32]
movzx ebx, word ptr [rsi + 34]
cmp ax, word ptr [rdx + 32]
movzx eax, word ptr [rsi + 36]
- sete byte ptr [rsp + 11] # 1-byte Folded Spill
+ sete byte ptr [rsp + 20] # 1-byte Folded Spill
cmp bx, word ptr [rdx + 34]
movzx ebx, word ptr [rsi + 38]
sete r10b
@@ -1349,144 +1437,144 @@ comparison_equal_arr_arr_avx2: # @comparison_equal_arr_arr_avx2
movzx ebx, word ptr [rsi + 42]
sete r12b
cmp ax, word ptr [rdx + 40]
- sete byte ptr [rsp + 9] # 1-byte Folded Spill
+ sete byte ptr [rsp + 18] # 1-byte Folded Spill
cmp bx, word ptr [rdx + 42]
movzx eax, word ptr [rsi + 44]
- sete byte ptr [rsp + 12] # 1-byte Folded Spill
+ sete byte ptr [rsp + 21] # 1-byte Folded Spill
cmp ax, word ptr [rdx + 44]
movzx eax, word ptr [rsi + 46]
- sete byte ptr [rsp + 13] # 1-byte Folded Spill
+ sete byte ptr [rsp + 24] # 1-byte Folded Spill
cmp ax, word ptr [rdx + 46]
movzx eax, word ptr [rsi + 48]
sete r9b
cmp ax, word ptr [rdx + 48]
movzx eax, word ptr [rsi + 50]
- sete byte ptr [rsp + 20] # 1-byte Folded Spill
+ sete byte ptr [rsp + 29] # 1-byte Folded Spill
cmp ax, word ptr [rdx + 50]
movzx eax, word ptr [rsi + 52]
- sete byte ptr [rsp + 14] # 1-byte Folded Spill
+ sete byte ptr [rsp + 22] # 1-byte Folded Spill
cmp ax, word ptr [rdx + 52]
movzx eax, word ptr [rsi + 54]
- sete byte ptr [rsp + 15] # 1-byte Folded Spill
+ sete byte ptr [rsp + 23] # 1-byte Folded Spill
cmp ax, word ptr [rdx + 54]
movzx eax, word ptr [rsi + 56]
- sete byte ptr [rsp + 16] # 1-byte Folded Spill
+ sete byte ptr [rsp + 25] # 1-byte Folded Spill
cmp ax, word ptr [rdx + 56]
movzx eax, word ptr [rsi + 58]
- sete byte ptr [rsp + 17] # 1-byte Folded Spill
+ sete byte ptr [rsp + 26] # 1-byte Folded Spill
cmp ax, word ptr [rdx + 58]
movzx eax, word ptr [rsi + 60]
- sete byte ptr [rsp + 19] # 1-byte Folded Spill
+ sete byte ptr [rsp + 28] # 1-byte Folded Spill
cmp ax, word ptr [rdx + 60]
movzx eax, word ptr [rsi + 62]
- sete byte ptr [rsp + 18] # 1-byte Folded Spill
+ sete byte ptr [rsp + 27] # 1-byte Folded Spill
add rsi, 64
cmp ax, word ptr [rdx + 62]
sete cl
- movzx eax, byte ptr [rsp + 40] # 1-byte Folded Reload
+ movzx eax, byte ptr [rsp + 56] # 1-byte Folded Reload
add al, al
- add al, byte ptr [rsp + 4] # 1-byte Folded Reload
+ add al, byte ptr [rsp + 13] # 1-byte Folded Reload
mov ebx, eax
- movzx eax, byte ptr [rsp + 5] # 1-byte Folded Reload
+ movzx eax, byte ptr [rsp + 14] # 1-byte Folded Reload
shl al, 6
shl r13b, 7
or r13b, al
- movzx eax, byte ptr [rsp + 21] # 1-byte Folded Reload
+ movzx eax, byte ptr [rsp + 30] # 1-byte Folded Reload
shl al, 2
or al, bl
- add r8b, r8b
- add r8b, byte ptr [rsp + 10] # 1-byte Folded Reload
- movzx ebx, byte ptr [rsp + 22] # 1-byte Folded Reload
+ add dil, dil
+ add dil, byte ptr [rsp + 19] # 1-byte Folded Reload
+ movzx ebx, byte ptr [rsp + 31] # 1-byte Folded Reload
shl bl, 3
or bl, al
mov eax, ebx
shl r11b, 2
- or r11b, r8b
- movzx ebx, byte ptr [rsp + 23] # 1-byte Folded Reload
+ or r11b, dil
+ movzx ebx, byte ptr [rsp + 11] # 1-byte Folded Reload
shl bl, 4
or bl, al
- mov r8d, ebx
+ mov edi, ebx
shl r15b, 3
or r15b, r11b
- movzx ebx, byte ptr [rsp + 3] # 1-byte Folded Reload
+ movzx ebx, byte ptr [rsp + 12] # 1-byte Folded Reload
shl bl, 5
- or bl, r8b
- movzx eax, byte ptr [rsp + 6] # 1-byte Folded Reload
+ or bl, dil
+ movzx eax, byte ptr [rsp + 15] # 1-byte Folded Reload
shl al, 4
or al, r15b
- mov r8d, eax
- movzx eax, byte ptr [rsp + 7] # 1-byte Folded Reload
+ mov edi, eax
+ movzx eax, byte ptr [rsp + 16] # 1-byte Folded Reload
shl al, 5
- or al, r8b
- movzx r8d, byte ptr [rsp + 8] # 1-byte Folded Reload
- shl r8b, 6
- shl dil, 7
- or dil, r8b
+ or al, dil
+ movzx edi, byte ptr [rsp + 17] # 1-byte Folded Reload
+ shl dil, 6
+ shl r8b, 7
+ or r8b, dil
or r13b, bl
- or dil, al
+ or r8b, al
add r10b, r10b
- add r10b, byte ptr [rsp + 11] # 1-byte Folded Reload
+ add r10b, byte ptr [rsp + 20] # 1-byte Folded Reload
shl r14b, 2
or r14b, r10b
shl r12b, 3
or r12b, r14b
- movzx eax, byte ptr [rsp + 9] # 1-byte Folded Reload
+ movzx eax, byte ptr [rsp + 18] # 1-byte Folded Reload
shl al, 4
or al, r12b
mov ebx, eax
- mov r12, qword ptr [rsp + 48] # 8-byte Reload
- movzx eax, byte ptr [rsp + 12] # 1-byte Folded Reload
+ movzx eax, byte ptr [rsp + 21] # 1-byte Folded Reload
shl al, 5
or al, bl
- mov byte ptr [r12], r13b
- movzx ebx, byte ptr [rsp + 13] # 1-byte Folded Reload
+ mov rdi, qword ptr [rsp + 32] # 8-byte Reload
+ mov byte ptr [rdi], r13b
+ mov r15, qword ptr [rsp + 32] # 8-byte Reload
+ movzx ebx, byte ptr [rsp + 24] # 1-byte Folded Reload
shl bl, 6
shl r9b, 7
or r9b, bl
- mov byte ptr [r12 + 1], dil
+ mov byte ptr [r15 + 1], r8b
or r9b, al
- movzx eax, byte ptr [rsp + 14] # 1-byte Folded Reload
+ movzx eax, byte ptr [rsp + 22] # 1-byte Folded Reload
add al, al
- add al, byte ptr [rsp + 20] # 1-byte Folded Reload
+ add al, byte ptr [rsp + 29] # 1-byte Folded Reload
mov ebx, eax
- movzx eax, byte ptr [rsp + 15] # 1-byte Folded Reload
+ movzx eax, byte ptr [rsp + 23] # 1-byte Folded Reload
shl al, 2
or al, bl
mov ebx, eax
- movzx eax, byte ptr [rsp + 16] # 1-byte Folded Reload
+ movzx eax, byte ptr [rsp + 25] # 1-byte Folded Reload
shl al, 3
or al, bl
mov ebx, eax
- movzx eax, byte ptr [rsp + 17] # 1-byte Folded Reload
+ movzx eax, byte ptr [rsp + 26] # 1-byte Folded Reload
shl al, 4
or al, bl
mov ebx, eax
- movzx eax, byte ptr [rsp + 19] # 1-byte Folded Reload
+ movzx eax, byte ptr [rsp + 28] # 1-byte Folded Reload
shl al, 5
or al, bl
- movzx ebx, byte ptr [rsp + 18] # 1-byte Folded Reload
+ movzx ebx, byte ptr [rsp + 27] # 1-byte Folded Reload
shl bl, 6
shl cl, 7
or cl, bl
or cl, al
- mov byte ptr [r12 + 2], r9b
- mov byte ptr [r12 + 3], cl
+ mov byte ptr [r15 + 2], r9b
+ mov byte ptr [r15 + 3], cl
add rdx, 64
- add r12, 4
- add qword ptr [rsp + 32], -1 # 8-byte Folded Spill
- jne .LBB0_74
-# %bb.75:
- mov r14, qword ptr [rsp + 24] # 8-byte Reload
- mov r15, qword ptr [rsp + 56] # 8-byte Reload
-.LBB0_76:
- shl r15, 5
- cmp r15, r14
- jge .LBB0_123
-# %bb.77:
- sub r14, r15
+ add r15, 4
+ add qword ptr [rsp + 48], -1 # 8-byte Folded Spill
+ jne .LBB0_92
+# %bb.93:
+ mov r12, qword ptr [rsp + 40] # 8-byte Reload
+ mov rax, qword ptr [rsp + 64] # 8-byte Reload
+.LBB0_94:
+ shl rax, 5
+ sub r12, rax
+ jle .LBB0_153
+# %bb.95:
xor ecx, ecx
.p2align 4, 0x90
-.LBB0_78: # =>This Inner Loop Header: Depth=1
+.LBB0_96: # =>This Inner Loop Header: Depth=1
lea r8, [rcx + 1]
movzx edi, word ptr [rsi + 2*rcx]
cmp di, word ptr [rdx + 2*rcx]
@@ -1494,7 +1582,8 @@ comparison_equal_arr_arr_avx2: # @comparison_equal_arr_arr_avx2
neg bl
mov rdi, rcx
shr rdi, 3
- movzx r9d, byte ptr [r12 + rdi]
+ mov r10, r15
+ movzx r9d, byte ptr [r15 + rdi]
xor bl, r9b
and cl, 7
mov al, 1
@@ -1502,92 +1591,108 @@ comparison_equal_arr_arr_avx2: # @comparison_equal_arr_arr_avx2
shl al, cl
and al, bl
xor al, r9b
- mov byte ptr [r12 + rdi], al
+ mov byte ptr [r15 + rdi], al
mov rcx, r8
- cmp r14, r8
- jne .LBB0_78
- jmp .LBB0_123
-.LBB0_79:
- lea r15, [r14 + 31]
- test r14, r14
- cmovns r15, r14
- lea ecx, [rax + 7]
- test eax, eax
- cmovns ecx, eax
- and ecx, -8
- sub eax, ecx
- je .LBB0_83
-# %bb.80:
- cdqe
+ cmp r12, r8
+ jne .LBB0_96
+ jmp .LBB0_153
+.LBB0_97:
+ lea eax, [r9 + 7]
+ test r9d, r9d
+ cmovns eax, r9d
+ and eax, -8
+ sub r9d, eax
+ je .LBB0_104
+# %bb.98:
+ mov r8d, 8
+ sub r8d, r9d
+ cmp r8, r12
+ cmovg r8, r12
+ test r8, r8
+ jle .LBB0_102
+# %bb.99:
+ movsxd r9, r9d
+ xor r10d, r10d
+ xor eax, eax
.p2align 4, 0x90
-.LBB0_81: # =>This Inner Loop Header: Depth=1
- movzx ecx, word ptr [rsi]
- add rsi, 2
- cmp cx, word ptr [rdx]
- lea rdx, [rdx + 2]
- sete r10b
- neg r10b
- lea rdi, [rax + 7]
- test rax, rax
- cmovns rdi, rax
+.LBB0_100: # =>This Inner Loop Header: Depth=1
+ lea rcx, [r9 + rax]
+ movzx ebx, word ptr [rsi + 2*rax]
+ cmp bx, word ptr [rdx + 2*rax]
+ sete r11b
+ neg r11b
+ lea rdi, [r9 + rax]
+ add rdi, 7
+ test rcx, rcx
+ cmovns rdi, rcx
sar rdi, 3
- movzx r8d, byte ptr [r12 + rdi]
- xor r10b, r8b
- lea r9d, [8*rdi]
- mov ecx, eax
- sub ecx, r9d
+ lea ebx, [8*rdi]
+ sub ecx, ebx
mov ebx, 1
- # kill: def $cl killed $cl killed $ecx
+ # kill: def $cl killed $cl killed $rcx
shl ebx, cl
- and bl, r10b
- xor bl, r8b
- mov byte ptr [r12 + rdi], bl
+ mov r14, r15
+ movzx ecx, byte ptr [r15 + rdi]
+ xor r11b, cl
+ and bl, r11b
+ xor bl, cl
+ mov byte ptr [r15 + rdi], bl
add rax, 1
- cmp rax, 8
- jne .LBB0_81
-# %bb.82:
- add r12, 1
-.LBB0_83:
- sar r15, 5
- cmp r14, 32
- jl .LBB0_87
-# %bb.84:
- mov qword ptr [rsp + 24], r14 # 8-byte Spill
- mov qword ptr [rsp + 56], r15 # 8-byte Spill
- mov qword ptr [rsp + 32], r15 # 8-byte Spill
+ add r10, -2
+ cmp r8, rax
+ jne .LBB0_100
+# %bb.101:
+ sub rsi, r10
+ sub rdx, r10
+.LBB0_102:
+ sub r12, r8
+ je .LBB0_153
+# %bb.103:
+ add r15, 1
+.LBB0_104:
+ lea rax, [r12 + 31]
+ test r12, r12
+ cmovns rax, r12
+ sar rax, 5
+ cmp r12, 32
+ jl .LBB0_108
+# %bb.105:
+ mov qword ptr [rsp + 40], r12 # 8-byte Spill
+ mov qword ptr [rsp + 64], rax # 8-byte Spill
+ mov qword ptr [rsp + 48], rax # 8-byte Spill
.p2align 4, 0x90
-.LBB0_85: # =>This Inner Loop Header: Depth=1
- mov qword ptr [rsp + 48], r12 # 8-byte Spill
+.LBB0_106: # =>This Inner Loop Header: Depth=1
+ mov qword ptr [rsp + 32], r15 # 8-byte Spill
movzx eax, word ptr [rsi]
movzx ecx, word ptr [rsi + 2]
cmp ax, word ptr [rdx]
- sete byte ptr [rsp + 4] # 1-byte Folded Spill
+ sete byte ptr [rsp + 13] # 1-byte Folded Spill
cmp cx, word ptr [rdx + 2]
- sete byte ptr [rsp + 40] # 1-byte Folded Spill
+ sete byte ptr [rsp + 56] # 1-byte Folded Spill
movzx eax, word ptr [rsi + 4]
cmp ax, word ptr [rdx + 4]
- sete byte ptr [rsp + 21] # 1-byte Folded Spill
+ sete byte ptr [rsp + 30] # 1-byte Folded Spill
movzx eax, word ptr [rsi + 6]
cmp ax, word ptr [rdx + 6]
- sete byte ptr [rsp + 22] # 1-byte Folded Spill
+ sete byte ptr [rsp + 31] # 1-byte Folded Spill
movzx eax, word ptr [rsi + 8]
cmp ax, word ptr [rdx + 8]
- sete byte ptr [rsp + 23] # 1-byte Folded Spill
+ sete byte ptr [rsp + 11] # 1-byte Folded Spill
movzx eax, word ptr [rsi + 10]
cmp ax, word ptr [rdx + 10]
- sete byte ptr [rsp + 3] # 1-byte Folded Spill
+ sete byte ptr [rsp + 12] # 1-byte Folded Spill
movzx eax, word ptr [rsi + 12]
cmp ax, word ptr [rdx + 12]
- sete byte ptr [rsp + 5] # 1-byte Folded Spill
+ sete byte ptr [rsp + 14] # 1-byte Folded Spill
movzx eax, word ptr [rsi + 14]
cmp ax, word ptr [rdx + 14]
sete r13b
movzx eax, word ptr [rsi + 16]
cmp ax, word ptr [rdx + 16]
- sete byte ptr [rsp + 10] # 1-byte Folded Spill
+ sete byte ptr [rsp + 19] # 1-byte Folded Spill
movzx eax, word ptr [rsi + 18]
cmp ax, word ptr [rdx + 18]
- sete r8b
+ sete dil
movzx eax, word ptr [rsi + 20]
cmp ax, word ptr [rdx + 20]
sete r11b
@@ -1596,21 +1701,21 @@ comparison_equal_arr_arr_avx2: # @comparison_equal_arr_arr_avx2
sete r15b
movzx eax, word ptr [rsi + 24]
cmp ax, word ptr [rdx + 24]
- sete byte ptr [rsp + 6] # 1-byte Folded Spill
+ sete byte ptr [rsp + 15] # 1-byte Folded Spill
movzx eax, word ptr [rsi + 26]
cmp ax, word ptr [rdx + 26]
- sete byte ptr [rsp + 7] # 1-byte Folded Spill
+ sete byte ptr [rsp + 16] # 1-byte Folded Spill
movzx eax, word ptr [rsi + 28]
cmp ax, word ptr [rdx + 28]
- sete byte ptr [rsp + 8] # 1-byte Folded Spill
+ sete byte ptr [rsp + 17] # 1-byte Folded Spill
movzx eax, word ptr [rsi + 30]
cmp ax, word ptr [rdx + 30]
- sete dil
+ sete r8b
movzx eax, word ptr [rsi + 32]
movzx ebx, word ptr [rsi + 34]
cmp ax, word ptr [rdx + 32]
movzx eax, word ptr [rsi + 36]
- sete byte ptr [rsp + 11] # 1-byte Folded Spill
+ sete byte ptr [rsp + 20] # 1-byte Folded Spill
cmp bx, word ptr [rdx + 34]
movzx ebx, word ptr [rsi + 38]
sete r10b
@@ -1621,144 +1726,144 @@ comparison_equal_arr_arr_avx2: # @comparison_equal_arr_arr_avx2
movzx ebx, word ptr [rsi + 42]
sete r12b
cmp ax, word ptr [rdx + 40]
- sete byte ptr [rsp + 9] # 1-byte Folded Spill
+ sete byte ptr [rsp + 18] # 1-byte Folded Spill
cmp bx, word ptr [rdx + 42]
movzx eax, word ptr [rsi + 44]
- sete byte ptr [rsp + 12] # 1-byte Folded Spill
+ sete byte ptr [rsp + 21] # 1-byte Folded Spill
cmp ax, word ptr [rdx + 44]
movzx eax, word ptr [rsi + 46]
- sete byte ptr [rsp + 13] # 1-byte Folded Spill
+ sete byte ptr [rsp + 24] # 1-byte Folded Spill
cmp ax, word ptr [rdx + 46]
movzx eax, word ptr [rsi + 48]
sete r9b
cmp ax, word ptr [rdx + 48]
movzx eax, word ptr [rsi + 50]
- sete byte ptr [rsp + 20] # 1-byte Folded Spill
+ sete byte ptr [rsp + 29] # 1-byte Folded Spill
cmp ax, word ptr [rdx + 50]
movzx eax, word ptr [rsi + 52]
- sete byte ptr [rsp + 14] # 1-byte Folded Spill
+ sete byte ptr [rsp + 22] # 1-byte Folded Spill
cmp ax, word ptr [rdx + 52]
movzx eax, word ptr [rsi + 54]
- sete byte ptr [rsp + 15] # 1-byte Folded Spill
+ sete byte ptr [rsp + 23] # 1-byte Folded Spill
cmp ax, word ptr [rdx + 54]
movzx eax, word ptr [rsi + 56]
- sete byte ptr [rsp + 16] # 1-byte Folded Spill
+ sete byte ptr [rsp + 25] # 1-byte Folded Spill
cmp ax, word ptr [rdx + 56]
movzx eax, word ptr [rsi + 58]
- sete byte ptr [rsp + 17] # 1-byte Folded Spill
+ sete byte ptr [rsp + 26] # 1-byte Folded Spill
cmp ax, word ptr [rdx + 58]
movzx eax, word ptr [rsi + 60]
- sete byte ptr [rsp + 19] # 1-byte Folded Spill
+ sete byte ptr [rsp + 28] # 1-byte Folded Spill
cmp ax, word ptr [rdx + 60]
movzx eax, word ptr [rsi + 62]
- sete byte ptr [rsp + 18] # 1-byte Folded Spill
+ sete byte ptr [rsp + 27] # 1-byte Folded Spill
add rsi, 64
cmp ax, word ptr [rdx + 62]
sete cl
- movzx eax, byte ptr [rsp + 40] # 1-byte Folded Reload
+ movzx eax, byte ptr [rsp + 56] # 1-byte Folded Reload
add al, al
- add al, byte ptr [rsp + 4] # 1-byte Folded Reload
+ add al, byte ptr [rsp + 13] # 1-byte Folded Reload
mov ebx, eax
- movzx eax, byte ptr [rsp + 5] # 1-byte Folded Reload
+ movzx eax, byte ptr [rsp + 14] # 1-byte Folded Reload
shl al, 6
shl r13b, 7
or r13b, al
- movzx eax, byte ptr [rsp + 21] # 1-byte Folded Reload
+ movzx eax, byte ptr [rsp + 30] # 1-byte Folded Reload
shl al, 2
or al, bl
- add r8b, r8b
- add r8b, byte ptr [rsp + 10] # 1-byte Folded Reload
- movzx ebx, byte ptr [rsp + 22] # 1-byte Folded Reload
+ add dil, dil
+ add dil, byte ptr [rsp + 19] # 1-byte Folded Reload
+ movzx ebx, byte ptr [rsp + 31] # 1-byte Folded Reload
shl bl, 3
or bl, al
mov eax, ebx
shl r11b, 2
- or r11b, r8b
- movzx ebx, byte ptr [rsp + 23] # 1-byte Folded Reload
+ or r11b, dil
+ movzx ebx, byte ptr [rsp + 11] # 1-byte Folded Reload
shl bl, 4
or bl, al
- mov r8d, ebx
+ mov edi, ebx
shl r15b, 3
or r15b, r11b
- movzx ebx, byte ptr [rsp + 3] # 1-byte Folded Reload
+ movzx ebx, byte ptr [rsp + 12] # 1-byte Folded Reload
shl bl, 5
- or bl, r8b
- movzx eax, byte ptr [rsp + 6] # 1-byte Folded Reload
+ or bl, dil
+ movzx eax, byte ptr [rsp + 15] # 1-byte Folded Reload
shl al, 4
or al, r15b
- mov r8d, eax
- movzx eax, byte ptr [rsp + 7] # 1-byte Folded Reload
+ mov edi, eax
+ movzx eax, byte ptr [rsp + 16] # 1-byte Folded Reload
shl al, 5
- or al, r8b
- movzx r8d, byte ptr [rsp + 8] # 1-byte Folded Reload
- shl r8b, 6
- shl dil, 7
- or dil, r8b
+ or al, dil
+ movzx edi, byte ptr [rsp + 17] # 1-byte Folded Reload
+ shl dil, 6
+ shl r8b, 7
+ or r8b, dil
or r13b, bl
- or dil, al
+ or r8b, al
add r10b, r10b
- add r10b, byte ptr [rsp + 11] # 1-byte Folded Reload
+ add r10b, byte ptr [rsp + 20] # 1-byte Folded Reload
shl r14b, 2
or r14b, r10b
shl r12b, 3
or r12b, r14b
- movzx eax, byte ptr [rsp + 9] # 1-byte Folded Reload
+ movzx eax, byte ptr [rsp + 18] # 1-byte Folded Reload
shl al, 4
or al, r12b
mov ebx, eax
- mov r12, qword ptr [rsp + 48] # 8-byte Reload
- movzx eax, byte ptr [rsp + 12] # 1-byte Folded Reload
+ movzx eax, byte ptr [rsp + 21] # 1-byte Folded Reload
shl al, 5
or al, bl
- mov byte ptr [r12], r13b
- movzx ebx, byte ptr [rsp + 13] # 1-byte Folded Reload
+ mov rdi, qword ptr [rsp + 32] # 8-byte Reload
+ mov byte ptr [rdi], r13b
+ mov r15, qword ptr [rsp + 32] # 8-byte Reload
+ movzx ebx, byte ptr [rsp + 24] # 1-byte Folded Reload
shl bl, 6
shl r9b, 7
or r9b, bl
- mov byte ptr [r12 + 1], dil
+ mov byte ptr [r15 + 1], r8b
or r9b, al
- movzx eax, byte ptr [rsp + 14] # 1-byte Folded Reload
+ movzx eax, byte ptr [rsp + 22] # 1-byte Folded Reload
add al, al
- add al, byte ptr [rsp + 20] # 1-byte Folded Reload
+ add al, byte ptr [rsp + 29] # 1-byte Folded Reload
mov ebx, eax
- movzx eax, byte ptr [rsp + 15] # 1-byte Folded Reload
+ movzx eax, byte ptr [rsp + 23] # 1-byte Folded Reload
shl al, 2
or al, bl
mov ebx, eax
- movzx eax, byte ptr [rsp + 16] # 1-byte Folded Reload
+ movzx eax, byte ptr [rsp + 25] # 1-byte Folded Reload
shl al, 3
or al, bl
mov ebx, eax
- movzx eax, byte ptr [rsp + 17] # 1-byte Folded Reload
+ movzx eax, byte ptr [rsp + 26] # 1-byte Folded Reload
shl al, 4
or al, bl
mov ebx, eax
- movzx eax, byte ptr [rsp + 19] # 1-byte Folded Reload
+ movzx eax, byte ptr [rsp + 28] # 1-byte Folded Reload
shl al, 5
or al, bl
- movzx ebx, byte ptr [rsp + 18] # 1-byte Folded Reload
+ movzx ebx, byte ptr [rsp + 27] # 1-byte Folded Reload
shl bl, 6
shl cl, 7
or cl, bl
or cl, al
- mov byte ptr [r12 + 2], r9b
- mov byte ptr [r12 + 3], cl
+ mov byte ptr [r15 + 2], r9b
+ mov byte ptr [r15 + 3], cl
add rdx, 64
- add r12, 4
- add qword ptr [rsp + 32], -1 # 8-byte Folded Spill
- jne .LBB0_85
-# %bb.86:
- mov r14, qword ptr [rsp + 24] # 8-byte Reload
- mov r15, qword ptr [rsp + 56] # 8-byte Reload
-.LBB0_87:
- shl r15, 5
- cmp r15, r14
- jge .LBB0_123
-# %bb.88:
- sub r14, r15
+ add r15, 4
+ add qword ptr [rsp + 48], -1 # 8-byte Folded Spill
+ jne .LBB0_106
+# %bb.107:
+ mov r12, qword ptr [rsp + 40] # 8-byte Reload
+ mov rax, qword ptr [rsp + 64] # 8-byte Reload
+.LBB0_108:
+ shl rax, 5
+ sub r12, rax
+ jle .LBB0_153
+# %bb.109:
xor ecx, ecx
.p2align 4, 0x90
-.LBB0_89: # =>This Inner Loop Header: Depth=1
+.LBB0_110: # =>This Inner Loop Header: Depth=1
lea r8, [rcx + 1]
movzx edi, word ptr [rsi + 2*rcx]
cmp di, word ptr [rdx + 2*rcx]
@@ -1766,7 +1871,8 @@ comparison_equal_arr_arr_avx2: # @comparison_equal_arr_arr_avx2
neg bl
mov rdi, rcx
shr rdi, 3
- movzx r9d, byte ptr [r12 + rdi]
+ mov r10, r15
+ movzx r9d, byte ptr [r15 + rdi]
xor bl, r9b
and cl, 7
mov al, 1
@@ -1774,92 +1880,108 @@ comparison_equal_arr_arr_avx2: # @comparison_equal_arr_arr_avx2
shl al, cl
and al, bl
xor al, r9b
- mov byte ptr [r12 + rdi], al
+ mov byte ptr [r15 + rdi], al
mov rcx, r8
- cmp r14, r8
- jne .LBB0_89
- jmp .LBB0_123
-.LBB0_101:
- lea r15, [r14 + 31]
- test r14, r14
- cmovns r15, r14
- lea ecx, [rax + 7]
- test eax, eax
- cmovns ecx, eax
- and ecx, -8
- sub eax, ecx
- je .LBB0_105
-# %bb.102:
- cdqe
+ cmp r12, r8
+ jne .LBB0_110
+ jmp .LBB0_153
+.LBB0_125:
+ lea eax, [r9 + 7]
+ test r9d, r9d
+ cmovns eax, r9d
+ and eax, -8
+ sub r9d, eax
+ je .LBB0_132
+# %bb.126:
+ mov r8d, 8
+ sub r8d, r9d
+ cmp r8, r12
+ cmovg r8, r12
+ test r8, r8
+ jle .LBB0_130
+# %bb.127:
+ movsxd r9, r9d
+ xor r10d, r10d
+ xor eax, eax
.p2align 4, 0x90
-.LBB0_103: # =>This Inner Loop Header: Depth=1
- mov rcx, qword ptr [rsi]
- add rsi, 8
- cmp rcx, qword ptr [rdx]
- lea rdx, [rdx + 8]
- sete r10b
- neg r10b
- lea rdi, [rax + 7]
- test rax, rax
- cmovns rdi, rax
+.LBB0_128: # =>This Inner Loop Header: Depth=1
+ lea rcx, [r9 + rax]
+ mov rbx, qword ptr [rsi + 8*rax]
+ cmp rbx, qword ptr [rdx + 8*rax]
+ sete r11b
+ neg r11b
+ lea rdi, [r9 + rax]
+ add rdi, 7
+ test rcx, rcx
+ cmovns rdi, rcx
sar rdi, 3
- movzx r8d, byte ptr [r12 + rdi]
- xor r10b, r8b
- lea r9d, [8*rdi]
- mov ecx, eax
- sub ecx, r9d
+ lea ebx, [8*rdi]
+ sub ecx, ebx
mov ebx, 1
- # kill: def $cl killed $cl killed $ecx
+ # kill: def $cl killed $cl killed $rcx
shl ebx, cl
- and bl, r10b
- xor bl, r8b
- mov byte ptr [r12 + rdi], bl
+ mov r14, r15
+ movzx ecx, byte ptr [r15 + rdi]
+ xor r11b, cl
+ and bl, r11b
+ xor bl, cl
+ mov byte ptr [r15 + rdi], bl
add rax, 1
- cmp rax, 8
- jne .LBB0_103
-# %bb.104:
- add r12, 1
-.LBB0_105:
- sar r15, 5
- cmp r14, 32
- jl .LBB0_109
-# %bb.106:
- mov qword ptr [rsp + 24], r14 # 8-byte Spill
- mov qword ptr [rsp + 56], r15 # 8-byte Spill
- mov qword ptr [rsp + 32], r15 # 8-byte Spill
+ add r10, -8
+ cmp r8, rax
+ jne .LBB0_128
+# %bb.129:
+ sub rsi, r10
+ sub rdx, r10
+.LBB0_130:
+ sub r12, r8
+ je .LBB0_153
+# %bb.131:
+ add r15, 1
+.LBB0_132:
+ lea rax, [r12 + 31]
+ test r12, r12
+ cmovns rax, r12
+ sar rax, 5
+ cmp r12, 32
+ jl .LBB0_136
+# %bb.133:
+ mov qword ptr [rsp + 40], r12 # 8-byte Spill
+ mov qword ptr [rsp + 64], rax # 8-byte Spill
+ mov qword ptr [rsp + 48], rax # 8-byte Spill
.p2align 4, 0x90
-.LBB0_107: # =>This Inner Loop Header: Depth=1
- mov qword ptr [rsp + 48], r12 # 8-byte Spill
+.LBB0_134: # =>This Inner Loop Header: Depth=1
+ mov qword ptr [rsp + 32], r15 # 8-byte Spill
mov rax, qword ptr [rsi]
mov rcx, qword ptr [rsi + 8]
cmp rax, qword ptr [rdx]
- sete byte ptr [rsp + 4] # 1-byte Folded Spill
+ sete byte ptr [rsp + 13] # 1-byte Folded Spill
cmp rcx, qword ptr [rdx + 8]
- sete byte ptr [rsp + 40] # 1-byte Folded Spill
+ sete byte ptr [rsp + 56] # 1-byte Folded Spill
mov rax, qword ptr [rsi + 16]
cmp rax, qword ptr [rdx + 16]
- sete byte ptr [rsp + 21] # 1-byte Folded Spill
+ sete byte ptr [rsp + 30] # 1-byte Folded Spill
mov rax, qword ptr [rsi + 24]
cmp rax, qword ptr [rdx + 24]
- sete byte ptr [rsp + 22] # 1-byte Folded Spill
+ sete byte ptr [rsp + 31] # 1-byte Folded Spill
mov rax, qword ptr [rsi + 32]
cmp rax, qword ptr [rdx + 32]
- sete byte ptr [rsp + 23] # 1-byte Folded Spill
+ sete byte ptr [rsp + 11] # 1-byte Folded Spill
mov rax, qword ptr [rsi + 40]
cmp rax, qword ptr [rdx + 40]
- sete byte ptr [rsp + 3] # 1-byte Folded Spill
+ sete byte ptr [rsp + 12] # 1-byte Folded Spill
mov rax, qword ptr [rsi + 48]
cmp rax, qword ptr [rdx + 48]
- sete byte ptr [rsp + 5] # 1-byte Folded Spill
+ sete byte ptr [rsp + 14] # 1-byte Folded Spill
mov rax, qword ptr [rsi + 56]
cmp rax, qword ptr [rdx + 56]
sete r13b
mov rax, qword ptr [rsi + 64]
cmp rax, qword ptr [rdx + 64]
- sete byte ptr [rsp + 10] # 1-byte Folded Spill
+ sete byte ptr [rsp + 19] # 1-byte Folded Spill
mov rax, qword ptr [rsi + 72]
cmp rax, qword ptr [rdx + 72]
- sete r8b
+ sete dil
mov rax, qword ptr [rsi + 80]
cmp rax, qword ptr [rdx + 80]
sete r11b
@@ -1868,21 +1990,21 @@ comparison_equal_arr_arr_avx2: # @comparison_equal_arr_arr_avx2
sete r15b
mov rax, qword ptr [rsi + 96]
cmp rax, qword ptr [rdx + 96]
- sete byte ptr [rsp + 6] # 1-byte Folded Spill
+ sete byte ptr [rsp + 15] # 1-byte Folded Spill
mov rax, qword ptr [rsi + 104]
cmp rax, qword ptr [rdx + 104]
- sete byte ptr [rsp + 7] # 1-byte Folded Spill
+ sete byte ptr [rsp + 16] # 1-byte Folded Spill
mov rax, qword ptr [rsi + 112]
cmp rax, qword ptr [rdx + 112]
- sete byte ptr [rsp + 8] # 1-byte Folded Spill
+ sete byte ptr [rsp + 17] # 1-byte Folded Spill
mov rax, qword ptr [rsi + 120]
cmp rax, qword ptr [rdx + 120]
- sete dil
+ sete r8b
mov rax, qword ptr [rsi + 128]
mov rbx, qword ptr [rsi + 136]
cmp rax, qword ptr [rdx + 128]
mov rax, qword ptr [rsi + 144]
- sete byte ptr [rsp + 11] # 1-byte Folded Spill
+ sete byte ptr [rsp + 20] # 1-byte Folded Spill
cmp rbx, qword ptr [rdx + 136]
mov rbx, qword ptr [rsi + 152]
sete r10b
@@ -1893,144 +2015,144 @@ comparison_equal_arr_arr_avx2: # @comparison_equal_arr_arr_avx2
mov rbx, qword ptr [rsi + 168]
sete r12b
cmp rax, qword ptr [rdx + 160]
- sete byte ptr [rsp + 9] # 1-byte Folded Spill
+ sete byte ptr [rsp + 18] # 1-byte Folded Spill
cmp rbx, qword ptr [rdx + 168]
mov rax, qword ptr [rsi + 176]
- sete byte ptr [rsp + 12] # 1-byte Folded Spill
+ sete byte ptr [rsp + 21] # 1-byte Folded Spill
cmp rax, qword ptr [rdx + 176]
mov rax, qword ptr [rsi + 184]
- sete byte ptr [rsp + 13] # 1-byte Folded Spill
+ sete byte ptr [rsp + 24] # 1-byte Folded Spill
cmp rax, qword ptr [rdx + 184]
mov rax, qword ptr [rsi + 192]
sete r9b
cmp rax, qword ptr [rdx + 192]
mov rax, qword ptr [rsi + 200]
- sete byte ptr [rsp + 20] # 1-byte Folded Spill
+ sete byte ptr [rsp + 29] # 1-byte Folded Spill
cmp rax, qword ptr [rdx + 200]
mov rax, qword ptr [rsi + 208]
- sete byte ptr [rsp + 14] # 1-byte Folded Spill
+ sete byte ptr [rsp + 22] # 1-byte Folded Spill
cmp rax, qword ptr [rdx + 208]
mov rax, qword ptr [rsi + 216]
- sete byte ptr [rsp + 15] # 1-byte Folded Spill
+ sete byte ptr [rsp + 23] # 1-byte Folded Spill
cmp rax, qword ptr [rdx + 216]
mov rax, qword ptr [rsi + 224]
- sete byte ptr [rsp + 16] # 1-byte Folded Spill
+ sete byte ptr [rsp + 25] # 1-byte Folded Spill
cmp rax, qword ptr [rdx + 224]
mov rax, qword ptr [rsi + 232]
- sete byte ptr [rsp + 17] # 1-byte Folded Spill
+ sete byte ptr [rsp + 26] # 1-byte Folded Spill
cmp rax, qword ptr [rdx + 232]
mov rax, qword ptr [rsi + 240]
- sete byte ptr [rsp + 19] # 1-byte Folded Spill
+ sete byte ptr [rsp + 28] # 1-byte Folded Spill
cmp rax, qword ptr [rdx + 240]
mov rax, qword ptr [rsi + 248]
- sete byte ptr [rsp + 18] # 1-byte Folded Spill
+ sete byte ptr [rsp + 27] # 1-byte Folded Spill
add rsi, 256
cmp rax, qword ptr [rdx + 248]
sete cl
- movzx eax, byte ptr [rsp + 40] # 1-byte Folded Reload
+ movzx eax, byte ptr [rsp + 56] # 1-byte Folded Reload
add al, al
- add al, byte ptr [rsp + 4] # 1-byte Folded Reload
+ add al, byte ptr [rsp + 13] # 1-byte Folded Reload
mov ebx, eax
- movzx eax, byte ptr [rsp + 5] # 1-byte Folded Reload
+ movzx eax, byte ptr [rsp + 14] # 1-byte Folded Reload
shl al, 6
shl r13b, 7
or r13b, al
- movzx eax, byte ptr [rsp + 21] # 1-byte Folded Reload
+ movzx eax, byte ptr [rsp + 30] # 1-byte Folded Reload
shl al, 2
or al, bl
- add r8b, r8b
- add r8b, byte ptr [rsp + 10] # 1-byte Folded Reload
- movzx ebx, byte ptr [rsp + 22] # 1-byte Folded Reload
+ add dil, dil
+ add dil, byte ptr [rsp + 19] # 1-byte Folded Reload
+ movzx ebx, byte ptr [rsp + 31] # 1-byte Folded Reload
shl bl, 3
or bl, al
mov eax, ebx
shl r11b, 2
- or r11b, r8b
- movzx ebx, byte ptr [rsp + 23] # 1-byte Folded Reload
+ or r11b, dil
+ movzx ebx, byte ptr [rsp + 11] # 1-byte Folded Reload
shl bl, 4
or bl, al
- mov r8d, ebx
+ mov edi, ebx
shl r15b, 3
or r15b, r11b
- movzx ebx, byte ptr [rsp + 3] # 1-byte Folded Reload
+ movzx ebx, byte ptr [rsp + 12] # 1-byte Folded Reload
shl bl, 5
- or bl, r8b
- movzx eax, byte ptr [rsp + 6] # 1-byte Folded Reload
+ or bl, dil
+ movzx eax, byte ptr [rsp + 15] # 1-byte Folded Reload
shl al, 4
or al, r15b
- mov r8d, eax
- movzx eax, byte ptr [rsp + 7] # 1-byte Folded Reload
+ mov edi, eax
+ movzx eax, byte ptr [rsp + 16] # 1-byte Folded Reload
shl al, 5
- or al, r8b
- movzx r8d, byte ptr [rsp + 8] # 1-byte Folded Reload
- shl r8b, 6
- shl dil, 7
- or dil, r8b
+ or al, dil
+ movzx edi, byte ptr [rsp + 17] # 1-byte Folded Reload
+ shl dil, 6
+ shl r8b, 7
+ or r8b, dil
or r13b, bl
- or dil, al
+ or r8b, al
add r10b, r10b
- add r10b, byte ptr [rsp + 11] # 1-byte Folded Reload
+ add r10b, byte ptr [rsp + 20] # 1-byte Folded Reload
shl r14b, 2
or r14b, r10b
shl r12b, 3
or r12b, r14b
- movzx eax, byte ptr [rsp + 9] # 1-byte Folded Reload
+ movzx eax, byte ptr [rsp + 18] # 1-byte Folded Reload
shl al, 4
or al, r12b
mov ebx, eax
- mov r12, qword ptr [rsp + 48] # 8-byte Reload
- movzx eax, byte ptr [rsp + 12] # 1-byte Folded Reload
+ movzx eax, byte ptr [rsp + 21] # 1-byte Folded Reload
shl al, 5
or al, bl
- mov byte ptr [r12], r13b
- movzx ebx, byte ptr [rsp + 13] # 1-byte Folded Reload
+ mov rdi, qword ptr [rsp + 32] # 8-byte Reload
+ mov byte ptr [rdi], r13b
+ mov r15, qword ptr [rsp + 32] # 8-byte Reload
+ movzx ebx, byte ptr [rsp + 24] # 1-byte Folded Reload
shl bl, 6
shl r9b, 7
or r9b, bl
- mov byte ptr [r12 + 1], dil
+ mov byte ptr [r15 + 1], r8b
or r9b, al
- movzx eax, byte ptr [rsp + 14] # 1-byte Folded Reload
+ movzx eax, byte ptr [rsp + 22] # 1-byte Folded Reload
add al, al
- add al, byte ptr [rsp + 20] # 1-byte Folded Reload
+ add al, byte ptr [rsp + 29] # 1-byte Folded Reload
mov ebx, eax
- movzx eax, byte ptr [rsp + 15] # 1-byte Folded Reload
+ movzx eax, byte ptr [rsp + 23] # 1-byte Folded Reload
shl al, 2
or al, bl
mov ebx, eax
- movzx eax, byte ptr [rsp + 16] # 1-byte Folded Reload
+ movzx eax, byte ptr [rsp + 25] # 1-byte Folded Reload
shl al, 3
or al, bl
mov ebx, eax
- movzx eax, byte ptr [rsp + 17] # 1-byte Folded Reload
+ movzx eax, byte ptr [rsp + 26] # 1-byte Folded Reload
shl al, 4
or al, bl
mov ebx, eax
- movzx eax, byte ptr [rsp + 19] # 1-byte Folded Reload
+ movzx eax, byte ptr [rsp + 28] # 1-byte Folded Reload
shl al, 5
or al, bl
- movzx ebx, byte ptr [rsp + 18] # 1-byte Folded Reload
+ movzx ebx, byte ptr [rsp + 27] # 1-byte Folded Reload
shl bl, 6
shl cl, 7
or cl, bl
or cl, al
- mov byte ptr [r12 + 2], r9b
- mov byte ptr [r12 + 3], cl
+ mov byte ptr [r15 + 2], r9b
+ mov byte ptr [r15 + 3], cl
add rdx, 256
- add r12, 4
- add qword ptr [rsp + 32], -1 # 8-byte Folded Spill
- jne .LBB0_107
-# %bb.108:
- mov r14, qword ptr [rsp + 24] # 8-byte Reload
- mov r15, qword ptr [rsp + 56] # 8-byte Reload
-.LBB0_109:
- shl r15, 5
- cmp r15, r14
- jge .LBB0_123
-# %bb.110:
- sub r14, r15
+ add r15, 4
+ add qword ptr [rsp + 48], -1 # 8-byte Folded Spill
+ jne .LBB0_134
+# %bb.135:
+ mov r12, qword ptr [rsp + 40] # 8-byte Reload
+ mov rax, qword ptr [rsp + 64] # 8-byte Reload
+.LBB0_136:
+ shl rax, 5
+ sub r12, rax
+ jle .LBB0_153
+# %bb.137:
xor ecx, ecx
.p2align 4, 0x90
-.LBB0_111: # =>This Inner Loop Header: Depth=1
+.LBB0_138: # =>This Inner Loop Header: Depth=1
lea r8, [rcx + 1]
mov rdi, qword ptr [rsi + 8*rcx]
cmp rdi, qword ptr [rdx + 8*rcx]
@@ -2038,7 +2160,8 @@ comparison_equal_arr_arr_avx2: # @comparison_equal_arr_arr_avx2
neg bl
mov rdi, rcx
shr rdi, 3
- movzx r9d, byte ptr [r12 + rdi]
+ mov r10, r15
+ movzx r9d, byte ptr [r15 + rdi]
xor bl, r9b
and cl, 7
mov al, 1
@@ -2046,94 +2169,110 @@ comparison_equal_arr_arr_avx2: # @comparison_equal_arr_arr_avx2
shl al, cl
and al, bl
xor al, r9b
- mov byte ptr [r12 + rdi], al
+ mov byte ptr [r15 + rdi], al
mov rcx, r8
- cmp r14, r8
- jne .LBB0_111
- jmp .LBB0_123
-.LBB0_112:
- lea r15, [r14 + 31]
- test r14, r14
- cmovns r15, r14
- lea ecx, [rax + 7]
- test eax, eax
- cmovns ecx, eax
- and ecx, -8
- sub eax, ecx
- je .LBB0_116
-# %bb.113:
- movsxd r10, eax
+ cmp r12, r8
+ jne .LBB0_138
+ jmp .LBB0_153
+.LBB0_139:
+ lea eax, [r9 + 7]
+ test r9d, r9d
+ cmovns eax, r9d
+ and eax, -8
+ sub r9d, eax
+ je .LBB0_146
+# %bb.140:
+ mov r8d, 8
+ sub r8d, r9d
+ cmp r8, r12
+ cmovg r8, r12
+ test r8, r8
+ jle .LBB0_144
+# %bb.141:
+ movsxd r9, r9d
+ xor r11d, r11d
+ xor r14d, r14d
.p2align 4, 0x90
-.LBB0_114: # =>This Inner Loop Header: Depth=1
- vmovss xmm0, dword ptr [rsi] # xmm0 = mem[0],zero,zero,zero
- add rsi, 4
- vucomiss xmm0, dword ptr [rdx]
- lea rdx, [rdx + 4]
- setnp cl
+.LBB0_142: # =>This Inner Loop Header: Depth=1
+ lea rcx, [r9 + r14]
+ vmovss xmm0, dword ptr [rsi + 4*r14] # xmm0 = mem[0],zero,zero,zero
+ vucomiss xmm0, dword ptr [rdx + 4*r14]
+ setnp r10b
sete bl
- and bl, cl
+ and bl, r10b
neg bl
- lea rdi, [r10 + 7]
- test r10, r10
- cmovns rdi, r10
+ lea rdi, [r9 + r14]
+ add rdi, 7
+ test rcx, rcx
+ cmovns rdi, rcx
sar rdi, 3
- movzx r8d, byte ptr [r12 + rdi]
- xor bl, r8b
- lea r9d, [8*rdi]
- mov ecx, r10d
- sub ecx, r9d
+ lea eax, [8*rdi]
+ sub ecx, eax
mov eax, 1
- # kill: def $cl killed $cl killed $ecx
+ # kill: def $cl killed $cl killed $rcx
shl eax, cl
+ mov r10, r15
+ movzx ecx, byte ptr [r15 + rdi]
+ xor bl, cl
and al, bl
- xor al, r8b
- mov byte ptr [r12 + rdi], al
- add r10, 1
- cmp r10, 8
- jne .LBB0_114
-# %bb.115:
- add r12, 1
-.LBB0_116:
- sar r15, 5
- cmp r14, 32
- jl .LBB0_120
-# %bb.117:
- mov qword ptr [rsp + 24], r14 # 8-byte Spill
- mov qword ptr [rsp + 64], r15 # 8-byte Spill
- mov qword ptr [rsp + 56], r15 # 8-byte Spill
+ xor al, cl
+ mov byte ptr [r15 + rdi], al
+ add r14, 1
+ add r11, -4
+ cmp r8, r14
+ jne .LBB0_142
+# %bb.143:
+ sub rsi, r11
+ sub rdx, r11
+.LBB0_144:
+ sub r12, r8
+ je .LBB0_153
+# %bb.145:
+ add r15, 1
+.LBB0_146:
+ lea rax, [r12 + 31]
+ test r12, r12
+ cmovns rax, r12
+ sar rax, 5
+ cmp r12, 32
+ jl .LBB0_150
+# %bb.147:
+ mov qword ptr [rsp + 40], r12 # 8-byte Spill
+ mov qword ptr [rsp + 64], rax # 8-byte Spill
+ mov qword ptr [rsp + 48], rax # 8-byte Spill
.p2align 4, 0x90
-.LBB0_118: # =>This Inner Loop Header: Depth=1
- mov qword ptr [rsp + 48], r12 # 8-byte Spill
+.LBB0_148: # =>This Inner Loop Header: Depth=1
+ mov qword ptr [rsp + 32], r15 # 8-byte Spill
vmovss xmm0, dword ptr [rsi] # xmm0 = mem[0],zero,zero,zero
vucomiss xmm0, dword ptr [rdx]
vmovss xmm0, dword ptr [rsi + 4] # xmm0 = mem[0],zero,zero,zero
setnp al
sete cl
and cl, al
- mov byte ptr [rsp + 21], cl # 1-byte Spill
+ mov byte ptr [rsp + 29], cl # 1-byte Spill
vucomiss xmm0, dword ptr [rdx + 4]
setnp al
sete cl
and cl, al
- mov byte ptr [rsp + 13], cl # 1-byte Spill
+ mov byte ptr [rsp + 22], cl # 1-byte Spill
vmovss xmm0, dword ptr [rsi + 8] # xmm0 = mem[0],zero,zero,zero
vucomiss xmm0, dword ptr [rdx + 8]
setnp al
sete cl
and cl, al
- mov byte ptr [rsp + 20], cl # 1-byte Spill
+ mov byte ptr [rsp + 28], cl # 1-byte Spill
vmovss xmm0, dword ptr [rsi + 12] # xmm0 = mem[0],zero,zero,zero
vucomiss xmm0, dword ptr [rdx + 12]
setnp al
sete cl
and cl, al
- mov byte ptr [rsp + 23], cl # 1-byte Spill
+ mov byte ptr [rsp + 31], cl # 1-byte Spill
vmovss xmm0, dword ptr [rsi + 16] # xmm0 = mem[0],zero,zero,zero
vucomiss xmm0, dword ptr [rdx + 16]
setnp al
sete cl
and cl, al
- mov byte ptr [rsp + 22], cl # 1-byte Spill
+ mov byte ptr [rsp + 30], cl # 1-byte Spill
vmovss xmm0, dword ptr [rsi + 20] # xmm0 = mem[0],zero,zero,zero
vucomiss xmm0, dword ptr [rdx + 20]
setnp al
@@ -2149,13 +2288,13 @@ comparison_equal_arr_arr_avx2: # @comparison_equal_arr_arr_avx2
setnp al
sete cl
and cl, al
- mov byte ptr [rsp + 3], cl # 1-byte Spill
+ mov byte ptr [rsp + 12], cl # 1-byte Spill
vmovss xmm0, dword ptr [rsi + 32] # xmm0 = mem[0],zero,zero,zero
vucomiss xmm0, dword ptr [rdx + 32]
setnp al
sete cl
and cl, al
- mov byte ptr [rsp + 19], cl # 1-byte Spill
+ mov byte ptr [rsp + 27], cl # 1-byte Spill
vmovss xmm0, dword ptr [rsi + 36] # xmm0 = mem[0],zero,zero,zero
vucomiss xmm0, dword ptr [rdx + 36]
setnp al
@@ -2166,78 +2305,78 @@ comparison_equal_arr_arr_avx2: # @comparison_equal_arr_arr_avx2
setnp al
sete cl
and cl, al
- mov byte ptr [rsp + 18], cl # 1-byte Spill
+ mov byte ptr [rsp + 26], cl # 1-byte Spill
vmovss xmm0, dword ptr [rsi + 44] # xmm0 = mem[0],zero,zero,zero
vucomiss xmm0, dword ptr [rdx + 44]
setnp al
sete cl
and cl, al
- mov byte ptr [rsp + 17], cl # 1-byte Spill
+ mov byte ptr [rsp + 25], cl # 1-byte Spill
vmovss xmm0, dword ptr [rsi + 48] # xmm0 = mem[0],zero,zero,zero
vucomiss xmm0, dword ptr [rdx + 48]
setnp al
sete cl
and cl, al
- mov byte ptr [rsp + 16], cl # 1-byte Spill
+ mov byte ptr [rsp + 11], cl # 1-byte Spill
vmovss xmm0, dword ptr [rsi + 52] # xmm0 = mem[0],zero,zero,zero
vucomiss xmm0, dword ptr [rdx + 52]
setnp al
sete cl
and cl, al
- mov byte ptr [rsp + 15], cl # 1-byte Spill
+ mov byte ptr [rsp + 24], cl # 1-byte Spill
vmovss xmm0, dword ptr [rsi + 56] # xmm0 = mem[0],zero,zero,zero
vucomiss xmm0, dword ptr [rdx + 56]
setnp al
sete cl
and cl, al
- mov byte ptr [rsp + 12], cl # 1-byte Spill
+ mov byte ptr [rsp + 21], cl # 1-byte Spill
vmovss xmm0, dword ptr [rsi + 60] # xmm0 = mem[0],zero,zero,zero
vucomiss xmm0, dword ptr [rdx + 60]
setnp al
sete cl
and cl, al
- mov byte ptr [rsp + 11], cl # 1-byte Spill
+ mov byte ptr [rsp + 20], cl # 1-byte Spill
vmovss xmm0, dword ptr [rsi + 64] # xmm0 = mem[0],zero,zero,zero
vucomiss xmm0, dword ptr [rdx + 64]
setnp al
sete cl
and cl, al
- mov byte ptr [rsp + 14], cl # 1-byte Spill
+ mov byte ptr [rsp + 23], cl # 1-byte Spill
vmovss xmm0, dword ptr [rsi + 68] # xmm0 = mem[0],zero,zero,zero
vucomiss xmm0, dword ptr [rdx + 68]
setnp al
sete cl
and cl, al
- mov byte ptr [rsp + 10], cl # 1-byte Spill
+ mov byte ptr [rsp + 19], cl # 1-byte Spill
vmovss xmm0, dword ptr [rsi + 72] # xmm0 = mem[0],zero,zero,zero
vucomiss xmm0, dword ptr [rdx + 72]
setnp al
sete cl
and cl, al
- mov byte ptr [rsp + 9], cl # 1-byte Spill
+ mov byte ptr [rsp + 18], cl # 1-byte Spill
vmovss xmm0, dword ptr [rsi + 76] # xmm0 = mem[0],zero,zero,zero
vucomiss xmm0, dword ptr [rdx + 76]
setnp al
- sete r11b
- and r11b, al
+ sete r15b
+ and r15b, al
vmovss xmm0, dword ptr [rsi + 80] # xmm0 = mem[0],zero,zero,zero
vucomiss xmm0, dword ptr [rdx + 80]
setnp al
sete cl
and cl, al
- mov byte ptr [rsp + 8], cl # 1-byte Spill
+ mov byte ptr [rsp + 17], cl # 1-byte Spill
vmovss xmm0, dword ptr [rsi + 84] # xmm0 = mem[0],zero,zero,zero
vucomiss xmm0, dword ptr [rdx + 84]
setnp al
sete cl
and cl, al
- mov byte ptr [rsp + 7], cl # 1-byte Spill
+ mov byte ptr [rsp + 16], cl # 1-byte Spill
vmovss xmm0, dword ptr [rsi + 88] # xmm0 = mem[0],zero,zero,zero
vucomiss xmm0, dword ptr [rdx + 88]
setnp al
sete cl
and cl, al
- mov byte ptr [rsp + 5], cl # 1-byte Spill
+ mov byte ptr [rsp + 14], cl # 1-byte Spill
vmovss xmm0, dword ptr [rsi + 92] # xmm0 = mem[0],zero,zero,zero
vucomiss xmm0, dword ptr [rdx + 92]
setnp al
@@ -2248,35 +2387,34 @@ comparison_equal_arr_arr_avx2: # @comparison_equal_arr_arr_avx2
setnp al
sete cl
and cl, al
- mov byte ptr [rsp + 6], cl # 1-byte Spill
+ mov byte ptr [rsp + 15], cl # 1-byte Spill
vmovss xmm0, dword ptr [rsi + 100] # xmm0 = mem[0],zero,zero,zero
vucomiss xmm0, dword ptr [rdx + 100]
setnp al
- sete cl
- and cl, al
- mov byte ptr [rsp + 32], cl # 1-byte Spill
+ sete r12b
+ and r12b, al
vmovss xmm0, dword ptr [rsi + 104] # xmm0 = mem[0],zero,zero,zero
vucomiss xmm0, dword ptr [rdx + 104]
setnp al
- sete r15b
- and r15b, al
+ sete r14b
+ and r14b, al
vmovss xmm0, dword ptr [rsi + 108] # xmm0 = mem[0],zero,zero,zero
vucomiss xmm0, dword ptr [rdx + 108]
setnp al
- sete r14b
- and r14b, al
+ sete r11b
+ and r11b, al
vmovss xmm0, dword ptr [rsi + 112] # xmm0 = mem[0],zero,zero,zero
vucomiss xmm0, dword ptr [rdx + 112]
setnp al
sete cl
and cl, al
- mov byte ptr [rsp + 4], cl # 1-byte Spill
+ mov byte ptr [rsp + 13], cl # 1-byte Spill
vmovss xmm0, dword ptr [rsi + 116] # xmm0 = mem[0],zero,zero,zero
vucomiss xmm0, dword ptr [rdx + 116]
setnp al
sete cl
and cl, al
- mov byte ptr [rsp + 40], cl # 1-byte Spill
+ mov byte ptr [rsp + 56], cl # 1-byte Spill
vmovss xmm0, dword ptr [rsi + 120] # xmm0 = mem[0],zero,zero,zero
vucomiss xmm0, dword ptr [rdx + 120]
setnp al
@@ -2288,110 +2426,108 @@ comparison_equal_arr_arr_avx2: # @comparison_equal_arr_arr_avx2
setnp al
sete r8b
and r8b, al
- movzx eax, byte ptr [rsp + 13] # 1-byte Folded Reload
+ movzx eax, byte ptr [rsp + 22] # 1-byte Folded Reload
add al, al
- add al, byte ptr [rsp + 21] # 1-byte Folded Reload
+ add al, byte ptr [rsp + 29] # 1-byte Folded Reload
shl dil, 5
shl r13b, 6
or r13b, dil
mov edi, r13d
- movzx ecx, byte ptr [rsp + 20] # 1-byte Folded Reload
+ movzx ecx, byte ptr [rsp + 28] # 1-byte Folded Reload
shl cl, 2
or cl, al
mov eax, ebx
add al, bl
- add al, byte ptr [rsp + 19] # 1-byte Folded Reload
+ add al, byte ptr [rsp + 27] # 1-byte Folded Reload
mov r13d, eax
- movzx eax, byte ptr [rsp + 3] # 1-byte Folded Reload
+ movzx eax, byte ptr [rsp + 12] # 1-byte Folded Reload
shl al, 7
or al, dil
- mov byte ptr [rsp + 3], al # 1-byte Spill
- movzx eax, byte ptr [rsp + 18] # 1-byte Folded Reload
+ mov byte ptr [rsp + 12], al # 1-byte Spill
+ movzx eax, byte ptr [rsp + 26] # 1-byte Folded Reload
shl al, 2
or al, r13b
mov edi, eax
- movzx eax, byte ptr [rsp + 23] # 1-byte Folded Reload
+ movzx eax, byte ptr [rsp + 31] # 1-byte Folded Reload
shl al, 3
or al, cl
- movzx ebx, byte ptr [rsp + 17] # 1-byte Folded Reload
+ movzx ebx, byte ptr [rsp + 25] # 1-byte Folded Reload
shl bl, 3
or bl, dil
- movzx r13d, byte ptr [rsp + 22] # 1-byte Folded Reload
+ movzx r13d, byte ptr [rsp + 30] # 1-byte Folded Reload
shl r13b, 4
or r13b, al
- movzx eax, byte ptr [rsp + 16] # 1-byte Folded Reload
+ movzx eax, byte ptr [rsp + 11] # 1-byte Folded Reload
shl al, 4
or al, bl
- mov edi, eax
- movzx ebx, byte ptr [rsp + 15] # 1-byte Folded Reload
+ mov byte ptr [rsp + 11], al # 1-byte Spill
+ movzx ebx, byte ptr [rsp + 24] # 1-byte Folded Reload
shl bl, 5
- movzx eax, byte ptr [rsp + 12] # 1-byte Folded Reload
+ movzx eax, byte ptr [rsp + 21] # 1-byte Folded Reload
shl al, 6
or al, bl
mov ebx, eax
- movzx eax, byte ptr [rsp + 11] # 1-byte Folded Reload
- shl al, 7
- or al, bl
- movzx ebx, byte ptr [rsp + 10] # 1-byte Folded Reload
+ movzx edi, byte ptr [rsp + 20] # 1-byte Folded Reload
+ shl dil, 7
+ or dil, al
+ movzx ebx, byte ptr [rsp + 19] # 1-byte Folded Reload
add bl, bl
- add bl, byte ptr [rsp + 14] # 1-byte Folded Reload
- movzx ecx, byte ptr [rsp + 9] # 1-byte Folded Reload
+ add bl, byte ptr [rsp + 23] # 1-byte Folded Reload
+ movzx ecx, byte ptr [rsp + 18] # 1-byte Folded Reload
shl cl, 2
or cl, bl
- shl r11b, 3
- or r11b, cl
- movzx ebx, byte ptr [rsp + 8] # 1-byte Folded Reload
+ shl r15b, 3
+ or r15b, cl
+ movzx ebx, byte ptr [rsp + 17] # 1-byte Folded Reload
shl bl, 4
- or bl, r11b
- mov r12, qword ptr [rsp + 48] # 8-byte Reload
- movzx r11d, byte ptr [rsp + 3] # 1-byte Folded Reload
- or r11b, r13b
- movzx r13d, byte ptr [rsp + 7] # 1-byte Folded Reload
+ or bl, r15b
+ mov r15, qword ptr [rsp + 32] # 8-byte Reload
+ movzx eax, byte ptr [rsp + 12] # 1-byte Folded Reload
+ or al, r13b
+ movzx r13d, byte ptr [rsp + 16] # 1-byte Folded Reload
shl r13b, 5
- movzx ecx, byte ptr [rsp + 5] # 1-byte Folded Reload
+ movzx ecx, byte ptr [rsp + 14] # 1-byte Folded Reload
shl cl, 6
or cl, r13b
- or al, dil
+ or dil, byte ptr [rsp + 11] # 1-byte Folded Reload
shl r10b, 7
or r10b, cl
or r10b, bl
- movzx ecx, byte ptr [rsp + 32] # 1-byte Folded Reload
- add cl, cl
- add cl, byte ptr [rsp + 6] # 1-byte Folded Reload
- shl r15b, 2
- or r15b, cl
- shl r14b, 3
- or r14b, r15b
- movzx ecx, byte ptr [rsp + 4] # 1-byte Folded Reload
+ add r12b, r12b
+ add r12b, byte ptr [rsp + 15] # 1-byte Folded Reload
+ shl r14b, 2
+ or r14b, r12b
+ shl r11b, 3
+ or r11b, r14b
+ movzx ecx, byte ptr [rsp + 13] # 1-byte Folded Reload
shl cl, 4
- or cl, r14b
- mov byte ptr [r12], r11b
- movzx ebx, byte ptr [rsp + 40] # 1-byte Folded Reload
+ or cl, r11b
+ mov byte ptr [r15], al
+ movzx ebx, byte ptr [rsp + 56] # 1-byte Folded Reload
shl bl, 5
shl r9b, 6
or r9b, bl
- mov byte ptr [r12 + 1], al
+ mov byte ptr [r15 + 1], dil
shl r8b, 7
or r8b, r9b
or r8b, cl
- mov byte ptr [r12 + 2], r10b
- mov byte ptr [r12 + 3], r8b
+ mov byte ptr [r15 + 2], r10b
+ mov byte ptr [r15 + 3], r8b
add rdx, 128
- add r12, 4
- add qword ptr [rsp + 56], -1 # 8-byte Folded Spill
- jne .LBB0_118
-# %bb.119:
- mov r14, qword ptr [rsp + 24] # 8-byte Reload
- mov r15, qword ptr [rsp + 64] # 8-byte Reload
-.LBB0_120:
- shl r15, 5
- cmp r15, r14
- jge .LBB0_123
-# %bb.121:
- sub r14, r15
+ add r15, 4
+ add qword ptr [rsp + 48], -1 # 8-byte Folded Spill
+ jne .LBB0_148
+# %bb.149:
+ mov r12, qword ptr [rsp + 40] # 8-byte Reload
+ mov rax, qword ptr [rsp + 64] # 8-byte Reload
+.LBB0_150:
+ shl rax, 5
+ sub r12, rax
+ jle .LBB0_153
+# %bb.151:
xor ecx, ecx
.p2align 4, 0x90
-.LBB0_122: # =>This Inner Loop Header: Depth=1
+.LBB0_152: # =>This Inner Loop Header: Depth=1
lea r9, [rcx + 1]
vmovss xmm0, dword ptr [rsi + 4*rcx] # xmm0 = mem[0],zero,zero,zero
vucomiss xmm0, dword ptr [rdx + 4*rcx]
@@ -2401,7 +2537,8 @@ comparison_equal_arr_arr_avx2: # @comparison_equal_arr_arr_avx2
neg al
mov rdi, rcx
shr rdi, 3
- movzx r8d, byte ptr [r12 + rdi]
+ mov r10, r15
+ movzx r8d, byte ptr [r15 + rdi]
xor al, r8b
and cl, 7
mov bl, 1
@@ -2409,89 +2546,112 @@ comparison_equal_arr_arr_avx2: # @comparison_equal_arr_arr_avx2
shl bl, cl
and bl, al
xor bl, r8b
- mov byte ptr [r12 + rdi], bl
+ mov byte ptr [r15 + rdi], bl
mov rcx, r9
- cmp r14, r9
- jne .LBB0_122
- jmp .LBB0_123
-.LBB0_57:
- lea r15, [r14 + 31]
- test r14, r14
- cmovns r15, r14
- lea ecx, [rax + 7]
- test eax, eax
- cmovns ecx, eax
- and ecx, -8
- sub eax, ecx
- je .LBB0_61
-# %bb.58:
- cdqe
- .p2align 4, 0x90
-.LBB0_59: # =>This Inner Loop Header: Depth=1
- movzx ecx, byte ptr [rsi]
- add rsi, 1
- cmp cl, byte ptr [rdx]
- lea rdx, [rdx + 1]
- sete r10b
- neg r10b
- lea rdi, [rax + 7]
+ cmp r12, r9
+ jne .LBB0_152
+ jmp .LBB0_153
+.LBB0_69:
+ lea eax, [r9 + 7]
+ test r9d, r9d
+ cmovns eax, r9d
+ and eax, -8
+ sub r9d, eax
+ je .LBB0_76
+# %bb.70:
+ mov eax, 8
+ sub eax, r9d
+ cmp rax, r12
+ cmovg rax, r12
test rax, rax
- cmovns rdi, rax
+ jle .LBB0_74
+# %bb.71:
+ mov qword ptr [rsp + 40], r12 # 8-byte Spill
+ movsxd rbx, r9d
+ mov qword ptr [rsp + 32], rax # 8-byte Spill
+ mov r9, rax
+ neg r9
+ xor r10d, r10d
+ xor r11d, r11d
+ .p2align 4, 0x90
+.LBB0_72: # =>This Inner Loop Header: Depth=1
+ movzx ecx, byte ptr [rsi + r11]
+ cmp cl, byte ptr [rdx + r11]
+ sete r12b
+ neg r12b
+ lea rdi, [rbx + 7]
+ test rbx, rbx
+ cmovns rdi, rbx
sar rdi, 3
- movzx r8d, byte ptr [r12 + rdi]
- xor r10b, r8b
- lea r9d, [8*rdi]
- mov ecx, eax
- sub ecx, r9d
- mov ebx, 1
+ movzx r14d, byte ptr [r15 + rdi]
+ lea r15d, [8*rdi]
+ mov ecx, ebx
+ sub ecx, r15d
+ mov r8, r13
+ mov eax, 1
# kill: def $cl killed $cl killed $ecx
- shl ebx, cl
- and bl, r10b
- xor bl, r8b
- mov byte ptr [r12 + rdi], bl
- add rax, 1
- cmp rax, 8
- jne .LBB0_59
-# %bb.60:
- add r12, 1
-.LBB0_61:
- sar r15, 5
- cmp r14, 32
- jl .LBB0_65
-# %bb.62:
- mov qword ptr [rsp + 24], r14 # 8-byte Spill
- mov qword ptr [rsp + 32], r15 # 8-byte Spill
- mov qword ptr [rsp + 40], r15 # 8-byte Spill
+ shl eax, cl
+ xor r12b, r14b
+ and al, r12b
+ xor al, r14b
+ mov r15, r13
+ mov byte ptr [r13 + rdi], al
+ add r11, 1
+ add rbx, 1
+ add r10, -1
+ cmp r9, r10
+ jne .LBB0_72
+# %bb.73:
+ sub rsi, r10
+ sub rdx, r10
+ mov rax, qword ptr [rsp + 32] # 8-byte Reload
+ mov r12, qword ptr [rsp + 40] # 8-byte Reload
+.LBB0_74:
+ sub r12, rax
+ je .LBB0_153
+# %bb.75:
+ add r15, 1
+.LBB0_76:
+ lea rax, [r12 + 31]
+ test r12, r12
+ cmovns rax, r12
+ sar rax, 5
+ cmp r12, 32
+ jl .LBB0_80
+# %bb.77:
+ mov qword ptr [rsp + 40], r12 # 8-byte Spill
+ mov qword ptr [rsp + 48], rax # 8-byte Spill
+ mov qword ptr [rsp + 56], rax # 8-byte Spill
.p2align 4, 0x90
-.LBB0_63: # =>This Inner Loop Header: Depth=1
- mov qword ptr [rsp + 48], r12 # 8-byte Spill
+.LBB0_78: # =>This Inner Loop Header: Depth=1
+ mov qword ptr [rsp + 32], r15 # 8-byte Spill
movzx eax, byte ptr [rsi]
movzx ecx, byte ptr [rsi + 1]
cmp al, byte ptr [rdx]
- sete byte ptr [rsp + 4] # 1-byte Folded Spill
+ sete byte ptr [rsp + 13] # 1-byte Folded Spill
cmp cl, byte ptr [rdx + 1]
sete bl
movzx eax, byte ptr [rsi + 2]
cmp al, byte ptr [rdx + 2]
- sete byte ptr [rsp + 21] # 1-byte Folded Spill
+ sete byte ptr [rsp + 30] # 1-byte Folded Spill
movzx eax, byte ptr [rsi + 3]
cmp al, byte ptr [rdx + 3]
- sete byte ptr [rsp + 22] # 1-byte Folded Spill
+ sete byte ptr [rsp + 31] # 1-byte Folded Spill
movzx eax, byte ptr [rsi + 4]
cmp al, byte ptr [rdx + 4]
- sete byte ptr [rsp + 23] # 1-byte Folded Spill
+ sete byte ptr [rsp + 11] # 1-byte Folded Spill
movzx eax, byte ptr [rsi + 5]
cmp al, byte ptr [rdx + 5]
- sete byte ptr [rsp + 3] # 1-byte Folded Spill
+ sete byte ptr [rsp + 12] # 1-byte Folded Spill
movzx eax, byte ptr [rsi + 6]
cmp al, byte ptr [rdx + 6]
- sete byte ptr [rsp + 5] # 1-byte Folded Spill
+ sete byte ptr [rsp + 14] # 1-byte Folded Spill
movzx eax, byte ptr [rsi + 7]
cmp al, byte ptr [rdx + 7]
- sete r15b
+ sete r14b
movzx eax, byte ptr [rsi + 8]
cmp al, byte ptr [rdx + 8]
- sete byte ptr [rsp + 8] # 1-byte Folded Spill
+ sete byte ptr [rsp + 17] # 1-byte Folded Spill
movzx eax, byte ptr [rsi + 9]
cmp al, byte ptr [rdx + 9]
sete dil
@@ -2503,19 +2663,19 @@ comparison_equal_arr_arr_avx2: # @comparison_equal_arr_arr_avx2
sete r11b
movzx eax, byte ptr [rsi + 12]
cmp al, byte ptr [rdx + 12]
- sete r14b
+ sete r15b
movzx eax, byte ptr [rsi + 13]
cmp al, byte ptr [rdx + 13]
- sete byte ptr [rsp + 6] # 1-byte Folded Spill
+ sete byte ptr [rsp + 15] # 1-byte Folded Spill
movzx eax, byte ptr [rsi + 14]
cmp al, byte ptr [rdx + 14]
- sete byte ptr [rsp + 7] # 1-byte Folded Spill
+ sete byte ptr [rsp + 16] # 1-byte Folded Spill
movzx eax, byte ptr [rsi + 15]
cmp al, byte ptr [rdx + 15]
sete r8b
movzx eax, byte ptr [rsi + 16]
cmp al, byte ptr [rdx + 16]
- sete byte ptr [rsp + 14] # 1-byte Folded Spill
+ sete byte ptr [rsp + 23] # 1-byte Folded Spill
movzx eax, byte ptr [rsi + 17]
cmp al, byte ptr [rdx + 17]
sete r12b
@@ -2524,148 +2684,147 @@ comparison_equal_arr_arr_avx2: # @comparison_equal_arr_arr_avx2
sete r13b
movzx eax, byte ptr [rsi + 19]
cmp al, byte ptr [rdx + 19]
- sete byte ptr [rsp + 9] # 1-byte Folded Spill
+ sete byte ptr [rsp + 18] # 1-byte Folded Spill
movzx eax, byte ptr [rsi + 20]
cmp al, byte ptr [rdx + 20]
- sete byte ptr [rsp + 10] # 1-byte Folded Spill
+ sete byte ptr [rsp + 19] # 1-byte Folded Spill
movzx eax, byte ptr [rsi + 21]
cmp al, byte ptr [rdx + 21]
- sete byte ptr [rsp + 11] # 1-byte Folded Spill
+ sete byte ptr [rsp + 20] # 1-byte Folded Spill
movzx eax, byte ptr [rsi + 22]
cmp al, byte ptr [rdx + 22]
- sete byte ptr [rsp + 12] # 1-byte Folded Spill
+ sete byte ptr [rsp + 21] # 1-byte Folded Spill
movzx eax, byte ptr [rsi + 23]
cmp al, byte ptr [rdx + 23]
sete r9b
movzx eax, byte ptr [rsi + 24]
cmp al, byte ptr [rdx + 24]
- sete byte ptr [rsp + 20] # 1-byte Folded Spill
+ sete byte ptr [rsp + 29] # 1-byte Folded Spill
movzx eax, byte ptr [rsi + 25]
cmp al, byte ptr [rdx + 25]
- sete byte ptr [rsp + 13] # 1-byte Folded Spill
+ sete byte ptr [rsp + 22] # 1-byte Folded Spill
movzx eax, byte ptr [rsi + 26]
cmp al, byte ptr [rdx + 26]
- sete byte ptr [rsp + 15] # 1-byte Folded Spill
+ sete byte ptr [rsp + 24] # 1-byte Folded Spill
movzx eax, byte ptr [rsi + 27]
cmp al, byte ptr [rdx + 27]
- sete byte ptr [rsp + 16] # 1-byte Folded Spill
+ sete byte ptr [rsp + 25] # 1-byte Folded Spill
movzx eax, byte ptr [rsi + 28]
cmp al, byte ptr [rdx + 28]
- sete byte ptr [rsp + 17] # 1-byte Folded Spill
+ sete byte ptr [rsp + 26] # 1-byte Folded Spill
movzx eax, byte ptr [rsi + 29]
cmp al, byte ptr [rdx + 29]
- sete byte ptr [rsp + 18] # 1-byte Folded Spill
+ sete byte ptr [rsp + 27] # 1-byte Folded Spill
movzx eax, byte ptr [rsi + 30]
cmp al, byte ptr [rdx + 30]
- sete byte ptr [rsp + 19] # 1-byte Folded Spill
+ sete byte ptr [rsp + 28] # 1-byte Folded Spill
movzx eax, byte ptr [rsi + 31]
add rsi, 32
cmp al, byte ptr [rdx + 31]
sete cl
add bl, bl
- add bl, byte ptr [rsp + 4] # 1-byte Folded Reload
+ add bl, byte ptr [rsp + 13] # 1-byte Folded Reload
mov eax, ebx
- movzx ebx, byte ptr [rsp + 5] # 1-byte Folded Reload
+ movzx ebx, byte ptr [rsp + 14] # 1-byte Folded Reload
shl bl, 6
- shl r15b, 7
- or r15b, bl
- movzx ebx, byte ptr [rsp + 21] # 1-byte Folded Reload
+ shl r14b, 7
+ or r14b, bl
+ movzx ebx, byte ptr [rsp + 30] # 1-byte Folded Reload
shl bl, 2
or bl, al
mov eax, ebx
add dil, dil
- add dil, byte ptr [rsp + 8] # 1-byte Folded Reload
- movzx ebx, byte ptr [rsp + 22] # 1-byte Folded Reload
+ add dil, byte ptr [rsp + 17] # 1-byte Folded Reload
+ movzx ebx, byte ptr [rsp + 31] # 1-byte Folded Reload
shl bl, 3
or bl, al
mov eax, ebx
shl r10b, 2
or r10b, dil
- movzx ebx, byte ptr [rsp + 23] # 1-byte Folded Reload
+ movzx ebx, byte ptr [rsp + 11] # 1-byte Folded Reload
shl bl, 4
or bl, al
mov edi, ebx
shl r11b, 3
or r11b, r10b
- movzx ebx, byte ptr [rsp + 3] # 1-byte Folded Reload
+ movzx ebx, byte ptr [rsp + 12] # 1-byte Folded Reload
shl bl, 5
or bl, dil
- shl r14b, 4
- or r14b, r11b
- movzx eax, byte ptr [rsp + 6] # 1-byte Folded Reload
+ shl r15b, 4
+ or r15b, r11b
+ movzx eax, byte ptr [rsp + 15] # 1-byte Folded Reload
shl al, 5
- or al, r14b
- movzx edi, byte ptr [rsp + 7] # 1-byte Folded Reload
+ or al, r15b
+ movzx edi, byte ptr [rsp + 16] # 1-byte Folded Reload
shl dil, 6
shl r8b, 7
or r8b, dil
- or r15b, bl
+ or r14b, bl
or r8b, al
add r12b, r12b
- add r12b, byte ptr [rsp + 14] # 1-byte Folded Reload
+ add r12b, byte ptr [rsp + 23] # 1-byte Folded Reload
shl r13b, 2
or r13b, r12b
- mov r12, qword ptr [rsp + 48] # 8-byte Reload
- movzx eax, byte ptr [rsp + 9] # 1-byte Folded Reload
+ movzx eax, byte ptr [rsp + 18] # 1-byte Folded Reload
shl al, 3
or al, r13b
mov ebx, eax
- movzx eax, byte ptr [rsp + 10] # 1-byte Folded Reload
+ mov r15, qword ptr [rsp + 32] # 8-byte Reload
+ movzx eax, byte ptr [rsp + 19] # 1-byte Folded Reload
shl al, 4
or al, bl
mov ebx, eax
- movzx eax, byte ptr [rsp + 11] # 1-byte Folded Reload
+ movzx eax, byte ptr [rsp + 20] # 1-byte Folded Reload
shl al, 5
or al, bl
- mov byte ptr [r12], r15b
- movzx ebx, byte ptr [rsp + 12] # 1-byte Folded Reload
+ mov byte ptr [r15], r14b
+ movzx ebx, byte ptr [rsp + 21] # 1-byte Folded Reload
shl bl, 6
shl r9b, 7
or r9b, bl
- mov byte ptr [r12 + 1], r8b
+ mov byte ptr [r15 + 1], r8b
or r9b, al
- movzx eax, byte ptr [rsp + 13] # 1-byte Folded Reload
+ movzx eax, byte ptr [rsp + 22] # 1-byte Folded Reload
add al, al
- add al, byte ptr [rsp + 20] # 1-byte Folded Reload
+ add al, byte ptr [rsp + 29] # 1-byte Folded Reload
mov ebx, eax
- movzx eax, byte ptr [rsp + 15] # 1-byte Folded Reload
+ movzx eax, byte ptr [rsp + 24] # 1-byte Folded Reload
shl al, 2
or al, bl
mov ebx, eax
- movzx eax, byte ptr [rsp + 16] # 1-byte Folded Reload
+ movzx eax, byte ptr [rsp + 25] # 1-byte Folded Reload
shl al, 3
or al, bl
mov ebx, eax
- movzx eax, byte ptr [rsp + 17] # 1-byte Folded Reload
+ movzx eax, byte ptr [rsp + 26] # 1-byte Folded Reload
shl al, 4
or al, bl
mov ebx, eax
- movzx eax, byte ptr [rsp + 18] # 1-byte Folded Reload
+ movzx eax, byte ptr [rsp + 27] # 1-byte Folded Reload
shl al, 5
or al, bl
- movzx ebx, byte ptr [rsp + 19] # 1-byte Folded Reload
+ movzx ebx, byte ptr [rsp + 28] # 1-byte Folded Reload
shl bl, 6
shl cl, 7
or cl, bl
or cl, al
- mov byte ptr [r12 + 2], r9b
- mov byte ptr [r12 + 3], cl
+ mov byte ptr [r15 + 2], r9b
+ mov byte ptr [r15 + 3], cl
add rdx, 32
- add r12, 4
- add qword ptr [rsp + 40], -1 # 8-byte Folded Spill
- jne .LBB0_63
-# %bb.64:
- mov r14, qword ptr [rsp + 24] # 8-byte Reload
- mov r15, qword ptr [rsp + 32] # 8-byte Reload
-.LBB0_65:
- shl r15, 5
- cmp r15, r14
- jge .LBB0_123
-# %bb.66:
- sub r14, r15
+ add r15, 4
+ add qword ptr [rsp + 56], -1 # 8-byte Folded Spill
+ jne .LBB0_78
+# %bb.79:
+ mov r12, qword ptr [rsp + 40] # 8-byte Reload
+ mov rax, qword ptr [rsp + 48] # 8-byte Reload
+.LBB0_80:
+ shl rax, 5
+ sub r12, rax
+ jle .LBB0_153
+# %bb.81:
xor ecx, ecx
.p2align 4, 0x90
-.LBB0_67: # =>This Inner Loop Header: Depth=1
+.LBB0_82: # =>This Inner Loop Header: Depth=1
lea r8, [rcx + 1]
movzx ebx, byte ptr [rsi + rcx]
cmp bl, byte ptr [rdx + rcx]
@@ -2673,7 +2832,8 @@ comparison_equal_arr_arr_avx2: # @comparison_equal_arr_arr_avx2
neg bl
mov rdi, rcx
shr rdi, 3
- movzx r9d, byte ptr [r12 + rdi]
+ mov r10, r15
+ movzx r9d, byte ptr [r15 + rdi]
xor bl, r9b
and cl, 7
mov al, 1
@@ -2681,92 +2841,108 @@ comparison_equal_arr_arr_avx2: # @comparison_equal_arr_arr_avx2
shl al, cl
and al, bl
xor al, r9b
- mov byte ptr [r12 + rdi], al
+ mov byte ptr [r15 + rdi], al
mov rcx, r8
- cmp r14, r8
- jne .LBB0_67
- jmp .LBB0_123
-.LBB0_90:
- lea r15, [r14 + 31]
- test r14, r14
- cmovns r15, r14
- lea ecx, [rax + 7]
- test eax, eax
- cmovns ecx, eax
- and ecx, -8
- sub eax, ecx
- je .LBB0_94
-# %bb.91:
- cdqe
+ cmp r12, r8
+ jne .LBB0_82
+ jmp .LBB0_153
+.LBB0_111:
+ lea eax, [r9 + 7]
+ test r9d, r9d
+ cmovns eax, r9d
+ and eax, -8
+ sub r9d, eax
+ je .LBB0_118
+# %bb.112:
+ mov r8d, 8
+ sub r8d, r9d
+ cmp r8, r12
+ cmovg r8, r12
+ test r8, r8
+ jle .LBB0_116
+# %bb.113:
+ movsxd r9, r9d
+ xor r10d, r10d
+ xor eax, eax
.p2align 4, 0x90
-.LBB0_92: # =>This Inner Loop Header: Depth=1
- mov ecx, dword ptr [rsi]
- add rsi, 4
- cmp ecx, dword ptr [rdx]
- lea rdx, [rdx + 4]
- sete r10b
- neg r10b
- lea rdi, [rax + 7]
- test rax, rax
- cmovns rdi, rax
+.LBB0_114: # =>This Inner Loop Header: Depth=1
+ lea rcx, [r9 + rax]
+ mov ebx, dword ptr [rsi + 4*rax]
+ cmp ebx, dword ptr [rdx + 4*rax]
+ sete r11b
+ neg r11b
+ lea rdi, [r9 + rax]
+ add rdi, 7
+ test rcx, rcx
+ cmovns rdi, rcx
sar rdi, 3
- movzx r8d, byte ptr [r12 + rdi]
- xor r10b, r8b
- lea r9d, [8*rdi]
- mov ecx, eax
- sub ecx, r9d
+ lea ebx, [8*rdi]
+ sub ecx, ebx
mov ebx, 1
- # kill: def $cl killed $cl killed $ecx
+ # kill: def $cl killed $cl killed $rcx
shl ebx, cl
- and bl, r10b
- xor bl, r8b
- mov byte ptr [r12 + rdi], bl
+ mov r14, r15
+ movzx ecx, byte ptr [r15 + rdi]
+ xor r11b, cl
+ and bl, r11b
+ xor bl, cl
+ mov byte ptr [r15 + rdi], bl
add rax, 1
- cmp rax, 8
- jne .LBB0_92
-# %bb.93:
- add r12, 1
-.LBB0_94:
- sar r15, 5
- cmp r14, 32
- jl .LBB0_98
-# %bb.95:
- mov qword ptr [rsp + 24], r14 # 8-byte Spill
- mov qword ptr [rsp + 56], r15 # 8-byte Spill
- mov qword ptr [rsp + 32], r15 # 8-byte Spill
+ add r10, -4
+ cmp r8, rax
+ jne .LBB0_114
+# %bb.115:
+ sub rsi, r10
+ sub rdx, r10
+.LBB0_116:
+ sub r12, r8
+ je .LBB0_153
+# %bb.117:
+ add r15, 1
+.LBB0_118:
+ lea rax, [r12 + 31]
+ test r12, r12
+ cmovns rax, r12
+ sar rax, 5
+ cmp r12, 32
+ jl .LBB0_122
+# %bb.119:
+ mov qword ptr [rsp + 40], r12 # 8-byte Spill
+ mov qword ptr [rsp + 64], rax # 8-byte Spill
+ mov qword ptr [rsp + 48], rax # 8-byte Spill
.p2align 4, 0x90
-.LBB0_96: # =>This Inner Loop Header: Depth=1
- mov qword ptr [rsp + 48], r12 # 8-byte Spill
+.LBB0_120: # =>This Inner Loop Header: Depth=1
+ mov qword ptr [rsp + 32], r15 # 8-byte Spill
mov eax, dword ptr [rsi]
mov ecx, dword ptr [rsi + 4]
cmp eax, dword ptr [rdx]
- sete byte ptr [rsp + 4] # 1-byte Folded Spill
+ sete byte ptr [rsp + 13] # 1-byte Folded Spill
cmp ecx, dword ptr [rdx + 4]
- sete byte ptr [rsp + 40] # 1-byte Folded Spill
+ sete byte ptr [rsp + 56] # 1-byte Folded Spill
mov eax, dword ptr [rsi + 8]
cmp eax, dword ptr [rdx + 8]
- sete byte ptr [rsp + 21] # 1-byte Folded Spill
+ sete byte ptr [rsp + 30] # 1-byte Folded Spill
mov eax, dword ptr [rsi + 12]
cmp eax, dword ptr [rdx + 12]
- sete byte ptr [rsp + 22] # 1-byte Folded Spill
+ sete byte ptr [rsp + 31] # 1-byte Folded Spill
mov eax, dword ptr [rsi + 16]
cmp eax, dword ptr [rdx + 16]
- sete byte ptr [rsp + 23] # 1-byte Folded Spill
+ sete byte ptr [rsp + 11] # 1-byte Folded Spill
mov eax, dword ptr [rsi + 20]
cmp eax, dword ptr [rdx + 20]
- sete byte ptr [rsp + 3] # 1-byte Folded Spill
+ sete byte ptr [rsp + 12] # 1-byte Folded Spill
mov eax, dword ptr [rsi + 24]
cmp eax, dword ptr [rdx + 24]
- sete byte ptr [rsp + 5] # 1-byte Folded Spill
+ sete byte ptr [rsp + 14] # 1-byte Folded Spill
mov eax, dword ptr [rsi + 28]
cmp eax, dword ptr [rdx + 28]
sete r13b
mov eax, dword ptr [rsi + 32]
cmp eax, dword ptr [rdx + 32]
- sete byte ptr [rsp + 10] # 1-byte Folded Spill
+ sete byte ptr [rsp + 19] # 1-byte Folded Spill
mov eax, dword ptr [rsi + 36]
cmp eax, dword ptr [rdx + 36]
- sete r8b
+ sete dil
mov eax, dword ptr [rsi + 40]
cmp eax, dword ptr [rdx + 40]
sete r11b
@@ -2775,21 +2951,21 @@ comparison_equal_arr_arr_avx2: # @comparison_equal_arr_arr_avx2
sete r15b
mov eax, dword ptr [rsi + 48]
cmp eax, dword ptr [rdx + 48]
- sete byte ptr [rsp + 6] # 1-byte Folded Spill
+ sete byte ptr [rsp + 15] # 1-byte Folded Spill
mov eax, dword ptr [rsi + 52]
cmp eax, dword ptr [rdx + 52]
- sete byte ptr [rsp + 7] # 1-byte Folded Spill
+ sete byte ptr [rsp + 16] # 1-byte Folded Spill
mov eax, dword ptr [rsi + 56]
cmp eax, dword ptr [rdx + 56]
- sete byte ptr [rsp + 8] # 1-byte Folded Spill
+ sete byte ptr [rsp + 17] # 1-byte Folded Spill
mov eax, dword ptr [rsi + 60]
cmp eax, dword ptr [rdx + 60]
- sete dil
+ sete r8b
mov eax, dword ptr [rsi + 64]
mov ebx, dword ptr [rsi + 68]
cmp eax, dword ptr [rdx + 64]
mov eax, dword ptr [rsi + 72]
- sete byte ptr [rsp + 11] # 1-byte Folded Spill
+ sete byte ptr [rsp + 20] # 1-byte Folded Spill
cmp ebx, dword ptr [rdx + 68]
mov ebx, dword ptr [rsi + 76]
sete r10b
@@ -2800,144 +2976,144 @@ comparison_equal_arr_arr_avx2: # @comparison_equal_arr_arr_avx2
mov ebx, dword ptr [rsi + 84]
sete r12b
cmp eax, dword ptr [rdx + 80]
- sete byte ptr [rsp + 9] # 1-byte Folded Spill
+ sete byte ptr [rsp + 18] # 1-byte Folded Spill
cmp ebx, dword ptr [rdx + 84]
mov eax, dword ptr [rsi + 88]
- sete byte ptr [rsp + 12] # 1-byte Folded Spill
+ sete byte ptr [rsp + 21] # 1-byte Folded Spill
cmp eax, dword ptr [rdx + 88]
mov eax, dword ptr [rsi + 92]
- sete byte ptr [rsp + 13] # 1-byte Folded Spill
+ sete byte ptr [rsp + 24] # 1-byte Folded Spill
cmp eax, dword ptr [rdx + 92]
mov eax, dword ptr [rsi + 96]
sete r9b
cmp eax, dword ptr [rdx + 96]
mov eax, dword ptr [rsi + 100]
- sete byte ptr [rsp + 20] # 1-byte Folded Spill
+ sete byte ptr [rsp + 29] # 1-byte Folded Spill
cmp eax, dword ptr [rdx + 100]
mov eax, dword ptr [rsi + 104]
- sete byte ptr [rsp + 14] # 1-byte Folded Spill
+ sete byte ptr [rsp + 22] # 1-byte Folded Spill
cmp eax, dword ptr [rdx + 104]
mov eax, dword ptr [rsi + 108]
- sete byte ptr [rsp + 15] # 1-byte Folded Spill
+ sete byte ptr [rsp + 23] # 1-byte Folded Spill
cmp eax, dword ptr [rdx + 108]
mov eax, dword ptr [rsi + 112]
- sete byte ptr [rsp + 16] # 1-byte Folded Spill
+ sete byte ptr [rsp + 25] # 1-byte Folded Spill
cmp eax, dword ptr [rdx + 112]
mov eax, dword ptr [rsi + 116]
- sete byte ptr [rsp + 17] # 1-byte Folded Spill
+ sete byte ptr [rsp + 26] # 1-byte Folded Spill
cmp eax, dword ptr [rdx + 116]
mov eax, dword ptr [rsi + 120]
- sete byte ptr [rsp + 19] # 1-byte Folded Spill
+ sete byte ptr [rsp + 28] # 1-byte Folded Spill
cmp eax, dword ptr [rdx + 120]
mov eax, dword ptr [rsi + 124]
- sete byte ptr [rsp + 18] # 1-byte Folded Spill
+ sete byte ptr [rsp + 27] # 1-byte Folded Spill
sub rsi, -128
cmp eax, dword ptr [rdx + 124]
sete cl
- movzx eax, byte ptr [rsp + 40] # 1-byte Folded Reload
+ movzx eax, byte ptr [rsp + 56] # 1-byte Folded Reload
add al, al
- add al, byte ptr [rsp + 4] # 1-byte Folded Reload
+ add al, byte ptr [rsp + 13] # 1-byte Folded Reload
mov ebx, eax
- movzx eax, byte ptr [rsp + 5] # 1-byte Folded Reload
+ movzx eax, byte ptr [rsp + 14] # 1-byte Folded Reload
shl al, 6
shl r13b, 7
or r13b, al
- movzx eax, byte ptr [rsp + 21] # 1-byte Folded Reload
+ movzx eax, byte ptr [rsp + 30] # 1-byte Folded Reload
shl al, 2
or al, bl
- add r8b, r8b
- add r8b, byte ptr [rsp + 10] # 1-byte Folded Reload
- movzx ebx, byte ptr [rsp + 22] # 1-byte Folded Reload
+ add dil, dil
+ add dil, byte ptr [rsp + 19] # 1-byte Folded Reload
+ movzx ebx, byte ptr [rsp + 31] # 1-byte Folded Reload
shl bl, 3
or bl, al
mov eax, ebx
shl r11b, 2
- or r11b, r8b
- movzx ebx, byte ptr [rsp + 23] # 1-byte Folded Reload
+ or r11b, dil
+ movzx ebx, byte ptr [rsp + 11] # 1-byte Folded Reload
shl bl, 4
or bl, al
- mov r8d, ebx
+ mov edi, ebx
shl r15b, 3
or r15b, r11b
- movzx ebx, byte ptr [rsp + 3] # 1-byte Folded Reload
+ movzx ebx, byte ptr [rsp + 12] # 1-byte Folded Reload
shl bl, 5
- or bl, r8b
- movzx eax, byte ptr [rsp + 6] # 1-byte Folded Reload
+ or bl, dil
+ movzx eax, byte ptr [rsp + 15] # 1-byte Folded Reload
shl al, 4
or al, r15b
- mov r8d, eax
- movzx eax, byte ptr [rsp + 7] # 1-byte Folded Reload
+ mov edi, eax
+ movzx eax, byte ptr [rsp + 16] # 1-byte Folded Reload
shl al, 5
- or al, r8b
- movzx r8d, byte ptr [rsp + 8] # 1-byte Folded Reload
- shl r8b, 6
- shl dil, 7
- or dil, r8b
+ or al, dil
+ movzx edi, byte ptr [rsp + 17] # 1-byte Folded Reload
+ shl dil, 6
+ shl r8b, 7
+ or r8b, dil
or r13b, bl
- or dil, al
+ or r8b, al
add r10b, r10b
- add r10b, byte ptr [rsp + 11] # 1-byte Folded Reload
+ add r10b, byte ptr [rsp + 20] # 1-byte Folded Reload
shl r14b, 2
or r14b, r10b
shl r12b, 3
or r12b, r14b
- movzx eax, byte ptr [rsp + 9] # 1-byte Folded Reload
+ movzx eax, byte ptr [rsp + 18] # 1-byte Folded Reload
shl al, 4
or al, r12b
mov ebx, eax
- mov r12, qword ptr [rsp + 48] # 8-byte Reload
- movzx eax, byte ptr [rsp + 12] # 1-byte Folded Reload
+ movzx eax, byte ptr [rsp + 21] # 1-byte Folded Reload
shl al, 5
or al, bl
- mov byte ptr [r12], r13b
- movzx ebx, byte ptr [rsp + 13] # 1-byte Folded Reload
+ mov rdi, qword ptr [rsp + 32] # 8-byte Reload
+ mov byte ptr [rdi], r13b
+ mov r15, qword ptr [rsp + 32] # 8-byte Reload
+ movzx ebx, byte ptr [rsp + 24] # 1-byte Folded Reload
shl bl, 6
shl r9b, 7
or r9b, bl
- mov byte ptr [r12 + 1], dil
+ mov byte ptr [r15 + 1], r8b
or r9b, al
- movzx eax, byte ptr [rsp + 14] # 1-byte Folded Reload
+ movzx eax, byte ptr [rsp + 22] # 1-byte Folded Reload
add al, al
- add al, byte ptr [rsp + 20] # 1-byte Folded Reload
+ add al, byte ptr [rsp + 29] # 1-byte Folded Reload
mov ebx, eax
- movzx eax, byte ptr [rsp + 15] # 1-byte Folded Reload
+ movzx eax, byte ptr [rsp + 23] # 1-byte Folded Reload
shl al, 2
or al, bl
mov ebx, eax
- movzx eax, byte ptr [rsp + 16] # 1-byte Folded Reload
+ movzx eax, byte ptr [rsp + 25] # 1-byte Folded Reload
shl al, 3
or al, bl
mov ebx, eax
- movzx eax, byte ptr [rsp + 17] # 1-byte Folded Reload
+ movzx eax, byte ptr [rsp + 26] # 1-byte Folded Reload
shl al, 4
or al, bl
mov ebx, eax
- movzx eax, byte ptr [rsp + 19] # 1-byte Folded Reload
+ movzx eax, byte ptr [rsp + 28] # 1-byte Folded Reload
shl al, 5
or al, bl
- movzx ebx, byte ptr [rsp + 18] # 1-byte Folded Reload
+ movzx ebx, byte ptr [rsp + 27] # 1-byte Folded Reload
shl bl, 6
shl cl, 7
or cl, bl
or cl, al
- mov byte ptr [r12 + 2], r9b
- mov byte ptr [r12 + 3], cl
+ mov byte ptr [r15 + 2], r9b
+ mov byte ptr [r15 + 3], cl
add rdx, 128
- add r12, 4
- add qword ptr [rsp + 32], -1 # 8-byte Folded Spill
- jne .LBB0_96
-# %bb.97:
- mov r14, qword ptr [rsp + 24] # 8-byte Reload
- mov r15, qword ptr [rsp + 56] # 8-byte Reload
-.LBB0_98:
- shl r15, 5
- cmp r15, r14
- jge .LBB0_123
-# %bb.99:
- sub r14, r15
+ add r15, 4
+ add qword ptr [rsp + 48], -1 # 8-byte Folded Spill
+ jne .LBB0_120
+# %bb.121:
+ mov r12, qword ptr [rsp + 40] # 8-byte Reload
+ mov rax, qword ptr [rsp + 64] # 8-byte Reload
+.LBB0_122:
+ shl rax, 5
+ sub r12, rax
+ jle .LBB0_153
+# %bb.123:
xor ecx, ecx
.p2align 4, 0x90
-.LBB0_100: # =>This Inner Loop Header: Depth=1
+.LBB0_124: # =>This Inner Loop Header: Depth=1
lea r8, [rcx + 1]
mov edi, dword ptr [rsi + 4*rcx]
cmp edi, dword ptr [rdx + 4*rcx]
@@ -2945,7 +3121,8 @@ comparison_equal_arr_arr_avx2: # @comparison_equal_arr_arr_avx2
neg bl
mov rdi, rcx
shr rdi, 3
- movzx r9d, byte ptr [r12 + rdi]
+ mov r10, r15
+ movzx r9d, byte ptr [r15 + rdi]
xor bl, r9b
and cl, 7
mov al, 1
@@ -2953,11 +3130,11 @@ comparison_equal_arr_arr_avx2: # @comparison_equal_arr_arr_avx2
shl al, cl
and al, bl
xor al, r9b
- mov byte ptr [r12 + rdi], al
+ mov byte ptr [r15 + rdi], al
mov rcx, r8
- cmp r14, r8
- jne .LBB0_100
-.LBB0_123:
+ cmp r12, r8
+ jne .LBB0_124
+.LBB0_153:
lea rsp, [rbp - 40]
pop rbx
pop r12
@@ -3001,90 +3178,104 @@ comparison_equal_arr_scalar_avx2: # @comparison_equal_arr_scalar_avx2
and rsp, -32
sub rsp, 1280
# kill: def $r9d killed $r9d def $r9
- mov r10, r8
- mov r11, rcx
+ mov r15, r8
+ mov r14, rcx
cmp edi, 6
- jg .LBB1_13
+ jg .LBB1_19
# %bb.1:
cmp edi, 3
- jle .LBB1_25
+ jle .LBB1_36
# %bb.2:
cmp edi, 4
- je .LBB1_49
+ je .LBB1_59
# %bb.3:
cmp edi, 5
- je .LBB1_57
+ je .LBB1_73
# %bb.4:
cmp edi, 6
- jne .LBB1_165
+ jne .LBB1_189
# %bb.5:
mov r13d, dword ptr [rdx]
- lea r15, [r10 + 31]
- test r10, r10
- cmovns r15, r10
lea eax, [r9 + 7]
test r9d, r9d
cmovns eax, r9d
and eax, -8
sub r9d, eax
- je .LBB1_9
+ je .LBB1_11
# %bb.6:
- movsxd rax, r9d
+ mov r8d, 8
+ sub r8d, r9d
+ cmp r8, r15
+ cmovg r8, r15
+ test r8, r8
+ jle .LBB1_9
+# %bb.7:
+ movsxd rdx, r9d
+ mov r11, r8
+ mov rcx, rsi
.p2align 4, 0x90
-.LBB1_7: # =>This Inner Loop Header: Depth=1
- cmp dword ptr [rsi], r13d
- lea rsi, [rsi + 4]
- sete dl
- neg dl
- lea rbx, [rax + 7]
- test rax, rax
- cmovns rbx, rax
- sar rbx, 3
- movzx r8d, byte ptr [r11 + rbx]
- xor dl, r8b
- lea edi, [8*rbx]
- mov ecx, eax
- sub ecx, edi
- mov edi, 1
+.LBB1_8: # =>This Inner Loop Header: Depth=1
+ lea rsi, [rcx + 4]
+ cmp dword ptr [rcx], r13d
+ sete bl
+ neg bl
+ lea rdi, [rdx + 7]
+ test rdx, rdx
+ cmovns rdi, rdx
+ sar rdi, 3
+ mov r12, r14
+ movzx r9d, byte ptr [r14 + rdi]
+ xor bl, r9b
+ lea r10d, [8*rdi]
+ mov ecx, edx
+ sub ecx, r10d
+ mov eax, 1
# kill: def $cl killed $cl killed $ecx
- shl edi, cl
- and dil, dl
- xor dil, r8b
- mov byte ptr [r11 + rbx], dil
- add rax, 1
- cmp rax, 8
- jne .LBB1_7
-# %bb.8:
- add r11, 1
+ shl eax, cl
+ and al, bl
+ xor al, r9b
+ mov byte ptr [r14 + rdi], al
+ add rdx, 1
+ mov rcx, rsi
+ add r11, -1
+ jne .LBB1_8
.LBB1_9:
- sar r15, 5
- cmp r10, 32
- jl .LBB1_101
+ sub r15, r8
+ je .LBB1_189
# %bb.10:
- mov qword ptr [rsp + 280], r10 # 8-byte Spill
- mov qword ptr [rsp + 168], r15 # 8-byte Spill
- mov qword ptr [rsp + 176], r15 # 8-byte Spill
- mov qword ptr [rsp + 272], r11 # 8-byte Spill
+ add r14, 1
+.LBB1_11:
+ lea rax, [r15 + 31]
+ test r15, r15
+ cmovns rax, r15
+ sar rax, 5
+ cmp r15, 32
+ jl .LBB1_15
+# %bb.12:
+ mov qword ptr [rsp + 280], r15 # 8-byte Spill
+ mov qword ptr [rsp + 176], rax # 8-byte Spill
+ mov qword ptr [rsp + 160], rax # 8-byte Spill
.p2align 4, 0x90
-.LBB1_11: # =>This Inner Loop Header: Depth=1
+.LBB1_13: # =>This Inner Loop Header: Depth=1
+ mov qword ptr [rsp + 272], r14 # 8-byte Spill
cmp dword ptr [rsi], r13d
- sete byte ptr [rsp + 152] # 1-byte Folded Spill
+ sete byte ptr [rsp + 168] # 1-byte Folded Spill
cmp dword ptr [rsi + 4], r13d
sete r10b
cmp dword ptr [rsi + 8], r13d
sete r14b
cmp dword ptr [rsi + 12], r13d
- sete byte ptr [rsp + 160] # 1-byte Folded Spill
- cmp dword ptr [rsi + 16], r13d
sete byte ptr [rsp + 136] # 1-byte Folded Spill
+ cmp dword ptr [rsi + 16], r13d
+ sete byte ptr [rsp + 80] # 1-byte Folded Spill
cmp dword ptr [rsi + 20], r13d
- sete byte ptr [rsp + 88] # 1-byte Folded Spill
+ sete byte ptr [rsp + 112] # 1-byte Folded Spill
cmp dword ptr [rsi + 24], r13d
sete al
cmp dword ptr [rsi + 28], r13d
sete bl
cmp dword ptr [rsi + 32], r13d
- sete byte ptr [rsp + 104] # 1-byte Folded Spill
+ sete byte ptr [rsp + 144] # 1-byte Folded Spill
cmp dword ptr [rsi + 36], r13d
sete dil
cmp dword ptr [rsi + 40], r13d
@@ -3096,33 +3287,33 @@ comparison_equal_arr_scalar_avx2: # @comparison_equal_arr_scalar_avx2
cmp dword ptr [rsi + 52], r13d
sete r12b
cmp dword ptr [rsi + 56], r13d
- sete byte ptr [rsp + 112] # 1-byte Folded Spill
+ sete byte ptr [rsp + 152] # 1-byte Folded Spill
cmp dword ptr [rsi + 60], r13d
- sete cl
+ sete dl
cmp dword ptr [rsi + 64], r13d
- sete byte ptr [rsp + 72] # 1-byte Folded Spill
+ sete byte ptr [rsp + 96] # 1-byte Folded Spill
cmp dword ptr [rsi + 68], r13d
- sete byte ptr [rsp + 120] # 1-byte Folded Spill
+ sete byte ptr [rsp + 64] # 1-byte Folded Spill
cmp dword ptr [rsi + 72], r13d
- sete byte ptr [rsp + 128] # 1-byte Folded Spill
+ sete byte ptr [rsp + 72] # 1-byte Folded Spill
cmp dword ptr [rsi + 76], r13d
- sete byte ptr [rsp + 144] # 1-byte Folded Spill
+ sete byte ptr [rsp + 88] # 1-byte Folded Spill
cmp dword ptr [rsi + 80], r13d
- sete byte ptr [rsp + 80] # 1-byte Folded Spill
+ sete byte ptr [rsp + 104] # 1-byte Folded Spill
cmp dword ptr [rsi + 84], r13d
- sete byte ptr [rsp + 96] # 1-byte Folded Spill
+ sete byte ptr [rsp + 120] # 1-byte Folded Spill
cmp dword ptr [rsi + 88], r13d
- sete byte ptr [rsp + 64] # 1-byte Folded Spill
+ sete byte ptr [rsp + 128] # 1-byte Folded Spill
cmp dword ptr [rsi + 92], r13d
sete r15b
cmp dword ptr [rsi + 96], r13d
- sete byte ptr [rsp + 32] # 1-byte Folded Spill
+ sete byte ptr [rsp + 40] # 1-byte Folded Spill
cmp dword ptr [rsi + 100], r13d
sete byte ptr [rsp + 48] # 1-byte Folded Spill
cmp dword ptr [rsi + 104], r13d
sete byte ptr [rsp + 56] # 1-byte Folded Spill
cmp dword ptr [rsi + 108], r13d
- sete byte ptr [rsp + 40] # 1-byte Folded Spill
+ sete byte ptr [rsp + 32] # 1-byte Folded Spill
cmp dword ptr [rsi + 112], r13d
sete byte ptr [rsp + 320] # 1-byte Folded Spill
cmp dword ptr [rsi + 116], r13d
@@ -3130,185 +3321,241 @@ comparison_equal_arr_scalar_avx2: # @comparison_equal_arr_scalar_avx2
cmp dword ptr [rsi + 120], r13d
sete byte ptr [rsp + 28] # 1-byte Folded Spill
cmp dword ptr [rsi + 124], r13d
- sete dl
+ sete cl
add r10b, r10b
- add r10b, byte ptr [rsp + 152] # 1-byte Folded Reload
+ add r10b, byte ptr [rsp + 168] # 1-byte Folded Reload
shl al, 6
shl bl, 7
or bl, al
shl r14b, 2
or r14b, r10b
add dil, dil
- add dil, byte ptr [rsp + 104] # 1-byte Folded Reload
- movzx eax, byte ptr [rsp + 160] # 1-byte Folded Reload
+ add dil, byte ptr [rsp + 144] # 1-byte Folded Reload
+ movzx eax, byte ptr [rsp + 136] # 1-byte Folded Reload
shl al, 3
or al, r14b
mov r10d, eax
+ mov r14, qword ptr [rsp + 272] # 8-byte Reload
shl r8b, 2
or r8b, dil
- movzx eax, byte ptr [rsp + 136] # 1-byte Folded Reload
+ movzx eax, byte ptr [rsp + 80] # 1-byte Folded Reload
shl al, 4
or al, r10b
mov edi, eax
shl r9b, 3
or r9b, r8b
- movzx eax, byte ptr [rsp + 88] # 1-byte Folded Reload
+ movzx eax, byte ptr [rsp + 112] # 1-byte Folded Reload
shl al, 5
or al, dil
shl r11b, 4
or r11b, r9b
shl r12b, 5
or r12b, r11b
- movzx edi, byte ptr [rsp + 112] # 1-byte Folded Reload
+ movzx edi, byte ptr [rsp + 152] # 1-byte Folded Reload
shl dil, 6
- shl cl, 7
- or cl, dil
+ shl dl, 7
+ or dl, dil
or bl, al
- or cl, r12b
- movzx eax, byte ptr [rsp + 120] # 1-byte Folded Reload
+ or dl, r12b
+ movzx eax, byte ptr [rsp + 64] # 1-byte Folded Reload
add al, al
- add al, byte ptr [rsp + 72] # 1-byte Folded Reload
+ add al, byte ptr [rsp + 96] # 1-byte Folded Reload
mov edi, eax
- movzx eax, byte ptr [rsp + 128] # 1-byte Folded Reload
+ movzx eax, byte ptr [rsp + 72] # 1-byte Folded Reload
shl al, 2
or al, dil
mov edi, eax
- movzx eax, byte ptr [rsp + 144] # 1-byte Folded Reload
+ movzx eax, byte ptr [rsp + 88] # 1-byte Folded Reload
shl al, 3
or al, dil
mov edi, eax
- movzx eax, byte ptr [rsp + 80] # 1-byte Folded Reload
+ movzx eax, byte ptr [rsp + 104] # 1-byte Folded Reload
shl al, 4
or al, dil
mov edi, eax
- movzx eax, byte ptr [rsp + 96] # 1-byte Folded Reload
+ movzx eax, byte ptr [rsp + 120] # 1-byte Folded Reload
shl al, 5
or al, dil
- mov edi, eax
- mov rax, qword ptr [rsp + 272] # 8-byte Reload
- mov byte ptr [rax], bl
- movzx ebx, byte ptr [rsp + 64] # 1-byte Folded Reload
+ mov byte ptr [r14], bl
+ movzx ebx, byte ptr [rsp + 128] # 1-byte Folded Reload
shl bl, 6
shl r15b, 7
or r15b, bl
- mov byte ptr [rax + 1], cl
- or r15b, dil
- movzx ecx, byte ptr [rsp + 48] # 1-byte Folded Reload
- add cl, cl
- add cl, byte ptr [rsp + 32] # 1-byte Folded Reload
- mov ebx, ecx
- movzx ecx, byte ptr [rsp + 56] # 1-byte Folded Reload
- shl cl, 2
- or cl, bl
- mov ebx, ecx
- movzx ecx, byte ptr [rsp + 40] # 1-byte Folded Reload
- shl cl, 3
- or cl, bl
- mov ebx, ecx
- movzx ecx, byte ptr [rsp + 320] # 1-byte Folded Reload
- shl cl, 4
- or cl, bl
- mov ebx, ecx
- movzx ecx, byte ptr [rsp + 288] # 1-byte Folded Reload
- shl cl, 5
- or cl, bl
- movzx ebx, byte ptr [rsp + 28] # 1-byte Folded Reload
- shl bl, 6
- shl dl, 7
- or dl, bl
- or dl, cl
- mov byte ptr [rax + 2], r15b
- mov byte ptr [rax + 3], dl
+ mov byte ptr [r14 + 1], dl
+ or r15b, al
+ movzx eax, byte ptr [rsp + 48] # 1-byte Folded Reload
+ add al, al
+ add al, byte ptr [rsp + 40] # 1-byte Folded Reload
+ mov edx, eax
+ movzx eax, byte ptr [rsp + 56] # 1-byte Folded Reload
+ shl al, 2
+ or al, dl
+ mov edx, eax
+ movzx eax, byte ptr [rsp + 32] # 1-byte Folded Reload
+ shl al, 3
+ or al, dl
+ mov edx, eax
+ movzx eax, byte ptr [rsp + 320] # 1-byte Folded Reload
+ shl al, 4
+ or al, dl
+ mov edx, eax
+ movzx eax, byte ptr [rsp + 288] # 1-byte Folded Reload
+ shl al, 5
+ or al, dl
+ movzx edx, byte ptr [rsp + 28] # 1-byte Folded Reload
+ shl dl, 6
+ shl cl, 7
+ or cl, dl
+ or cl, al
+ mov byte ptr [r14 + 2], r15b
+ mov byte ptr [r14 + 3], cl
add rsi, 128
- add rax, 4
- mov qword ptr [rsp + 272], rax # 8-byte Spill
- add qword ptr [rsp + 176], -1 # 8-byte Folded Spill
- jne .LBB1_11
-# %bb.12:
- mov r14, qword ptr [rsp + 272] # 8-byte Reload
- mov r10, qword ptr [rsp + 280] # 8-byte Reload
- mov r15, qword ptr [rsp + 168] # 8-byte Reload
- shl r15, 5
- cmp r15, r10
- jl .LBB1_102
- jmp .LBB1_165
-.LBB1_13:
- cmp edi, 8
- jle .LBB1_39
+ add r14, 4
+ add qword ptr [rsp + 160], -1 # 8-byte Folded Spill
+ jne .LBB1_13
# %bb.14:
+ mov r15, qword ptr [rsp + 280] # 8-byte Reload
+ mov rax, qword ptr [rsp + 176] # 8-byte Reload
+.LBB1_15:
+ shl rax, 5
+ mov r8, r15
+ sub r8, rax
+ jle .LBB1_189
+# %bb.16:
+ or rax, 1
+ cmp r15, rax
+ je .LBB1_129
+# %bb.17:
+ mov r10, r8
+ and r10, -2
+ xor r11d, r11d
+ .p2align 4, 0x90
+.LBB1_18: # =>This Inner Loop Header: Depth=1
+ cmp dword ptr [rsi], r13d
+ sete al
+ neg al
+ mov rdi, r11
+ shr rdi, 3
+ mov r15, r14
+ movzx r9d, byte ptr [r14 + rdi]
+ mov ecx, r11d
+ and cl, 6
+ mov bl, 1
+ shl bl, cl
+ xor al, r9b
+ and bl, al
+ xor bl, r9b
+ mov byte ptr [r14 + rdi], bl
+ add r11, 2
+ cmp dword ptr [rsi + 4], r13d
+ lea rsi, [rsi + 8]
+ sete al
+ neg al
+ xor al, bl
+ or cl, 1
+ mov dl, 1
+ shl dl, cl
+ and dl, al
+ xor dl, bl
+ mov byte ptr [r14 + rdi], dl
+ cmp r10, r11
+ jne .LBB1_18
+ jmp .LBB1_179
+.LBB1_19:
+ cmp edi, 8
+ jle .LBB1_43
+# %bb.20:
cmp edi, 9
- je .LBB1_65
-# %bb.15:
+ je .LBB1_86
+# %bb.21:
cmp edi, 11
- je .LBB1_73
-# %bb.16:
+ je .LBB1_99
+# %bb.22:
cmp edi, 12
- jne .LBB1_165
-# %bb.17:
- lea r15, [r10 + 31]
- test r10, r10
- cmovns r15, r10
+ jne .LBB1_189
+# %bb.23:
+ mov r12, qword ptr [rdx]
lea eax, [r9 + 7]
test r9d, r9d
cmovns eax, r9d
and eax, -8
- vmovsd xmm0, qword ptr [rdx] # xmm0 = mem[0],zero
sub r9d, eax
- je .LBB1_21
-# %bb.18:
- movsxd rax, r9d
+ je .LBB1_29
+# %bb.24:
+ mov r8d, 8
+ sub r8d, r9d
+ cmp r8, r15
+ cmovg r8, r15
+ test r8, r8
+ jle .LBB1_27
+# %bb.25:
+ movsxd rdx, r9d
+ vmovq xmm0, r12
+ mov r11, r8
+ mov rcx, rsi
.p2align 4, 0x90
-.LBB1_19: # =>This Inner Loop Header: Depth=1
- vucomisd xmm0, qword ptr [rsi]
- lea rsi, [rsi + 8]
+.LBB1_26: # =>This Inner Loop Header: Depth=1
+ vucomisd xmm0, qword ptr [rcx]
+ lea rsi, [rcx + 8]
setnp cl
- sete dl
- and dl, cl
- neg dl
- lea rdi, [rax + 7]
- test rax, rax
- cmovns rdi, rax
- sar rdi, 3
- movzx r9d, byte ptr [r11 + rdi]
- xor dl, r9b
- lea r8d, [8*rdi]
- mov ecx, eax
- sub ecx, r8d
- mov ebx, 1
- # kill: def $cl killed $cl killed $ecx
- shl ebx, cl
- and bl, dl
+ sete bl
+ and bl, cl
+ neg bl
+ lea rax, [rdx + 7]
+ test rdx, rdx
+ cmovns rax, rdx
+ sar rax, 3
+ mov r13, r14
+ movzx r9d, byte ptr [r14 + rax]
xor bl, r9b
- mov byte ptr [r11 + rdi], bl
- add rax, 1
- cmp rax, 8
- jne .LBB1_19
-# %bb.20:
- add r11, 1
-.LBB1_21:
- sar r15, 5
- cmp r10, 32
- jl .LBB1_105
-# %bb.22:
- mov qword ptr [rsp + 280], r10 # 8-byte Spill
- mov qword ptr [rsp + 168], r15 # 8-byte Spill
- mov qword ptr [rsp + 176], r15 # 8-byte Spill
- mov qword ptr [rsp + 272], r11 # 8-byte Spill
+ lea r10d, [8*rax]
+ mov ecx, edx
+ sub ecx, r10d
+ mov edi, 1
+ # kill: def $cl killed $cl killed $ecx
+ shl edi, cl
+ and dil, bl
+ xor dil, r9b
+ mov byte ptr [r14 + rax], dil
+ add rdx, 1
+ mov rcx, rsi
+ add r11, -1
+ jne .LBB1_26
+.LBB1_27:
+ sub r15, r8
+ je .LBB1_189
+# %bb.28:
+ add r14, 1
+.LBB1_29:
+ lea rax, [r15 + 31]
+ test r15, r15
+ cmovns rax, r15
+ sar rax, 5
+ cmp r15, 32
+ jl .LBB1_33
+# %bb.30:
+ mov qword ptr [rsp + 280], r15 # 8-byte Spill
+ mov qword ptr [rsp + 184], r12 # 8-byte Spill
+ vmovq xmm0, r12
+ mov qword ptr [rsp + 200], rax # 8-byte Spill
+ mov qword ptr [rsp + 192], rax # 8-byte Spill
.p2align 4, 0x90
-.LBB1_23: # =>This Inner Loop Header: Depth=1
+.LBB1_31: # =>This Inner Loop Header: Depth=1
+ mov qword ptr [rsp + 272], r14 # 8-byte Spill
vucomisd xmm0, qword ptr [rsi]
setnp al
sete cl
and cl, al
- mov byte ptr [rsp + 32], cl # 1-byte Spill
+ mov byte ptr [rsp + 56], cl # 1-byte Spill
vucomisd xmm0, qword ptr [rsi + 8]
setnp al
- sete bl
- and bl, al
- vucomisd xmm0, qword ptr [rsi + 16]
- setnp al
sete r13b
and r13b, al
+ vucomisd xmm0, qword ptr [rsi + 16]
+ setnp al
+ sete cl
+ and cl, al
+ mov byte ptr [rsp + 32], cl # 1-byte Spill
vucomisd xmm0, qword ptr [rsi + 24]
setnp al
sete cl
@@ -3318,16 +3565,16 @@ comparison_equal_arr_scalar_avx2: # @comparison_equal_arr_scalar_avx2
setnp al
sete cl
and cl, al
- mov byte ptr [rsp + 288], cl # 1-byte Spill
+ mov byte ptr [rsp + 40], cl # 1-byte Spill
vucomisd xmm0, qword ptr [rsi + 40]
setnp al
- sete dil
- and dil, al
+ sete r12b
+ and r12b, al
vucomisd xmm0, qword ptr [rsi + 48]
setnp al
sete cl
and cl, al
- mov byte ptr [rsp + 56], cl # 1-byte Spill
+ mov byte ptr [rsp + 128], cl # 1-byte Spill
vucomisd xmm0, qword ptr [rsi + 56]
setnp al
sete cl
@@ -3337,529 +3584,366 @@ comparison_equal_arr_scalar_avx2: # @comparison_equal_arr_scalar_avx2
setnp al
sete cl
and cl, al
- mov byte ptr [rsp + 40], cl # 1-byte Spill
+ mov byte ptr [rsp + 48], cl # 1-byte Spill
vucomisd xmm0, qword ptr [rsi + 72]
setnp al
sete cl
and cl, al
- mov byte ptr [rsp + 48], cl # 1-byte Spill
+ mov byte ptr [rsp + 120], cl # 1-byte Spill
vucomisd xmm0, qword ptr [rsi + 80]
setnp al
sete cl
and cl, al
- mov byte ptr [rsp + 64], cl # 1-byte Spill
+ mov byte ptr [rsp + 112], cl # 1-byte Spill
vucomisd xmm0, qword ptr [rsi + 88]
setnp al
- sete cl
- and cl, al
- mov byte ptr [rsp + 96], cl # 1-byte Spill
+ sete bl
+ and bl, al
vucomisd xmm0, qword ptr [rsi + 96]
setnp al
sete cl
and cl, al
- mov byte ptr [rsp + 88], cl # 1-byte Spill
+ mov byte ptr [rsp + 288], cl # 1-byte Spill
vucomisd xmm0, qword ptr [rsi + 104]
setnp al
sete cl
and cl, al
- mov byte ptr [rsp + 80], cl # 1-byte Spill
+ mov byte ptr [rsp + 96], cl # 1-byte Spill
vucomisd xmm0, qword ptr [rsi + 112]
setnp al
- sete dl
- and dl, al
+ sete cl
+ and cl, al
+ mov byte ptr [rsp + 88], cl # 1-byte Spill
vucomisd xmm0, qword ptr [rsi + 120]
setnp al
sete cl
and cl, al
- mov byte ptr [rsp + 72], cl # 1-byte Spill
+ mov byte ptr [rsp + 80], cl # 1-byte Spill
vucomisd xmm0, qword ptr [rsi + 128]
setnp al
sete cl
and cl, al
- mov byte ptr [rsp + 144], cl # 1-byte Spill
+ mov byte ptr [rsp + 104], cl # 1-byte Spill
vucomisd xmm0, qword ptr [rsi + 136]
setnp al
sete cl
and cl, al
- mov byte ptr [rsp + 136], cl # 1-byte Spill
+ mov byte ptr [rsp + 72], cl # 1-byte Spill
vucomisd xmm0, qword ptr [rsi + 144]
setnp al
sete cl
and cl, al
+ mov byte ptr [rsp + 64], cl # 1-byte Spill
vucomisd xmm0, qword ptr [rsi + 152]
- setnp r8b
- sete al
- and al, r8b
- mov byte ptr [rsp + 128], al # 1-byte Spill
+ setnp al
+ sete cl
+ and cl, al
+ mov byte ptr [rsp + 152], cl # 1-byte Spill
vucomisd xmm0, qword ptr [rsi + 160]
- setnp r8b
- sete al
- and al, r8b
- mov byte ptr [rsp + 120], al # 1-byte Spill
+ setnp al
+ sete cl
+ and cl, al
+ mov byte ptr [rsp + 144], cl # 1-byte Spill
vucomisd xmm0, qword ptr [rsi + 168]
- setnp r8b
- sete al
- and al, r8b
- mov byte ptr [rsp + 104], al # 1-byte Spill
+ setnp al
+ sete cl
+ and cl, al
+ mov byte ptr [rsp + 136], cl # 1-byte Spill
vucomisd xmm0, qword ptr [rsi + 176]
setnp al
- sete r12b
- and r12b, al
+ sete r15b
+ and r15b, al
vucomisd xmm0, qword ptr [rsi + 184]
setnp al
sete r10b
and r10b, al
vucomisd xmm0, qword ptr [rsi + 192]
- setnp r8b
- sete al
- and al, r8b
- mov byte ptr [rsp + 112], al # 1-byte Spill
+ setnp al
+ sete cl
+ and cl, al
+ mov byte ptr [rsp + 168], cl # 1-byte Spill
vucomisd xmm0, qword ptr [rsi + 200]
setnp al
- sete r15b
- and r15b, al
+ sete r11b
+ and r11b, al
vucomisd xmm0, qword ptr [rsi + 208]
setnp al
- sete r14b
- and r14b, al
+ sete r9b
+ and r9b, al
vucomisd xmm0, qword ptr [rsi + 216]
setnp al
- sete r11b
- and r11b, al
+ sete r8b
+ and r8b, al
vucomisd xmm0, qword ptr [rsi + 224]
- setnp r8b
- sete al
- and al, r8b
- mov byte ptr [rsp + 160], al # 1-byte Spill
+ setnp al
+ sete cl
+ and cl, al
+ mov byte ptr [rsp + 176], cl # 1-byte Spill
vucomisd xmm0, qword ptr [rsi + 232]
- setnp r8b
- sete al
- and al, r8b
- mov byte ptr [rsp + 152], al # 1-byte Spill
+ setnp al
+ sete cl
+ and cl, al
+ mov byte ptr [rsp + 160], cl # 1-byte Spill
vucomisd xmm0, qword ptr [rsi + 240]
setnp al
- sete r9b
- and r9b, al
+ sete dil
+ and dil, al
vucomisd xmm0, qword ptr [rsi + 248]
setnp al
- sete r8b
- and r8b, al
- add bl, bl
- add bl, byte ptr [rsp + 32] # 1-byte Folded Reload
- shl dil, 5
- movzx eax, byte ptr [rsp + 56] # 1-byte Folded Reload
- shl al, 6
- or al, dil
- mov edi, eax
- shl r13b, 2
- or r13b, bl
- movzx eax, byte ptr [rsp + 48] # 1-byte Folded Reload
- add al, al
- add al, byte ptr [rsp + 40] # 1-byte Folded Reload
- mov ebx, eax
+ sete dl
+ and dl, al
+ add r13b, r13b
+ add r13b, byte ptr [rsp + 56] # 1-byte Folded Reload
+ mov eax, r13d
+ shl r12b, 5
+ movzx r13d, byte ptr [rsp + 128] # 1-byte Folded Reload
+ shl r13b, 6
+ or r13b, r12b
+ movzx r12d, byte ptr [rsp + 32] # 1-byte Folded Reload
+ shl r12b, 2
+ or r12b, al
+ movzx ecx, byte ptr [rsp + 120] # 1-byte Folded Reload
+ add cl, cl
+ add cl, byte ptr [rsp + 48] # 1-byte Folded Reload
movzx eax, byte ptr [rsp + 28] # 1-byte Folded Reload
shl al, 7
- or al, dil
+ or al, r13b
mov byte ptr [rsp + 28], al # 1-byte Spill
- movzx eax, byte ptr [rsp + 64] # 1-byte Folded Reload
+ movzx eax, byte ptr [rsp + 112] # 1-byte Folded Reload
shl al, 2
- or al, bl
- mov ebx, eax
+ or al, cl
+ mov ecx, eax
movzx eax, byte ptr [rsp + 320] # 1-byte Folded Reload
shl al, 3
- or al, r13b
- mov r13d, eax
- movzx eax, byte ptr [rsp + 96] # 1-byte Folded Reload
- shl al, 3
- or al, bl
- mov edi, eax
+ or al, r12b
+ shl bl, 3
+ or bl, cl
+ movzx r13d, byte ptr [rsp + 40] # 1-byte Folded Reload
+ shl r13b, 4
+ or r13b, al
movzx eax, byte ptr [rsp + 288] # 1-byte Folded Reload
shl al, 4
+ or al, bl
+ mov byte ptr [rsp + 288], al # 1-byte Spill
+ movzx ecx, byte ptr [rsp + 96] # 1-byte Folded Reload
+ shl cl, 5
+ movzx eax, byte ptr [rsp + 88] # 1-byte Folded Reload
+ shl al, 6
+ or al, cl
+ mov ecx, eax
+ movzx r14d, byte ptr [rsp + 80] # 1-byte Folded Reload
+ shl r14b, 7
+ or r14b, al
+ movzx ecx, byte ptr [rsp + 72] # 1-byte Folded Reload
+ add cl, cl
+ add cl, byte ptr [rsp + 104] # 1-byte Folded Reload
+ movzx ebx, byte ptr [rsp + 64] # 1-byte Folded Reload
+ shl bl, 2
+ or bl, cl
+ movzx ecx, byte ptr [rsp + 152] # 1-byte Folded Reload
+ shl cl, 3
+ or cl, bl
+ mov ebx, ecx
+ movzx ecx, byte ptr [rsp + 144] # 1-byte Folded Reload
+ shl cl, 4
+ or cl, bl
+ mov r12d, ecx
+ mov rcx, qword ptr [rsp + 272] # 8-byte Reload
+ movzx eax, byte ptr [rsp + 28] # 1-byte Folded Reload
or al, r13b
- movzx ebx, byte ptr [rsp + 88] # 1-byte Folded Reload
- shl bl, 4
- or bl, dil
- movzx edi, byte ptr [rsp + 80] # 1-byte Folded Reload
- shl dil, 5
- shl dl, 6
- or dl, dil
- movzx r13d, byte ptr [rsp + 72] # 1-byte Folded Reload
- shl r13b, 7
- or r13b, dl
- movzx edx, byte ptr [rsp + 136] # 1-byte Folded Reload
- add dl, dl
- add dl, byte ptr [rsp + 144] # 1-byte Folded Reload
- shl cl, 2
- or cl, dl
- movzx edx, byte ptr [rsp + 128] # 1-byte Folded Reload
- shl dl, 3
- or dl, cl
- mov ecx, edx
- movzx edx, byte ptr [rsp + 120] # 1-byte Folded Reload
- shl dl, 4
- or dl, cl
- movzx ecx, byte ptr [rsp + 28] # 1-byte Folded Reload
- or cl, al
- movzx eax, byte ptr [rsp + 104] # 1-byte Folded Reload
- shl al, 5
- shl r12b, 6
- or r12b, al
- or r13b, bl
+ movzx ebx, byte ptr [rsp + 136] # 1-byte Folded Reload
+ shl bl, 5
+ shl r15b, 6
+ or r15b, bl
+ or r14b, byte ptr [rsp + 288] # 1-byte Folded Reload
shl r10b, 7
+ or r10b, r15b
or r10b, r12b
- or r10b, dl
- add r15b, r15b
- add r15b, byte ptr [rsp + 112] # 1-byte Folded Reload
- shl r14b, 2
- or r14b, r15b
- shl r11b, 3
- or r11b, r14b
- movzx eax, byte ptr [rsp + 160] # 1-byte Folded Reload
- shl al, 4
- or al, r11b
- mov ebx, eax
- mov rax, qword ptr [rsp + 272] # 8-byte Reload
- mov byte ptr [rax], cl
- movzx edx, byte ptr [rsp + 152] # 1-byte Folded Reload
- shl dl, 5
- shl r9b, 6
- or r9b, dl
- mov byte ptr [rax + 1], r13b
- shl r8b, 7
+ add r11b, r11b
+ add r11b, byte ptr [rsp + 168] # 1-byte Folded Reload
+ shl r9b, 2
+ or r9b, r11b
+ shl r8b, 3
or r8b, r9b
- or r8b, bl
- mov byte ptr [rax + 2], r10b
- mov byte ptr [rax + 3], r8b
+ movzx ebx, byte ptr [rsp + 176] # 1-byte Folded Reload
+ shl bl, 4
+ or bl, r8b
+ mov r8d, ebx
+ mov byte ptr [rcx], al
+ movzx ebx, byte ptr [rsp + 160] # 1-byte Folded Reload
+ shl bl, 5
+ shl dil, 6
+ or dil, bl
+ mov byte ptr [rcx + 1], r14b
+ shl dl, 7
+ or dl, dil
+ or dl, r8b
+ mov byte ptr [rcx + 2], r10b
+ mov byte ptr [rcx + 3], dl
add rsi, 256
- add rax, 4
- mov qword ptr [rsp + 272], rax # 8-byte Spill
- add qword ptr [rsp + 176], -1 # 8-byte Folded Spill
- jne .LBB1_23
-# %bb.24:
- mov r14, qword ptr [rsp + 272] # 8-byte Reload
- mov r10, qword ptr [rsp + 280] # 8-byte Reload
- mov r15, qword ptr [rsp + 168] # 8-byte Reload
- shl r15, 5
- cmp r15, r10
- jl .LBB1_106
- jmp .LBB1_165
-.LBB1_25:
+ add rcx, 4
+ mov r14, rcx
+ add qword ptr [rsp + 192], -1 # 8-byte Folded Spill
+ jne .LBB1_31
+# %bb.32:
+ mov r15, qword ptr [rsp + 280] # 8-byte Reload
+ mov r12, qword ptr [rsp + 184] # 8-byte Reload
+ mov rax, qword ptr [rsp + 200] # 8-byte Reload
+.LBB1_33:
+ shl rax, 5
+ mov r8, r15
+ sub r8, rax
+ jle .LBB1_189
+# %bb.34:
+ vmovq xmm0, r12
+ or rax, 1
+ cmp r15, rax
+ jne .LBB1_160
+# %bb.35:
+ xor r11d, r11d
+ jmp .LBB1_162
+.LBB1_36:
cmp edi, 2
- je .LBB1_81
-# %bb.26:
+ je .LBB1_112
+# %bb.37:
cmp edi, 3
- jne .LBB1_165
-# %bb.27:
- mov r14b, byte ptr [rdx]
- lea r13, [r10 + 31]
- test r10, r10
- mov r15, r10
- cmovns r13, r10
+ jne .LBB1_189
+# %bb.38:
+ mov r12b, byte ptr [rdx]
lea eax, [r9 + 7]
test r9d, r9d
cmovns eax, r9d
and eax, -8
sub r9d, eax
- je .LBB1_31
-# %bb.28:
- movsxd rax, r9d
+ je .LBB1_130
+# %bb.39:
+ mov r8d, 8
+ sub r8d, r9d
+ cmp r8, r15
+ cmovg r8, r15
+ test r8, r8
+ jle .LBB1_132
+# %bb.40:
+ movsxd rdx, r9d
+ mov r11, r8
.p2align 4, 0x90
-.LBB1_29: # =>This Inner Loop Header: Depth=1
- cmp byte ptr [rsi], r14b
- lea rsi, [rsi + 1]
- sete dl
- neg dl
- lea rdi, [rax + 7]
- test rax, rax
- cmovns rdi, rax
- sar rdi, 3
- movzx r9d, byte ptr [r11 + rdi]
- xor dl, r9b
- lea r8d, [8*rdi]
- mov ecx, eax
- sub ecx, r8d
- mov ebx, 1
+.LBB1_41: # =>This Inner Loop Header: Depth=1
+ lea rdi, [rsi + 1]
+ cmp byte ptr [rsi], r12b
+ sete bl
+ neg bl
+ lea rsi, [rdx + 7]
+ test rdx, rdx
+ cmovns rsi, rdx
+ sar rsi, 3
+ mov r13, r14
+ movzx r9d, byte ptr [r14 + rsi]
+ xor bl, r9b
+ lea r10d, [8*rsi]
+ mov ecx, edx
+ sub ecx, r10d
+ mov eax, 1
# kill: def $cl killed $cl killed $ecx
- shl ebx, cl
- and bl, dl
+ shl eax, cl
+ and al, bl
+ xor al, r9b
+ mov byte ptr [r14 + rsi], al
+ add rdx, 1
+ mov rsi, rdi
+ add r11, -1
+ jne .LBB1_41
+# %bb.42:
+ sub r15, r8
+ jne .LBB1_133
+ jmp .LBB1_189
+.LBB1_43:
+ cmp edi, 7
+ je .LBB1_117
+# %bb.44:
+ cmp edi, 8
+ jne .LBB1_189
+# %bb.45:
+ mov r13, qword ptr [rdx]
+ lea eax, [r9 + 7]
+ test r9d, r9d
+ cmovns eax, r9d
+ and eax, -8
+ sub r9d, eax
+ je .LBB1_51
+# %bb.46:
+ mov r8d, 8
+ sub r8d, r9d
+ cmp r8, r15
+ cmovg r8, r15
+ test r8, r8
+ jle .LBB1_49
+# %bb.47:
+ movsxd rdx, r9d
+ mov r11, r8
+ mov rcx, rsi
+ .p2align 4, 0x90
+.LBB1_48: # =>This Inner Loop Header: Depth=1
+ lea rsi, [rcx + 8]
+ cmp qword ptr [rcx], r13
+ sete bl
+ neg bl
+ lea rdi, [rdx + 7]
+ test rdx, rdx
+ cmovns rdi, rdx
+ sar rdi, 3
+ mov r12, r14
+ movzx r9d, byte ptr [r14 + rdi]
xor bl, r9b
- mov byte ptr [r11 + rdi], bl
- add rax, 1
- cmp rax, 8
- jne .LBB1_29
-# %bb.30:
- add r11, 1
-.LBB1_31:
- sar r13, 5
+ lea r10d, [8*rdi]
+ mov ecx, edx
+ sub ecx, r10d
+ mov eax, 1
+ # kill: def $cl killed $cl killed $ecx
+ shl eax, cl
+ and al, bl
+ xor al, r9b
+ mov byte ptr [r14 + rdi], al
+ add rdx, 1
+ mov rcx, rsi
+ add r11, -1
+ jne .LBB1_48
+.LBB1_49:
+ sub r15, r8
+ je .LBB1_189
+# %bb.50:
+ add r14, 1
+.LBB1_51:
+ lea rax, [r15 + 31]
+ test r15, r15
+ cmovns rax, r15
+ sar rax, 5
cmp r15, 32
- jl .LBB1_108
-# %bb.32:
- cmp r13, 32
- mov dword ptr [rsp + 28], r14d # 4-byte Spill
+ jl .LBB1_55
+# %bb.52:
mov qword ptr [rsp + 280], r15 # 8-byte Spill
- mov qword ptr [rsp + 392], r13 # 8-byte Spill
- jb .LBB1_35
-# %bb.33:
- mov rax, r13
- shl rax, 5
- add rax, rsi
- cmp r11, rax
- jae .LBB1_166
-# %bb.34:
- lea rax, [r11 + 4*r13]
- cmp rsi, rax
- jae .LBB1_166
-.LBB1_35:
- xor eax, eax
- mov qword ptr [rsp + 384], rax # 8-byte Spill
- mov r12, rsi
- mov qword ptr [rsp + 376], r11 # 8-byte Spill
-.LBB1_36:
- sub r13, qword ptr [rsp + 384] # 8-byte Folded Reload
- mov qword ptr [rsp + 152], r13 # 8-byte Spill
+ mov qword ptr [rsp + 176], rax # 8-byte Spill
+ mov qword ptr [rsp + 160], rax # 8-byte Spill
.p2align 4, 0x90
-.LBB1_37: # =>This Inner Loop Header: Depth=1
- mov rcx, r12
- cmp byte ptr [r12], r14b
- sete byte ptr [rsp + 48] # 1-byte Folded Spill
- cmp byte ptr [r12 + 1], r14b
- sete r8b
- cmp byte ptr [r12 + 2], r14b
- sete r15b
- cmp byte ptr [r12 + 3], r14b
- sete r13b
- cmp byte ptr [r12 + 4], r14b
- sete byte ptr [rsp + 160] # 1-byte Folded Spill
- cmp byte ptr [r12 + 5], r14b
+.LBB1_53: # =>This Inner Loop Header: Depth=1
+ mov qword ptr [rsp + 272], r14 # 8-byte Spill
+ cmp qword ptr [rsi], r13
+ sete byte ptr [rsp + 168] # 1-byte Folded Spill
+ cmp qword ptr [rsi + 8], r13
+ sete r10b
+ cmp qword ptr [rsi + 16], r13
+ sete r14b
+ cmp qword ptr [rsi + 24], r13
+ sete byte ptr [rsp + 136] # 1-byte Folded Spill
+ cmp qword ptr [rsi + 32], r13
+ sete byte ptr [rsp + 80] # 1-byte Folded Spill
+ cmp qword ptr [rsi + 40], r13
sete byte ptr [rsp + 112] # 1-byte Folded Spill
- cmp byte ptr [r12 + 6], r14b
- sete al
- cmp byte ptr [r12 + 7], r14b
- sete r11b
- cmp byte ptr [r12 + 8], r14b
- sete byte ptr [rsp + 320] # 1-byte Folded Spill
- cmp byte ptr [r12 + 9], r14b
- sete dl
- cmp byte ptr [r12 + 10], r14b
- sete sil
- cmp byte ptr [r12 + 11], r14b
- sete dil
- cmp byte ptr [r12 + 12], r14b
- sete r10b
- cmp byte ptr [r12 + 13], r14b
- sete r12b
- cmp byte ptr [rcx + 14], r14b
- sete byte ptr [rsp + 104] # 1-byte Folded Spill
- cmp byte ptr [rcx + 15], r14b
- sete r9b
- cmp byte ptr [rcx + 16], r14b
- sete byte ptr [rsp + 288] # 1-byte Folded Spill
- cmp byte ptr [rcx + 17], r14b
- sete byte ptr [rsp + 128] # 1-byte Folded Spill
- cmp byte ptr [rcx + 18], r14b
- sete byte ptr [rsp + 120] # 1-byte Folded Spill
- cmp byte ptr [rcx + 19], r14b
- sete byte ptr [rsp + 136] # 1-byte Folded Spill
- cmp byte ptr [rcx + 20], r14b
- sete byte ptr [rsp + 144] # 1-byte Folded Spill
- cmp byte ptr [rcx + 21], r14b
- sete byte ptr [rsp + 72] # 1-byte Folded Spill
- cmp byte ptr [rcx + 22], r14b
- sete byte ptr [rsp + 88] # 1-byte Folded Spill
- cmp byte ptr [rcx + 23], r14b
- sete r14b
- mov ebx, dword ptr [rsp + 28] # 4-byte Reload
- cmp byte ptr [rcx + 24], bl
- sete byte ptr [rsp + 272] # 1-byte Folded Spill
- mov ebx, dword ptr [rsp + 28] # 4-byte Reload
- cmp byte ptr [rcx + 25], bl
- sete byte ptr [rsp + 80] # 1-byte Folded Spill
- mov ebx, dword ptr [rsp + 28] # 4-byte Reload
- cmp byte ptr [rcx + 26], bl
- sete byte ptr [rsp + 96] # 1-byte Folded Spill
- mov ebx, dword ptr [rsp + 28] # 4-byte Reload
- cmp byte ptr [rcx + 27], bl
- sete byte ptr [rsp + 64] # 1-byte Folded Spill
- mov ebx, dword ptr [rsp + 28] # 4-byte Reload
- cmp byte ptr [rcx + 28], bl
- sete byte ptr [rsp + 56] # 1-byte Folded Spill
- mov ebx, dword ptr [rsp + 28] # 4-byte Reload
- cmp byte ptr [rcx + 29], bl
- sete byte ptr [rsp + 40] # 1-byte Folded Spill
- mov ebx, dword ptr [rsp + 28] # 4-byte Reload
- cmp byte ptr [rcx + 30], bl
- sete byte ptr [rsp + 32] # 1-byte Folded Spill
- mov ebx, dword ptr [rsp + 28] # 4-byte Reload
- cmp byte ptr [rcx + 31], bl
- sete bl
- add r8b, r8b
- add r8b, byte ptr [rsp + 48] # 1-byte Folded Reload
- shl al, 6
- shl r11b, 7
- or r11b, al
- shl r15b, 2
- or r15b, r8b
- add dl, dl
- add dl, byte ptr [rsp + 320] # 1-byte Folded Reload
- shl r13b, 3
- or r13b, r15b
- shl sil, 2
- or sil, dl
- movzx edx, byte ptr [rsp + 160] # 1-byte Folded Reload
- shl dl, 4
- or dl, r13b
- mov r8d, edx
- shl dil, 3
- or dil, sil
- movzx edx, byte ptr [rsp + 112] # 1-byte Folded Reload
- shl dl, 5
- or dl, r8b
- shl r10b, 4
- or r10b, dil
- shl r12b, 5
- or r12b, r10b
- movzx esi, byte ptr [rsp + 104] # 1-byte Folded Reload
- shl sil, 6
- shl r9b, 7
- or r9b, sil
- or r11b, dl
- or r9b, r12b
- movzx eax, byte ptr [rsp + 128] # 1-byte Folded Reload
- add al, al
- add al, byte ptr [rsp + 288] # 1-byte Folded Reload
- movzx edx, byte ptr [rsp + 120] # 1-byte Folded Reload
- shl dl, 2
- or dl, al
- mov esi, edx
- movzx edx, byte ptr [rsp + 136] # 1-byte Folded Reload
- shl dl, 3
- or dl, sil
- mov esi, edx
- movzx edx, byte ptr [rsp + 144] # 1-byte Folded Reload
- shl dl, 4
- or dl, sil
- mov esi, edx
- movzx edx, byte ptr [rsp + 72] # 1-byte Folded Reload
- shl dl, 5
- or dl, sil
- mov rsi, qword ptr [rsp + 376] # 8-byte Reload
- mov byte ptr [rsi], r11b
- movzx edi, byte ptr [rsp + 88] # 1-byte Folded Reload
- shl dil, 6
- shl r14b, 7
- or r14b, dil
- mov byte ptr [rsi + 1], r9b
- or r14b, dl
- movzx eax, byte ptr [rsp + 80] # 1-byte Folded Reload
- add al, al
- add al, byte ptr [rsp + 272] # 1-byte Folded Reload
- mov edx, eax
- movzx eax, byte ptr [rsp + 96] # 1-byte Folded Reload
- shl al, 2
- or al, dl
- mov edx, eax
- movzx eax, byte ptr [rsp + 64] # 1-byte Folded Reload
- shl al, 3
- or al, dl
- mov edx, eax
- movzx eax, byte ptr [rsp + 56] # 1-byte Folded Reload
- shl al, 4
- or al, dl
- mov edx, eax
- movzx eax, byte ptr [rsp + 40] # 1-byte Folded Reload
- shl al, 5
- or al, dl
- movzx edx, byte ptr [rsp + 32] # 1-byte Folded Reload
- shl dl, 6
- shl bl, 7
- or bl, dl
- or bl, al
- mov byte ptr [rsi + 2], r14b
- mov r14d, dword ptr [rsp + 28] # 4-byte Reload
- mov byte ptr [rsi + 3], bl
- lea r12, [rcx + 32]
- add rsi, 4
- mov qword ptr [rsp + 376], rsi # 8-byte Spill
- add qword ptr [rsp + 152], -1 # 8-byte Folded Spill
- jne .LBB1_37
-# %bb.38:
- mov r15, qword ptr [rsp + 280] # 8-byte Reload
- mov r13, qword ptr [rsp + 392] # 8-byte Reload
- jmp .LBB1_109
-.LBB1_39:
- cmp edi, 7
- je .LBB1_93
-# %bb.40:
- cmp edi, 8
- jne .LBB1_165
-# %bb.41:
- mov r13, qword ptr [rdx]
- lea r15, [r10 + 31]
- test r10, r10
- cmovns r15, r10
- lea eax, [r9 + 7]
- test r9d, r9d
- cmovns eax, r9d
- and eax, -8
- sub r9d, eax
- je .LBB1_45
-# %bb.42:
- movsxd rax, r9d
- .p2align 4, 0x90
-.LBB1_43: # =>This Inner Loop Header: Depth=1
- cmp qword ptr [rsi], r13
- lea rsi, [rsi + 8]
- sete dl
- neg dl
- lea rbx, [rax + 7]
- test rax, rax
- cmovns rbx, rax
- sar rbx, 3
- movzx r8d, byte ptr [r11 + rbx]
- xor dl, r8b
- lea edi, [8*rbx]
- mov ecx, eax
- sub ecx, edi
- mov edi, 1
- # kill: def $cl killed $cl killed $ecx
- shl edi, cl
- and dil, dl
- xor dil, r8b
- mov byte ptr [r11 + rbx], dil
- add rax, 1
- cmp rax, 8
- jne .LBB1_43
-# %bb.44:
- add r11, 1
-.LBB1_45:
- sar r15, 5
- cmp r10, 32
- jl .LBB1_112
-# %bb.46:
- mov qword ptr [rsp + 280], r10 # 8-byte Spill
- mov qword ptr [rsp + 168], r15 # 8-byte Spill
- mov qword ptr [rsp + 176], r15 # 8-byte Spill
- .p2align 4, 0x90
-.LBB1_47: # =>This Inner Loop Header: Depth=1
- mov qword ptr [rsp + 272], r11 # 8-byte Spill
- cmp qword ptr [rsi], r13
- sete byte ptr [rsp + 152] # 1-byte Folded Spill
- cmp qword ptr [rsi + 8], r13
- sete r10b
- cmp qword ptr [rsi + 16], r13
- sete r14b
- cmp qword ptr [rsi + 24], r13
- sete byte ptr [rsp + 160] # 1-byte Folded Spill
- cmp qword ptr [rsi + 32], r13
- sete byte ptr [rsp + 136] # 1-byte Folded Spill
- cmp qword ptr [rsi + 40], r13
- sete byte ptr [rsp + 88] # 1-byte Folded Spill
- cmp qword ptr [rsi + 48], r13
+ cmp qword ptr [rsi + 48], r13
sete al
cmp qword ptr [rsi + 56], r13
sete bl
cmp qword ptr [rsi + 64], r13
- sete byte ptr [rsp + 104] # 1-byte Folded Spill
+ sete byte ptr [rsp + 144] # 1-byte Folded Spill
cmp qword ptr [rsi + 72], r13
sete dil
cmp qword ptr [rsi + 80], r13
@@ -3871,33 +3955,33 @@ comparison_equal_arr_scalar_avx2: # @comparison_equal_arr_scalar_avx2
cmp qword ptr [rsi + 104], r13
sete r12b
cmp qword ptr [rsi + 112], r13
- sete byte ptr [rsp + 112] # 1-byte Folded Spill
+ sete byte ptr [rsp + 152] # 1-byte Folded Spill
cmp qword ptr [rsi + 120], r13
- sete cl
+ sete dl
cmp qword ptr [rsi + 128], r13
- sete byte ptr [rsp + 72] # 1-byte Folded Spill
+ sete byte ptr [rsp + 96] # 1-byte Folded Spill
cmp qword ptr [rsi + 136], r13
- sete byte ptr [rsp + 120] # 1-byte Folded Spill
+ sete byte ptr [rsp + 64] # 1-byte Folded Spill
cmp qword ptr [rsi + 144], r13
- sete byte ptr [rsp + 128] # 1-byte Folded Spill
+ sete byte ptr [rsp + 72] # 1-byte Folded Spill
cmp qword ptr [rsi + 152], r13
- sete byte ptr [rsp + 144] # 1-byte Folded Spill
+ sete byte ptr [rsp + 88] # 1-byte Folded Spill
cmp qword ptr [rsi + 160], r13
- sete byte ptr [rsp + 80] # 1-byte Folded Spill
+ sete byte ptr [rsp + 104] # 1-byte Folded Spill
cmp qword ptr [rsi + 168], r13
- sete byte ptr [rsp + 96] # 1-byte Folded Spill
+ sete byte ptr [rsp + 120] # 1-byte Folded Spill
cmp qword ptr [rsi + 176], r13
- sete byte ptr [rsp + 64] # 1-byte Folded Spill
+ sete byte ptr [rsp + 128] # 1-byte Folded Spill
cmp qword ptr [rsi + 184], r13
sete r15b
cmp qword ptr [rsi + 192], r13
- sete byte ptr [rsp + 32] # 1-byte Folded Spill
+ sete byte ptr [rsp + 40] # 1-byte Folded Spill
cmp qword ptr [rsi + 200], r13
sete byte ptr [rsp + 48] # 1-byte Folded Spill
cmp qword ptr [rsi + 208], r13
sete byte ptr [rsp + 56] # 1-byte Folded Spill
cmp qword ptr [rsi + 216], r13
- sete byte ptr [rsp + 40] # 1-byte Folded Spill
+ sete byte ptr [rsp + 32] # 1-byte Folded Spill
cmp qword ptr [rsi + 224], r13
sete byte ptr [rsp + 320] # 1-byte Folded Spill
cmp qword ptr [rsi + 232], r13
@@ -3905,156 +3989,210 @@ comparison_equal_arr_scalar_avx2: # @comparison_equal_arr_scalar_avx2
cmp qword ptr [rsi + 240], r13
sete byte ptr [rsp + 28] # 1-byte Folded Spill
cmp qword ptr [rsi + 248], r13
- sete dl
+ sete cl
add r10b, r10b
- add r10b, byte ptr [rsp + 152] # 1-byte Folded Reload
+ add r10b, byte ptr [rsp + 168] # 1-byte Folded Reload
shl al, 6
shl bl, 7
or bl, al
shl r14b, 2
or r14b, r10b
add dil, dil
- add dil, byte ptr [rsp + 104] # 1-byte Folded Reload
- movzx eax, byte ptr [rsp + 160] # 1-byte Folded Reload
+ add dil, byte ptr [rsp + 144] # 1-byte Folded Reload
+ movzx eax, byte ptr [rsp + 136] # 1-byte Folded Reload
shl al, 3
or al, r14b
mov r10d, eax
+ mov r14, qword ptr [rsp + 272] # 8-byte Reload
shl r8b, 2
or r8b, dil
- movzx eax, byte ptr [rsp + 136] # 1-byte Folded Reload
+ movzx eax, byte ptr [rsp + 80] # 1-byte Folded Reload
shl al, 4
or al, r10b
mov edi, eax
shl r9b, 3
or r9b, r8b
- movzx eax, byte ptr [rsp + 88] # 1-byte Folded Reload
+ movzx eax, byte ptr [rsp + 112] # 1-byte Folded Reload
shl al, 5
or al, dil
shl r11b, 4
or r11b, r9b
shl r12b, 5
or r12b, r11b
- mov r11, qword ptr [rsp + 272] # 8-byte Reload
- movzx edi, byte ptr [rsp + 112] # 1-byte Folded Reload
+ movzx edi, byte ptr [rsp + 152] # 1-byte Folded Reload
shl dil, 6
- shl cl, 7
- or cl, dil
+ shl dl, 7
+ or dl, dil
or bl, al
- or cl, r12b
- movzx eax, byte ptr [rsp + 120] # 1-byte Folded Reload
+ or dl, r12b
+ movzx eax, byte ptr [rsp + 64] # 1-byte Folded Reload
add al, al
- add al, byte ptr [rsp + 72] # 1-byte Folded Reload
+ add al, byte ptr [rsp + 96] # 1-byte Folded Reload
mov edi, eax
- movzx eax, byte ptr [rsp + 128] # 1-byte Folded Reload
+ movzx eax, byte ptr [rsp + 72] # 1-byte Folded Reload
shl al, 2
or al, dil
mov edi, eax
- movzx eax, byte ptr [rsp + 144] # 1-byte Folded Reload
+ movzx eax, byte ptr [rsp + 88] # 1-byte Folded Reload
shl al, 3
or al, dil
mov edi, eax
- movzx eax, byte ptr [rsp + 80] # 1-byte Folded Reload
+ movzx eax, byte ptr [rsp + 104] # 1-byte Folded Reload
shl al, 4
or al, dil
mov edi, eax
- movzx eax, byte ptr [rsp + 96] # 1-byte Folded Reload
+ movzx eax, byte ptr [rsp + 120] # 1-byte Folded Reload
shl al, 5
or al, dil
- mov byte ptr [r11], bl
- movzx ebx, byte ptr [rsp + 64] # 1-byte Folded Reload
+ mov byte ptr [r14], bl
+ movzx ebx, byte ptr [rsp + 128] # 1-byte Folded Reload
shl bl, 6
shl r15b, 7
or r15b, bl
- mov byte ptr [r11 + 1], cl
+ mov byte ptr [r14 + 1], dl
or r15b, al
movzx eax, byte ptr [rsp + 48] # 1-byte Folded Reload
add al, al
- add al, byte ptr [rsp + 32] # 1-byte Folded Reload
- mov ecx, eax
+ add al, byte ptr [rsp + 40] # 1-byte Folded Reload
+ mov edx, eax
movzx eax, byte ptr [rsp + 56] # 1-byte Folded Reload
shl al, 2
- or al, cl
- mov ecx, eax
- movzx eax, byte ptr [rsp + 40] # 1-byte Folded Reload
+ or al, dl
+ mov edx, eax
+ movzx eax, byte ptr [rsp + 32] # 1-byte Folded Reload
shl al, 3
- or al, cl
- mov ecx, eax
+ or al, dl
+ mov edx, eax
movzx eax, byte ptr [rsp + 320] # 1-byte Folded Reload
shl al, 4
- or al, cl
- mov ecx, eax
+ or al, dl
+ mov edx, eax
movzx eax, byte ptr [rsp + 288] # 1-byte Folded Reload
shl al, 5
- or al, cl
- movzx ecx, byte ptr [rsp + 28] # 1-byte Folded Reload
- shl cl, 6
- shl dl, 7
- or dl, cl
- or dl, al
- mov byte ptr [r11 + 2], r15b
- mov byte ptr [r11 + 3], dl
+ or al, dl
+ movzx edx, byte ptr [rsp + 28] # 1-byte Folded Reload
+ shl dl, 6
+ shl cl, 7
+ or cl, dl
+ or cl, al
+ mov byte ptr [r14 + 2], r15b
+ mov byte ptr [r14 + 3], cl
add rsi, 256
- add r11, 4
- add qword ptr [rsp + 176], -1 # 8-byte Folded Spill
- jne .LBB1_47
-# %bb.48:
- mov r14, r11
- mov r10, qword ptr [rsp + 280] # 8-byte Reload
- mov r15, qword ptr [rsp + 168] # 8-byte Reload
- shl r15, 5
- cmp r15, r10
- jl .LBB1_113
- jmp .LBB1_165
-.LBB1_49:
+ add r14, 4
+ add qword ptr [rsp + 160], -1 # 8-byte Folded Spill
+ jne .LBB1_53
+# %bb.54:
+ mov r15, qword ptr [rsp + 280] # 8-byte Reload
+ mov rax, qword ptr [rsp + 176] # 8-byte Reload
+.LBB1_55:
+ shl rax, 5
+ mov r8, r15
+ sub r8, rax
+ jle .LBB1_189
+# %bb.56:
+ or rax, 1
+ cmp r15, rax
+ je .LBB1_98
+# %bb.57:
+ mov r10, r8
+ and r10, -2
+ xor r11d, r11d
+ .p2align 4, 0x90
+.LBB1_58: # =>This Inner Loop Header: Depth=1
+ cmp qword ptr [rsi], r13
+ sete al
+ neg al
+ mov rdi, r11
+ shr rdi, 3
+ mov r15, r14
+ movzx r9d, byte ptr [r14 + rdi]
+ mov ecx, r11d
+ and cl, 6
+ mov bl, 1
+ shl bl, cl
+ xor al, r9b
+ and bl, al
+ xor bl, r9b
+ mov byte ptr [r14 + rdi], bl
+ add r11, 2
+ cmp qword ptr [rsi + 8], r13
+ lea rsi, [rsi + 16]
+ sete al
+ neg al
+ xor al, bl
+ or cl, 1
+ mov dl, 1
+ shl dl, cl
+ and dl, al
+ xor dl, bl
+ mov byte ptr [r14 + rdi], dl
+ cmp r10, r11
+ jne .LBB1_58
+ jmp .LBB1_170
+.LBB1_59:
movzx r13d, word ptr [rdx]
- lea r15, [r10 + 31]
- test r10, r10
- cmovns r15, r10
lea eax, [r9 + 7]
test r9d, r9d
cmovns eax, r9d
and eax, -8
sub r9d, eax
- je .LBB1_53
-# %bb.50:
- movsxd rax, r9d
+ je .LBB1_65
+# %bb.60:
+ mov r8d, 8
+ sub r8d, r9d
+ cmp r8, r15
+ cmovg r8, r15
+ test r8, r8
+ jle .LBB1_63
+# %bb.61:
+ movsxd rdx, r9d
+ mov r11, r8
+ mov rcx, rsi
.p2align 4, 0x90
-.LBB1_51: # =>This Inner Loop Header: Depth=1
- cmp word ptr [rsi], r13w
- lea rsi, [rsi + 2]
- sete dl
- neg dl
- lea rbx, [rax + 7]
- test rax, rax
- cmovns rbx, rax
- sar rbx, 3
- movzx r8d, byte ptr [r11 + rbx]
- xor dl, r8b
- lea edi, [8*rbx]
- mov ecx, eax
- sub ecx, edi
- mov edi, 1
+.LBB1_62: # =>This Inner Loop Header: Depth=1
+ lea rsi, [rcx + 2]
+ cmp word ptr [rcx], r13w
+ sete bl
+ neg bl
+ lea rdi, [rdx + 7]
+ test rdx, rdx
+ cmovns rdi, rdx
+ sar rdi, 3
+ mov r12, r14
+ movzx r9d, byte ptr [r14 + rdi]
+ xor bl, r9b
+ lea r10d, [8*rdi]
+ mov ecx, edx
+ sub ecx, r10d
+ mov eax, 1
# kill: def $cl killed $cl killed $ecx
- shl edi, cl
- and dil, dl
- xor dil, r8b
- mov byte ptr [r11 + rbx], dil
- add rax, 1
- cmp rax, 8
- jne .LBB1_51
-# %bb.52:
- add r11, 1
-.LBB1_53:
- sar r15, 5
- cmp r10, 32
- jl .LBB1_116
-# %bb.54:
- mov qword ptr [rsp + 280], r10 # 8-byte Spill
- mov qword ptr [rsp + 168], r15 # 8-byte Spill
- mov qword ptr [rsp + 176], r15 # 8-byte Spill
- mov qword ptr [rsp + 272], r11 # 8-byte Spill
+ shl eax, cl
+ and al, bl
+ xor al, r9b
+ mov byte ptr [r14 + rdi], al
+ add rdx, 1
+ mov rcx, rsi
+ add r11, -1
+ jne .LBB1_62
+.LBB1_63:
+ sub r15, r8
+ je .LBB1_189
+# %bb.64:
+ add r14, 1
+.LBB1_65:
+ lea rax, [r15 + 31]
+ test r15, r15
+ cmovns rax, r15
+ sar rax, 5
+ cmp r15, 32
+ jl .LBB1_69
+# %bb.66:
+ mov qword ptr [rsp + 280], r15 # 8-byte Spill
+ mov qword ptr [rsp + 176], rax # 8-byte Spill
+ mov qword ptr [rsp + 160], rax # 8-byte Spill
.p2align 4, 0x90
-.LBB1_55: # =>This Inner Loop Header: Depth=1
+.LBB1_67: # =>This Inner Loop Header: Depth=1
+ mov qword ptr [rsp + 272], r14 # 8-byte Spill
cmp word ptr [rsi], r13w
sete al
cmp word ptr [rsi + 2], r13w
@@ -4062,17 +4200,17 @@ comparison_equal_arr_scalar_avx2: # @comparison_equal_arr_scalar_avx2
cmp word ptr [rsi + 4], r13w
sete r14b
cmp word ptr [rsi + 6], r13w
- sete byte ptr [rsp + 160] # 1-byte Folded Spill
- cmp word ptr [rsi + 8], r13w
sete byte ptr [rsp + 136] # 1-byte Folded Spill
+ cmp word ptr [rsi + 8], r13w
+ sete byte ptr [rsp + 80] # 1-byte Folded Spill
cmp word ptr [rsi + 10], r13w
- sete byte ptr [rsp + 88] # 1-byte Folded Spill
+ sete byte ptr [rsp + 112] # 1-byte Folded Spill
cmp word ptr [rsi + 12], r13w
- sete byte ptr [rsp + 152] # 1-byte Folded Spill
+ sete byte ptr [rsp + 168] # 1-byte Folded Spill
cmp word ptr [rsi + 14], r13w
sete bl
cmp word ptr [rsi + 16], r13w
- sete byte ptr [rsp + 112] # 1-byte Folded Spill
+ sete byte ptr [rsp + 152] # 1-byte Folded Spill
cmp word ptr [rsi + 18], r13w
sete dil
cmp word ptr [rsi + 20], r13w
@@ -4084,33 +4222,33 @@ comparison_equal_arr_scalar_avx2: # @comparison_equal_arr_scalar_avx2
cmp word ptr [rsi + 26], r13w
sete r12b
cmp word ptr [rsi + 28], r13w
- sete byte ptr [rsp + 104] # 1-byte Folded Spill
+ sete byte ptr [rsp + 144] # 1-byte Folded Spill
cmp word ptr [rsi + 30], r13w
- sete cl
+ sete dl
cmp word ptr [rsi + 32], r13w
- sete byte ptr [rsp + 72] # 1-byte Folded Spill
+ sete byte ptr [rsp + 96] # 1-byte Folded Spill
cmp word ptr [rsi + 34], r13w
- sete byte ptr [rsp + 120] # 1-byte Folded Spill
+ sete byte ptr [rsp + 64] # 1-byte Folded Spill
cmp word ptr [rsi + 36], r13w
- sete byte ptr [rsp + 128] # 1-byte Folded Spill
+ sete byte ptr [rsp + 72] # 1-byte Folded Spill
cmp word ptr [rsi + 38], r13w
- sete byte ptr [rsp + 144] # 1-byte Folded Spill
+ sete byte ptr [rsp + 88] # 1-byte Folded Spill
cmp word ptr [rsi + 40], r13w
- sete byte ptr [rsp + 80] # 1-byte Folded Spill
+ sete byte ptr [rsp + 104] # 1-byte Folded Spill
cmp word ptr [rsi + 42], r13w
- sete byte ptr [rsp + 96] # 1-byte Folded Spill
+ sete byte ptr [rsp + 120] # 1-byte Folded Spill
cmp word ptr [rsi + 44], r13w
- sete byte ptr [rsp + 64] # 1-byte Folded Spill
+ sete byte ptr [rsp + 128] # 1-byte Folded Spill
cmp word ptr [rsi + 46], r13w
sete r15b
cmp word ptr [rsi + 48], r13w
- sete byte ptr [rsp + 32] # 1-byte Folded Spill
+ sete byte ptr [rsp + 40] # 1-byte Folded Spill
cmp word ptr [rsi + 50], r13w
sete byte ptr [rsp + 48] # 1-byte Folded Spill
cmp word ptr [rsi + 52], r13w
sete byte ptr [rsp + 56] # 1-byte Folded Spill
cmp word ptr [rsi + 54], r13w
- sete byte ptr [rsp + 40] # 1-byte Folded Spill
+ sete byte ptr [rsp + 32] # 1-byte Folded Spill
cmp word ptr [rsi + 56], r13w
sete byte ptr [rsp + 320] # 1-byte Folded Spill
cmp word ptr [rsi + 58], r13w
@@ -4118,177 +4256,229 @@ comparison_equal_arr_scalar_avx2: # @comparison_equal_arr_scalar_avx2
cmp word ptr [rsi + 60], r13w
sete byte ptr [rsp + 28] # 1-byte Folded Spill
cmp word ptr [rsi + 62], r13w
- sete dl
+ sete cl
add r10b, r10b
or r10b, al
- movzx eax, byte ptr [rsp + 152] # 1-byte Folded Reload
+ movzx eax, byte ptr [rsp + 168] # 1-byte Folded Reload
shl al, 6
shl bl, 7
or bl, al
shl r14b, 2
or r14b, r10b
add dil, dil
- add dil, byte ptr [rsp + 112] # 1-byte Folded Reload
- movzx eax, byte ptr [rsp + 160] # 1-byte Folded Reload
+ add dil, byte ptr [rsp + 152] # 1-byte Folded Reload
+ movzx eax, byte ptr [rsp + 136] # 1-byte Folded Reload
shl al, 3
or al, r14b
mov r10d, eax
+ mov r14, qword ptr [rsp + 272] # 8-byte Reload
shl r8b, 2
or r8b, dil
- movzx eax, byte ptr [rsp + 136] # 1-byte Folded Reload
+ movzx eax, byte ptr [rsp + 80] # 1-byte Folded Reload
shl al, 4
or al, r10b
mov edi, eax
shl r9b, 3
or r9b, r8b
- movzx eax, byte ptr [rsp + 88] # 1-byte Folded Reload
+ movzx eax, byte ptr [rsp + 112] # 1-byte Folded Reload
shl al, 5
or al, dil
shl r11b, 4
or r11b, r9b
shl r12b, 5
or r12b, r11b
- movzx edi, byte ptr [rsp + 104] # 1-byte Folded Reload
+ movzx edi, byte ptr [rsp + 144] # 1-byte Folded Reload
shl dil, 6
- shl cl, 7
- or cl, dil
+ shl dl, 7
+ or dl, dil
or bl, al
- or cl, r12b
- movzx eax, byte ptr [rsp + 120] # 1-byte Folded Reload
+ or dl, r12b
+ movzx eax, byte ptr [rsp + 64] # 1-byte Folded Reload
add al, al
- add al, byte ptr [rsp + 72] # 1-byte Folded Reload
+ add al, byte ptr [rsp + 96] # 1-byte Folded Reload
mov edi, eax
- movzx eax, byte ptr [rsp + 128] # 1-byte Folded Reload
+ movzx eax, byte ptr [rsp + 72] # 1-byte Folded Reload
shl al, 2
or al, dil
mov edi, eax
- movzx eax, byte ptr [rsp + 144] # 1-byte Folded Reload
+ movzx eax, byte ptr [rsp + 88] # 1-byte Folded Reload
shl al, 3
or al, dil
mov edi, eax
- movzx eax, byte ptr [rsp + 80] # 1-byte Folded Reload
+ movzx eax, byte ptr [rsp + 104] # 1-byte Folded Reload
shl al, 4
or al, dil
mov edi, eax
- movzx eax, byte ptr [rsp + 96] # 1-byte Folded Reload
+ movzx eax, byte ptr [rsp + 120] # 1-byte Folded Reload
shl al, 5
or al, dil
- mov edi, eax
- mov rax, qword ptr [rsp + 272] # 8-byte Reload
- mov byte ptr [rax], bl
- movzx ebx, byte ptr [rsp + 64] # 1-byte Folded Reload
+ mov byte ptr [r14], bl
+ movzx ebx, byte ptr [rsp + 128] # 1-byte Folded Reload
shl bl, 6
shl r15b, 7
or r15b, bl
- mov byte ptr [rax + 1], cl
- or r15b, dil
- movzx ecx, byte ptr [rsp + 48] # 1-byte Folded Reload
- add cl, cl
- add cl, byte ptr [rsp + 32] # 1-byte Folded Reload
- mov ebx, ecx
- movzx ecx, byte ptr [rsp + 56] # 1-byte Folded Reload
- shl cl, 2
- or cl, bl
- mov ebx, ecx
- movzx ecx, byte ptr [rsp + 40] # 1-byte Folded Reload
- shl cl, 3
- or cl, bl
- mov ebx, ecx
- movzx ecx, byte ptr [rsp + 320] # 1-byte Folded Reload
- shl cl, 4
- or cl, bl
- mov ebx, ecx
- movzx ecx, byte ptr [rsp + 288] # 1-byte Folded Reload
- shl cl, 5
- or cl, bl
- movzx ebx, byte ptr [rsp + 28] # 1-byte Folded Reload
- shl bl, 6
- shl dl, 7
- or dl, bl
- or dl, cl
- mov byte ptr [rax + 2], r15b
- mov byte ptr [rax + 3], dl
+ mov byte ptr [r14 + 1], dl
+ or r15b, al
+ movzx eax, byte ptr [rsp + 48] # 1-byte Folded Reload
+ add al, al
+ add al, byte ptr [rsp + 40] # 1-byte Folded Reload
+ mov edx, eax
+ movzx eax, byte ptr [rsp + 56] # 1-byte Folded Reload
+ shl al, 2
+ or al, dl
+ mov edx, eax
+ movzx eax, byte ptr [rsp + 32] # 1-byte Folded Reload
+ shl al, 3
+ or al, dl
+ mov edx, eax
+ movzx eax, byte ptr [rsp + 320] # 1-byte Folded Reload
+ shl al, 4
+ or al, dl
+ mov edx, eax
+ movzx eax, byte ptr [rsp + 288] # 1-byte Folded Reload
+ shl al, 5
+ or al, dl
+ movzx edx, byte ptr [rsp + 28] # 1-byte Folded Reload
+ shl dl, 6
+ shl cl, 7
+ or cl, dl
+ or cl, al
+ mov byte ptr [r14 + 2], r15b
+ mov byte ptr [r14 + 3], cl
add rsi, 64
- add rax, 4
- mov qword ptr [rsp + 272], rax # 8-byte Spill
- add qword ptr [rsp + 176], -1 # 8-byte Folded Spill
- jne .LBB1_55
-# %bb.56:
- mov r14, qword ptr [rsp + 272] # 8-byte Reload
- mov r10, qword ptr [rsp + 280] # 8-byte Reload
- mov r15, qword ptr [rsp + 168] # 8-byte Reload
- shl r15, 5
- cmp r15, r10
- jl .LBB1_117
- jmp .LBB1_165
-.LBB1_57:
+ add r14, 4
+ add qword ptr [rsp + 160], -1 # 8-byte Folded Spill
+ jne .LBB1_67
+# %bb.68:
+ mov r15, qword ptr [rsp + 280] # 8-byte Reload
+ mov rax, qword ptr [rsp + 176] # 8-byte Reload
+.LBB1_69:
+ shl rax, 5
+ mov r8, r15
+ sub r8, rax
+ jle .LBB1_189
+# %bb.70:
+ or rax, 1
+ cmp r15, rax
+ je .LBB1_85
+# %bb.71:
+ mov r10, r8
+ and r10, -2
+ xor r11d, r11d
+ .p2align 4, 0x90
+.LBB1_72: # =>This Inner Loop Header: Depth=1
+ cmp word ptr [rsi], r13w
+ sete al
+ neg al
+ mov rdi, r11
+ shr rdi, 3
+ mov r15, r14
+ movzx r9d, byte ptr [r14 + rdi]
+ mov ecx, r11d
+ and cl, 6
+ mov bl, 1
+ shl bl, cl
+ xor al, r9b
+ and bl, al
+ xor bl, r9b
+ mov byte ptr [r14 + rdi], bl
+ add r11, 2
+ cmp word ptr [rsi + 2], r13w
+ lea rsi, [rsi + 4]
+ sete al
+ neg al
+ xor al, bl
+ or cl, 1
+ mov dl, 1
+ shl dl, cl
+ and dl, al
+ xor dl, bl
+ mov byte ptr [r14 + rdi], dl
+ cmp r10, r11
+ jne .LBB1_72
+ jmp .LBB1_166
+.LBB1_73:
movzx r13d, word ptr [rdx]
- lea r15, [r10 + 31]
- test r10, r10
- cmovns r15, r10
lea eax, [r9 + 7]
test r9d, r9d
cmovns eax, r9d
and eax, -8
sub r9d, eax
- je .LBB1_61
-# %bb.58:
- movsxd rax, r9d
+ je .LBB1_79
+# %bb.74:
+ mov r8d, 8
+ sub r8d, r9d
+ cmp r8, r15
+ cmovg r8, r15
+ test r8, r8
+ jle .LBB1_77
+# %bb.75:
+ movsxd rdx, r9d
+ mov r11, r8
+ mov rcx, rsi
.p2align 4, 0x90
-.LBB1_59: # =>This Inner Loop Header: Depth=1
- cmp word ptr [rsi], r13w
- lea rsi, [rsi + 2]
- sete dl
- neg dl
- lea rbx, [rax + 7]
- test rax, rax
- cmovns rbx, rax
- sar rbx, 3
- movzx r8d, byte ptr [r11 + rbx]
- xor dl, r8b
- lea edi, [8*rbx]
- mov ecx, eax
- sub ecx, edi
- mov edi, 1
+.LBB1_76: # =>This Inner Loop Header: Depth=1
+ lea rsi, [rcx + 2]
+ cmp word ptr [rcx], r13w
+ sete bl
+ neg bl
+ lea rdi, [rdx + 7]
+ test rdx, rdx
+ cmovns rdi, rdx
+ sar rdi, 3
+ mov r12, r14
+ movzx r9d, byte ptr [r14 + rdi]
+ xor bl, r9b
+ lea r10d, [8*rdi]
+ mov ecx, edx
+ sub ecx, r10d
+ mov eax, 1
# kill: def $cl killed $cl killed $ecx
- shl edi, cl
- and dil, dl
- xor dil, r8b
- mov byte ptr [r11 + rbx], dil
- add rax, 1
- cmp rax, 8
- jne .LBB1_59
-# %bb.60:
- add r11, 1
-.LBB1_61:
- sar r15, 5
- cmp r10, 32
- jl .LBB1_120
-# %bb.62:
- mov qword ptr [rsp + 280], r10 # 8-byte Spill
- mov qword ptr [rsp + 168], r15 # 8-byte Spill
- mov qword ptr [rsp + 176], r15 # 8-byte Spill
- mov qword ptr [rsp + 272], r11 # 8-byte Spill
+ shl eax, cl
+ and al, bl
+ xor al, r9b
+ mov byte ptr [r14 + rdi], al
+ add rdx, 1
+ mov rcx, rsi
+ add r11, -1
+ jne .LBB1_76
+.LBB1_77:
+ sub r15, r8
+ je .LBB1_189
+# %bb.78:
+ add r14, 1
+.LBB1_79:
+ lea rax, [r15 + 31]
+ test r15, r15
+ cmovns rax, r15
+ sar rax, 5
+ cmp r15, 32
+ jl .LBB1_83
+# %bb.80:
+ mov qword ptr [rsp + 280], r15 # 8-byte Spill
+ mov qword ptr [rsp + 176], rax # 8-byte Spill
+ mov qword ptr [rsp + 160], rax # 8-byte Spill
.p2align 4, 0x90
-.LBB1_63: # =>This Inner Loop Header: Depth=1
+.LBB1_81: # =>This Inner Loop Header: Depth=1
+ mov qword ptr [rsp + 272], r14 # 8-byte Spill
cmp word ptr [rsi], r13w
- sete byte ptr [rsp + 152] # 1-byte Folded Spill
+ sete byte ptr [rsp + 168] # 1-byte Folded Spill
cmp word ptr [rsi + 2], r13w
sete r10b
cmp word ptr [rsi + 4], r13w
sete r14b
cmp word ptr [rsi + 6], r13w
- sete byte ptr [rsp + 160] # 1-byte Folded Spill
- cmp word ptr [rsi + 8], r13w
sete byte ptr [rsp + 136] # 1-byte Folded Spill
+ cmp word ptr [rsi + 8], r13w
+ sete byte ptr [rsp + 80] # 1-byte Folded Spill
cmp word ptr [rsi + 10], r13w
- sete byte ptr [rsp + 88] # 1-byte Folded Spill
+ sete byte ptr [rsp + 112] # 1-byte Folded Spill
cmp word ptr [rsi + 12], r13w
sete al
cmp word ptr [rsi + 14], r13w
sete bl
cmp word ptr [rsi + 16], r13w
- sete byte ptr [rsp + 104] # 1-byte Folded Spill
+ sete byte ptr [rsp + 144] # 1-byte Folded Spill
cmp word ptr [rsi + 18], r13w
sete dil
cmp word ptr [rsi + 20], r13w
@@ -4300,33 +4490,33 @@ comparison_equal_arr_scalar_avx2: # @comparison_equal_arr_scalar_avx2
cmp word ptr [rsi + 26], r13w
sete r12b
cmp word ptr [rsi + 28], r13w
- sete byte ptr [rsp + 112] # 1-byte Folded Spill
+ sete byte ptr [rsp + 152] # 1-byte Folded Spill
cmp word ptr [rsi + 30], r13w
- sete cl
+ sete dl
cmp word ptr [rsi + 32], r13w
- sete byte ptr [rsp + 72] # 1-byte Folded Spill
+ sete byte ptr [rsp + 96] # 1-byte Folded Spill
cmp word ptr [rsi + 34], r13w
- sete byte ptr [rsp + 120] # 1-byte Folded Spill
+ sete byte ptr [rsp + 64] # 1-byte Folded Spill
cmp word ptr [rsi + 36], r13w
- sete byte ptr [rsp + 128] # 1-byte Folded Spill
+ sete byte ptr [rsp + 72] # 1-byte Folded Spill
cmp word ptr [rsi + 38], r13w
- sete byte ptr [rsp + 144] # 1-byte Folded Spill
+ sete byte ptr [rsp + 88] # 1-byte Folded Spill
cmp word ptr [rsi + 40], r13w
- sete byte ptr [rsp + 80] # 1-byte Folded Spill
+ sete byte ptr [rsp + 104] # 1-byte Folded Spill
cmp word ptr [rsi + 42], r13w
- sete byte ptr [rsp + 96] # 1-byte Folded Spill
+ sete byte ptr [rsp + 120] # 1-byte Folded Spill
cmp word ptr [rsi + 44], r13w
- sete byte ptr [rsp + 64] # 1-byte Folded Spill
+ sete byte ptr [rsp + 128] # 1-byte Folded Spill
cmp word ptr [rsi + 46], r13w
sete r15b
cmp word ptr [rsi + 48], r13w
- sete byte ptr [rsp + 32] # 1-byte Folded Spill
+ sete byte ptr [rsp + 40] # 1-byte Folded Spill
cmp word ptr [rsi + 50], r13w
sete byte ptr [rsp + 48] # 1-byte Folded Spill
cmp word ptr [rsi + 52], r13w
sete byte ptr [rsp + 56] # 1-byte Folded Spill
cmp word ptr [rsi + 54], r13w
- sete byte ptr [rsp + 40] # 1-byte Folded Spill
+ sete byte ptr [rsp + 32] # 1-byte Folded Spill
cmp word ptr [rsi + 56], r13w
sete byte ptr [rsp + 320] # 1-byte Folded Spill
cmp word ptr [rsi + 58], r13w
@@ -4334,176 +4524,195 @@ comparison_equal_arr_scalar_avx2: # @comparison_equal_arr_scalar_avx2
cmp word ptr [rsi + 60], r13w
sete byte ptr [rsp + 28] # 1-byte Folded Spill
cmp word ptr [rsi + 62], r13w
- sete dl
+ sete cl
add r10b, r10b
- add r10b, byte ptr [rsp + 152] # 1-byte Folded Reload
+ add r10b, byte ptr [rsp + 168] # 1-byte Folded Reload
shl al, 6
shl bl, 7
or bl, al
shl r14b, 2
or r14b, r10b
add dil, dil
- add dil, byte ptr [rsp + 104] # 1-byte Folded Reload
- movzx eax, byte ptr [rsp + 160] # 1-byte Folded Reload
+ add dil, byte ptr [rsp + 144] # 1-byte Folded Reload
+ movzx eax, byte ptr [rsp + 136] # 1-byte Folded Reload
shl al, 3
or al, r14b
mov r10d, eax
+ mov r14, qword ptr [rsp + 272] # 8-byte Reload
shl r8b, 2
or r8b, dil
- movzx eax, byte ptr [rsp + 136] # 1-byte Folded Reload
+ movzx eax, byte ptr [rsp + 80] # 1-byte Folded Reload
shl al, 4
or al, r10b
mov edi, eax
shl r9b, 3
or r9b, r8b
- movzx eax, byte ptr [rsp + 88] # 1-byte Folded Reload
+ movzx eax, byte ptr [rsp + 112] # 1-byte Folded Reload
shl al, 5
or al, dil
shl r11b, 4
or r11b, r9b
shl r12b, 5
or r12b, r11b
- movzx edi, byte ptr [rsp + 112] # 1-byte Folded Reload
+ movzx edi, byte ptr [rsp + 152] # 1-byte Folded Reload
shl dil, 6
- shl cl, 7
- or cl, dil
+ shl dl, 7
+ or dl, dil
or bl, al
- or cl, r12b
- movzx eax, byte ptr [rsp + 120] # 1-byte Folded Reload
+ or dl, r12b
+ movzx eax, byte ptr [rsp + 64] # 1-byte Folded Reload
add al, al
- add al, byte ptr [rsp + 72] # 1-byte Folded Reload
+ add al, byte ptr [rsp + 96] # 1-byte Folded Reload
mov edi, eax
- movzx eax, byte ptr [rsp + 128] # 1-byte Folded Reload
+ movzx eax, byte ptr [rsp + 72] # 1-byte Folded Reload
shl al, 2
or al, dil
mov edi, eax
- movzx eax, byte ptr [rsp + 144] # 1-byte Folded Reload
+ movzx eax, byte ptr [rsp + 88] # 1-byte Folded Reload
shl al, 3
or al, dil
mov edi, eax
- movzx eax, byte ptr [rsp + 80] # 1-byte Folded Reload
+ movzx eax, byte ptr [rsp + 104] # 1-byte Folded Reload
shl al, 4
or al, dil
mov edi, eax
- movzx eax, byte ptr [rsp + 96] # 1-byte Folded Reload
+ movzx eax, byte ptr [rsp + 120] # 1-byte Folded Reload
shl al, 5
or al, dil
- mov edi, eax
- mov rax, qword ptr [rsp + 272] # 8-byte Reload
- mov byte ptr [rax], bl
- movzx ebx, byte ptr [rsp + 64] # 1-byte Folded Reload
+ mov byte ptr [r14], bl
+ movzx ebx, byte ptr [rsp + 128] # 1-byte Folded Reload
shl bl, 6
shl r15b, 7
or r15b, bl
- mov byte ptr [rax + 1], cl
- or r15b, dil
- movzx ecx, byte ptr [rsp + 48] # 1-byte Folded Reload
- add cl, cl
- add cl, byte ptr [rsp + 32] # 1-byte Folded Reload
- mov ebx, ecx
- movzx ecx, byte ptr [rsp + 56] # 1-byte Folded Reload
- shl cl, 2
- or cl, bl
- mov ebx, ecx
- movzx ecx, byte ptr [rsp + 40] # 1-byte Folded Reload
- shl cl, 3
- or cl, bl
- mov ebx, ecx
- movzx ecx, byte ptr [rsp + 320] # 1-byte Folded Reload
- shl cl, 4
- or cl, bl
- mov ebx, ecx
- movzx ecx, byte ptr [rsp + 288] # 1-byte Folded Reload
- shl cl, 5
- or cl, bl
- movzx ebx, byte ptr [rsp + 28] # 1-byte Folded Reload
- shl bl, 6
- shl dl, 7
- or dl, bl
- or dl, cl
- mov byte ptr [rax + 2], r15b
- mov byte ptr [rax + 3], dl
+ mov byte ptr [r14 + 1], dl
+ or r15b, al
+ movzx eax, byte ptr [rsp + 48] # 1-byte Folded Reload
+ add al, al
+ add al, byte ptr [rsp + 40] # 1-byte Folded Reload
+ mov edx, eax
+ movzx eax, byte ptr [rsp + 56] # 1-byte Folded Reload
+ shl al, 2
+ or al, dl
+ mov edx, eax
+ movzx eax, byte ptr [rsp + 32] # 1-byte Folded Reload
+ shl al, 3
+ or al, dl
+ mov edx, eax
+ movzx eax, byte ptr [rsp + 320] # 1-byte Folded Reload
+ shl al, 4
+ or al, dl
+ mov edx, eax
+ movzx eax, byte ptr [rsp + 288] # 1-byte Folded Reload
+ shl al, 5
+ or al, dl
+ movzx edx, byte ptr [rsp + 28] # 1-byte Folded Reload
+ shl dl, 6
+ shl cl, 7
+ or cl, dl
+ or cl, al
+ mov byte ptr [r14 + 2], r15b
+ mov byte ptr [r14 + 3], cl
add rsi, 64
- add rax, 4
- mov qword ptr [rsp + 272], rax # 8-byte Spill
- add qword ptr [rsp + 176], -1 # 8-byte Folded Spill
- jne .LBB1_63
-# %bb.64:
- mov r14, qword ptr [rsp + 272] # 8-byte Reload
- mov r10, qword ptr [rsp + 280] # 8-byte Reload
- mov r15, qword ptr [rsp + 168] # 8-byte Reload
- shl r15, 5
- cmp r15, r10
- jl .LBB1_121
- jmp .LBB1_165
-.LBB1_65:
+ add r14, 4
+ add qword ptr [rsp + 160], -1 # 8-byte Folded Spill
+ jne .LBB1_81
+# %bb.82:
+ mov r15, qword ptr [rsp + 280] # 8-byte Reload
+ mov rax, qword ptr [rsp + 176] # 8-byte Reload
+.LBB1_83:
+ shl rax, 5
+ mov r8, r15
+ sub r8, rax
+ jle .LBB1_189
+# %bb.84:
+ or rax, 1
+ cmp r15, rax
+ jne .LBB1_164
+.LBB1_85:
+ xor r11d, r11d
+ jmp .LBB1_166
+.LBB1_86:
mov r13, qword ptr [rdx]
- lea r15, [r10 + 31]
- test r10, r10
- cmovns r15, r10
lea eax, [r9 + 7]
test r9d, r9d
cmovns eax, r9d
and eax, -8
sub r9d, eax
- je .LBB1_69
-# %bb.66:
- movsxd rax, r9d
+ je .LBB1_92
+# %bb.87:
+ mov r8d, 8
+ sub r8d, r9d
+ cmp r8, r15
+ cmovg r8, r15
+ test r8, r8
+ jle .LBB1_90
+# %bb.88:
+ movsxd rdx, r9d
+ mov r11, r8
+ mov rcx, rsi
.p2align 4, 0x90
-.LBB1_67: # =>This Inner Loop Header: Depth=1
- cmp qword ptr [rsi], r13
- lea rsi, [rsi + 8]
- sete dl
- neg dl
- lea rbx, [rax + 7]
- test rax, rax
- cmovns rbx, rax
- sar rbx, 3
- movzx r8d, byte ptr [r11 + rbx]
- xor dl, r8b
- lea edi, [8*rbx]
- mov ecx, eax
- sub ecx, edi
- mov edi, 1
+.LBB1_89: # =>This Inner Loop Header: Depth=1
+ lea rsi, [rcx + 8]
+ cmp qword ptr [rcx], r13
+ sete bl
+ neg bl
+ lea rdi, [rdx + 7]
+ test rdx, rdx
+ cmovns rdi, rdx
+ sar rdi, 3
+ mov r12, r14
+ movzx r9d, byte ptr [r14 + rdi]
+ xor bl, r9b
+ lea r10d, [8*rdi]
+ mov ecx, edx
+ sub ecx, r10d
+ mov eax, 1
# kill: def $cl killed $cl killed $ecx
- shl edi, cl
- and dil, dl
- xor dil, r8b
- mov byte ptr [r11 + rbx], dil
- add rax, 1
- cmp rax, 8
- jne .LBB1_67
-# %bb.68:
- add r11, 1
-.LBB1_69:
- sar r15, 5
- cmp r10, 32
- jl .LBB1_123
-# %bb.70:
- mov qword ptr [rsp + 280], r10 # 8-byte Spill
- mov qword ptr [rsp + 168], r15 # 8-byte Spill
- mov qword ptr [rsp + 176], r15 # 8-byte Spill
- mov qword ptr [rsp + 272], r11 # 8-byte Spill
+ shl eax, cl
+ and al, bl
+ xor al, r9b
+ mov byte ptr [r14 + rdi], al
+ add rdx, 1
+ mov rcx, rsi
+ add r11, -1
+ jne .LBB1_89
+.LBB1_90:
+ sub r15, r8
+ je .LBB1_189
+# %bb.91:
+ add r14, 1
+.LBB1_92:
+ lea rax, [r15 + 31]
+ test r15, r15
+ cmovns rax, r15
+ sar rax, 5
+ cmp r15, 32
+ jl .LBB1_96
+# %bb.93:
+ mov qword ptr [rsp + 280], r15 # 8-byte Spill
+ mov qword ptr [rsp + 176], rax # 8-byte Spill
+ mov qword ptr [rsp + 160], rax # 8-byte Spill
.p2align 4, 0x90
-.LBB1_71: # =>This Inner Loop Header: Depth=1
+.LBB1_94: # =>This Inner Loop Header: Depth=1
+ mov qword ptr [rsp + 272], r14 # 8-byte Spill
cmp qword ptr [rsi], r13
- sete byte ptr [rsp + 152] # 1-byte Folded Spill
+ sete byte ptr [rsp + 168] # 1-byte Folded Spill
cmp qword ptr [rsi + 8], r13
sete r10b
cmp qword ptr [rsi + 16], r13
sete r14b
cmp qword ptr [rsi + 24], r13
- sete byte ptr [rsp + 160] # 1-byte Folded Spill
- cmp qword ptr [rsi + 32], r13
sete byte ptr [rsp + 136] # 1-byte Folded Spill
+ cmp qword ptr [rsi + 32], r13
+ sete byte ptr [rsp + 80] # 1-byte Folded Spill
cmp qword ptr [rsi + 40], r13
- sete byte ptr [rsp + 88] # 1-byte Folded Spill
+ sete byte ptr [rsp + 112] # 1-byte Folded Spill
cmp qword ptr [rsi + 48], r13
sete al
cmp qword ptr [rsi + 56], r13
sete bl
cmp qword ptr [rsi + 64], r13
- sete byte ptr [rsp + 104] # 1-byte Folded Spill
+ sete byte ptr [rsp + 144] # 1-byte Folded Spill
cmp qword ptr [rsi + 72], r13
sete dil
cmp qword ptr [rsi + 80], r13
@@ -4515,33 +4724,33 @@ comparison_equal_arr_scalar_avx2: # @comparison_equal_arr_scalar_avx2
cmp qword ptr [rsi + 104], r13
sete r12b
cmp qword ptr [rsi + 112], r13
- sete byte ptr [rsp + 112] # 1-byte Folded Spill
+ sete byte ptr [rsp + 152] # 1-byte Folded Spill
cmp qword ptr [rsi + 120], r13
- sete cl
+ sete dl
cmp qword ptr [rsi + 128], r13
- sete byte ptr [rsp + 72] # 1-byte Folded Spill
+ sete byte ptr [rsp + 96] # 1-byte Folded Spill
cmp qword ptr [rsi + 136], r13
- sete byte ptr [rsp + 120] # 1-byte Folded Spill
+ sete byte ptr [rsp + 64] # 1-byte Folded Spill
cmp qword ptr [rsi + 144], r13
- sete byte ptr [rsp + 128] # 1-byte Folded Spill
+ sete byte ptr [rsp + 72] # 1-byte Folded Spill
cmp qword ptr [rsi + 152], r13
- sete byte ptr [rsp + 144] # 1-byte Folded Spill
+ sete byte ptr [rsp + 88] # 1-byte Folded Spill
cmp qword ptr [rsi + 160], r13
- sete byte ptr [rsp + 80] # 1-byte Folded Spill
+ sete byte ptr [rsp + 104] # 1-byte Folded Spill
cmp qword ptr [rsi + 168], r13
- sete byte ptr [rsp + 96] # 1-byte Folded Spill
+ sete byte ptr [rsp + 120] # 1-byte Folded Spill
cmp qword ptr [rsi + 176], r13
- sete byte ptr [rsp + 64] # 1-byte Folded Spill
+ sete byte ptr [rsp + 128] # 1-byte Folded Spill
cmp qword ptr [rsi + 184], r13
sete r15b
cmp qword ptr [rsi + 192], r13
- sete byte ptr [rsp + 32] # 1-byte Folded Spill
+ sete byte ptr [rsp + 40] # 1-byte Folded Spill
cmp qword ptr [rsi + 200], r13
sete byte ptr [rsp + 48] # 1-byte Folded Spill
cmp qword ptr [rsi + 208], r13
sete byte ptr [rsp + 56] # 1-byte Folded Spill
cmp qword ptr [rsi + 216], r13
- sete byte ptr [rsp + 40] # 1-byte Folded Spill
+ sete byte ptr [rsp + 32] # 1-byte Folded Spill
cmp qword ptr [rsi + 224], r13
sete byte ptr [rsp + 320] # 1-byte Folded Spill
cmp qword ptr [rsi + 232], r13
@@ -4549,173 +4758,196 @@ comparison_equal_arr_scalar_avx2: # @comparison_equal_arr_scalar_avx2
cmp qword ptr [rsi + 240], r13
sete byte ptr [rsp + 28] # 1-byte Folded Spill
cmp qword ptr [rsi + 248], r13
- sete dl
+ sete cl
add r10b, r10b
- add r10b, byte ptr [rsp + 152] # 1-byte Folded Reload
+ add r10b, byte ptr [rsp + 168] # 1-byte Folded Reload
shl al, 6
shl bl, 7
or bl, al
shl r14b, 2
or r14b, r10b
add dil, dil
- add dil, byte ptr [rsp + 104] # 1-byte Folded Reload
- movzx eax, byte ptr [rsp + 160] # 1-byte Folded Reload
+ add dil, byte ptr [rsp + 144] # 1-byte Folded Reload
+ movzx eax, byte ptr [rsp + 136] # 1-byte Folded Reload
shl al, 3
or al, r14b
mov r10d, eax
+ mov r14, qword ptr [rsp + 272] # 8-byte Reload
shl r8b, 2
or r8b, dil
- movzx eax, byte ptr [rsp + 136] # 1-byte Folded Reload
+ movzx eax, byte ptr [rsp + 80] # 1-byte Folded Reload
shl al, 4
or al, r10b
mov edi, eax
shl r9b, 3
or r9b, r8b
- movzx eax, byte ptr [rsp + 88] # 1-byte Folded Reload
+ movzx eax, byte ptr [rsp + 112] # 1-byte Folded Reload
shl al, 5
or al, dil
shl r11b, 4
or r11b, r9b
shl r12b, 5
or r12b, r11b
- movzx edi, byte ptr [rsp + 112] # 1-byte Folded Reload
+ movzx edi, byte ptr [rsp + 152] # 1-byte Folded Reload
shl dil, 6
- shl cl, 7
- or cl, dil
+ shl dl, 7
+ or dl, dil
or bl, al
- or cl, r12b
- movzx eax, byte ptr [rsp + 120] # 1-byte Folded Reload
+ or dl, r12b
+ movzx eax, byte ptr [rsp + 64] # 1-byte Folded Reload
add al, al
- add al, byte ptr [rsp + 72] # 1-byte Folded Reload
+ add al, byte ptr [rsp + 96] # 1-byte Folded Reload
mov edi, eax
- movzx eax, byte ptr [rsp + 128] # 1-byte Folded Reload
+ movzx eax, byte ptr [rsp + 72] # 1-byte Folded Reload
shl al, 2
or al, dil
mov edi, eax
- movzx eax, byte ptr [rsp + 144] # 1-byte Folded Reload
+ movzx eax, byte ptr [rsp + 88] # 1-byte Folded Reload
shl al, 3
or al, dil
mov edi, eax
- movzx eax, byte ptr [rsp + 80] # 1-byte Folded Reload
+ movzx eax, byte ptr [rsp + 104] # 1-byte Folded Reload
shl al, 4
or al, dil
mov edi, eax
- movzx eax, byte ptr [rsp + 96] # 1-byte Folded Reload
+ movzx eax, byte ptr [rsp + 120] # 1-byte Folded Reload
shl al, 5
or al, dil
- mov edi, eax
- mov rax, qword ptr [rsp + 272] # 8-byte Reload
- mov byte ptr [rax], bl
- movzx ebx, byte ptr [rsp + 64] # 1-byte Folded Reload
+ mov byte ptr [r14], bl
+ movzx ebx, byte ptr [rsp + 128] # 1-byte Folded Reload
shl bl, 6
shl r15b, 7
or r15b, bl
- mov byte ptr [rax + 1], cl
- or r15b, dil
- movzx ecx, byte ptr [rsp + 48] # 1-byte Folded Reload
- add cl, cl
- add cl, byte ptr [rsp + 32] # 1-byte Folded Reload
- mov ebx, ecx
- movzx ecx, byte ptr [rsp + 56] # 1-byte Folded Reload
- shl cl, 2
- or cl, bl
- mov ebx, ecx
- movzx ecx, byte ptr [rsp + 40] # 1-byte Folded Reload
- shl cl, 3
- or cl, bl
- mov ebx, ecx
- movzx ecx, byte ptr [rsp + 320] # 1-byte Folded Reload
- shl cl, 4
- or cl, bl
- mov ebx, ecx
- movzx ecx, byte ptr [rsp + 288] # 1-byte Folded Reload
- shl cl, 5
- or cl, bl
- movzx ebx, byte ptr [rsp + 28] # 1-byte Folded Reload
- shl bl, 6
- shl dl, 7
- or dl, bl
- or dl, cl
- mov byte ptr [rax + 2], r15b
- mov byte ptr [rax + 3], dl
+ mov byte ptr [r14 + 1], dl
+ or r15b, al
+ movzx eax, byte ptr [rsp + 48] # 1-byte Folded Reload
+ add al, al
+ add al, byte ptr [rsp + 40] # 1-byte Folded Reload
+ mov edx, eax
+ movzx eax, byte ptr [rsp + 56] # 1-byte Folded Reload
+ shl al, 2
+ or al, dl
+ mov edx, eax
+ movzx eax, byte ptr [rsp + 32] # 1-byte Folded Reload
+ shl al, 3
+ or al, dl
+ mov edx, eax
+ movzx eax, byte ptr [rsp + 320] # 1-byte Folded Reload
+ shl al, 4
+ or al, dl
+ mov edx, eax
+ movzx eax, byte ptr [rsp + 288] # 1-byte Folded Reload
+ shl al, 5
+ or al, dl
+ movzx edx, byte ptr [rsp + 28] # 1-byte Folded Reload
+ shl dl, 6
+ shl cl, 7
+ or cl, dl
+ or cl, al
+ mov byte ptr [r14 + 2], r15b
+ mov byte ptr [r14 + 3], cl
add rsi, 256
- add rax, 4
- mov qword ptr [rsp + 272], rax # 8-byte Spill
- add qword ptr [rsp + 176], -1 # 8-byte Folded Spill
- jne .LBB1_71
-# %bb.72:
- mov r14, qword ptr [rsp + 272] # 8-byte Reload
- mov r10, qword ptr [rsp + 280] # 8-byte Reload
- mov r15, qword ptr [rsp + 168] # 8-byte Reload
- shl r15, 5
- cmp r15, r10
- jl .LBB1_124
- jmp .LBB1_165
-.LBB1_73:
- lea r15, [r10 + 31]
- test r10, r10
- cmovns r15, r10
+ add r14, 4
+ add qword ptr [rsp + 160], -1 # 8-byte Folded Spill
+ jne .LBB1_94
+# %bb.95:
+ mov r15, qword ptr [rsp + 280] # 8-byte Reload
+ mov rax, qword ptr [rsp + 176] # 8-byte Reload
+.LBB1_96:
+ shl rax, 5
+ mov r8, r15
+ sub r8, rax
+ jle .LBB1_189
+# %bb.97:
+ or rax, 1
+ cmp r15, rax
+ jne .LBB1_168
+.LBB1_98:
+ xor r11d, r11d
+ jmp .LBB1_170
+.LBB1_99:
+ mov r12d, dword ptr [rdx]
lea eax, [r9 + 7]
test r9d, r9d
cmovns eax, r9d
and eax, -8
- vmovss xmm0, dword ptr [rdx] # xmm0 = mem[0],zero,zero,zero
sub r9d, eax
- je .LBB1_77
-# %bb.74:
- movsxd rax, r9d
+ je .LBB1_105
+# %bb.100:
+ mov r8d, 8
+ sub r8d, r9d
+ cmp r8, r15
+ cmovg r8, r15
+ test r8, r8
+ jle .LBB1_103
+# %bb.101:
+ movsxd rdx, r9d
+ vmovd xmm0, r12d
+ mov r11, r8
+ mov rcx, rsi
.p2align 4, 0x90
-.LBB1_75: # =>This Inner Loop Header: Depth=1
- vucomiss xmm0, dword ptr [rsi]
- lea rsi, [rsi + 4]
+.LBB1_102: # =>This Inner Loop Header: Depth=1
+ vucomiss xmm0, dword ptr [rcx]
+ lea rsi, [rcx + 4]
setnp cl
- sete dl
- and dl, cl
- neg dl
- lea rdi, [rax + 7]
- test rax, rax
- cmovns rdi, rax
- sar rdi, 3
- movzx r9d, byte ptr [r11 + rdi]
- xor dl, r9b
- lea r8d, [8*rdi]
- mov ecx, eax
- sub ecx, r8d
- mov ebx, 1
- # kill: def $cl killed $cl killed $ecx
- shl ebx, cl
- and bl, dl
+ sete bl
+ and bl, cl
+ neg bl
+ lea rax, [rdx + 7]
+ test rdx, rdx
+ cmovns rax, rdx
+ sar rax, 3
+ mov r13, r14
+ movzx r9d, byte ptr [r14 + rax]
xor bl, r9b
- mov byte ptr [r11 + rdi], bl
- add rax, 1
- cmp rax, 8
- jne .LBB1_75
-# %bb.76:
- add r11, 1
-.LBB1_77:
- sar r15, 5
- cmp r10, 32
- jl .LBB1_126
-# %bb.78:
- mov qword ptr [rsp + 280], r10 # 8-byte Spill
- mov qword ptr [rsp + 168], r15 # 8-byte Spill
- mov qword ptr [rsp + 176], r15 # 8-byte Spill
- mov qword ptr [rsp + 272], r11 # 8-byte Spill
+ lea r10d, [8*rax]
+ mov ecx, edx
+ sub ecx, r10d
+ mov edi, 1
+ # kill: def $cl killed $cl killed $ecx
+ shl edi, cl
+ and dil, bl
+ xor dil, r9b
+ mov byte ptr [r14 + rax], dil
+ add rdx, 1
+ mov rcx, rsi
+ add r11, -1
+ jne .LBB1_102
+.LBB1_103:
+ sub r15, r8
+ je .LBB1_189
+# %bb.104:
+ add r14, 1
+.LBB1_105:
+ lea rax, [r15 + 31]
+ test r15, r15
+ cmovns rax, r15
+ sar rax, 5
+ cmp r15, 32
+ jl .LBB1_109
+# %bb.106:
+ mov qword ptr [rsp + 280], r15 # 8-byte Spill
+ mov dword ptr [rsp + 192], r12d # 4-byte Spill
+ vmovd xmm0, r12d
+ mov qword ptr [rsp + 184], rax # 8-byte Spill
+ mov qword ptr [rsp + 176], rax # 8-byte Spill
.p2align 4, 0x90
-.LBB1_79: # =>This Inner Loop Header: Depth=1
+.LBB1_107: # =>This Inner Loop Header: Depth=1
+ mov qword ptr [rsp + 272], r14 # 8-byte Spill
vucomiss xmm0, dword ptr [rsi]
setnp al
sete cl
and cl, al
- mov byte ptr [rsp + 32], cl # 1-byte Spill
+ mov byte ptr [rsp + 56], cl # 1-byte Spill
vucomiss xmm0, dword ptr [rsi + 4]
setnp al
- sete bl
- and bl, al
- vucomiss xmm0, dword ptr [rsi + 8]
- setnp al
sete r13b
and r13b, al
+ vucomiss xmm0, dword ptr [rsi + 8]
+ setnp al
+ sete cl
+ and cl, al
+ mov byte ptr [rsp + 32], cl # 1-byte Spill
vucomiss xmm0, dword ptr [rsi + 12]
setnp al
sete cl
@@ -4725,16 +4957,16 @@ comparison_equal_arr_scalar_avx2: # @comparison_equal_arr_scalar_avx2
setnp al
sete cl
and cl, al
- mov byte ptr [rsp + 288], cl # 1-byte Spill
+ mov byte ptr [rsp + 40], cl # 1-byte Spill
vucomiss xmm0, dword ptr [rsi + 20]
setnp al
- sete dil
- and dil, al
+ sete r12b
+ and r12b, al
vucomiss xmm0, dword ptr [rsi + 24]
setnp al
sete cl
and cl, al
- mov byte ptr [rsp + 56], cl # 1-byte Spill
+ mov byte ptr [rsp + 128], cl # 1-byte Spill
vucomiss xmm0, dword ptr [rsi + 28]
setnp al
sete cl
@@ -4744,516 +4976,348 @@ comparison_equal_arr_scalar_avx2: # @comparison_equal_arr_scalar_avx2
setnp al
sete cl
and cl, al
- mov byte ptr [rsp + 40], cl # 1-byte Spill
+ mov byte ptr [rsp + 48], cl # 1-byte Spill
vucomiss xmm0, dword ptr [rsi + 36]
setnp al
sete cl
and cl, al
- mov byte ptr [rsp + 48], cl # 1-byte Spill
+ mov byte ptr [rsp + 120], cl # 1-byte Spill
vucomiss xmm0, dword ptr [rsi + 40]
setnp al
sete cl
and cl, al
- mov byte ptr [rsp + 64], cl # 1-byte Spill
+ mov byte ptr [rsp + 112], cl # 1-byte Spill
vucomiss xmm0, dword ptr [rsi + 44]
setnp al
- sete cl
- and cl, al
- mov byte ptr [rsp + 96], cl # 1-byte Spill
+ sete bl
+ and bl, al
vucomiss xmm0, dword ptr [rsi + 48]
setnp al
sete cl
and cl, al
- mov byte ptr [rsp + 88], cl # 1-byte Spill
+ mov byte ptr [rsp + 288], cl # 1-byte Spill
vucomiss xmm0, dword ptr [rsi + 52]
setnp al
sete cl
and cl, al
- mov byte ptr [rsp + 80], cl # 1-byte Spill
+ mov byte ptr [rsp + 96], cl # 1-byte Spill
vucomiss xmm0, dword ptr [rsi + 56]
setnp al
- sete dl
- and dl, al
+ sete cl
+ and cl, al
+ mov byte ptr [rsp + 88], cl # 1-byte Spill
vucomiss xmm0, dword ptr [rsi + 60]
setnp al
sete cl
and cl, al
- mov byte ptr [rsp + 72], cl # 1-byte Spill
+ mov byte ptr [rsp + 80], cl # 1-byte Spill
vucomiss xmm0, dword ptr [rsi + 64]
setnp al
sete cl
and cl, al
- mov byte ptr [rsp + 144], cl # 1-byte Spill
+ mov byte ptr [rsp + 104], cl # 1-byte Spill
vucomiss xmm0, dword ptr [rsi + 68]
setnp al
sete cl
and cl, al
- mov byte ptr [rsp + 136], cl # 1-byte Spill
+ mov byte ptr [rsp + 72], cl # 1-byte Spill
vucomiss xmm0, dword ptr [rsi + 72]
setnp al
sete cl
and cl, al
+ mov byte ptr [rsp + 64], cl # 1-byte Spill
vucomiss xmm0, dword ptr [rsi + 76]
- setnp r8b
- sete al
- and al, r8b
- mov byte ptr [rsp + 128], al # 1-byte Spill
+ setnp al
+ sete r14b
+ and r14b, al
vucomiss xmm0, dword ptr [rsi + 80]
- setnp r8b
- sete al
- and al, r8b
- mov byte ptr [rsp + 120], al # 1-byte Spill
+ setnp al
+ sete cl
+ and cl, al
+ mov byte ptr [rsp + 152], cl # 1-byte Spill
vucomiss xmm0, dword ptr [rsi + 84]
- setnp r8b
- sete al
- and al, r8b
- mov byte ptr [rsp + 104], al # 1-byte Spill
+ setnp al
+ sete cl
+ and cl, al
+ mov byte ptr [rsp + 144], cl # 1-byte Spill
vucomiss xmm0, dword ptr [rsi + 88]
setnp al
- sete r12b
- and r12b, al
+ sete r15b
+ and r15b, al
vucomiss xmm0, dword ptr [rsi + 92]
setnp al
sete r10b
and r10b, al
vucomiss xmm0, dword ptr [rsi + 96]
- setnp r8b
- sete al
- and al, r8b
- mov byte ptr [rsp + 112], al # 1-byte Spill
+ setnp al
+ sete cl
+ and cl, al
+ mov byte ptr [rsp + 136], cl # 1-byte Spill
vucomiss xmm0, dword ptr [rsi + 100]
setnp al
- sete r15b
- and r15b, al
+ sete r11b
+ and r11b, al
vucomiss xmm0, dword ptr [rsi + 104]
setnp al
- sete r14b
- and r14b, al
+ sete r9b
+ and r9b, al
vucomiss xmm0, dword ptr [rsi + 108]
setnp al
- sete r11b
- and r11b, al
+ sete r8b
+ and r8b, al
vucomiss xmm0, dword ptr [rsi + 112]
- setnp r8b
- sete al
- and al, r8b
- mov byte ptr [rsp + 160], al # 1-byte Spill
+ setnp al
+ sete cl
+ and cl, al
+ mov byte ptr [rsp + 168], cl # 1-byte Spill
vucomiss xmm0, dword ptr [rsi + 116]
- setnp r8b
- sete al
- and al, r8b
- mov byte ptr [rsp + 152], al # 1-byte Spill
+ setnp al
+ sete cl
+ and cl, al
+ mov byte ptr [rsp + 160], cl # 1-byte Spill
vucomiss xmm0, dword ptr [rsi + 120]
setnp al
- sete r9b
- and r9b, al
+ sete dil
+ and dil, al
vucomiss xmm0, dword ptr [rsi + 124]
setnp al
- sete r8b
- and r8b, al
- add bl, bl
- add bl, byte ptr [rsp + 32] # 1-byte Folded Reload
- shl dil, 5
- movzx eax, byte ptr [rsp + 56] # 1-byte Folded Reload
- shl al, 6
- or al, dil
- mov edi, eax
- shl r13b, 2
- or r13b, bl
- movzx eax, byte ptr [rsp + 48] # 1-byte Folded Reload
- add al, al
- add al, byte ptr [rsp + 40] # 1-byte Folded Reload
- mov ebx, eax
+ sete dl
+ and dl, al
+ add r13b, r13b
+ add r13b, byte ptr [rsp + 56] # 1-byte Folded Reload
+ mov eax, r13d
+ shl r12b, 5
+ movzx r13d, byte ptr [rsp + 128] # 1-byte Folded Reload
+ shl r13b, 6
+ or r13b, r12b
+ movzx r12d, byte ptr [rsp + 32] # 1-byte Folded Reload
+ shl r12b, 2
+ or r12b, al
+ movzx ecx, byte ptr [rsp + 120] # 1-byte Folded Reload
+ add cl, cl
+ add cl, byte ptr [rsp + 48] # 1-byte Folded Reload
movzx eax, byte ptr [rsp + 28] # 1-byte Folded Reload
shl al, 7
- or al, dil
+ or al, r13b
mov byte ptr [rsp + 28], al # 1-byte Spill
- movzx eax, byte ptr [rsp + 64] # 1-byte Folded Reload
+ movzx eax, byte ptr [rsp + 112] # 1-byte Folded Reload
shl al, 2
- or al, bl
- mov ebx, eax
- movzx eax, byte ptr [rsp + 320] # 1-byte Folded Reload
- shl al, 3
- or al, r13b
- mov r13d, eax
- movzx eax, byte ptr [rsp + 96] # 1-byte Folded Reload
+ or al, cl
+ mov ecx, eax
+ movzx eax, byte ptr [rsp + 320] # 1-byte Folded Reload
shl al, 3
- or al, bl
- mov edi, eax
+ or al, r12b
+ shl bl, 3
+ or bl, cl
+ movzx r13d, byte ptr [rsp + 40] # 1-byte Folded Reload
+ shl r13b, 4
+ or r13b, al
movzx eax, byte ptr [rsp + 288] # 1-byte Folded Reload
shl al, 4
- or al, r13b
- movzx ebx, byte ptr [rsp + 88] # 1-byte Folded Reload
- shl bl, 4
- or bl, dil
- movzx edi, byte ptr [rsp + 80] # 1-byte Folded Reload
- shl dil, 5
- shl dl, 6
- or dl, dil
- movzx r13d, byte ptr [rsp + 72] # 1-byte Folded Reload
- shl r13b, 7
- or r13b, dl
- movzx edx, byte ptr [rsp + 136] # 1-byte Folded Reload
- add dl, dl
- add dl, byte ptr [rsp + 144] # 1-byte Folded Reload
- shl cl, 2
- or cl, dl
- movzx edx, byte ptr [rsp + 128] # 1-byte Folded Reload
- shl dl, 3
- or dl, cl
- mov ecx, edx
- movzx edx, byte ptr [rsp + 120] # 1-byte Folded Reload
- shl dl, 4
- or dl, cl
- movzx ecx, byte ptr [rsp + 28] # 1-byte Folded Reload
- or cl, al
- movzx eax, byte ptr [rsp + 104] # 1-byte Folded Reload
- shl al, 5
- shl r12b, 6
- or r12b, al
- or r13b, bl
+ or al, bl
+ mov byte ptr [rsp + 288], al # 1-byte Spill
+ movzx ecx, byte ptr [rsp + 96] # 1-byte Folded Reload
+ shl cl, 5
+ movzx eax, byte ptr [rsp + 88] # 1-byte Folded Reload
+ shl al, 6
+ or al, cl
+ mov ecx, eax
+ movzx eax, byte ptr [rsp + 80] # 1-byte Folded Reload
+ shl al, 7
+ or al, cl
+ movzx ecx, byte ptr [rsp + 72] # 1-byte Folded Reload
+ add cl, cl
+ add cl, byte ptr [rsp + 104] # 1-byte Folded Reload
+ movzx ebx, byte ptr [rsp + 64] # 1-byte Folded Reload
+ shl bl, 2
+ or bl, cl
+ shl r14b, 3
+ or r14b, bl
+ movzx ecx, byte ptr [rsp + 152] # 1-byte Folded Reload
+ shl cl, 4
+ or cl, r14b
+ mov r14, qword ptr [rsp + 272] # 8-byte Reload
+ movzx r12d, byte ptr [rsp + 28] # 1-byte Folded Reload
+ or r12b, r13b
+ movzx ebx, byte ptr [rsp + 144] # 1-byte Folded Reload
+ shl bl, 5
+ shl r15b, 6
+ or r15b, bl
+ or al, byte ptr [rsp + 288] # 1-byte Folded Reload
shl r10b, 7
- or r10b, r12b
- or r10b, dl
- add r15b, r15b
- add r15b, byte ptr [rsp + 112] # 1-byte Folded Reload
- shl r14b, 2
- or r14b, r15b
- shl r11b, 3
- or r11b, r14b
- movzx eax, byte ptr [rsp + 160] # 1-byte Folded Reload
- shl al, 4
- or al, r11b
- mov ebx, eax
- mov rax, qword ptr [rsp + 272] # 8-byte Reload
- mov byte ptr [rax], cl
- movzx edx, byte ptr [rsp + 152] # 1-byte Folded Reload
- shl dl, 5
- shl r9b, 6
- or r9b, dl
- mov byte ptr [rax + 1], r13b
- shl r8b, 7
+ or r10b, r15b
+ or r10b, cl
+ add r11b, r11b
+ add r11b, byte ptr [rsp + 136] # 1-byte Folded Reload
+ shl r9b, 2
+ or r9b, r11b
+ shl r8b, 3
or r8b, r9b
- or r8b, bl
- mov byte ptr [rax + 2], r10b
- mov byte ptr [rax + 3], r8b
+ movzx ecx, byte ptr [rsp + 168] # 1-byte Folded Reload
+ shl cl, 4
+ or cl, r8b
+ mov byte ptr [r14], r12b
+ movzx ebx, byte ptr [rsp + 160] # 1-byte Folded Reload
+ shl bl, 5
+ shl dil, 6
+ or dil, bl
+ mov byte ptr [r14 + 1], al
+ shl dl, 7
+ or dl, dil
+ or dl, cl
+ mov byte ptr [r14 + 2], r10b
+ mov byte ptr [r14 + 3], dl
add rsi, 128
- add rax, 4
- mov qword ptr [rsp + 272], rax # 8-byte Spill
+ add r14, 4
add qword ptr [rsp + 176], -1 # 8-byte Folded Spill
- jne .LBB1_79
-# %bb.80:
- mov r14, qword ptr [rsp + 272] # 8-byte Reload
- mov r10, qword ptr [rsp + 280] # 8-byte Reload
- mov r15, qword ptr [rsp + 168] # 8-byte Reload
- shl r15, 5
- cmp r15, r10
- jl .LBB1_127
- jmp .LBB1_165
-.LBB1_81:
- mov r14b, byte ptr [rdx]
- lea r15, [r10 + 31]
- test r10, r10
- cmovns r15, r10
+ jne .LBB1_107
+# %bb.108:
+ mov r15, qword ptr [rsp + 280] # 8-byte Reload
+ mov r12d, dword ptr [rsp + 192] # 4-byte Reload
+ mov rax, qword ptr [rsp + 184] # 8-byte Reload
+.LBB1_109:
+ shl rax, 5
+ mov r8, r15
+ sub r8, rax
+ jle .LBB1_189
+# %bb.110:
+ vmovd xmm0, r12d
+ or rax, 1
+ cmp r15, rax
+ jne .LBB1_172
+# %bb.111:
+ xor r11d, r11d
+ jmp .LBB1_174
+.LBB1_112:
+ mov r12b, byte ptr [rdx]
lea eax, [r9 + 7]
test r9d, r9d
cmovns eax, r9d
and eax, -8
sub r9d, eax
- je .LBB1_85
-# %bb.82:
- movsxd rax, r9d
- .p2align 4, 0x90
-.LBB1_83: # =>This Inner Loop Header: Depth=1
- cmp byte ptr [rsi], r14b
- lea rsi, [rsi + 1]
- sete dl
- neg dl
- lea rdi, [rax + 7]
- test rax, rax
- cmovns rdi, rax
- sar rdi, 3
- movzx r9d, byte ptr [r11 + rdi]
- xor dl, r9b
- lea r8d, [8*rdi]
- mov ecx, eax
- sub ecx, r8d
- mov ebx, 1
- # kill: def $cl killed $cl killed $ecx
- shl ebx, cl
- and bl, dl
- xor bl, r9b
- mov byte ptr [r11 + rdi], bl
- add rax, 1
- cmp rax, 8
- jne .LBB1_83
-# %bb.84:
- add r11, 1
-.LBB1_85:
- sar r15, 5
- cmp r10, 32
- jl .LBB1_129
-# %bb.86:
- cmp r15, 32
- mov dword ptr [rsp + 28], r14d # 4-byte Spill
- mov qword ptr [rsp + 280], r10 # 8-byte Spill
- mov qword ptr [rsp + 392], r15 # 8-byte Spill
- jb .LBB1_89
-# %bb.87:
- mov rax, r15
- shl rax, 5
- add rax, rsi
- cmp r11, rax
- jae .LBB1_169
-# %bb.88:
- lea rax, [r11 + 4*r15]
- cmp rsi, rax
- jae .LBB1_169
-.LBB1_89:
- xor eax, eax
- mov qword ptr [rsp + 384], rax # 8-byte Spill
- mov r12, rsi
- mov qword ptr [rsp + 376], r11 # 8-byte Spill
-.LBB1_90:
- sub r15, qword ptr [rsp + 384] # 8-byte Folded Reload
- mov qword ptr [rsp + 152], r15 # 8-byte Spill
+ je .LBB1_131
+# %bb.113:
+ mov r8d, 8
+ sub r8d, r9d
+ cmp r8, r15
+ cmovg r8, r15
+ test r8, r8
+ jle .LBB1_146
+# %bb.114:
+ movsxd rdx, r9d
+ mov r11, r8
.p2align 4, 0x90
-.LBB1_91: # =>This Inner Loop Header: Depth=1
- mov rcx, r12
- cmp byte ptr [r12], r14b
- sete byte ptr [rsp + 32] # 1-byte Folded Spill
- cmp byte ptr [r12 + 1], r14b
- sete r8b
- cmp byte ptr [r12 + 2], r14b
- sete r15b
- cmp byte ptr [r12 + 3], r14b
- sete r13b
- cmp byte ptr [r12 + 4], r14b
- sete byte ptr [rsp + 160] # 1-byte Folded Spill
- cmp byte ptr [r12 + 5], r14b
- sete byte ptr [rsp + 112] # 1-byte Folded Spill
- cmp byte ptr [r12 + 6], r14b
- sete al
- cmp byte ptr [r12 + 7], r14b
- sete r11b
- cmp byte ptr [r12 + 8], r14b
- sete byte ptr [rsp + 320] # 1-byte Folded Spill
- cmp byte ptr [r12 + 9], r14b
- sete dl
- cmp byte ptr [r12 + 10], r14b
- sete sil
- cmp byte ptr [r12 + 11], r14b
- sete dil
- cmp byte ptr [r12 + 12], r14b
- sete r10b
- cmp byte ptr [r12 + 13], r14b
- sete r12b
- cmp byte ptr [rcx + 14], r14b
- sete byte ptr [rsp + 104] # 1-byte Folded Spill
- cmp byte ptr [rcx + 15], r14b
- sete r9b
- cmp byte ptr [rcx + 16], r14b
- sete byte ptr [rsp + 288] # 1-byte Folded Spill
- cmp byte ptr [rcx + 17], r14b
- sete byte ptr [rsp + 136] # 1-byte Folded Spill
- cmp byte ptr [rcx + 18], r14b
- sete byte ptr [rsp + 120] # 1-byte Folded Spill
- cmp byte ptr [rcx + 19], r14b
- sete byte ptr [rsp + 128] # 1-byte Folded Spill
- cmp byte ptr [rcx + 20], r14b
- sete byte ptr [rsp + 144] # 1-byte Folded Spill
- cmp byte ptr [rcx + 21], r14b
- sete byte ptr [rsp + 72] # 1-byte Folded Spill
- cmp byte ptr [rcx + 22], r14b
- sete byte ptr [rsp + 80] # 1-byte Folded Spill
- cmp byte ptr [rcx + 23], r14b
- sete r14b
- mov ebx, dword ptr [rsp + 28] # 4-byte Reload
- cmp byte ptr [rcx + 24], bl
- sete byte ptr [rsp + 272] # 1-byte Folded Spill
- mov ebx, dword ptr [rsp + 28] # 4-byte Reload
- cmp byte ptr [rcx + 25], bl
- sete byte ptr [rsp + 88] # 1-byte Folded Spill
- mov ebx, dword ptr [rsp + 28] # 4-byte Reload
- cmp byte ptr [rcx + 26], bl
- sete byte ptr [rsp + 96] # 1-byte Folded Spill
- mov ebx, dword ptr [rsp + 28] # 4-byte Reload
- cmp byte ptr [rcx + 27], bl
- sete byte ptr [rsp + 64] # 1-byte Folded Spill
- mov ebx, dword ptr [rsp + 28] # 4-byte Reload
- cmp byte ptr [rcx + 28], bl
- sete byte ptr [rsp + 48] # 1-byte Folded Spill
- mov ebx, dword ptr [rsp + 28] # 4-byte Reload
- cmp byte ptr [rcx + 29], bl
- sete byte ptr [rsp + 56] # 1-byte Folded Spill
- mov ebx, dword ptr [rsp + 28] # 4-byte Reload
- cmp byte ptr [rcx + 30], bl
- sete byte ptr [rsp + 40] # 1-byte Folded Spill
- mov ebx, dword ptr [rsp + 28] # 4-byte Reload
- cmp byte ptr [rcx + 31], bl
+.LBB1_115: # =>This Inner Loop Header: Depth=1
+ lea rdi, [rsi + 1]
+ cmp byte ptr [rsi], r12b
sete bl
- add r8b, r8b
- add r8b, byte ptr [rsp + 32] # 1-byte Folded Reload
- shl al, 6
- shl r11b, 7
- or r11b, al
- shl r15b, 2
- or r15b, r8b
- add dl, dl
- add dl, byte ptr [rsp + 320] # 1-byte Folded Reload
- shl r13b, 3
- or r13b, r15b
- shl sil, 2
- or sil, dl
- movzx edx, byte ptr [rsp + 160] # 1-byte Folded Reload
- shl dl, 4
- or dl, r13b
- mov r8d, edx
- shl dil, 3
- or dil, sil
- movzx edx, byte ptr [rsp + 112] # 1-byte Folded Reload
- shl dl, 5
- or dl, r8b
- shl r10b, 4
- or r10b, dil
- shl r12b, 5
- or r12b, r10b
- movzx esi, byte ptr [rsp + 104] # 1-byte Folded Reload
- shl sil, 6
- shl r9b, 7
- or r9b, sil
- or r11b, dl
- or r9b, r12b
- movzx eax, byte ptr [rsp + 136] # 1-byte Folded Reload
- add al, al
- add al, byte ptr [rsp + 288] # 1-byte Folded Reload
- movzx edx, byte ptr [rsp + 120] # 1-byte Folded Reload
- shl dl, 2
- or dl, al
- mov esi, edx
- movzx edx, byte ptr [rsp + 128] # 1-byte Folded Reload
- shl dl, 3
- or dl, sil
- mov esi, edx
- movzx edx, byte ptr [rsp + 144] # 1-byte Folded Reload
- shl dl, 4
- or dl, sil
- mov esi, edx
- movzx edx, byte ptr [rsp + 72] # 1-byte Folded Reload
- shl dl, 5
- or dl, sil
- mov rsi, qword ptr [rsp + 376] # 8-byte Reload
- mov byte ptr [rsi], r11b
- movzx edi, byte ptr [rsp + 80] # 1-byte Folded Reload
- shl dil, 6
- shl r14b, 7
- or r14b, dil
- mov byte ptr [rsi + 1], r9b
- or r14b, dl
- movzx eax, byte ptr [rsp + 88] # 1-byte Folded Reload
- add al, al
- add al, byte ptr [rsp + 272] # 1-byte Folded Reload
- mov edx, eax
- movzx eax, byte ptr [rsp + 96] # 1-byte Folded Reload
- shl al, 2
- or al, dl
- mov edx, eax
- movzx eax, byte ptr [rsp + 64] # 1-byte Folded Reload
- shl al, 3
- or al, dl
- mov edx, eax
- movzx eax, byte ptr [rsp + 48] # 1-byte Folded Reload
- shl al, 4
- or al, dl
- mov edx, eax
- movzx eax, byte ptr [rsp + 56] # 1-byte Folded Reload
- shl al, 5
- or al, dl
- movzx edx, byte ptr [rsp + 40] # 1-byte Folded Reload
- shl dl, 6
- shl bl, 7
- or bl, dl
- or bl, al
- mov byte ptr [rsi + 2], r14b
- mov r14d, dword ptr [rsp + 28] # 4-byte Reload
- mov byte ptr [rsi + 3], bl
- lea r12, [rcx + 32]
- add rsi, 4
- mov qword ptr [rsp + 376], rsi # 8-byte Spill
- add qword ptr [rsp + 152], -1 # 8-byte Folded Spill
- jne .LBB1_91
-# %bb.92:
- mov r10, qword ptr [rsp + 280] # 8-byte Reload
- mov r15, qword ptr [rsp + 392] # 8-byte Reload
- jmp .LBB1_130
-.LBB1_93:
+ neg bl
+ lea rsi, [rdx + 7]
+ test rdx, rdx
+ cmovns rsi, rdx
+ sar rsi, 3
+ mov r13, r14
+ movzx r9d, byte ptr [r14 + rsi]
+ xor bl, r9b
+ lea r10d, [8*rsi]
+ mov ecx, edx
+ sub ecx, r10d
+ mov eax, 1
+ # kill: def $cl killed $cl killed $ecx
+ shl eax, cl
+ and al, bl
+ xor al, r9b
+ mov byte ptr [r14 + rsi], al
+ add rdx, 1
+ mov rsi, rdi
+ add r11, -1
+ jne .LBB1_115
+# %bb.116:
+ sub r15, r8
+ jne .LBB1_147
+ jmp .LBB1_189
+.LBB1_117:
mov r13d, dword ptr [rdx]
- lea r15, [r10 + 31]
- test r10, r10
- cmovns r15, r10
lea eax, [r9 + 7]
test r9d, r9d
cmovns eax, r9d
and eax, -8
sub r9d, eax
- je .LBB1_97
-# %bb.94:
- movsxd rax, r9d
+ je .LBB1_123
+# %bb.118:
+ mov r8d, 8
+ sub r8d, r9d
+ cmp r8, r15
+ cmovg r8, r15
+ test r8, r8
+ jle .LBB1_121
+# %bb.119:
+ movsxd rdx, r9d
+ mov r11, r8
+ mov rcx, rsi
.p2align 4, 0x90
-.LBB1_95: # =>This Inner Loop Header: Depth=1
- cmp dword ptr [rsi], r13d
- lea rsi, [rsi + 4]
- sete dl
- neg dl
- lea rbx, [rax + 7]
- test rax, rax
- cmovns rbx, rax
- sar rbx, 3
- movzx r8d, byte ptr [r11 + rbx]
- xor dl, r8b
- lea edi, [8*rbx]
- mov ecx, eax
- sub ecx, edi
- mov edi, 1
+.LBB1_120: # =>This Inner Loop Header: Depth=1
+ lea rsi, [rcx + 4]
+ cmp dword ptr [rcx], r13d
+ sete bl
+ neg bl
+ lea rdi, [rdx + 7]
+ test rdx, rdx
+ cmovns rdi, rdx
+ sar rdi, 3
+ mov r12, r14
+ movzx r9d, byte ptr [r14 + rdi]
+ xor bl, r9b
+ lea r10d, [8*rdi]
+ mov ecx, edx
+ sub ecx, r10d
+ mov eax, 1
# kill: def $cl killed $cl killed $ecx
- shl edi, cl
- and dil, dl
- xor dil, r8b
- mov byte ptr [r11 + rbx], dil
- add rax, 1
- cmp rax, 8
- jne .LBB1_95
-# %bb.96:
- add r11, 1
-.LBB1_97:
- sar r15, 5
- cmp r10, 32
- jl .LBB1_133
-# %bb.98:
- mov qword ptr [rsp + 280], r10 # 8-byte Spill
- mov qword ptr [rsp + 168], r15 # 8-byte Spill
- mov qword ptr [rsp + 176], r15 # 8-byte Spill
+ shl eax, cl
+ and al, bl
+ xor al, r9b
+ mov byte ptr [r14 + rdi], al
+ add rdx, 1
+ mov rcx, rsi
+ add r11, -1
+ jne .LBB1_120
+.LBB1_121:
+ sub r15, r8
+ je .LBB1_189
+# %bb.122:
+ add r14, 1
+.LBB1_123:
+ lea rax, [r15 + 31]
+ test r15, r15
+ cmovns rax, r15
+ sar rax, 5
+ cmp r15, 32
+ jl .LBB1_127
+# %bb.124:
+ mov qword ptr [rsp + 280], r15 # 8-byte Spill
+ mov qword ptr [rsp + 176], rax # 8-byte Spill
+ mov qword ptr [rsp + 160], rax # 8-byte Spill
.p2align 4, 0x90
-.LBB1_99: # =>This Inner Loop Header: Depth=1
- mov qword ptr [rsp + 272], r11 # 8-byte Spill
+.LBB1_125: # =>This Inner Loop Header: Depth=1
+ mov qword ptr [rsp + 272], r14 # 8-byte Spill
cmp dword ptr [rsi], r13d
- sete byte ptr [rsp + 152] # 1-byte Folded Spill
+ sete byte ptr [rsp + 168] # 1-byte Folded Spill
cmp dword ptr [rsi + 4], r13d
sete r10b
cmp dword ptr [rsi + 8], r13d
sete r14b
cmp dword ptr [rsi + 12], r13d
- sete byte ptr [rsp + 160] # 1-byte Folded Spill
- cmp dword ptr [rsi + 16], r13d
sete byte ptr [rsp + 136] # 1-byte Folded Spill
+ cmp dword ptr [rsi + 16], r13d
+ sete byte ptr [rsp + 80] # 1-byte Folded Spill
cmp dword ptr [rsi + 20], r13d
- sete byte ptr [rsp + 88] # 1-byte Folded Spill
+ sete byte ptr [rsp + 112] # 1-byte Folded Spill
cmp dword ptr [rsi + 24], r13d
sete al
cmp dword ptr [rsi + 28], r13d
sete bl
cmp dword ptr [rsi + 32], r13d
- sete byte ptr [rsp + 104] # 1-byte Folded Spill
+ sete byte ptr [rsp + 144] # 1-byte Folded Spill
cmp dword ptr [rsi + 36], r13d
sete dil
cmp dword ptr [rsi + 40], r13d
@@ -5265,33 +5329,33 @@ comparison_equal_arr_scalar_avx2: # @comparison_equal_arr_scalar_avx2
cmp dword ptr [rsi + 52], r13d
sete r12b
cmp dword ptr [rsi + 56], r13d
- sete byte ptr [rsp + 112] # 1-byte Folded Spill
+ sete byte ptr [rsp + 152] # 1-byte Folded Spill
cmp dword ptr [rsi + 60], r13d
- sete cl
+ sete dl
cmp dword ptr [rsi + 64], r13d
- sete byte ptr [rsp + 72] # 1-byte Folded Spill
+ sete byte ptr [rsp + 96] # 1-byte Folded Spill
cmp dword ptr [rsi + 68], r13d
- sete byte ptr [rsp + 120] # 1-byte Folded Spill
+ sete byte ptr [rsp + 64] # 1-byte Folded Spill
cmp dword ptr [rsi + 72], r13d
- sete byte ptr [rsp + 128] # 1-byte Folded Spill
+ sete byte ptr [rsp + 72] # 1-byte Folded Spill
cmp dword ptr [rsi + 76], r13d
- sete byte ptr [rsp + 144] # 1-byte Folded Spill
+ sete byte ptr [rsp + 88] # 1-byte Folded Spill
cmp dword ptr [rsi + 80], r13d
- sete byte ptr [rsp + 80] # 1-byte Folded Spill
+ sete byte ptr [rsp + 104] # 1-byte Folded Spill
cmp dword ptr [rsi + 84], r13d
- sete byte ptr [rsp + 96] # 1-byte Folded Spill
+ sete byte ptr [rsp + 120] # 1-byte Folded Spill
cmp dword ptr [rsi + 88], r13d
- sete byte ptr [rsp + 64] # 1-byte Folded Spill
+ sete byte ptr [rsp + 128] # 1-byte Folded Spill
cmp dword ptr [rsi + 92], r13d
sete r15b
cmp dword ptr [rsi + 96], r13d
- sete byte ptr [rsp + 32] # 1-byte Folded Spill
+ sete byte ptr [rsp + 40] # 1-byte Folded Spill
cmp dword ptr [rsi + 100], r13d
sete byte ptr [rsp + 48] # 1-byte Folded Spill
cmp dword ptr [rsi + 104], r13d
sete byte ptr [rsp + 56] # 1-byte Folded Spill
cmp dword ptr [rsi + 108], r13d
- sete byte ptr [rsp + 40] # 1-byte Folded Spill
+ sete byte ptr [rsp + 32] # 1-byte Folded Spill
cmp dword ptr [rsi + 112], r13d
sete byte ptr [rsp + 320] # 1-byte Folded Spill
cmp dword ptr [rsi + 116], r13d
@@ -5299,388 +5363,644 @@ comparison_equal_arr_scalar_avx2: # @comparison_equal_arr_scalar_avx2
cmp dword ptr [rsi + 120], r13d
sete byte ptr [rsp + 28] # 1-byte Folded Spill
cmp dword ptr [rsi + 124], r13d
- sete dl
+ sete cl
add r10b, r10b
- add r10b, byte ptr [rsp + 152] # 1-byte Folded Reload
+ add r10b, byte ptr [rsp + 168] # 1-byte Folded Reload
shl al, 6
shl bl, 7
or bl, al
shl r14b, 2
or r14b, r10b
add dil, dil
- add dil, byte ptr [rsp + 104] # 1-byte Folded Reload
- movzx eax, byte ptr [rsp + 160] # 1-byte Folded Reload
+ add dil, byte ptr [rsp + 144] # 1-byte Folded Reload
+ movzx eax, byte ptr [rsp + 136] # 1-byte Folded Reload
shl al, 3
or al, r14b
mov r10d, eax
+ mov r14, qword ptr [rsp + 272] # 8-byte Reload
shl r8b, 2
or r8b, dil
- movzx eax, byte ptr [rsp + 136] # 1-byte Folded Reload
+ movzx eax, byte ptr [rsp + 80] # 1-byte Folded Reload
shl al, 4
or al, r10b
mov edi, eax
shl r9b, 3
or r9b, r8b
- movzx eax, byte ptr [rsp + 88] # 1-byte Folded Reload
+ movzx eax, byte ptr [rsp + 112] # 1-byte Folded Reload
shl al, 5
or al, dil
shl r11b, 4
or r11b, r9b
shl r12b, 5
or r12b, r11b
- mov r11, qword ptr [rsp + 272] # 8-byte Reload
- movzx edi, byte ptr [rsp + 112] # 1-byte Folded Reload
+ movzx edi, byte ptr [rsp + 152] # 1-byte Folded Reload
shl dil, 6
- shl cl, 7
- or cl, dil
+ shl dl, 7
+ or dl, dil
or bl, al
- or cl, r12b
- movzx eax, byte ptr [rsp + 120] # 1-byte Folded Reload
+ or dl, r12b
+ movzx eax, byte ptr [rsp + 64] # 1-byte Folded Reload
add al, al
- add al, byte ptr [rsp + 72] # 1-byte Folded Reload
+ add al, byte ptr [rsp + 96] # 1-byte Folded Reload
mov edi, eax
- movzx eax, byte ptr [rsp + 128] # 1-byte Folded Reload
+ movzx eax, byte ptr [rsp + 72] # 1-byte Folded Reload
shl al, 2
or al, dil
mov edi, eax
- movzx eax, byte ptr [rsp + 144] # 1-byte Folded Reload
+ movzx eax, byte ptr [rsp + 88] # 1-byte Folded Reload
shl al, 3
or al, dil
mov edi, eax
- movzx eax, byte ptr [rsp + 80] # 1-byte Folded Reload
+ movzx eax, byte ptr [rsp + 104] # 1-byte Folded Reload
shl al, 4
or al, dil
mov edi, eax
- movzx eax, byte ptr [rsp + 96] # 1-byte Folded Reload
+ movzx eax, byte ptr [rsp + 120] # 1-byte Folded Reload
shl al, 5
or al, dil
- mov byte ptr [r11], bl
- movzx ebx, byte ptr [rsp + 64] # 1-byte Folded Reload
+ mov byte ptr [r14], bl
+ movzx ebx, byte ptr [rsp + 128] # 1-byte Folded Reload
shl bl, 6
shl r15b, 7
or r15b, bl
- mov byte ptr [r11 + 1], cl
+ mov byte ptr [r14 + 1], dl
or r15b, al
movzx eax, byte ptr [rsp + 48] # 1-byte Folded Reload
add al, al
- add al, byte ptr [rsp + 32] # 1-byte Folded Reload
- mov ecx, eax
+ add al, byte ptr [rsp + 40] # 1-byte Folded Reload
+ mov edx, eax
movzx eax, byte ptr [rsp + 56] # 1-byte Folded Reload
shl al, 2
- or al, cl
- mov ecx, eax
- movzx eax, byte ptr [rsp + 40] # 1-byte Folded Reload
+ or al, dl
+ mov edx, eax
+ movzx eax, byte ptr [rsp + 32] # 1-byte Folded Reload
shl al, 3
- or al, cl
- mov ecx, eax
+ or al, dl
+ mov edx, eax
movzx eax, byte ptr [rsp + 320] # 1-byte Folded Reload
shl al, 4
- or al, cl
- mov ecx, eax
+ or al, dl
+ mov edx, eax
movzx eax, byte ptr [rsp + 288] # 1-byte Folded Reload
shl al, 5
- or al, cl
- movzx ecx, byte ptr [rsp + 28] # 1-byte Folded Reload
- shl cl, 6
- shl dl, 7
- or dl, cl
- or dl, al
- mov byte ptr [r11 + 2], r15b
- mov byte ptr [r11 + 3], dl
+ or al, dl
+ movzx edx, byte ptr [rsp + 28] # 1-byte Folded Reload
+ shl dl, 6
+ shl cl, 7
+ or cl, dl
+ or cl, al
+ mov byte ptr [r14 + 2], r15b
+ mov byte ptr [r14 + 3], cl
add rsi, 128
- add r11, 4
- add qword ptr [rsp + 176], -1 # 8-byte Folded Spill
- jne .LBB1_99
-# %bb.100:
- mov r14, r11
- mov r10, qword ptr [rsp + 280] # 8-byte Reload
- mov r15, qword ptr [rsp + 168] # 8-byte Reload
- shl r15, 5
- cmp r15, r10
- jl .LBB1_134
- jmp .LBB1_165
-.LBB1_101:
- mov r14, r11
- shl r15, 5
- cmp r15, r10
- jge .LBB1_165
-.LBB1_102:
- mov r8, r10
- sub r8, r15
- not r15
- add r15, r10
- je .LBB1_135
-# %bb.103:
- mov r10, r8
- and r10, -2
- xor r11d, r11d
- mov r15, r14
- .p2align 4, 0x90
-.LBB1_104: # =>This Inner Loop Header: Depth=1
- cmp dword ptr [rsi], r13d
- sete al
- neg al
- mov rdi, r11
- shr rdi, 3
- movzx r9d, byte ptr [r15 + rdi]
- mov ecx, r11d
- and cl, 6
- mov bl, 1
- shl bl, cl
- xor al, r9b
- and bl, al
- xor bl, r9b
- mov byte ptr [r15 + rdi], bl
- add r11, 2
- cmp dword ptr [rsi + 4], r13d
- lea rsi, [rsi + 8]
- sete al
- neg al
- xor al, bl
- or cl, 1
- mov dl, 1
- shl dl, cl
- and dl, al
- xor dl, bl
- mov byte ptr [r15 + rdi], dl
- cmp r10, r11
- jne .LBB1_104
- jmp .LBB1_162
-.LBB1_105:
- mov r14, r11
- shl r15, 5
- cmp r15, r10
- jge .LBB1_165
-.LBB1_106:
- mov r8, r10
- sub r8, r15
- not r15
- add r15, r10
- jne .LBB1_136
-# %bb.107:
- xor r11d, r11d
- jmp .LBB1_138
-.LBB1_108:
- mov qword ptr [rsp + 376], r11 # 8-byte Spill
- mov r12, rsi
-.LBB1_109:
- shl r13, 5
- cmp r13, r15
- jge .LBB1_165
-# %bb.110:
+ add r14, 4
+ add qword ptr [rsp + 160], -1 # 8-byte Folded Spill
+ jne .LBB1_125
+# %bb.126:
+ mov r15, qword ptr [rsp + 280] # 8-byte Reload
+ mov rax, qword ptr [rsp + 176] # 8-byte Reload
+.LBB1_127:
+ shl rax, 5
mov r8, r15
- sub r8, r13
- not r13
- add r13, r15
- je .LBB1_132
-# %bb.140:
- mov r10, r8
- and r10, -2
- xor esi, esi
- mov r11, qword ptr [rsp + 376] # 8-byte Reload
- .p2align 4, 0x90
-.LBB1_141: # =>This Inner Loop Header: Depth=1
- cmp byte ptr [r12 + rsi], r14b
- sete bl
- neg bl
+ sub r8, rax
+ jle .LBB1_189
+# %bb.128:
+ or rax, 1
+ cmp r15, rax
+ jne .LBB1_177
+.LBB1_129:
+ xor r11d, r11d
+ jmp .LBB1_179
+.LBB1_130:
mov rdi, rsi
- shr rdi, 3
- mov ecx, esi
- and cl, 6
- mov dl, 1
- shl dl, cl
- movzx r9d, byte ptr [r11 + rdi]
- xor bl, r9b
- and dl, bl
- xor dl, r9b
- mov byte ptr [r11 + rdi], dl
- cmp byte ptr [r12 + rsi + 1], r14b
- lea rsi, [rsi + 2]
- sete bl
- neg bl
- xor bl, dl
- or cl, 1
- mov al, 1
- shl al, cl
- and al, bl
- xor al, dl
- mov byte ptr [r11 + rdi], al
- cmp r10, rsi
- jne .LBB1_141
- jmp .LBB1_157
-.LBB1_112:
- mov r14, r11
- shl r15, 5
- cmp r15, r10
- jge .LBB1_165
-.LBB1_113:
- mov r8, r10
- sub r8, r15
- not r15
- add r15, r10
- je .LBB1_125
-# %bb.114:
+ jmp .LBB1_134
+.LBB1_131:
+ mov rdi, rsi
+ jmp .LBB1_148
+.LBB1_132:
+ mov rdi, rsi
+ sub r15, r8
+ je .LBB1_189
+.LBB1_133:
+ add r14, 1
+.LBB1_134:
+ lea rcx, [r15 + 31]
+ test r15, r15
+ cmovns rcx, r15
+ sar rcx, 5
+ cmp r15, 32
+ jl .LBB1_142
+# %bb.135:
+ cmp rcx, 32
+ mov dword ptr [rsp + 28], r12d # 4-byte Spill
+ mov qword ptr [rsp + 280], r15 # 8-byte Spill
+ mov qword ptr [rsp + 392], rcx # 8-byte Spill
+ jb .LBB1_138
+# %bb.136:
+ mov rax, rcx
+ shl rax, 5
+ add rax, rdi
+ cmp r14, rax
+ jae .LBB1_190
+# %bb.137:
+ lea rax, [r14 + 4*rcx]
+ cmp rdi, rax
+ jae .LBB1_190
+.LBB1_138:
+ xor eax, eax
+ mov qword ptr [rsp + 384], rax # 8-byte Spill
+ mov rsi, rdi
+ mov qword ptr [rsp + 376], r14 # 8-byte Spill
+.LBB1_139:
+ sub rcx, qword ptr [rsp + 384] # 8-byte Folded Reload
+ mov qword ptr [rsp + 160], rcx # 8-byte Spill
+ .p2align 4, 0x90
+.LBB1_140: # =>This Inner Loop Header: Depth=1
+ mov rcx, rsi
+ cmp byte ptr [rsi], r12b
+ sete byte ptr [rsp + 40] # 1-byte Folded Spill
+ cmp byte ptr [rsi + 1], r12b
+ sete r8b
+ cmp byte ptr [rsi + 2], r12b
+ sete r14b
+ cmp byte ptr [rsi + 3], r12b
+ sete r13b
+ mov eax, dword ptr [rsp + 28] # 4-byte Reload
+ cmp byte ptr [rsi + 4], al
+ sete byte ptr [rsp + 112] # 1-byte Folded Spill
+ mov eax, dword ptr [rsp + 28] # 4-byte Reload
+ cmp byte ptr [rsi + 5], al
+ sete byte ptr [rsp + 32] # 1-byte Folded Spill
+ mov eax, dword ptr [rsp + 28] # 4-byte Reload
+ cmp byte ptr [rsi + 6], al
+ sete byte ptr [rsp + 168] # 1-byte Folded Spill
+ mov eax, dword ptr [rsp + 28] # 4-byte Reload
+ cmp byte ptr [rsi + 7], al
+ sete r11b
+ mov eax, dword ptr [rsp + 28] # 4-byte Reload
+ cmp byte ptr [rsi + 8], al
+ sete byte ptr [rsp + 320] # 1-byte Folded Spill
+ mov eax, dword ptr [rsp + 28] # 4-byte Reload
+ cmp byte ptr [rsi + 9], al
+ sete dl
+ mov eax, dword ptr [rsp + 28] # 4-byte Reload
+ cmp byte ptr [rsi + 10], al
+ sete sil
+ mov eax, dword ptr [rsp + 28] # 4-byte Reload
+ cmp byte ptr [rcx + 11], al
+ sete dil
+ mov eax, dword ptr [rsp + 28] # 4-byte Reload
+ cmp byte ptr [rcx + 12], al
+ sete r10b
+ mov eax, dword ptr [rsp + 28] # 4-byte Reload
+ cmp byte ptr [rcx + 13], al
+ sete r12b
+ mov eax, dword ptr [rsp + 28] # 4-byte Reload
+ cmp byte ptr [rcx + 14], al
+ sete byte ptr [rsp + 136] # 1-byte Folded Spill
+ mov eax, dword ptr [rsp + 28] # 4-byte Reload
+ cmp byte ptr [rcx + 15], al
+ sete r9b
+ mov ebx, dword ptr [rsp + 28] # 4-byte Reload
+ cmp byte ptr [rcx + 16], bl
+ sete byte ptr [rsp + 288] # 1-byte Folded Spill
+ mov ebx, dword ptr [rsp + 28] # 4-byte Reload
+ cmp byte ptr [rcx + 17], bl
+ sete byte ptr [rsp + 80] # 1-byte Folded Spill
+ mov ebx, dword ptr [rsp + 28] # 4-byte Reload
+ cmp byte ptr [rcx + 18], bl
+ sete byte ptr [rsp + 144] # 1-byte Folded Spill
+ mov ebx, dword ptr [rsp + 28] # 4-byte Reload
+ cmp byte ptr [rcx + 19], bl
+ sete byte ptr [rsp + 152] # 1-byte Folded Spill
+ mov ebx, dword ptr [rsp + 28] # 4-byte Reload
+ cmp byte ptr [rcx + 20], bl
+ sete byte ptr [rsp + 64] # 1-byte Folded Spill
+ mov ebx, dword ptr [rsp + 28] # 4-byte Reload
+ cmp byte ptr [rcx + 21], bl
+ sete byte ptr [rsp + 72] # 1-byte Folded Spill
+ mov ebx, dword ptr [rsp + 28] # 4-byte Reload
+ cmp byte ptr [rcx + 22], bl
+ sete byte ptr [rsp + 120] # 1-byte Folded Spill
+ mov ebx, dword ptr [rsp + 28] # 4-byte Reload
+ cmp byte ptr [rcx + 23], bl
+ sete r15b
+ mov ebx, dword ptr [rsp + 28] # 4-byte Reload
+ cmp byte ptr [rcx + 24], bl
+ sete byte ptr [rsp + 272] # 1-byte Folded Spill
+ mov ebx, dword ptr [rsp + 28] # 4-byte Reload
+ cmp byte ptr [rcx + 25], bl
+ sete byte ptr [rsp + 96] # 1-byte Folded Spill
+ mov ebx, dword ptr [rsp + 28] # 4-byte Reload
+ cmp byte ptr [rcx + 26], bl
+ sete byte ptr [rsp + 88] # 1-byte Folded Spill
+ mov ebx, dword ptr [rsp + 28] # 4-byte Reload
+ cmp byte ptr [rcx + 27], bl
+ sete byte ptr [rsp + 104] # 1-byte Folded Spill
+ mov ebx, dword ptr [rsp + 28] # 4-byte Reload
+ cmp byte ptr [rcx + 28], bl
+ sete byte ptr [rsp + 128] # 1-byte Folded Spill
+ mov ebx, dword ptr [rsp + 28] # 4-byte Reload
+ cmp byte ptr [rcx + 29], bl
+ sete byte ptr [rsp + 48] # 1-byte Folded Spill
+ mov ebx, dword ptr [rsp + 28] # 4-byte Reload
+ cmp byte ptr [rcx + 30], bl
+ sete byte ptr [rsp + 56] # 1-byte Folded Spill
+ mov ebx, dword ptr [rsp + 28] # 4-byte Reload
+ cmp byte ptr [rcx + 31], bl
+ sete bl
+ add r8b, r8b
+ add r8b, byte ptr [rsp + 40] # 1-byte Folded Reload
+ movzx eax, byte ptr [rsp + 168] # 1-byte Folded Reload
+ shl al, 6
+ shl r11b, 7
+ or r11b, al
+ shl r14b, 2
+ or r14b, r8b
+ add dl, dl
+ add dl, byte ptr [rsp + 320] # 1-byte Folded Reload
+ shl r13b, 3
+ or r13b, r14b
+ shl sil, 2
+ or sil, dl
+ movzx edx, byte ptr [rsp + 112] # 1-byte Folded Reload
+ shl dl, 4
+ or dl, r13b
+ mov r8d, edx
+ mov eax, dword ptr [rsp + 28] # 4-byte Reload
+ shl dil, 3
+ or dil, sil
+ movzx edx, byte ptr [rsp + 32] # 1-byte Folded Reload
+ shl dl, 5
+ or dl, r8b
+ shl r10b, 4
+ or r10b, dil
+ shl r12b, 5
+ or r12b, r10b
+ movzx esi, byte ptr [rsp + 136] # 1-byte Folded Reload
+ shl sil, 6
+ shl r9b, 7
+ or r9b, sil
+ or r11b, dl
+ or r9b, r12b
+ mov r12d, eax
+ movzx eax, byte ptr [rsp + 80] # 1-byte Folded Reload
+ add al, al
+ add al, byte ptr [rsp + 288] # 1-byte Folded Reload
+ movzx edx, byte ptr [rsp + 144] # 1-byte Folded Reload
+ shl dl, 2
+ or dl, al
+ mov esi, edx
+ movzx edx, byte ptr [rsp + 152] # 1-byte Folded Reload
+ shl dl, 3
+ or dl, sil
+ mov esi, edx
+ movzx edx, byte ptr [rsp + 64] # 1-byte Folded Reload
+ shl dl, 4
+ or dl, sil
+ mov esi, edx
+ movzx edx, byte ptr [rsp + 72] # 1-byte Folded Reload
+ shl dl, 5
+ or dl, sil
+ mov rdi, qword ptr [rsp + 376] # 8-byte Reload
+ mov byte ptr [rdi], r11b
+ movzx esi, byte ptr [rsp + 120] # 1-byte Folded Reload
+ shl sil, 6
+ shl r15b, 7
+ or r15b, sil
+ mov byte ptr [rdi + 1], r9b
+ or r15b, dl
+ movzx eax, byte ptr [rsp + 96] # 1-byte Folded Reload
+ add al, al
+ add al, byte ptr [rsp + 272] # 1-byte Folded Reload
+ mov edx, eax
+ movzx eax, byte ptr [rsp + 88] # 1-byte Folded Reload
+ shl al, 2
+ or al, dl
+ mov edx, eax
+ movzx eax, byte ptr [rsp + 104] # 1-byte Folded Reload
+ shl al, 3
+ or al, dl
+ mov edx, eax
+ movzx eax, byte ptr [rsp + 128] # 1-byte Folded Reload
+ shl al, 4
+ or al, dl
+ mov edx, eax
+ movzx eax, byte ptr [rsp + 48] # 1-byte Folded Reload
+ shl al, 5
+ or al, dl
+ movzx edx, byte ptr [rsp + 56] # 1-byte Folded Reload
+ shl dl, 6
+ shl bl, 7
+ or bl, dl
+ or bl, al
+ mov byte ptr [rdi + 2], r15b
+ mov byte ptr [rdi + 3], bl
+ lea rsi, [rcx + 32]
+ add rdi, 4
+ mov qword ptr [rsp + 376], rdi # 8-byte Spill
+ add qword ptr [rsp + 160], -1 # 8-byte Folded Spill
+ jne .LBB1_140
+# %bb.141:
+ mov r15, qword ptr [rsp + 280] # 8-byte Reload
+ mov rcx, qword ptr [rsp + 392] # 8-byte Reload
+ jmp .LBB1_143
+.LBB1_142:
+ mov qword ptr [rsp + 376], r14 # 8-byte Spill
+ mov rsi, rdi
+.LBB1_143:
+ shl rcx, 5
+ mov r8, r15
+ sub r8, rcx
+ jle .LBB1_189
+# %bb.144:
+ or rcx, 1
+ cmp r15, rcx
+ je .LBB1_159
+# %bb.182:
mov r10, r8
and r10, -2
- xor r11d, r11d
- mov r15, r14
+ xor r9d, r9d
+ mov r11, qword ptr [rsp + 376] # 8-byte Reload
.p2align 4, 0x90
-.LBB1_115: # =>This Inner Loop Header: Depth=1
- cmp qword ptr [rsi], r13
- sete al
- neg al
- mov rdi, r11
+.LBB1_183: # =>This Inner Loop Header: Depth=1
+ mov rax, r9
+ cmp byte ptr [rsi + r9], r12b
+ sete bl
+ neg bl
+ mov rdi, r9
shr rdi, 3
- movzx r9d, byte ptr [r15 + rdi]
- mov ecx, r11d
+ mov ecx, eax
and cl, 6
- mov bl, 1
- shl bl, cl
- xor al, r9b
- and bl, al
- xor bl, r9b
- mov byte ptr [r15 + rdi], bl
- add r11, 2
- cmp qword ptr [rsi + 8], r13
- lea rsi, [rsi + 16]
- sete al
- neg al
- xor al, bl
- or cl, 1
mov dl, 1
shl dl, cl
- and dl, al
- xor dl, bl
- mov byte ptr [r15 + rdi], dl
- cmp r10, r11
- jne .LBB1_115
- jmp .LBB1_148
-.LBB1_116:
- mov r14, r11
- shl r15, 5
- cmp r15, r10
- jge .LBB1_165
-.LBB1_117:
- mov r8, r10
- sub r8, r15
- not r15
- add r15, r10
- je .LBB1_122
-# %bb.118:
- mov r10, r8
- and r10, -2
- xor r11d, r11d
- mov r15, r14
- .p2align 4, 0x90
-.LBB1_119: # =>This Inner Loop Header: Depth=1
- cmp word ptr [rsi], r13w
- sete al
- neg al
- mov rdi, r11
- shr rdi, 3
- movzx r9d, byte ptr [r15 + rdi]
- mov ecx, r11d
- and cl, 6
- mov bl, 1
- shl bl, cl
- xor al, r9b
- and bl, al
+ movzx r9d, byte ptr [r11 + rdi]
xor bl, r9b
- mov byte ptr [r15 + rdi], bl
- add r11, 2
- cmp word ptr [rsi + 2], r13w
- lea rsi, [rsi + 4]
- sete al
- neg al
- xor al, bl
+ and dl, bl
+ xor dl, r9b
+ mov byte ptr [r11 + rdi], dl
+ cmp byte ptr [rsi + rax + 1], r12b
+ lea r9, [rax + 2]
+ sete bl
+ neg bl
+ xor bl, dl
or cl, 1
- mov dl, 1
- shl dl, cl
- and dl, al
- xor dl, bl
- mov byte ptr [r15 + rdi], dl
- cmp r10, r11
- jne .LBB1_119
- jmp .LBB1_144
-.LBB1_120:
- mov r14, r11
- shl r15, 5
- cmp r15, r10
- jge .LBB1_165
-.LBB1_121:
- mov r8, r10
- sub r8, r15
- not r15
- add r15, r10
- jne .LBB1_142
-.LBB1_122:
- xor r11d, r11d
- jmp .LBB1_144
-.LBB1_123:
- mov r14, r11
- shl r15, 5
- cmp r15, r10
- jge .LBB1_165
-.LBB1_124:
- mov r8, r10
- sub r8, r15
- not r15
- add r15, r10
- jne .LBB1_146
-.LBB1_125:
- xor r11d, r11d
- jmp .LBB1_148
-.LBB1_126:
- mov r14, r11
- shl r15, 5
- cmp r15, r10
- jge .LBB1_165
-.LBB1_127:
- mov r8, r10
- sub r8, r15
- not r15
- add r15, r10
- jne .LBB1_150
-# %bb.128:
- xor r11d, r11d
- jmp .LBB1_152
-.LBB1_129:
- mov qword ptr [rsp + 376], r11 # 8-byte Spill
- mov r12, rsi
-.LBB1_130:
- shl r15, 5
- cmp r15, r10
- jge .LBB1_165
-# %bb.131:
- mov r8, r10
- sub r8, r15
- not r15
- add r15, r10
- jne .LBB1_155
-.LBB1_132:
- xor esi, esi
- jmp .LBB1_158
-.LBB1_133:
- mov r14, r11
- shl r15, 5
- cmp r15, r10
- jge .LBB1_165
-.LBB1_134:
- mov r8, r10
- sub r8, r15
- not r15
- add r15, r10
- jne .LBB1_160
-.LBB1_135:
- xor r11d, r11d
- jmp .LBB1_162
-.LBB1_136:
+ mov al, 1
+ shl al, cl
+ and al, bl
+ xor al, dl
+ mov byte ptr [r11 + rdi], al
+ cmp r10, r9
+ jne .LBB1_183
+ jmp .LBB1_186
+.LBB1_146:
+ mov rdi, rsi
+ sub r15, r8
+ je .LBB1_189
+.LBB1_147:
+ add r14, 1
+.LBB1_148:
+ lea rcx, [r15 + 31]
+ test r15, r15
+ cmovns rcx, r15
+ sar rcx, 5
+ cmp r15, 32
+ jl .LBB1_156
+# %bb.149:
+ cmp rcx, 32
+ mov dword ptr [rsp + 28], r12d # 4-byte Spill
+ mov qword ptr [rsp + 280], r15 # 8-byte Spill
+ mov qword ptr [rsp + 392], rcx # 8-byte Spill
+ jb .LBB1_152
+# %bb.150:
+ mov rax, rcx
+ shl rax, 5
+ add rax, rdi
+ cmp r14, rax
+ jae .LBB1_193
+# %bb.151:
+ lea rax, [r14 + 4*rcx]
+ cmp rdi, rax
+ jae .LBB1_193
+.LBB1_152:
+ xor eax, eax
+ mov qword ptr [rsp + 384], rax # 8-byte Spill
+ mov rsi, rdi
+ mov qword ptr [rsp + 376], r14 # 8-byte Spill
+.LBB1_153:
+ sub rcx, qword ptr [rsp + 384] # 8-byte Folded Reload
+ mov qword ptr [rsp + 160], rcx # 8-byte Spill
+ .p2align 4, 0x90
+.LBB1_154: # =>This Inner Loop Header: Depth=1
+ mov rcx, rsi
+ cmp byte ptr [rsi], r12b
+ sete byte ptr [rsp + 40] # 1-byte Folded Spill
+ cmp byte ptr [rsi + 1], r12b
+ sete r8b
+ cmp byte ptr [rsi + 2], r12b
+ sete r14b
+ cmp byte ptr [rsi + 3], r12b
+ sete r13b
+ mov eax, dword ptr [rsp + 28] # 4-byte Reload
+ cmp byte ptr [rsi + 4], al
+ sete byte ptr [rsp + 112] # 1-byte Folded Spill
+ mov eax, dword ptr [rsp + 28] # 4-byte Reload
+ cmp byte ptr [rsi + 5], al
+ sete byte ptr [rsp + 32] # 1-byte Folded Spill
+ mov eax, dword ptr [rsp + 28] # 4-byte Reload
+ cmp byte ptr [rsi + 6], al
+ sete byte ptr [rsp + 168] # 1-byte Folded Spill
+ mov eax, dword ptr [rsp + 28] # 4-byte Reload
+ cmp byte ptr [rsi + 7], al
+ sete r11b
+ mov eax, dword ptr [rsp + 28] # 4-byte Reload
+ cmp byte ptr [rsi + 8], al
+ sete byte ptr [rsp + 320] # 1-byte Folded Spill
+ mov eax, dword ptr [rsp + 28] # 4-byte Reload
+ cmp byte ptr [rsi + 9], al
+ sete dl
+ mov eax, dword ptr [rsp + 28] # 4-byte Reload
+ cmp byte ptr [rsi + 10], al
+ sete sil
+ mov eax, dword ptr [rsp + 28] # 4-byte Reload
+ cmp byte ptr [rcx + 11], al
+ sete dil
+ mov eax, dword ptr [rsp + 28] # 4-byte Reload
+ cmp byte ptr [rcx + 12], al
+ sete r10b
+ mov eax, dword ptr [rsp + 28] # 4-byte Reload
+ cmp byte ptr [rcx + 13], al
+ sete r12b
+ mov eax, dword ptr [rsp + 28] # 4-byte Reload
+ cmp byte ptr [rcx + 14], al
+ sete byte ptr [rsp + 136] # 1-byte Folded Spill
+ mov eax, dword ptr [rsp + 28] # 4-byte Reload
+ cmp byte ptr [rcx + 15], al
+ sete r9b
+ mov ebx, dword ptr [rsp + 28] # 4-byte Reload
+ cmp byte ptr [rcx + 16], bl
+ sete byte ptr [rsp + 288] # 1-byte Folded Spill
+ mov ebx, dword ptr [rsp + 28] # 4-byte Reload
+ cmp byte ptr [rcx + 17], bl
+ sete byte ptr [rsp + 80] # 1-byte Folded Spill
+ mov ebx, dword ptr [rsp + 28] # 4-byte Reload
+ cmp byte ptr [rcx + 18], bl
+ sete byte ptr [rsp + 144] # 1-byte Folded Spill
+ mov ebx, dword ptr [rsp + 28] # 4-byte Reload
+ cmp byte ptr [rcx + 19], bl
+ sete byte ptr [rsp + 152] # 1-byte Folded Spill
+ mov ebx, dword ptr [rsp + 28] # 4-byte Reload
+ cmp byte ptr [rcx + 20], bl
+ sete byte ptr [rsp + 64] # 1-byte Folded Spill
+ mov ebx, dword ptr [rsp + 28] # 4-byte Reload
+ cmp byte ptr [rcx + 21], bl
+ sete byte ptr [rsp + 72] # 1-byte Folded Spill
+ mov ebx, dword ptr [rsp + 28] # 4-byte Reload
+ cmp byte ptr [rcx + 22], bl
+ sete byte ptr [rsp + 120] # 1-byte Folded Spill
+ mov ebx, dword ptr [rsp + 28] # 4-byte Reload
+ cmp byte ptr [rcx + 23], bl
+ sete r15b
+ mov ebx, dword ptr [rsp + 28] # 4-byte Reload
+ cmp byte ptr [rcx + 24], bl
+ sete byte ptr [rsp + 272] # 1-byte Folded Spill
+ mov ebx, dword ptr [rsp + 28] # 4-byte Reload
+ cmp byte ptr [rcx + 25], bl
+ sete byte ptr [rsp + 96] # 1-byte Folded Spill
+ mov ebx, dword ptr [rsp + 28] # 4-byte Reload
+ cmp byte ptr [rcx + 26], bl
+ sete byte ptr [rsp + 88] # 1-byte Folded Spill
+ mov ebx, dword ptr [rsp + 28] # 4-byte Reload
+ cmp byte ptr [rcx + 27], bl
+ sete byte ptr [rsp + 104] # 1-byte Folded Spill
+ mov ebx, dword ptr [rsp + 28] # 4-byte Reload
+ cmp byte ptr [rcx + 28], bl
+ sete byte ptr [rsp + 128] # 1-byte Folded Spill
+ mov ebx, dword ptr [rsp + 28] # 4-byte Reload
+ cmp byte ptr [rcx + 29], bl
+ sete byte ptr [rsp + 48] # 1-byte Folded Spill
+ mov ebx, dword ptr [rsp + 28] # 4-byte Reload
+ cmp byte ptr [rcx + 30], bl
+ sete byte ptr [rsp + 56] # 1-byte Folded Spill
+ mov ebx, dword ptr [rsp + 28] # 4-byte Reload
+ cmp byte ptr [rcx + 31], bl
+ sete bl
+ add r8b, r8b
+ add r8b, byte ptr [rsp + 40] # 1-byte Folded Reload
+ movzx eax, byte ptr [rsp + 168] # 1-byte Folded Reload
+ shl al, 6
+ shl r11b, 7
+ or r11b, al
+ shl r14b, 2
+ or r14b, r8b
+ add dl, dl
+ add dl, byte ptr [rsp + 320] # 1-byte Folded Reload
+ shl r13b, 3
+ or r13b, r14b
+ shl sil, 2
+ or sil, dl
+ movzx edx, byte ptr [rsp + 112] # 1-byte Folded Reload
+ shl dl, 4
+ or dl, r13b
+ mov r8d, edx
+ mov eax, dword ptr [rsp + 28] # 4-byte Reload
+ shl dil, 3
+ or dil, sil
+ movzx edx, byte ptr [rsp + 32] # 1-byte Folded Reload
+ shl dl, 5
+ or dl, r8b
+ shl r10b, 4
+ or r10b, dil
+ shl r12b, 5
+ or r12b, r10b
+ movzx esi, byte ptr [rsp + 136] # 1-byte Folded Reload
+ shl sil, 6
+ shl r9b, 7
+ or r9b, sil
+ or r11b, dl
+ or r9b, r12b
+ mov r12d, eax
+ movzx eax, byte ptr [rsp + 80] # 1-byte Folded Reload
+ add al, al
+ add al, byte ptr [rsp + 288] # 1-byte Folded Reload
+ movzx edx, byte ptr [rsp + 144] # 1-byte Folded Reload
+ shl dl, 2
+ or dl, al
+ mov esi, edx
+ movzx edx, byte ptr [rsp + 152] # 1-byte Folded Reload
+ shl dl, 3
+ or dl, sil
+ mov esi, edx
+ movzx edx, byte ptr [rsp + 64] # 1-byte Folded Reload
+ shl dl, 4
+ or dl, sil
+ mov esi, edx
+ movzx edx, byte ptr [rsp + 72] # 1-byte Folded Reload
+ shl dl, 5
+ or dl, sil
+ mov rdi, qword ptr [rsp + 376] # 8-byte Reload
+ mov byte ptr [rdi], r11b
+ movzx esi, byte ptr [rsp + 120] # 1-byte Folded Reload
+ shl sil, 6
+ shl r15b, 7
+ or r15b, sil
+ mov byte ptr [rdi + 1], r9b
+ or r15b, dl
+ movzx eax, byte ptr [rsp + 96] # 1-byte Folded Reload
+ add al, al
+ add al, byte ptr [rsp + 272] # 1-byte Folded Reload
+ mov edx, eax
+ movzx eax, byte ptr [rsp + 88] # 1-byte Folded Reload
+ shl al, 2
+ or al, dl
+ mov edx, eax
+ movzx eax, byte ptr [rsp + 104] # 1-byte Folded Reload
+ shl al, 3
+ or al, dl
+ mov edx, eax
+ movzx eax, byte ptr [rsp + 128] # 1-byte Folded Reload
+ shl al, 4
+ or al, dl
+ mov edx, eax
+ movzx eax, byte ptr [rsp + 48] # 1-byte Folded Reload
+ shl al, 5
+ or al, dl
+ movzx edx, byte ptr [rsp + 56] # 1-byte Folded Reload
+ shl dl, 6
+ shl bl, 7
+ or bl, dl
+ or bl, al
+ mov byte ptr [rdi + 2], r15b
+ mov byte ptr [rdi + 3], bl
+ lea rsi, [rcx + 32]
+ add rdi, 4
+ mov qword ptr [rsp + 376], rdi # 8-byte Spill
+ add qword ptr [rsp + 160], -1 # 8-byte Folded Spill
+ jne .LBB1_154
+# %bb.155:
+ mov r15, qword ptr [rsp + 280] # 8-byte Reload
+ mov rcx, qword ptr [rsp + 392] # 8-byte Reload
+ jmp .LBB1_157
+.LBB1_156:
+ mov qword ptr [rsp + 376], r14 # 8-byte Spill
+ mov rsi, rdi
+.LBB1_157:
+ shl rcx, 5
+ mov r8, r15
+ sub r8, rcx
+ jle .LBB1_189
+# %bb.158:
+ or rcx, 1
+ cmp r15, rcx
+ jne .LBB1_184
+.LBB1_159:
+ xor r9d, r9d
+ jmp .LBB1_187
+.LBB1_160:
mov r9, r8
and r9, -2
xor r11d, r11d
- mov r15, r14
.p2align 4, 0x90
-.LBB1_137: # =>This Inner Loop Header: Depth=1
+.LBB1_161: # =>This Inner Loop Header: Depth=1
vucomisd xmm0, qword ptr [rsi]
setnp cl
sete al
@@ -5688,7 +6008,8 @@ comparison_equal_arr_scalar_avx2: # @comparison_equal_arr_scalar_avx2
neg al
mov rdi, r11
shr rdi, 3
- movzx r10d, byte ptr [r15 + rdi]
+ mov r15, r14
+ movzx r10d, byte ptr [r14 + rdi]
mov ecx, r11d
and cl, 6
mov bl, 1
@@ -5696,7 +6017,7 @@ comparison_equal_arr_scalar_avx2: # @comparison_equal_arr_scalar_avx2
xor al, r10b
and bl, al
xor bl, r10b
- mov byte ptr [r15 + rdi], bl
+ mov byte ptr [r14 + rdi], bl
add r11, 2
vucomisd xmm0, qword ptr [rsi + 8]
lea rsi, [rsi + 16]
@@ -5710,28 +6031,28 @@ comparison_equal_arr_scalar_avx2: # @comparison_equal_arr_scalar_avx2
shl dl, cl
and dl, al
xor dl, bl
- mov byte ptr [r15 + rdi], dl
+ mov byte ptr [r14 + rdi], dl
cmp r9, r11
- jne .LBB1_137
-.LBB1_138:
+ jne .LBB1_161
+.LBB1_162:
test r8b, 1
- je .LBB1_165
-# %bb.139:
+ je .LBB1_189
+# %bb.163:
vucomisd xmm0, qword ptr [rsi]
- jmp .LBB1_154
-.LBB1_142:
+ jmp .LBB1_176
+.LBB1_164:
mov r10, r8
and r10, -2
xor r11d, r11d
- mov r15, r14
.p2align 4, 0x90
-.LBB1_143: # =>This Inner Loop Header: Depth=1
+.LBB1_165: # =>This Inner Loop Header: Depth=1
cmp word ptr [rsi], r13w
sete al
neg al
mov rdi, r11
shr rdi, 3
- movzx r9d, byte ptr [r15 + rdi]
+ mov r15, r14
+ movzx r9d, byte ptr [r14 + rdi]
mov ecx, r11d
and cl, 6
mov bl, 1
@@ -5739,7 +6060,7 @@ comparison_equal_arr_scalar_avx2: # @comparison_equal_arr_scalar_avx2
xor al, r9b
and bl, al
xor bl, r9b
- mov byte ptr [r15 + rdi], bl
+ mov byte ptr [r14 + rdi], bl
add r11, 2
cmp word ptr [rsi + 2], r13w
lea rsi, [rsi + 4]
@@ -5751,28 +6072,28 @@ comparison_equal_arr_scalar_avx2: # @comparison_equal_arr_scalar_avx2
shl dl, cl
and dl, al
xor dl, bl
- mov byte ptr [r15 + rdi], dl
+ mov byte ptr [r14 + rdi], dl
cmp r10, r11
- jne .LBB1_143
-.LBB1_144:
+ jne .LBB1_165
+.LBB1_166:
test r8b, 1
- je .LBB1_165
-# %bb.145:
+ je .LBB1_189
+# %bb.167:
cmp word ptr [rsi], r13w
- jmp .LBB1_164
-.LBB1_146:
+ jmp .LBB1_181
+.LBB1_168:
mov r10, r8
and r10, -2
xor r11d, r11d
- mov r15, r14
.p2align 4, 0x90
-.LBB1_147: # =>This Inner Loop Header: Depth=1
+.LBB1_169: # =>This Inner Loop Header: Depth=1
cmp qword ptr [rsi], r13
sete al
neg al
mov rdi, r11
shr rdi, 3
- movzx r9d, byte ptr [r15 + rdi]
+ mov r15, r14
+ movzx r9d, byte ptr [r14 + rdi]
mov ecx, r11d
and cl, 6
mov bl, 1
@@ -5780,7 +6101,7 @@ comparison_equal_arr_scalar_avx2: # @comparison_equal_arr_scalar_avx2
xor al, r9b
and bl, al
xor bl, r9b
- mov byte ptr [r15 + rdi], bl
+ mov byte ptr [r14 + rdi], bl
add r11, 2
cmp qword ptr [rsi + 8], r13
lea rsi, [rsi + 16]
@@ -5792,22 +6113,21 @@ comparison_equal_arr_scalar_avx2: # @comparison_equal_arr_scalar_avx2
shl dl, cl
and dl, al
xor dl, bl
- mov byte ptr [r15 + rdi], dl
+ mov byte ptr [r14 + rdi], dl
cmp r10, r11
- jne .LBB1_147
-.LBB1_148:
+ jne .LBB1_169
+.LBB1_170:
test r8b, 1
- je .LBB1_165
-# %bb.149:
+ je .LBB1_189
+# %bb.171:
cmp qword ptr [rsi], r13
- jmp .LBB1_164
-.LBB1_150:
+ jmp .LBB1_181
+.LBB1_172:
mov r9, r8
and r9, -2
xor r11d, r11d
- mov r15, r14
.p2align 4, 0x90
-.LBB1_151: # =>This Inner Loop Header: Depth=1
+.LBB1_173: # =>This Inner Loop Header: Depth=1
vucomiss xmm0, dword ptr [rsi]
setnp cl
sete al
@@ -5815,7 +6135,8 @@ comparison_equal_arr_scalar_avx2: # @comparison_equal_arr_scalar_avx2
neg al
mov rdi, r11
shr rdi, 3
- movzx r10d, byte ptr [r15 + rdi]
+ mov r15, r14
+ movzx r10d, byte ptr [r14 + rdi]
mov ecx, r11d
and cl, 6
mov bl, 1
@@ -5823,7 +6144,7 @@ comparison_equal_arr_scalar_avx2: # @comparison_equal_arr_scalar_avx2
xor al, r10b
and bl, al
xor bl, r10b
- mov byte ptr [r15 + rdi], bl
+ mov byte ptr [r14 + rdi], bl
add r11, 2
vucomiss xmm0, dword ptr [rsi + 4]
lea rsi, [rsi + 8]
@@ -5837,15 +6158,15 @@ comparison_equal_arr_scalar_avx2: # @comparison_equal_arr_scalar_avx2
shl dl, cl
and dl, al
xor dl, bl
- mov byte ptr [r15 + rdi], dl
+ mov byte ptr [r14 + rdi], dl
cmp r9, r11
- jne .LBB1_151
-.LBB1_152:
+ jne .LBB1_173
+.LBB1_174:
test r8b, 1
- je .LBB1_165
-# %bb.153:
+ je .LBB1_189
+# %bb.175:
vucomiss xmm0, dword ptr [rsi]
-.LBB1_154:
+.LBB1_176:
setnp al
sete dl
and dl, al
@@ -5861,76 +6182,20 @@ comparison_equal_arr_scalar_avx2: # @comparison_equal_arr_scalar_avx2
and bl, dl
xor bl, sil
mov byte ptr [r14 + rax], bl
- jmp .LBB1_165
-.LBB1_155:
+ jmp .LBB1_189
+.LBB1_177:
mov r10, r8
and r10, -2
- xor esi, esi
- mov r11, qword ptr [rsp + 376] # 8-byte Reload
+ xor r11d, r11d
.p2align 4, 0x90
-.LBB1_156: # =>This Inner Loop Header: Depth=1
- cmp byte ptr [r12 + rsi], r14b
- sete bl
- neg bl
- mov rdi, rsi
- shr rdi, 3
- mov ecx, esi
- and cl, 6
- mov dl, 1
- shl dl, cl
- movzx r9d, byte ptr [r11 + rdi]
- xor bl, r9b
- and dl, bl
- xor dl, r9b
- mov byte ptr [r11 + rdi], dl
- cmp byte ptr [r12 + rsi + 1], r14b
- lea rsi, [rsi + 2]
- sete bl
- neg bl
- xor bl, dl
- or cl, 1
- mov al, 1
- shl al, cl
- and al, bl
- xor al, dl
- mov byte ptr [r11 + rdi], al
- cmp r10, rsi
- jne .LBB1_156
-.LBB1_157:
- add r12, rsi
-.LBB1_158:
- test r8b, 1
- je .LBB1_165
-# %bb.159:
- cmp byte ptr [r12], r14b
- sete al
- neg al
- mov rdx, rsi
- shr rdx, 3
- mov r8, qword ptr [rsp + 376] # 8-byte Reload
- mov dil, byte ptr [r8 + rdx]
- and sil, 7
- mov bl, 1
- mov ecx, esi
- shl bl, cl
- xor al, dil
- and bl, al
- xor bl, dil
- mov byte ptr [r8 + rdx], bl
- jmp .LBB1_165
-.LBB1_160:
- mov r10, r8
- and r10, -2
- xor r11d, r11d
- mov r15, r14
- .p2align 4, 0x90
-.LBB1_161: # =>This Inner Loop Header: Depth=1
+.LBB1_178: # =>This Inner Loop Header: Depth=1
cmp dword ptr [rsi], r13d
sete al
neg al
mov rdi, r11
shr rdi, 3
- movzx r9d, byte ptr [r15 + rdi]
+ mov r15, r14
+ movzx r9d, byte ptr [r14 + rdi]
mov ecx, r11d
and cl, 6
mov bl, 1
@@ -5938,7 +6203,7 @@ comparison_equal_arr_scalar_avx2: # @comparison_equal_arr_scalar_avx2
xor al, r9b
and bl, al
xor bl, r9b
- mov byte ptr [r15 + rdi], bl
+ mov byte ptr [r14 + rdi], bl
add r11, 2
cmp dword ptr [rsi + 4], r13d
lea rsi, [rsi + 8]
@@ -5950,15 +6215,15 @@ comparison_equal_arr_scalar_avx2: # @comparison_equal_arr_scalar_avx2
shl dl, cl
and dl, al
xor dl, bl
- mov byte ptr [r15 + rdi], dl
+ mov byte ptr [r14 + rdi], dl
cmp r10, r11
- jne .LBB1_161
-.LBB1_162:
+ jne .LBB1_178
+.LBB1_179:
test r8b, 1
- je .LBB1_165
-# %bb.163:
+ je .LBB1_189
+# %bb.180:
cmp dword ptr [rsi], r13d
-.LBB1_164:
+.LBB1_181:
sete al
neg al
mov rdx, r11
@@ -5972,7 +6237,64 @@ comparison_equal_arr_scalar_avx2: # @comparison_equal_arr_scalar_avx2
and bl, al
xor bl, sil
mov byte ptr [r14 + rdx], bl
-.LBB1_165:
+ jmp .LBB1_189
+.LBB1_184:
+ mov r10, r8
+ and r10, -2
+ xor r9d, r9d
+ mov r11, qword ptr [rsp + 376] # 8-byte Reload
+ .p2align 4, 0x90
+.LBB1_185: # =>This Inner Loop Header: Depth=1
+ mov rax, r9
+ cmp byte ptr [rsi + r9], r12b
+ sete bl
+ neg bl
+ mov rdi, r9
+ shr rdi, 3
+ mov ecx, eax
+ and cl, 6
+ mov dl, 1
+ shl dl, cl
+ movzx r9d, byte ptr [r11 + rdi]
+ xor bl, r9b
+ and dl, bl
+ xor dl, r9b
+ mov byte ptr [r11 + rdi], dl
+ cmp byte ptr [rsi + rax + 1], r12b
+ lea r9, [rax + 2]
+ sete bl
+ neg bl
+ xor bl, dl
+ or cl, 1
+ mov al, 1
+ shl al, cl
+ and al, bl
+ xor al, dl
+ mov byte ptr [r11 + rdi], al
+ cmp r10, r9
+ jne .LBB1_185
+.LBB1_186:
+ add rsi, r9
+.LBB1_187:
+ test r8b, 1
+ je .LBB1_189
+# %bb.188:
+ cmp byte ptr [rsi], r12b
+ sete al
+ neg al
+ mov rdx, r9
+ shr rdx, 3
+ mov r8, qword ptr [rsp + 376] # 8-byte Reload
+ mov dil, byte ptr [r8 + rdx]
+ and r9b, 7
+ mov bl, 1
+ mov ecx, r9d
+ shl bl, cl
+ xor al, dil
+ and bl, al
+ xor bl, dil
+ mov byte ptr [r8 + rdx], bl
+.LBB1_189:
lea rsp, [rbp - 40]
pop rbx
pop r12
@@ -5982,102 +6304,102 @@ comparison_equal_arr_scalar_avx2: # @comparison_equal_arr_scalar_avx2
pop rbp
vzeroupper
ret
-.LBB1_166:
- and r13, -32
- mov rax, r13
+.LBB1_190:
+ and rcx, -32
+ mov rax, rcx
shl rax, 5
- add rax, rsi
+ add rax, rdi
mov qword ptr [rsp + 400], rax # 8-byte Spill
- mov qword ptr [rsp + 384], r13 # 8-byte Spill
- lea rax, [r11 + 4*r13]
+ mov qword ptr [rsp + 384], rcx # 8-byte Spill
+ lea rax, [r14 + 4*rcx]
mov qword ptr [rsp + 376], rax # 8-byte Spill
- vmovd xmm0, r14d
+ vmovd xmm0, r12d
vpbroadcastb ymm0, xmm0
vmovdqa ymmword ptr [rsp + 512], ymm0 # 32-byte Spill
xor eax, eax
- mov qword ptr [rsp + 272], r11 # 8-byte Spill
+ mov qword ptr [rsp + 272], r14 # 8-byte Spill
.p2align 4, 0x90
-.LBB1_167: # =>This Inner Loop Header: Depth=1
+.LBB1_191: # =>This Inner Loop Header: Depth=1
mov rbx, rax
mov qword ptr [rsp + 408], rax # 8-byte Spill
shl rbx, 5
mov rax, rbx
or rax, 32
- mov qword ptr [rsp + 208], rax # 8-byte Spill
+ mov qword ptr [rsp + 184], rax # 8-byte Spill
mov rax, rbx
or rax, 64
- mov qword ptr [rsp + 88], rax # 8-byte Spill
+ mov qword ptr [rsp + 120], rax # 8-byte Spill
mov rax, rbx
or rax, 96
- mov qword ptr [rsp + 64], rax # 8-byte Spill
+ mov qword ptr [rsp + 56], rax # 8-byte Spill
mov rax, rbx
or rax, 128
- mov qword ptr [rsp + 160], rax # 8-byte Spill
+ mov qword ptr [rsp + 176], rax # 8-byte Spill
mov rax, rbx
or rax, 160
- mov qword ptr [rsp + 320], rax # 8-byte Spill
+ mov qword ptr [rsp + 136], rax # 8-byte Spill
mov rax, rbx
or rax, 192
- mov qword ptr [rsp + 144], rax # 8-byte Spill
+ mov qword ptr [rsp + 152], rax # 8-byte Spill
mov rax, rbx
or rax, 224
- mov qword ptr [rsp + 224], rax # 8-byte Spill
+ mov qword ptr [rsp + 248], rax # 8-byte Spill
mov rax, rbx
or rax, 256
- mov qword ptr [rsp + 264], rax # 8-byte Spill
+ mov qword ptr [rsp + 168], rax # 8-byte Spill
mov rax, rbx
or rax, 288
- mov qword ptr [rsp + 96], rax # 8-byte Spill
+ mov qword ptr [rsp + 160], rax # 8-byte Spill
mov rax, rbx
or rax, 320
- mov qword ptr [rsp + 136], rax # 8-byte Spill
+ mov qword ptr [rsp + 40], rax # 8-byte Spill
mov rax, rbx
or rax, 512
mov rcx, rax
- movzx eax, byte ptr [rsi + rax]
- mov rdx, rcx
+ movzx eax, byte ptr [rdi + rax]
vmovd xmm0, eax
- mov rcx, rbx
- movzx eax, byte ptr [rsi + rbx]
+ movzx eax, byte ptr [rdi + rbx]
vmovd xmm3, eax
- movzx eax, byte ptr [rsi + rdx + 1]
+ movzx eax, byte ptr [rdi + rcx + 1]
+ mov rdx, rcx
vmovd xmm4, eax
- movzx eax, byte ptr [rsi + rbx + 1]
+ mov rcx, rbx
+ movzx eax, byte ptr [rdi + rbx + 1]
vmovd xmm10, eax
- movzx eax, byte ptr [rsi + rdx + 2]
+ movzx eax, byte ptr [rdi + rdx + 2]
vmovd xmm1, eax
vmovdqa xmmword ptr [rsp + 480], xmm1 # 16-byte Spill
- movzx eax, byte ptr [rsi + rbx + 2]
+ movzx eax, byte ptr [rdi + rbx + 2]
vmovd xmm1, eax
vmovdqa xmmword ptr [rsp + 448], xmm1 # 16-byte Spill
- movzx eax, byte ptr [rsi + rdx + 3]
+ movzx eax, byte ptr [rdi + rdx + 3]
vmovd xmm11, eax
- movzx eax, byte ptr [rsi + rbx + 3]
+ movzx eax, byte ptr [rdi + rbx + 3]
vmovd xmm8, eax
- movzx eax, byte ptr [rsi + rdx + 4]
+ movzx eax, byte ptr [rdi + rdx + 4]
vmovd xmm1, eax
vmovdqa xmmword ptr [rsp + 416], xmm1 # 16-byte Spill
- movzx eax, byte ptr [rsi + rbx + 4]
+ movzx eax, byte ptr [rdi + rbx + 4]
vmovd xmm13, eax
- movzx eax, byte ptr [rsi + rdx + 5]
+ movzx eax, byte ptr [rdi + rdx + 5]
vmovd xmm14, eax
- movzx eax, byte ptr [rsi + rbx + 5]
+ movzx eax, byte ptr [rdi + rbx + 5]
vmovd xmm6, eax
- movzx eax, byte ptr [rsi + rdx + 6]
+ movzx eax, byte ptr [rdi + rdx + 6]
mov qword ptr [rsp + 240], rdx # 8-byte Spill
vmovd xmm12, eax
- movzx eax, byte ptr [rsi + rbx + 6]
+ movzx eax, byte ptr [rdi + rbx + 6]
vmovd xmm7, eax
- movzx eax, byte ptr [rsi + rdx + 7]
+ movzx eax, byte ptr [rdi + rdx + 7]
vmovd xmm2, eax
- movzx eax, byte ptr [rsi + rbx + 7]
+ movzx eax, byte ptr [rdi + rbx + 7]
vmovd xmm1, eax
mov rax, rbx
or rax, 352
mov qword ptr [rsp + 128], rax # 8-byte Spill
mov rax, rbx
or rax, 384
- mov qword ptr [rsp + 120], rax # 8-byte Spill
+ mov qword ptr [rsp + 48], rax # 8-byte Spill
mov rax, rbx
or rax, 416
mov qword ptr [rsp + 32], rax # 8-byte Spill
@@ -6086,1881 +6408,1882 @@ comparison_equal_arr_scalar_avx2: # @comparison_equal_arr_scalar_avx2
mov qword ptr [rsp + 288], rax # 8-byte Spill
mov rax, rbx
or rax, 480
- mov qword ptr [rsp + 48], rax # 8-byte Spill
+ mov qword ptr [rsp + 320], rax # 8-byte Spill
mov rax, rbx
or rax, 544
- mov qword ptr [rsp + 152], rax # 8-byte Spill
- mov rax, rbx
- or rax, 576
- mov qword ptr [rsp + 232], rax # 8-byte Spill
- mov rax, rbx
- or rax, 608
mov qword ptr [rsp + 104], rax # 8-byte Spill
- mov r15, rbx
- or r15, 640
- mov qword ptr [rsp + 168], r15 # 8-byte Spill
- mov r11, rbx
- or r11, 672
- mov qword ptr [rsp + 200], r11 # 8-byte Spill
- mov r8, rbx
- or r8, 704
- mov qword ptr [rsp + 176], r8 # 8-byte Spill
- mov rdx, rbx
- or rdx, 736
- mov qword ptr [rsp + 192], rdx # 8-byte Spill
- mov r12, rbx
- or r12, 768
- mov qword ptr [rsp + 216], r12 # 8-byte Spill
- mov r14, rbx
- or r14, 800
- mov qword ptr [rsp + 184], r14 # 8-byte Spill
- mov r10, rbx
+ or rbx, 576
+ mov qword ptr [rsp + 264], rbx # 8-byte Spill
+ mov rax, rcx
+ or rax, 608
+ mov qword ptr [rsp + 200], rax # 8-byte Spill
+ mov r14, rcx
+ or r14, 640
+ mov qword ptr [rsp + 112], r14 # 8-byte Spill
+ mov rax, rcx
+ or rax, 672
+ mov qword ptr [rsp + 192], rax # 8-byte Spill
+ mov r12, rcx
+ or r12, 704
+ mov qword ptr [rsp + 144], r12 # 8-byte Spill
+ mov rsi, rcx
+ or rsi, 736
+ mov qword ptr [rsp + 208], rsi # 8-byte Spill
+ mov r15, rcx
+ or r15, 768
+ mov qword ptr [rsp + 224], r15 # 8-byte Spill
+ mov r11, rcx
+ or r11, 800
+ mov qword ptr [rsp + 232], r11 # 8-byte Spill
+ mov r10, rcx
or r10, 832
- mov qword ptr [rsp + 80], r10 # 8-byte Spill
- mov r9, rbx
+ mov qword ptr [rsp + 88], r10 # 8-byte Spill
+ mov r9, rcx
or r9, 864
- mov qword ptr [rsp + 72], r9 # 8-byte Spill
- mov rax, rbx
- or rax, 896
- mov qword ptr [rsp + 248], rax # 8-byte Spill
- mov rdi, rbx
- or rdi, 928
- mov qword ptr [rsp + 112], rdi # 8-byte Spill
- mov rax, rbx
- mov qword ptr [rsp + 256], rbx # 8-byte Spill
+ mov qword ptr [rsp + 216], r9 # 8-byte Spill
+ mov r8, rcx
+ or r8, 896
+ mov qword ptr [rsp + 80], r8 # 8-byte Spill
+ mov rdx, rcx
+ or rdx, 928
+ mov qword ptr [rsp + 72], rdx # 8-byte Spill
+ mov rax, rcx
+ mov qword ptr [rsp + 256], rcx # 8-byte Spill
or rax, 960
- mov qword ptr [rsp + 40], rax # 8-byte Spill
+ mov qword ptr [rsp + 64], rax # 8-byte Spill
or rcx, 992
- mov qword ptr [rsp + 56], rcx # 8-byte Spill
- mov r13, qword ptr [rsp + 152] # 8-byte Reload
- vpinsrb xmm9, xmm0, byte ptr [rsi + r13], 1
- mov rbx, qword ptr [rsp + 232] # 8-byte Reload
- vpinsrb xmm0, xmm9, byte ptr [rsi + rbx], 2
- mov rbx, qword ptr [rsp + 104] # 8-byte Reload
- vpinsrb xmm0, xmm0, byte ptr [rsi + rbx], 3
- vpinsrb xmm0, xmm0, byte ptr [rsi + r15], 4
- vpinsrb xmm0, xmm0, byte ptr [rsi + r11], 5
- vpinsrb xmm0, xmm0, byte ptr [rsi + r8], 6
- vpinsrb xmm0, xmm0, byte ptr [rsi + rdx], 7
- vpinsrb xmm0, xmm0, byte ptr [rsi + r12], 8
- vpinsrb xmm0, xmm0, byte ptr [rsi + r14], 9
- vpinsrb xmm0, xmm0, byte ptr [rsi + r10], 10
- vpinsrb xmm0, xmm0, byte ptr [rsi + r9], 11
- mov r13, qword ptr [rsp + 248] # 8-byte Reload
- vpinsrb xmm0, xmm0, byte ptr [rsi + r13], 12
- vpinsrb xmm0, xmm0, byte ptr [rsi + rdi], 13
- vpinsrb xmm0, xmm0, byte ptr [rsi + rax], 14
- vpinsrb xmm0, xmm0, byte ptr [rsi + rcx], 15
- mov r14, qword ptr [rsp + 208] # 8-byte Reload
- vpinsrb xmm3, xmm3, byte ptr [rsi + r14], 1
- mov r12, qword ptr [rsp + 88] # 8-byte Reload
- vpinsrb xmm3, xmm3, byte ptr [rsi + r12], 2
- mov r10, qword ptr [rsp + 64] # 8-byte Reload
- vpinsrb xmm3, xmm3, byte ptr [rsi + r10], 3
- mov r11, qword ptr [rsp + 160] # 8-byte Reload
- vpinsrb xmm3, xmm3, byte ptr [rsi + r11], 4
- mov r8, qword ptr [rsp + 320] # 8-byte Reload
- vpinsrb xmm3, xmm3, byte ptr [rsi + r8], 5
- mov r9, qword ptr [rsp + 144] # 8-byte Reload
- vpinsrb xmm3, xmm3, byte ptr [rsi + r9], 6
- mov r15, qword ptr [rsp + 224] # 8-byte Reload
- vpinsrb xmm3, xmm3, byte ptr [rsi + r15], 7
- mov rdi, qword ptr [rsp + 264] # 8-byte Reload
- vpinsrb xmm3, xmm3, byte ptr [rsi + rdi], 8
- mov rax, qword ptr [rsp + 96] # 8-byte Reload
- vpinsrb xmm3, xmm3, byte ptr [rsi + rax], 9
- mov rbx, qword ptr [rsp + 136] # 8-byte Reload
- vpinsrb xmm3, xmm3, byte ptr [rsi + rbx], 10
- mov rcx, qword ptr [rsp + 128] # 8-byte Reload
- vpinsrb xmm3, xmm3, byte ptr [rsi + rcx], 11
- mov rdx, qword ptr [rsp + 120] # 8-byte Reload
- vpinsrb xmm3, xmm3, byte ptr [rsi + rdx], 12
- mov rdx, qword ptr [rsp + 32] # 8-byte Reload
- vpinsrb xmm3, xmm3, byte ptr [rsi + rdx], 13
- mov rdx, qword ptr [rsp + 288] # 8-byte Reload
- vpinsrb xmm3, xmm3, byte ptr [rsi + rdx], 14
- mov rdx, qword ptr [rsp + 48] # 8-byte Reload
- vpinsrb xmm3, xmm3, byte ptr [rsi + rdx], 15
- mov rdx, qword ptr [rsp + 152] # 8-byte Reload
- vpinsrb xmm4, xmm4, byte ptr [rsi + rdx + 1], 1
- mov rdx, qword ptr [rsp + 232] # 8-byte Reload
- vpinsrb xmm4, xmm4, byte ptr [rsi + rdx + 1], 2
- mov rdx, qword ptr [rsp + 104] # 8-byte Reload
- vpinsrb xmm4, xmm4, byte ptr [rsi + rdx + 1], 3
+ mov qword ptr [rsp + 96], rcx # 8-byte Spill
+ mov r13, qword ptr [rsp + 104] # 8-byte Reload
+ vpinsrb xmm9, xmm0, byte ptr [rdi + r13], 1
+ vpinsrb xmm0, xmm9, byte ptr [rdi + rbx], 2
+ mov rbx, qword ptr [rsp + 200] # 8-byte Reload
+ vpinsrb xmm0, xmm0, byte ptr [rdi + rbx], 3
+ vpinsrb xmm0, xmm0, byte ptr [rdi + r14], 4
+ mov rbx, qword ptr [rsp + 192] # 8-byte Reload
+ vpinsrb xmm0, xmm0, byte ptr [rdi + rbx], 5
+ vpinsrb xmm0, xmm0, byte ptr [rdi + r12], 6
+ vpinsrb xmm0, xmm0, byte ptr [rdi + rsi], 7
+ vpinsrb xmm0, xmm0, byte ptr [rdi + r15], 8
+ vpinsrb xmm0, xmm0, byte ptr [rdi + r11], 9
+ vpinsrb xmm0, xmm0, byte ptr [rdi + r10], 10
+ vpinsrb xmm0, xmm0, byte ptr [rdi + r9], 11
+ vpinsrb xmm0, xmm0, byte ptr [rdi + r8], 12
+ vpinsrb xmm0, xmm0, byte ptr [rdi + rdx], 13
+ vpinsrb xmm0, xmm0, byte ptr [rdi + rax], 14
+ vpinsrb xmm0, xmm0, byte ptr [rdi + rcx], 15
+ mov r14, qword ptr [rsp + 184] # 8-byte Reload
+ vpinsrb xmm3, xmm3, byte ptr [rdi + r14], 1
+ mov r12, qword ptr [rsp + 120] # 8-byte Reload
+ vpinsrb xmm3, xmm3, byte ptr [rdi + r12], 2
+ mov r8, qword ptr [rsp + 56] # 8-byte Reload
+ vpinsrb xmm3, xmm3, byte ptr [rdi + r8], 3
+ mov r9, qword ptr [rsp + 176] # 8-byte Reload
+ vpinsrb xmm3, xmm3, byte ptr [rdi + r9], 4
+ mov r11, qword ptr [rsp + 136] # 8-byte Reload
+ vpinsrb xmm3, xmm3, byte ptr [rdi + r11], 5
+ mov r10, qword ptr [rsp + 152] # 8-byte Reload
+ vpinsrb xmm3, xmm3, byte ptr [rdi + r10], 6
+ mov r15, qword ptr [rsp + 248] # 8-byte Reload
+ vpinsrb xmm3, xmm3, byte ptr [rdi + r15], 7
mov rdx, qword ptr [rsp + 168] # 8-byte Reload
- vpinsrb xmm4, xmm4, byte ptr [rsi + rdx + 1], 4
- mov rdx, qword ptr [rsp + 200] # 8-byte Reload
- vpinsrb xmm4, xmm4, byte ptr [rsi + rdx + 1], 5
- mov rdx, qword ptr [rsp + 176] # 8-byte Reload
- vpinsrb xmm4, xmm4, byte ptr [rsi + rdx + 1], 6
- mov rdx, qword ptr [rsp + 192] # 8-byte Reload
- vpinsrb xmm4, xmm4, byte ptr [rsi + rdx + 1], 7
- mov rdx, qword ptr [rsp + 216] # 8-byte Reload
- vpinsrb xmm4, xmm4, byte ptr [rsi + rdx + 1], 8
- mov rdx, qword ptr [rsp + 184] # 8-byte Reload
- vpinsrb xmm4, xmm4, byte ptr [rsi + rdx + 1], 9
- mov rdx, qword ptr [rsp + 80] # 8-byte Reload
- vpinsrb xmm4, xmm4, byte ptr [rsi + rdx + 1], 10
- mov rdx, qword ptr [rsp + 72] # 8-byte Reload
- vpinsrb xmm4, xmm4, byte ptr [rsi + rdx + 1], 11
- vpinsrb xmm4, xmm4, byte ptr [rsi + r13 + 1], 12
- mov rdx, qword ptr [rsp + 112] # 8-byte Reload
- vpinsrb xmm4, xmm4, byte ptr [rsi + rdx + 1], 13
- mov r13, qword ptr [rsp + 40] # 8-byte Reload
- vpinsrb xmm4, xmm4, byte ptr [rsi + r13 + 1], 14
- mov rdx, qword ptr [rsp + 56] # 8-byte Reload
- vpinsrb xmm4, xmm4, byte ptr [rsi + rdx + 1], 15
- vpinsrb xmm5, xmm10, byte ptr [rsi + r14 + 1], 1
- vpinsrb xmm5, xmm5, byte ptr [rsi + r12 + 1], 2
- vpinsrb xmm5, xmm5, byte ptr [rsi + r10 + 1], 3
- vpinsrb xmm5, xmm5, byte ptr [rsi + r11 + 1], 4
- vpinsrb xmm5, xmm5, byte ptr [rsi + r8 + 1], 5
- vpinsrb xmm5, xmm5, byte ptr [rsi + r9 + 1], 6
- mov r8, r9
- vpinsrb xmm5, xmm5, byte ptr [rsi + r15 + 1], 7
- vpinsrb xmm5, xmm5, byte ptr [rsi + rdi + 1], 8
- vpinsrb xmm5, xmm5, byte ptr [rsi + rax + 1], 9
- vpinsrb xmm5, xmm5, byte ptr [rsi + rbx + 1], 10
- vpinsrb xmm5, xmm5, byte ptr [rsi + rcx + 1], 11
- mov rax, qword ptr [rsp + 120] # 8-byte Reload
- vpinsrb xmm5, xmm5, byte ptr [rsi + rax + 1], 12
+ vpinsrb xmm3, xmm3, byte ptr [rdi + rdx], 8
+ mov rax, qword ptr [rsp + 160] # 8-byte Reload
+ vpinsrb xmm3, xmm3, byte ptr [rdi + rax], 9
+ mov rbx, qword ptr [rsp + 40] # 8-byte Reload
+ vpinsrb xmm3, xmm3, byte ptr [rdi + rbx], 10
+ mov rcx, qword ptr [rsp + 128] # 8-byte Reload
+ vpinsrb xmm3, xmm3, byte ptr [rdi + rcx], 11
+ mov rsi, qword ptr [rsp + 48] # 8-byte Reload
+ vpinsrb xmm3, xmm3, byte ptr [rdi + rsi], 12
+ mov rsi, qword ptr [rsp + 32] # 8-byte Reload
+ vpinsrb xmm3, xmm3, byte ptr [rdi + rsi], 13
+ mov rsi, qword ptr [rsp + 288] # 8-byte Reload
+ vpinsrb xmm3, xmm3, byte ptr [rdi + rsi], 14
+ mov rsi, qword ptr [rsp + 320] # 8-byte Reload
+ vpinsrb xmm3, xmm3, byte ptr [rdi + rsi], 15
+ mov rsi, qword ptr [rsp + 104] # 8-byte Reload
+ vpinsrb xmm4, xmm4, byte ptr [rdi + rsi + 1], 1
+ mov r13, qword ptr [rsp + 264] # 8-byte Reload
+ vpinsrb xmm4, xmm4, byte ptr [rdi + r13 + 1], 2
+ mov rsi, qword ptr [rsp + 200] # 8-byte Reload
+ vpinsrb xmm4, xmm4, byte ptr [rdi + rsi + 1], 3
+ mov r13, qword ptr [rsp + 112] # 8-byte Reload
+ vpinsrb xmm4, xmm4, byte ptr [rdi + r13 + 1], 4
+ mov rsi, qword ptr [rsp + 192] # 8-byte Reload
+ vpinsrb xmm4, xmm4, byte ptr [rdi + rsi + 1], 5
+ mov r13, qword ptr [rsp + 144] # 8-byte Reload
+ vpinsrb xmm4, xmm4, byte ptr [rdi + r13 + 1], 6
+ mov r13, qword ptr [rsp + 208] # 8-byte Reload
+ vpinsrb xmm4, xmm4, byte ptr [rdi + r13 + 1], 7
+ mov rsi, qword ptr [rsp + 224] # 8-byte Reload
+ vpinsrb xmm4, xmm4, byte ptr [rdi + rsi + 1], 8
+ mov rsi, qword ptr [rsp + 232] # 8-byte Reload
+ vpinsrb xmm4, xmm4, byte ptr [rdi + rsi + 1], 9
+ mov rsi, qword ptr [rsp + 88] # 8-byte Reload
+ vpinsrb xmm4, xmm4, byte ptr [rdi + rsi + 1], 10
+ mov rsi, qword ptr [rsp + 216] # 8-byte Reload
+ vpinsrb xmm4, xmm4, byte ptr [rdi + rsi + 1], 11
+ mov rsi, qword ptr [rsp + 80] # 8-byte Reload
+ vpinsrb xmm4, xmm4, byte ptr [rdi + rsi + 1], 12
+ mov rsi, qword ptr [rsp + 72] # 8-byte Reload
+ vpinsrb xmm4, xmm4, byte ptr [rdi + rsi + 1], 13
+ mov rsi, qword ptr [rsp + 64] # 8-byte Reload
+ vpinsrb xmm4, xmm4, byte ptr [rdi + rsi + 1], 14
+ mov rsi, qword ptr [rsp + 96] # 8-byte Reload
+ vpinsrb xmm4, xmm4, byte ptr [rdi + rsi + 1], 15
+ vpinsrb xmm5, xmm10, byte ptr [rdi + r14 + 1], 1
+ vpinsrb xmm5, xmm5, byte ptr [rdi + r12 + 1], 2
+ mov rsi, r12
+ vpinsrb xmm5, xmm5, byte ptr [rdi + r8 + 1], 3
+ vpinsrb xmm5, xmm5, byte ptr [rdi + r9 + 1], 4
+ vpinsrb xmm5, xmm5, byte ptr [rdi + r11 + 1], 5
+ vpinsrb xmm5, xmm5, byte ptr [rdi + r10 + 1], 6
+ vpinsrb xmm5, xmm5, byte ptr [rdi + r15 + 1], 7
+ vpinsrb xmm5, xmm5, byte ptr [rdi + rdx + 1], 8
+ vpinsrb xmm5, xmm5, byte ptr [rdi + rax + 1], 9
+ vpinsrb xmm5, xmm5, byte ptr [rdi + rbx + 1], 10
+ vpinsrb xmm5, xmm5, byte ptr [rdi + rcx + 1], 11
+ mov rax, qword ptr [rsp + 48] # 8-byte Reload
+ vpinsrb xmm5, xmm5, byte ptr [rdi + rax + 1], 12
mov rax, qword ptr [rsp + 32] # 8-byte Reload
- vpinsrb xmm5, xmm5, byte ptr [rsi + rax + 1], 13
+ vpinsrb xmm5, xmm5, byte ptr [rdi + rax + 1], 13
mov rax, qword ptr [rsp + 288] # 8-byte Reload
- vpinsrb xmm5, xmm5, byte ptr [rsi + rax + 1], 14
+ vpinsrb xmm5, xmm5, byte ptr [rdi + rax + 1], 14
vinserti128 ymm15, ymm3, xmm0, 1
- mov rax, qword ptr [rsp + 48] # 8-byte Reload
- vpinsrb xmm0, xmm5, byte ptr [rsi + rax + 1], 15
+ mov rax, qword ptr [rsp + 320] # 8-byte Reload
+ vpinsrb xmm0, xmm5, byte ptr [rdi + rax + 1], 15
mov rax, qword ptr [rsp + 240] # 8-byte Reload
- movzx edi, byte ptr [rsi + rax + 8]
- vmovd xmm9, edi
+ movzx edx, byte ptr [rdi + rax + 8]
+ vmovd xmm9, edx
vinserti128 ymm0, ymm0, xmm4, 1
vmovdqa ymmword ptr [rsp + 1216], ymm0 # 32-byte Spill
mov rax, qword ptr [rsp + 256] # 8-byte Reload
- movzx edi, byte ptr [rsi + rax + 8]
- vmovd xmm10, edi
- mov rdx, qword ptr [rsp + 152] # 8-byte Reload
+ movzx edx, byte ptr [rdi + rax + 8]
+ vmovd xmm10, edx
+ mov r8, qword ptr [rsp + 104] # 8-byte Reload
vmovdqa xmm0, xmmword ptr [rsp + 480] # 16-byte Reload
- vpinsrb xmm0, xmm0, byte ptr [rsi + rdx + 2], 1
- mov rcx, qword ptr [rsp + 232] # 8-byte Reload
- vpinsrb xmm0, xmm0, byte ptr [rsi + rcx + 2], 2
- mov r10, qword ptr [rsp + 104] # 8-byte Reload
- vpinsrb xmm0, xmm0, byte ptr [rsi + r10 + 2], 3
- mov rax, qword ptr [rsp + 168] # 8-byte Reload
- vpinsrb xmm0, xmm0, byte ptr [rsi + rax + 2], 4
- mov rax, qword ptr [rsp + 200] # 8-byte Reload
- vpinsrb xmm0, xmm0, byte ptr [rsi + rax + 2], 5
- mov rax, qword ptr [rsp + 176] # 8-byte Reload
- vpinsrb xmm0, xmm0, byte ptr [rsi + rax + 2], 6
+ vpinsrb xmm0, xmm0, byte ptr [rdi + r8 + 2], 1
+ mov r9, qword ptr [rsp + 264] # 8-byte Reload
+ vpinsrb xmm0, xmm0, byte ptr [rdi + r9 + 2], 2
+ mov r10, qword ptr [rsp + 200] # 8-byte Reload
+ vpinsrb xmm0, xmm0, byte ptr [rdi + r10 + 2], 3
+ mov rax, qword ptr [rsp + 112] # 8-byte Reload
+ vpinsrb xmm0, xmm0, byte ptr [rdi + rax + 2], 4
mov rax, qword ptr [rsp + 192] # 8-byte Reload
- vpinsrb xmm0, xmm0, byte ptr [rsi + rax + 2], 7
- mov r12, qword ptr [rsp + 216] # 8-byte Reload
- vpinsrb xmm0, xmm0, byte ptr [rsi + r12 + 2], 8
- mov r13, qword ptr [rsp + 184] # 8-byte Reload
- vpinsrb xmm0, xmm0, byte ptr [rsi + r13 + 2], 9
- mov r9, qword ptr [rsp + 80] # 8-byte Reload
- vpinsrb xmm0, xmm0, byte ptr [rsi + r9 + 2], 10
- mov r11, qword ptr [rsp + 72] # 8-byte Reload
- vpinsrb xmm0, xmm0, byte ptr [rsi + r11 + 2], 11
- mov r14, qword ptr [rsp + 248] # 8-byte Reload
- vpinsrb xmm0, xmm0, byte ptr [rsi + r14 + 2], 12
- mov r15, qword ptr [rsp + 112] # 8-byte Reload
- vpinsrb xmm0, xmm0, byte ptr [rsi + r15 + 2], 13
- mov rax, qword ptr [rsp + 40] # 8-byte Reload
- vpinsrb xmm0, xmm0, byte ptr [rsi + rax + 2], 14
- mov rax, qword ptr [rsp + 56] # 8-byte Reload
- vpinsrb xmm0, xmm0, byte ptr [rsi + rax + 2], 15
- mov rax, qword ptr [rsp + 208] # 8-byte Reload
- vmovdqa xmm3, xmmword ptr [rsp + 448] # 16-byte Reload
- vpinsrb xmm3, xmm3, byte ptr [rsi + rax + 2], 1
- mov rdi, qword ptr [rsp + 88] # 8-byte Reload
- vpinsrb xmm3, xmm3, byte ptr [rsi + rdi + 2], 2
- mov rdi, qword ptr [rsp + 64] # 8-byte Reload
- vpinsrb xmm3, xmm3, byte ptr [rsi + rdi + 2], 3
- mov rdi, qword ptr [rsp + 160] # 8-byte Reload
- vpinsrb xmm3, xmm3, byte ptr [rsi + rdi + 2], 4
- mov rdi, qword ptr [rsp + 320] # 8-byte Reload
- vpinsrb xmm3, xmm3, byte ptr [rsi + rdi + 2], 5
- vpinsrb xmm3, xmm3, byte ptr [rsi + r8 + 2], 6
- mov rdi, qword ptr [rsp + 224] # 8-byte Reload
- vpinsrb xmm3, xmm3, byte ptr [rsi + rdi + 2], 7
- mov rbx, qword ptr [rsp + 264] # 8-byte Reload
- vpinsrb xmm3, xmm3, byte ptr [rsi + rbx + 2], 8
- mov rbx, qword ptr [rsp + 96] # 8-byte Reload
- vpinsrb xmm3, xmm3, byte ptr [rsi + rbx + 2], 9
- mov rbx, qword ptr [rsp + 136] # 8-byte Reload
- vpinsrb xmm3, xmm3, byte ptr [rsi + rbx + 2], 10
- mov r8, qword ptr [rsp + 128] # 8-byte Reload
- vpinsrb xmm3, xmm3, byte ptr [rsi + r8 + 2], 11
- mov rbx, qword ptr [rsp + 120] # 8-byte Reload
- vpinsrb xmm3, xmm3, byte ptr [rsi + rbx + 2], 12
- mov rbx, qword ptr [rsp + 32] # 8-byte Reload
- vpinsrb xmm3, xmm3, byte ptr [rsi + rbx + 2], 13
- mov rbx, qword ptr [rsp + 288] # 8-byte Reload
- vpinsrb xmm3, xmm3, byte ptr [rsi + rbx + 2], 14
- mov rbx, qword ptr [rsp + 48] # 8-byte Reload
- vpinsrb xmm3, xmm3, byte ptr [rsi + rbx + 2], 15
- vpinsrb xmm4, xmm11, byte ptr [rsi + rdx + 3], 1
- vpinsrb xmm4, xmm4, byte ptr [rsi + rcx + 3], 2
- vpinsrb xmm4, xmm4, byte ptr [rsi + r10 + 3], 3
- mov rcx, qword ptr [rsp + 168] # 8-byte Reload
- vpinsrb xmm4, xmm4, byte ptr [rsi + rcx + 3], 4
- mov rcx, qword ptr [rsp + 200] # 8-byte Reload
- vpinsrb xmm4, xmm4, byte ptr [rsi + rcx + 3], 5
- mov rcx, qword ptr [rsp + 176] # 8-byte Reload
- vpinsrb xmm4, xmm4, byte ptr [rsi + rcx + 3], 6
- mov r8, qword ptr [rsp + 192] # 8-byte Reload
- vpinsrb xmm4, xmm4, byte ptr [rsi + r8 + 3], 7
- vpinsrb xmm4, xmm4, byte ptr [rsi + r12 + 3], 8
- vpinsrb xmm4, xmm4, byte ptr [rsi + r13 + 3], 9
- vpinsrb xmm4, xmm4, byte ptr [rsi + r9 + 3], 10
- vpinsrb xmm4, xmm4, byte ptr [rsi + r11 + 3], 11
- vpinsrb xmm4, xmm4, byte ptr [rsi + r14 + 3], 12
- vpinsrb xmm4, xmm4, byte ptr [rsi + r15 + 3], 13
- mov r14, r15
- mov rdx, qword ptr [rsp + 40] # 8-byte Reload
- vpinsrb xmm4, xmm4, byte ptr [rsi + rdx + 3], 14
- mov rcx, qword ptr [rsp + 56] # 8-byte Reload
- vpinsrb xmm4, xmm4, byte ptr [rsi + rcx + 3], 15
- vpinsrb xmm5, xmm8, byte ptr [rsi + rax + 3], 1
- mov rax, qword ptr [rsp + 88] # 8-byte Reload
- vpinsrb xmm5, xmm5, byte ptr [rsi + rax + 3], 2
- mov r10, qword ptr [rsp + 64] # 8-byte Reload
- vpinsrb xmm5, xmm5, byte ptr [rsi + r10 + 3], 3
- mov r15, qword ptr [rsp + 160] # 8-byte Reload
- vpinsrb xmm5, xmm5, byte ptr [rsi + r15 + 3], 4
- mov rax, qword ptr [rsp + 320] # 8-byte Reload
- vpinsrb xmm5, xmm5, byte ptr [rsi + rax + 3], 5
+ vpinsrb xmm0, xmm0, byte ptr [rdi + rax + 2], 5
mov rax, qword ptr [rsp + 144] # 8-byte Reload
- vpinsrb xmm5, xmm5, byte ptr [rsi + rax + 3], 6
- vpinsrb xmm5, xmm5, byte ptr [rsi + rdi + 3], 7
- mov r11, qword ptr [rsp + 264] # 8-byte Reload
- vpinsrb xmm5, xmm5, byte ptr [rsi + r11 + 3], 8
+ vpinsrb xmm0, xmm0, byte ptr [rdi + rax + 2], 6
+ vpinsrb xmm0, xmm0, byte ptr [rdi + r13 + 2], 7
+ mov rcx, qword ptr [rsp + 224] # 8-byte Reload
+ vpinsrb xmm0, xmm0, byte ptr [rdi + rcx + 2], 8
+ mov r12, qword ptr [rsp + 232] # 8-byte Reload
+ vpinsrb xmm0, xmm0, byte ptr [rdi + r12 + 2], 9
+ mov r13, qword ptr [rsp + 88] # 8-byte Reload
+ vpinsrb xmm0, xmm0, byte ptr [rdi + r13 + 2], 10
+ mov r11, qword ptr [rsp + 216] # 8-byte Reload
+ vpinsrb xmm0, xmm0, byte ptr [rdi + r11 + 2], 11
+ mov r14, qword ptr [rsp + 80] # 8-byte Reload
+ vpinsrb xmm0, xmm0, byte ptr [rdi + r14 + 2], 12
+ mov r15, qword ptr [rsp + 72] # 8-byte Reload
+ vpinsrb xmm0, xmm0, byte ptr [rdi + r15 + 2], 13
+ mov rax, qword ptr [rsp + 64] # 8-byte Reload
+ vpinsrb xmm0, xmm0, byte ptr [rdi + rax + 2], 14
mov rax, qword ptr [rsp + 96] # 8-byte Reload
- vpinsrb xmm5, xmm5, byte ptr [rsi + rax + 3], 9
+ vpinsrb xmm0, xmm0, byte ptr [rdi + rax + 2], 15
+ mov rax, qword ptr [rsp + 184] # 8-byte Reload
+ vmovdqa xmm3, xmmword ptr [rsp + 448] # 16-byte Reload
+ vpinsrb xmm3, xmm3, byte ptr [rdi + rax + 2], 1
+ vpinsrb xmm3, xmm3, byte ptr [rdi + rsi + 2], 2
+ mov rdx, qword ptr [rsp + 56] # 8-byte Reload
+ vpinsrb xmm3, xmm3, byte ptr [rdi + rdx + 2], 3
+ mov rdx, qword ptr [rsp + 176] # 8-byte Reload
+ vpinsrb xmm3, xmm3, byte ptr [rdi + rdx + 2], 4
+ mov rdx, qword ptr [rsp + 136] # 8-byte Reload
+ vpinsrb xmm3, xmm3, byte ptr [rdi + rdx + 2], 5
+ mov rdx, qword ptr [rsp + 152] # 8-byte Reload
+ vpinsrb xmm3, xmm3, byte ptr [rdi + rdx + 2], 6
... 420987 lines suppressed ...