llvm-project/llvm/test/CodeGen/WebAssembly/suboptimal-compare.ll
Congcong Cai a71147dd28
[WebAssembly] improve getRegForPromotedValue to avoid meanless value copy (#80469)
When promoted value, it is meaningless to copy value from reg to another
reg with the same type.
This PR add additional check for this cases to reduce the code size.
Fixes: #80053.
2024-02-06 09:07:58 +08:00

44 lines
1.2 KiB
LLVM

; RUN: llc < %s -fast-isel -O0 | FileCheck %s
target triple = "wasm32-unknown-unknown"
; CHECK-LABEL: gh_80053: # @gh_80053
; CHECK-NEXT: .functype gh_80053 (i32) -> (i32)
; CHECK-NEXT: .local i32, i32, i32, i32, i32, i32
; CHECK: i32.const 0
; CHECK-NEXT: local.set 1
; CHECK-NEXT: local.get 0
; CHECK-NEXT: local.get 1
; CHECK-NEXT: i32.eq
; CHECK-NEXT: local.set 2
; CHECK-NEXT: i32.const 1
; CHECK-NEXT: local.set 3
; CHECK-NEXT: local.get 2
; CHECK-NEXT: local.get 3
; CHECK-NEXT: i32.and
; CHECK-NEXT: local.set 4
; CHECK-NEXT: block
; CHECK-NEXT: local.get 4
; CHECK-NEXT: i32.eqz
; CHECK-NEXT: br_if 0 # 0: down to label0
; CHECK: i32.const 0
; CHECK-NEXT: local.set 5
; CHECK-NEXT: local.get 5
; CHECK-NEXT: return
; CHECK-NEXT: .LBB0_2: # %BB03
; CHECK-NEXT: end_block # label0:
; CHECK-NEXT: i32.const 1
; CHECK-NEXT: local.set 6
; CHECK-NEXT: local.get 6
; CHECK-NEXT: return
; CHECK-NEXT: end_function
define i1 @gh_80053(ptr) {
BB01:
%eq = icmp eq ptr %0, null
br i1 %eq, label %BB02, label %BB03
BB02:
ret i1 0
BB03:
ret i1 1
}