x64: Remove unnecessary register use when comparing against constants (#4645)

https://github.com/bytecodealliance/wasmtime/pull/4645
This commit is contained in:
Trevor Elliott
2022-08-09 16:53:51 -07:00
committed by GitHub
parent 4d2a2cfae6
commit 63c2d1e0c3
3 changed files with 79 additions and 0 deletions

View File

@@ -73,6 +73,70 @@ block2:
; popq %rbp
; ret
function %f3(i64) -> i32 {
block0(v0: i64):
v1 = iconst.i32 1
v2 = load.i32 v0
v3 = icmp eq v1, v2
brnz v3, block1
jump block2
block1:
v4 = iconst.i32 1
return v4
block2:
v5 = iconst.i32 1
return v5
}
; pushq %rbp
; movq %rsp, %rbp
; block0:
; movl 0(%rdi), %r8d
; cmpl $1, %r8d
; jz label1; j label2
; block1:
; movl $1, %eax
; movq %rbp, %rsp
; popq %rbp
; ret
; block2:
; movl $1, %eax
; movq %rbp, %rsp
; popq %rbp
; ret
function %f4(i64) -> i32 {
block0(v0: i64):
v1 = iconst.i32 1
v2 = load.i32 v0
v3 = icmp eq v2, v1
brnz v3, block1
jump block2
block1:
v4 = iconst.i32 1
return v4
block2:
v5 = iconst.i32 1
return v5
}
; pushq %rbp
; movq %rsp, %rbp
; block0:
; movl 0(%rdi), %r8d
; cmpl $1, %r8d
; jz label1; j label2
; block1:
; movl $1, %eax
; movq %rbp, %rsp
; popq %rbp
; ret
; block2:
; movl $1, %eax
; movq %rbp, %rsp
; popq %rbp
; ret
function %test_x_slt_0_i64(i64) -> b1 {
block0(v0: i64):
v1 = iconst.i64 0