[InstCombine] Signed saturation patterns
[llvm-complete.git] / test / CodeGen / AArch64 / machine-dead-copy.mir
blob09548f3f6083cc44e0656e98420814080a141244
2 # RUN: llc -mtriple=aarch64-none-linux-gnu -run-pass machine-cp  -verify-machineinstrs  -o - %s | FileCheck %s
4 --- |
5   define i32 @copyprop1(i32 %a, i32 %b) { ret i32 %a }
6   define i32 @copyprop2(i32 %a, i32 %b) { ret i32 %a }
7   define i32 @copyprop3(i32 %a, i32 %b) { ret i32 %a }
8   define i32 @copyprop4(i32 %a, i32 %b) { ret i32 %a }
9   define i32 @copyprop5(i32 %a, i32 %b) { ret i32 %a }
10   define i32 @copyprop6(i32 %a, i32 %b) { ret i32 %a }
11   declare i32 @foo(i32)
12 ...
13 ---
14 # The first copy is dead copy which is not used.
15 # CHECK-LABEL: name: copyprop1
16 # CHECK: bb.0:
17 # CHECK-NOT: $w20 = COPY
18 name: copyprop1
19 body: |
20   bb.0:
21     liveins: $w0,  $w1
22     $w20 = COPY $w1
23     BL @foo, csr_aarch64_aapcs, implicit $w0, implicit-def $w0
24     RET_ReallyLR implicit $w0
25 ...
26 ---
27 # The first copy is not a dead copy which is used in the second copy after the
28 # call.
29 # CHECK-LABEL: name: copyprop2
30 # CHECK: bb.0:
31 # CHECK: $w20 = COPY
32 name: copyprop2
33 body: |
34   bb.0:
35     liveins: $w0,  $w1
36     $w20 = COPY $w1
37     BL @foo, csr_aarch64_aapcs, implicit $w0, implicit-def $w0
38     $w0 = COPY $w20
39     RET_ReallyLR implicit $w0
40 ...
41 ---
42 # Both the first and second copy are dead copies which are not used.
43 # CHECK-LABEL: name: copyprop3
44 # CHECK: bb.0:
45 # CHECK-NOT: COPY
46 name: copyprop3
47 body: |
48   bb.0:
49     liveins: $w0,  $w1
50     $w20 = COPY $w1
51     BL @foo, csr_aarch64_aapcs, implicit $w0, implicit-def $w0
52     $w20 = COPY $w0
53     RET_ReallyLR implicit $w0
54 ...
55 # The second copy is removed as a NOP copy, after then the first copy become
56 # dead which should be removed as well.
57 # CHECK-LABEL: name: copyprop4
58 # CHECK: bb.0:
59 # CHECK-NOT: COPY
60 name: copyprop4
61 body: |
62   bb.0:
63     liveins: $w0,  $w1
64     $w20 = COPY $w0
65     $w0 = COPY $w20
66     BL @foo, csr_aarch64_aapcs, implicit $w0, implicit-def $w0
67     RET_ReallyLR implicit $w0
68 ...
70 # Don't try to erase any COPY which overlaps itself.
71 # CHECK-LABEL: name: copyprop5
72 # CHECK: bb.0:
73 # CHECK: COPY killed $q26_q27_q28_q29
74 # CHECK: COPY killed $q28_q29_q30_q31
75 name: copyprop5
76 body: |
77   bb.0:
78     liveins: $q26_q27_q28_q29
79     $q28_q29_q30_q31 = COPY killed $q26_q27_q28_q29
80     $q26_q27_q28_q29 = COPY killed $q28_q29_q30_q31
81     BL @foo, csr_aarch64_aapcs, implicit killed $q26_q27_q28_q29
82     RET_ReallyLR
83 ...
85 # Don't try to analyze any COPY which overlaps itself.
86 # CHECK-LABEL: name: copyprop6
87 # CHECK: bb.0:
88 # CHECK: COPY killed $q26_q27_q28_q29
89 # CHECK: $q30 = COPY $q28
90 name: copyprop6
91 body: |
92   bb.0:
93     liveins: $q26_q27_q28_q29
94     $q28_q29_q30_q31 = COPY killed $q26_q27_q28_q29
95     $q30 = COPY $q28
96     BL @foo, csr_aarch64_aapcs, implicit killed $q28_q29_q30_q31
97     RET_ReallyLR
98 ...