# RUN: llc -mtriple=i686-- -run-pass machine-cp -verify-machineinstrs -o - %s | FileCheck %s

--- |
  declare void @foo()
  define void @copyprop_remove_kill0() { ret void }
  define void @copyprop_remove_kill1() { ret void }
  define void @copyprop_remove_kill2() { ret void }
  define void @copyprop0() { ret void }
  define void @copyprop1() { ret void }
  define void @copyprop2() { ret void }
  define void @nocopyprop0() { ret void }
  define void @nocopyprop1() { ret void }
  define void @nocopyprop2() { ret void }
  define void @nocopyprop3() { ret void }
  define void @nocopyprop4() { ret void }
  define void @nocopyprop5() { ret void }
...
---
# The second copy is redundant and will be removed, check that we also remove
# the kill flag of intermediate instructions.
# CHECK-LABEL: name: copyprop_remove_kill0
# CHECK: bb.0:
# CHECK-NEXT: $rax = COPY $rdi
# CHECK-NEXT: NOOP implicit $rdi
# CHECK-NOT: COPY
# CHECK-NEXT: NOOP implicit $rax, implicit $rdi
name: copyprop_remove_kill0
body: |
  bb.0:
    $rax = COPY $rdi
    NOOP implicit killed $rdi
    $rdi = COPY $rax
    NOOP implicit $rax, implicit $rdi
...
---
# The second copy is redundant and will be removed, check that we also remove
# the kill flag of intermediate instructions.
# CHECK-LABEL: name: copyprop_remove_kill1
# CHECK: bb.0:
# CHECK-NEXT: $rax = COPY $rdi
# CHECK-NEXT: NOOP implicit $edi
# CHECK-NOT: COPY
# CHECK-NEXT: NOOP implicit $rax, implicit $rdi
name: copyprop_remove_kill1
body: |
  bb.0:
    $rax = COPY $rdi
    NOOP implicit killed $edi
    $rdi = COPY $rax
    NOOP implicit $rax, implicit $rdi
...
---
# The second copy is redundant and will be removed, check that we also remove
# the kill flag of intermediate instructions.
# CHECK-LABEL: name: copyprop_remove_kill2
# CHECK: bb.0:
# CHECK-NEXT: $ax = COPY $di
# CHECK-NEXT: NOOP implicit $rdi
# CHECK-NOT: COPY
# CHECK-NEXT: NOOP implicit $rax, implicit $rdi
name: copyprop_remove_kill2
body: |
  bb.0:
    $ax = COPY $di
    NOOP implicit killed $rdi
    $di = COPY $ax
    NOOP implicit $rax, implicit $rdi
...
---
# The second copy is redundant; the call preserves the source and dest register.
# CHECK-LABEL: name: copyprop0
# CHECK: bb.0:
# CHECK-NEXT: $rax = COPY $rdi
# CHECK-NEXT: CALL64pcrel32 @foo, csr_64_rt_mostregs
# CHECK-NEXT: NOOP implicit $edi
# CHECK-NOT: COPY
# CHECK-NEXT: NOOP implicit $rax, implicit $rdi
name: copyprop0
body: |
  bb.0:
    $rax = COPY $rdi
    CALL64pcrel32 @foo, csr_64_rt_mostregs
    NOOP implicit killed $edi
    $rdi = COPY $rax
    NOOP implicit $rax, implicit $rdi
...
---
# The 2nd copy is redundant; The call preserves the source and dest register.
# CHECK-LABEL: name: copyprop1
# CHECK: bb.0:
# CHECK-NEXT: $rax = COPY $rdi
# CHECK-NEXT: NOOP implicit $rax
# CHECK-NEXT: NOOP implicit $rax, implicit $rdi
name: copyprop1
body: |
  bb.0:
    $rax = COPY $rdi
    NOOP implicit killed $rax
    $rax = COPY $rdi
    NOOP implicit $rax, implicit $rdi
...
---
# CHECK-LABEL: name: copyprop2
# CHECK: bb.0:
# CHECK-NEXT: $rax = COPY $rdi
# CHECK-NEXT: NOOP implicit $ax
# CHECK-NEXT: CALL64pcrel32 @foo, csr_64_rt_mostregs
# CHECK-NOT: $rax = COPY $rdi
# CHECK-NEXT: NOOP implicit $rax, implicit $rdi
name: copyprop2
body: |
  bb.0:
    $rax = COPY $rdi
    NOOP implicit killed $ax
    CALL64pcrel32 @foo, csr_64_rt_mostregs
    $rax = COPY $rdi
    NOOP implicit $rax, implicit $rdi
