mirror of
https://github.com/RPCS3/llvm.git
synced 2026-07-21 19:25:26 -04:00
2f8aabcbb0
If we allow the OR to be narrowed then the upper bits really are zero and we can't tell if the zeroing movl was removed on purpose. While here regenerate the test with update_llc_test_checks.py git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@312995 91177308-0d34-0410-b5e6-96231b3b80d8
21 lines
614 B
LLVM
21 lines
614 B
LLVM
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
|
|
; RUN: llc < %s -O2 -mtriple=x86_64-unknown-unknown | FileCheck %s
|
|
; Checks that a zeroing mov is inserted for the trunc/zext pair even when
|
|
; the source of the zext is an AssertSext node
|
|
; PR20494
|
|
|
|
define i64 @main(i64 %a) {
|
|
; CHECK-LABEL: main:
|
|
; CHECK: # BB#0:
|
|
; CHECK-NEXT: orq $-2, %rdi
|
|
; CHECK-NEXT: movl %edi, %eax
|
|
; CHECK-NEXT: retq
|
|
%or = or i64 %a, -2
|
|
%trunc = trunc i64 %or to i32
|
|
br label %l
|
|
l:
|
|
%ext = zext i32 %trunc to i64
|
|
trunc i64 %or to i32 ; to keep the or from being narrowed
|
|
ret i64 %ext
|
|
}
|