Skip to content

Commit 5303f6c

Browse files
authored
Merge pull request #462 from quake/quake/opt-cmp-0-test-develop
perf: optimize cmp zero and jump with test
2 parents 9b97e41 + 22aff24 commit 5303f6c

File tree

1 file changed

+21
-21
lines changed

1 file changed

+21
-21
lines changed

src/machine/asm/execute_x64.S

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -194,7 +194,7 @@
194194
movq TEMP1, CKB_VM_ASM_ASM_CORE_MACHINE_OFFSET_LAST_READ_FRAME(MACHINE); \
195195
movq CKB_VM_ASM_ASM_CORE_MACHINE_OFFSET_FRAMES_PTR(MACHINE), TEMP3; \
196196
movzbl (TEMP3, TEMP1), TEMP2d; \
197-
cmp $0, TEMP2d; \
197+
test TEMP2d, TEMP2d; \
198198
jne 1f; \
199199
movb $1, (TEMP3, TEMP1); \
200200
PREPCALL; \
@@ -209,7 +209,7 @@
209209
shr $CKB_VM_ASM_MEMORY_FRAME_SHIFTS, TEMP1; \
210210
movq CKB_VM_ASM_ASM_CORE_MACHINE_OFFSET_FRAMES_PTR(MACHINE), TEMP3; \
211211
movzbl (TEMP3, TEMP1), TEMP2d; \
212-
cmp $0, TEMP2d; \
212+
test TEMP2d, TEMP2d; \
213213
jne 2f; \
214214
movb $1, (TEMP3, TEMP1);\
215215
PREPCALL; \
@@ -288,7 +288,7 @@
288288
shr $CKB_VM_ASM_MEMORY_FRAME_PAGE_SHIFTS, TEMP1; \
289289
movq CKB_VM_ASM_ASM_CORE_MACHINE_OFFSET_FRAMES_PTR(MACHINE), TEMP3; \
290290
movzbl (TEMP3, TEMP1), temp_regd; \
291-
cmp $0, temp_regd; \
291+
test temp_regd, temp_regd; \
292292
jne 1f; \
293293
movb $1, (TEMP3, TEMP1); \
294294
PREPCALL; \
@@ -319,7 +319,7 @@
319319
shr $CKB_VM_ASM_MEMORY_FRAME_PAGE_SHIFTS, TEMP1; \
320320
movq CKB_VM_ASM_ASM_CORE_MACHINE_OFFSET_FRAMES_PTR(MACHINE), TEMP3; \
321321
movzbl (TEMP3, TEMP1), temp_regd; \
322-
cmp $0, temp_regd; \
322+
test temp_regd, temp_regd; \
323323
jne 2f; \
324324
movb $1, (TEMP3, TEMP1); \
325325
PREPCALL; \
@@ -443,7 +443,7 @@ ckb_vm_x64_execute:
443443
cmp %rcx, %rdx
444444
jne .exit_trace
445445
mov CKB_VM_ASM_TRACE_OFFSET_LENGTH(TRACE), %edx
446-
cmp $0, %rdx
446+
test %rdx, %rdx
447447
je .exit_trace
448448
movq CKB_VM_ASM_ASM_CORE_MACHINE_OFFSET_CYCLES(MACHINE), %rax
449449
addq CKB_VM_ASM_TRACE_OFFSET_CYCLES(TRACE), %rax
@@ -485,7 +485,7 @@ ckb_vm_x64_execute:
485485
.prepare_trace:
486486
movq CKB_VM_ASM_INVOKE_DATA_OFFSET_PAUSE(INVOKE_DATA), %rax
487487
movzbl 0(%rax), %eax
488-
cmp $0, %rax
488+
test %rax, %rax
489489
jnz .exit_pause
490490
LOAD_PC(%rax, %eax, %rcx, %ecx, TEMP3d)
491491
shr $2, %eax
@@ -497,7 +497,7 @@ ckb_vm_x64_execute:
497497
cmp %rcx, %rdx
498498
jne .exit_trace
499499
mov CKB_VM_ASM_TRACE_OFFSET_LENGTH(TRACE), %edx
500-
cmp $0, %rdx
500+
test %rdx, %rdx
501501
je .exit_trace
502502
movq CKB_VM_ASM_ASM_CORE_MACHINE_OFFSET_CYCLES(MACHINE), %rax
503503
addq CKB_VM_ASM_TRACE_OFFSET_CYCLES(TRACE), %rax
@@ -634,7 +634,7 @@ ckb_vm_x64_execute:
634634
jne .div_branch1
635635
jmp .div_branch3
636636
.div_branch1:
637-
cmp $0, RS2r
637+
test RS2r, RS2r
638638
jne .div_branch2
639639
movq $UINT64_MAX, RS1
640640
jmp .div_branch3
@@ -651,7 +651,7 @@ ckb_vm_x64_execute:
651651
.CKB_VM_ASM_LABEL_OP_DIVU:
652652
DECODE_R
653653
movq REGISTER_ADDRESS(RS2r), RS2r
654-
cmp $0, RS2r
654+
test RS2r, RS2r
655655
jne .divu_branch1
656656
WRITE_RD_VALUE($UINT64_MAX, RS2r)
657657
NEXT_INST
@@ -671,7 +671,7 @@ ckb_vm_x64_execute:
671671
DECODE_R
672672
movq REGISTER_ADDRESS(RS2r), RS2r
673673
mov RS2rd, RS2rd
674-
cmp $0, RS2r
674+
test RS2r, RS2r
675675
jne .divuw_branch1
676676
WRITE_RD_VALUE($UINT64_MAX, RS2r)
677677
NEXT_INST
@@ -703,7 +703,7 @@ ckb_vm_x64_execute:
703703
jne .divw_branch1
704704
jmp .divw_branch3
705705
.divw_branch1:
706-
cmp $0, RS2r
706+
test RS2r, RS2r
707707
jne .divw_branch2
708708
movq $UINT64_MAX, RS1
709709
jmp .divw_branch3
@@ -1022,7 +1022,7 @@ ckb_vm_x64_execute:
10221022
xorq RS1, RS1
10231023
jmp .rem_branch3
10241024
.rem_branch1:
1025-
cmp $0, RS2r
1025+
test RS2r, RS2r
10261026
jne .rem_branch2
10271027
jmp .rem_branch3
10281028
.rem_branch2:
@@ -1038,7 +1038,7 @@ ckb_vm_x64_execute:
10381038
.CKB_VM_ASM_LABEL_OP_REMU:
10391039
DECODE_R
10401040
movq REGISTER_ADDRESS(RS2r), RS2r
1041-
cmp $0, RS2r
1041+
test RS2r, RS2r
10421042
jne .remu_branch2
10431043
movq REGISTER_ADDRESS(RS1), RS1
10441044
WRITE_RD(RS1)
@@ -1059,7 +1059,7 @@ ckb_vm_x64_execute:
10591059
DECODE_R
10601060
movq REGISTER_ADDRESS(RS2r), RS2r
10611061
mov RS2rd, RS2rd
1062-
cmp $0, RS2r
1062+
test RS2r, RS2r
10631063
jne .remuw_branch2
10641064
movq REGISTER_ADDRESS(RS1), RS1
10651065
movslq RS1d, RS1
@@ -1094,7 +1094,7 @@ ckb_vm_x64_execute:
10941094
xorq RS1, RS1
10951095
jmp .remw_branch3
10961096
.remw_branch1:
1097-
cmp $0, RS2r
1097+
test RS2r, RS2r
10981098
jne .remw_branch2
10991099
jmp .remw_branch3
11001100
.remw_branch2:
@@ -1761,7 +1761,7 @@ ckb_vm_x64_execute:
17611761
.CKB_VM_ASM_LABEL_OP_CLZ:
17621762
DECODE_R
17631763
movq REGISTER_ADDRESS(RS1), RS1
1764-
cmp $0, RS1
1764+
test RS1, RS1
17651765
je .clz_branch
17661766
bsr RS1, RS1
17671767
neg RS1
@@ -1775,7 +1775,7 @@ ckb_vm_x64_execute:
17751775
.CKB_VM_ASM_LABEL_OP_CLZW:
17761776
DECODE_R
17771777
movq REGISTER_ADDRESS(RS1), RS1
1778-
cmp $0, RS1d
1778+
test RS1d, RS1d
17791779
je .clzw_branch
17801780
bsr RS1d, RS1d
17811781
neg RS1
@@ -1872,7 +1872,7 @@ ckb_vm_x64_execute:
18721872
.CKB_VM_ASM_LABEL_OP_CTZ:
18731873
DECODE_R
18741874
movq REGISTER_ADDRESS(RS1), RS1
1875-
cmp $0, RS1
1875+
test RS1, RS1
18761876
je .ctz_branch
18771877
bsf RS1, RS1
18781878
WRITE_RD(RS1)
@@ -1884,7 +1884,7 @@ ckb_vm_x64_execute:
18841884
.CKB_VM_ASM_LABEL_OP_CTZW:
18851885
DECODE_R
18861886
movq REGISTER_ADDRESS(RS1), RS1
1887-
cmp $0, RS1d
1887+
test RS1d, RS1d
18881888
je .ctzw_branch
18891889
bsf RS1d, RS1d
18901890
WRITE_RD(RS1)
@@ -2286,7 +2286,7 @@ ckb_vm_x64_execute:
22862286
xorq TEMP1, TEMP1
22872287
jmp .wide_div_branch3
22882288
.wide_div_branch1:
2289-
cmp $0, RS2r
2289+
test RS2r, RS2r
22902290
jne .wide_div_branch2
22912291
movq RS1, TEMP1
22922292
movq $UINT64_MAX, RS1
@@ -2307,7 +2307,7 @@ ckb_vm_x64_execute:
23072307
DECODE_R4
23082308
movq REGISTER_ADDRESS(RS1), RS1
23092309
movq REGISTER_ADDRESS(RS2r), RS2r
2310-
cmp $0, RS2r
2310+
test RS2r, RS2r
23112311
jne .wide_divu_branch1
23122312
WRITE_RS3(RS1)
23132313
WRITE_RD_VALUE($UINT64_MAX, RS2r)

0 commit comments

Comments
 (0)