1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2# RUN: llc -mtriple=s390x-linux-gnu -sink-insts-to-avoid-spills -verify-machineinstrs -run-pass=machine-sink -o - %s | FileCheck %s
3
4# Test kill flags are cleared after sinking operations into cycle during MachineLICM.
5
6--- |
7  target datalayout = "E-m:e-i1:8:16-i8:8:16-i64:64-f128:64-a:8:16-n32:64"
8  target triple = "s390x-unknown-linux-gnu"
9
10  %0 = type <{ i32, [3 x i8] }>
11
12  @b = external dso_local global [1 x %0], align 2
13
14  define dso_local void @c() local_unnamed_addr {
15    ret void
16  }
17
18...
19---
20name:            c
21tracksRegLiveness: true
22body:             |
23  ; CHECK-LABEL: name: c
24  ; CHECK: bb.0:
25  ; CHECK-NEXT:   successors: %bb.1(0x80000000)
26  ; CHECK-NEXT: {{  $}}
27  ; CHECK-NEXT:   [[LARL:%[0-9]+]]:addr64bit = LARL @b
28  ; CHECK-NEXT: {{  $}}
29  ; CHECK-NEXT: bb.1:
30  ; CHECK-NEXT:   successors: %bb.1(0x80000000)
31  ; CHECK-NEXT: {{  $}}
32  ; CHECK-NEXT:   [[LA:%[0-9]+]]:gr64bit = LA [[LARL]], 49, $noreg
33  ; CHECK-NEXT:   [[LGHI:%[0-9]+]]:gr64bit = LGHI 7
34  ; CHECK-NEXT:   [[DEF:%[0-9]+]]:gr64bit = IMPLICIT_DEF
35  ; CHECK-NEXT:   [[DEF1:%[0-9]+]]:gr64bit = IMPLICIT_DEF
36  ; CHECK-NEXT:   ADJCALLSTACKDOWN 0, 0
37  ; CHECK-NEXT:   $r2d = COPY [[DEF]]
38  ; CHECK-NEXT:   $r3d = COPY [[LA]]
39  ; CHECK-NEXT:   $r4d = COPY [[LGHI]]
40  ; CHECK-NEXT:   CallBRASL &memcpy, $r2d, $r3d, $r4d, csr_systemz_elf, implicit-def dead $r14d, implicit-def dead $cc, implicit $fpc, implicit-def $r2d
41  ; CHECK-NEXT:   ADJCALLSTACKUP 0, 0
42  ; CHECK-NEXT:   ADJCALLSTACKDOWN 0, 0
43  ; CHECK-NEXT:   $r2d = COPY [[DEF1]]
44  ; CHECK-NEXT:   $r3d = COPY [[LA]]
45  ; CHECK-NEXT:   $r4d = COPY [[LGHI]]
46  ; CHECK-NEXT:   CallBRASL &memcpy, $r2d, $r3d, $r4d, csr_systemz_elf, implicit-def dead $r14d, implicit-def dead $cc, implicit $fpc, implicit-def $r2d
47  ; CHECK-NEXT:   ADJCALLSTACKUP 0, 0
48  ; CHECK-NEXT:   J %bb.1
49  bb.0:
50    successors: %bb.1(0x80000000)
51
52    %1:addr64bit = LARL @b
53    %0:gr64bit = LA killed %1, 49, $noreg
54    %2:gr64bit = LGHI 7
55    %3:gr64bit = IMPLICIT_DEF
56    %5:gr64bit = IMPLICIT_DEF
57
58  bb.1:
59    successors: %bb.1(0x80000000)
60
61    ADJCALLSTACKDOWN 0, 0
62    $r2d = COPY %3
63    $r3d = COPY %0
64    $r4d = COPY %2
65    CallBRASL &memcpy, $r2d, $r3d, $r4d, csr_systemz_elf, implicit-def dead $r14d, implicit-def dead $cc, implicit $fpc, implicit-def $r2d
66    ADJCALLSTACKUP 0, 0
67    ADJCALLSTACKDOWN 0, 0
68    $r2d = COPY %5
69    $r3d = COPY %0
70    $r4d = COPY %2
71    CallBRASL &memcpy, $r2d, $r3d, $r4d, csr_systemz_elf, implicit-def dead $r14d, implicit-def dead $cc, implicit $fpc, implicit-def $r2d
72    ADJCALLSTACKUP 0, 0
73    J %bb.1
74
75...
76