mirror of
https://github.com/RPCSX/llvm.git
synced 2025-01-12 23:40:54 +00:00
79519fecc3
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). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@274952 91177308-0d34-0410-b5e6-96231b3b80d8
22 lines
625 B
LLVM
22 lines
625 B
LLVM
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
|
|
; RUN: llc < %s -mtriple=i386-unknown-unknown | FileCheck %s
|
|
|
|
define i8 @foo(i8 %tmp325) {
|
|
; CHECK-LABEL: foo:
|
|
; CHECK: # BB#0:
|
|
; CHECK-NEXT: movzbl {{[0-9]+}}(%esp), %ecx
|
|
; CHECK-NEXT: imull $111, %ecx, %eax
|
|
; CHECK-NEXT: andl $28672, %eax # imm = 0x7000
|
|
; CHECK-NEXT: shrl $12, %eax
|
|
; CHECK-NEXT: movb $37, %dl
|
|
; CHECK-NEXT: # kill: %AL<def> %AL<kill> %EAX<kill>
|
|
; CHECK-NEXT: mulb %dl
|
|
; CHECK-NEXT: subb %al, %cl
|
|
; CHECK-NEXT: movl %ecx, %eax
|
|
; CHECK-NEXT: retl
|
|
;
|
|
%t546 = urem i8 %tmp325, 37
|
|
ret i8 %t546
|
|
}
|
|
|