...
---
# The second copy is not redundant if the source register ($rax) is clobbered
# even if the dest ($rbp) is not.
# CHECK-LABEL: name: nocopyprop0
# CHECK: bb.0:
# CHECK-NEXT: $rax = COPY $rbp
# CHECK-NEXT: CALL64pcrel32 @foo, csr_64, implicit $rax, implicit $rbp
# CHECK-NEXT: $rbp = COPY $rax
# CHECK-NEXT: NOOP implicit $rax, implicit $rbp
name: nocopyprop0
body: |
  bb.0:
    $rax = COPY $rbp
    CALL64pcrel32 @foo, csr_64, implicit $rax, implicit $rbp
    $rbp = COPY $rax
    NOOP implicit $rax, implicit $rbp
...
---
# The second copy is not redundant if the dest register ($rax) is clobbered
# even if the source ($rbp) is not.
# CHECK-LABEL: name: nocopyprop1
# CHECK: bb.0:
# CHECK-NEXT: $rbp = COPY $rax
# CHECK-NEXT: CALL64pcrel32 @foo, csr_64, implicit $rax, implicit $rbp
# CHECK-NEXT: $rax = COPY $rbp
# CHECK-NEXT: NOOP implicit $rax, implicit $rbp
name: nocopyprop1
body: |
  bb.0:
    $rbp = COPY $rax
    CALL64pcrel32 @foo, csr_64, implicit $rax, implicit $rbp
    $rax = COPY $rbp
    NOOP implicit $rax, implicit $rbp
...
---
# The second copy is not redundant if the source register ($rax) is clobbered
# even if the dest ($rbp) is not.
# CHECK-LABEL: name: nocopyprop2
# CHECK: bb.0:
# CHECK-NEXT: $rax = COPY $rbp
# CHECK-NEXT: CALL64pcrel32 @foo, csr_64, implicit $rax, implicit $rbp
# CHECK-NEXT: $rax = COPY $rbp
# CHECK-NEXT: NOOP implicit $rax, implicit $rbp
name: nocopyprop2
body: |
  bb.0:
    $rax = COPY $rbp
    CALL64pcrel32 @foo, csr_64, implicit $rax, implicit $rbp
    $rax = COPY $rbp
    NOOP implicit $rax, implicit $rbp
...
---
# The second copy is not redundant if the dest register ($rax) is clobbered
# even if the source ($rbp) is not.
# CHECK-LABEL: name: nocopyprop3
# CHECK: bb.0:
# CHECK-NEXT: $rbp = COPY $rax
# CHECK-NEXT: CALL64pcrel32 @foo, csr_64, implicit $rax, implicit $rbp
# CHECK-NEXT: $rbp = COPY $rax
# CHECK-NEXT: NOOP implicit $rax, implicit $rbp
name: nocopyprop3
body: |
  bb.0:
    $rbp = COPY $rax
    CALL64pcrel32 @foo, csr_64, implicit $rax, implicit $rbp
    $rbp = COPY $rax
    NOOP implicit $rax, implicit $rbp
...
---
# A reserved register may change its value so the 2nd copy is not redundant.
# CHECK-LABEL: name: nocopyprop4
# CHECK: bb.0:
# CHECK-NEXT: $rax = COPY $rip
# CHECK-NEXT: NOOP implicit $rax
# CHECK-NEXT: $rax = COPY $rip
# CHECK-NEXT: NOOP implicit $rax
name: nocopyprop4
body: |
  bb.0:
    $rax = COPY $rip
    NOOP implicit $rax
    $rax = COPY $rip
    NOOP implicit $rax
...
---
# Writing to a reserved register may have additional effects (slightly illegal
# testcase because writing to $rip like this should make the instruction a jump)
# CHECK-LABEL: name: nocopyprop5
# CHECK: bb.0:
# CHECK-NEXT: $rip = COPY $rax
# CHECK-NEXT: $rip = COPY $rax
name: nocopyprop5
body: |
  bb.0:
    $rip = COPY $rax
    $rip = COPY $rax
...
