Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 20 additions & 0 deletions benches/ref_from_bytes.x86-64
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
codegen_test:
mov rdx, rsi
cmp rsi, 4
setb al
or al, dil
test al, 1
je .LBB5_2
xor eax, eax
ret
.LBB5_2:
lea rcx, [rdx - 4]
mov rsi, rcx
and rsi, -2
add rsi, 4
shr rcx
xor eax, eax
cmp rdx, rsi
cmove rdx, rcx
cmove rax, rdi
ret
16 changes: 16 additions & 0 deletions benches/ref_from_bytes_with_elems.x86-64
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
codegen_test:
movabs rax, 9223372036854775805
cmp rdx, rax
seta cl
mov rax, rdi
or dil, cl
test dil, 1
jne .LBB5_2
lea rcx, [2*rdx + 4]
cmp rsi, rcx
je .LBB5_3
.LBB5_2:
xor eax, eax
mov rdx, rsi
.LBB5_3:
ret
17 changes: 17 additions & 0 deletions benches/ref_from_prefix.x86-64
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
codegen_test:
xor edx, edx
mov eax, 0
test dil, 1
jne .LBB5_4
cmp rsi, 4
jae .LBB5_3
mov edx, 1
xor eax, eax
ret
.LBB5_3:
add rsi, -4
shr rsi
mov rdx, rsi
mov rax, rdi
.LBB5_4:
ret
22 changes: 22 additions & 0 deletions benches/ref_from_prefix_with_elems.x86-64
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
codegen_test:
movabs rax, 9223372036854775805
cmp rdx, rax
ja .LBB5_1
mov rcx, rdx
xor edx, edx
mov eax, 0
test dil, 1
jne .LBB5_4
lea rax, [2*rcx + 4]
xor r8d, r8d
cmp rax, rsi
mov edx, 1
cmovbe rdx, rcx
cmova rdi, r8
mov rax, rdi
.LBB5_4:
ret
.LBB5_1:
mov edx, 1
xor eax, eax
ret
13 changes: 13 additions & 0 deletions benches/ref_from_suffix.x86-64
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
codegen_test:
mov rdx, rsi
lea ecx, [rsi + rdi]
mov eax, edx
and eax, 1
add rax, rdi
xor esi, esi
sub rdx, 4
cmovb rax, rsi
shr rdx
test cl, 1
cmovne rax, rsi
ret
23 changes: 23 additions & 0 deletions benches/ref_from_suffix_with_elems.x86-64
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
codegen_test:
movabs rax, 9223372036854775805
cmp rdx, rax
ja .LBB5_1
lea r8d, [rsi + rdi]
xor ecx, ecx
mov eax, 0
test r8b, 1
jne .LBB5_5
lea rax, [2*rdx + 4]
sub rsi, rax
jae .LBB5_4
.LBB5_1:
xor eax, eax
mov edx, 1
ret
.LBB5_4:
add rdi, rsi
mov rcx, rdx
mov rax, rdi
.LBB5_5:
mov rdx, rcx
ret
4 changes: 4 additions & 0 deletions benches/transmute_ref.x86-64
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
codegen_test:
mov rdx, rsi
mov rax, rdi
ret
22 changes: 22 additions & 0 deletions benches/try_ref_from_bytes.x86-64
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
codegen_test:
mov rdx, rsi
mov rax, rdi
cmp rsi, 4
setb cl
or cl, al
test cl, 1
jne .LBB5_4
lea rcx, [rdx - 4]
mov rsi, rcx
and rsi, -2
add rsi, 4
cmp rdx, rsi
jne .LBB5_4
cmp word ptr [rax], -16192
jne .LBB5_4
shr rcx
mov rdx, rcx
ret
.LBB5_4:
xor eax, eax
ret
18 changes: 18 additions & 0 deletions benches/try_ref_from_bytes_with_elems.x86-64
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
codegen_test:
movabs rax, 9223372036854775805
cmp rdx, rax
seta cl
mov rax, rdi
or dil, cl
test dil, 1
jne .LBB5_3
lea rcx, [2*rdx + 4]
cmp rsi, rcx
jne .LBB5_3
cmp word ptr [rax], -16192
je .LBB5_4
.LBB5_3:
xor eax, eax
mov rdx, rsi
.LBB5_4:
ret
22 changes: 22 additions & 0 deletions benches/try_ref_from_prefix.x86-64
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
codegen_test:
xor edx, edx
mov eax, 0
test dil, 1
jne .LBB5_4
cmp rsi, 4
jae .LBB5_3
mov edx, 1
xor eax, eax
ret
.LBB5_3:
add rsi, -4
shr rsi
movzx ecx, word ptr [rdi]
cmp ecx, 49344
mov edx, 2
cmove rdx, rsi
xor eax, eax
cmp cx, -16192
cmove rax, rdi
.LBB5_4:
ret
26 changes: 26 additions & 0 deletions benches/try_ref_from_prefix_with_elems.x86-64
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
codegen_test:
movabs rax, 9223372036854775805
cmp rdx, rax
ja .LBB5_1
mov rcx, rdx
xor edx, edx
mov eax, 0
test dil, 1
jne .LBB5_5
lea rax, [2*rcx + 4]
cmp rax, rsi
jbe .LBB5_4
.LBB5_1:
xor eax, eax
mov edx, 1
ret
.LBB5_4:
movzx esi, word ptr [rdi]
cmp si, -16192
mov edx, 2
cmove rdx, rcx
xor eax, eax
cmp esi, 49344
cmove rax, rdi
.LBB5_5:
ret
18 changes: 18 additions & 0 deletions benches/try_ref_from_suffix.x86-64
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
codegen_test:
lea eax, [rsi + rdi]
cmp rsi, 4
setb cl
or cl, al
test cl, 1
je .LBB5_2
xor eax, eax
ret
.LBB5_2:
lea rdx, [rsi - 4]
shr rdx
and esi, 1
lea rcx, [rdi + rsi]
xor eax, eax
cmp word ptr [rdi + rsi], -16192
cmove rax, rcx
ret
28 changes: 28 additions & 0 deletions benches/try_ref_from_suffix_with_elems.x86-64
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
codegen_test:
movabs rax, 9223372036854775805
cmp rdx, rax
ja .LBB5_1
lea r8d, [rsi + rdi]
xor ecx, ecx
mov eax, 0
test r8b, 1
jne .LBB5_5
lea rax, [2*rdx + 4]
sub rsi, rax
jae .LBB5_4
.LBB5_1:
xor eax, eax
mov edx, 1
ret
.LBB5_4:
lea r8, [rdi + rsi]
movzx esi, word ptr [rdi + rsi]
cmp si, -16192
mov ecx, 2
cmove rcx, rdx
xor eax, eax
cmp esi, 49344
cmove rax, r8
.LBB5_5:
mov rdx, rcx
ret
6 changes: 6 additions & 0 deletions benches/try_transmute_ref.x86-64
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
codegen_test:
mov rdx, rsi
xor eax, eax
cmp word ptr [rdi], -16192
cmove rax, rdi
ret
2 changes: 1 addition & 1 deletion rustdoc/style.css
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ those terms.

.codegen-tabs {
display: grid;
grid-template-columns: repeat(3, minmax(200px, 1fr));
grid-template-columns: repeat(4, minmax(200px, 1fr));
grid-template-rows: auto 1fr;
column-gap: 1rem;
}
Expand Down
17 changes: 16 additions & 1 deletion src/util/macros.rs
Original file line number Diff line number Diff line change
Expand Up @@ -894,9 +894,24 @@ macro_rules! codegen_tabs {
\
</div>
</details>
<details name='tab-",
<details name='tab-",
$name,
"' style='--n: 3'>
<summary>
<h6>Assembly (x86-64)</h6>
</summary>
<div>

```ignore
",
include_str!(concat!("../benches/", $name, ".x86-64")),
Comment thread
joshlf marked this conversation as resolved.
"```
\
</div>
</details>
<details name='tab-",
$name,
"' style='--n: 4'>
<summary>
<h6>Machine Code Analysis</h6>
</summary>
Expand Down
Loading
Loading