mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-25 04:02:41 +01:00
08762f9f1e
An identity COPY like this: %AL = COPY %AL, %EAX<imp-def> has no semantic effect, but encodes liveness information: Further users of %EAX only depend on this instruction even though it does not define the full register. Replace the COPY with a KILL instruction in those cases to maintain this liveness information. (This reverts a small part of r238588 but this time adds a comment explaining why a KILL instruction is useful). llvm-svn: 274952
24 lines
505 B
LLVM
24 lines
505 B
LLVM
; RUN: llc < %s -mtriple=i686-unknown-linux-gnu | FileCheck %s
|
|
|
|
define signext i16 @foo(i16 signext %x) nounwind {
|
|
entry:
|
|
; CHECK-LABEL: foo:
|
|
; CHECK: movzwl 4(%esp), %eax
|
|
; CHECK-NEXT: xorl $21998, %eax
|
|
; CHECK-NEXT: # kill
|
|
; CHECK-NEXT: retl
|
|
%0 = xor i16 %x, 21998
|
|
ret i16 %0
|
|
}
|
|
|
|
define signext i16 @bar(i16 signext %x) nounwind {
|
|
entry:
|
|
; CHECK-LABEL: bar:
|
|
; CHECK: movzwl 4(%esp), %eax
|
|
; CHECK-NEXT: xorl $54766, %eax
|
|
; CHECK-NEXT: # kill
|
|
; CHECK-NEXT: retl
|
|
%0 = xor i16 %x, 54766
|
|
ret i16 %0
|
|
}
|