[InstCombine] Signed saturation patterns
[llvm-complete.git] / test / CodeGen / AArch64 / misched-fusion-crypto-eor.mir
blob623a8221f5ed2fa557f2cc8e0b2f14cd850b2d40
1 # RUN: llc -o /dev/null %s -run-pass=machine-scheduler -mtriple aarch64-- -mattr=-fuse-aes,+crypto -misched-print-dags 2>&1 | FileCheck %s --check-prefixes=CHECK,NOFUSE
2 # RUN: llc -o /dev/null %s -run-pass=machine-scheduler -mtriple aarch64-- -mattr=+fuse-aes,+crypto -misched-print-dags 2>&1 | FileCheck %s --check-prefixes=CHECK,FUSEAES
3 # RUN: llc -o /dev/null %s -run-pass=machine-scheduler -mtriple aarch64-- -mattr=+fuse-aes,+fuse-crypto-eor,+crypto -misched-print-dags 2>&1 | FileCheck %s --check-prefixes=CHECK,FUSEAES,FUSECRYPTO
4 # REQUIRES: asserts
6 name: func
7 body: |
8   bb.0:
9     ; CHECK: SU(0): %0:fpr128 = AESErr undef $q0(tied-def 0), undef $q1
10     ; CHECK: Successors:
11     ; NOFUSE-NOT: SU({{.*}}): Ord
12     ; FUSEAES:    SU(1): Ord  Latency=0 Cluster
13     ; CHECK: SU(1): %1:fpr128 = AESMCrrTied %0:fpr128
14     %0:fpr128 = AESErr undef $q0, undef $q1
15     %1:fpr128 = AESMCrrTied %0
17     ; CHECK: SU(2): %2:fpr128 = AESErr undef $q2(tied-def 0), undef $q3
18     ; CHECK: Successors:
19     ; NOFUSE-NOT: SU({{.*}}): Ord
20     ; FUSEAES:    SU(3): Ord  Latency=0 Cluster
21     ; CHECK: SU(3): dead %3:fpr128 = AESMCrr %2:fpr128
22     %2:fpr128 = AESErr undef $q2, undef $q3
23     %3:fpr128 = AESMCrr %2
25     ; CHECK: SU(4): %4:fpr128 = AESErr %1:fpr128(tied-def 0), undef $q4
26     ; CHECK: Successors:
27     ; NOFUSE-NOT: SU({{.*}}): Ord
28     ; FUSEAES-NOT: SU({{.*}}): Ord
29     ; FUSECRYPTO: SU(5): Ord  Latency=0 Cluster
30     ; CHECK: SU(5): dead %5:fpr128 = EORv16i8 %4:fpr128, undef $q5
31     %4:fpr128 = AESErr %1, undef $q4
32     %5:fpr128 = EORv16i8 %4, undef $q5
34     ; CHECK: SU(6): %6:fpr128 = AESDrr undef $q0(tied-def 0), undef $q1
35     ; CHECK: Successors:
36     ; NOFUSE-NOT: SU({{.*}}): Ord
37     ; FUSEAES:    SU(7): Ord  Latency=0 Cluster
38     ; CHECK: SU(7): %7:fpr128 = AESIMCrrTied %6:fpr128
39     %6:fpr128 = AESDrr undef $q0, undef $q1
40     %7:fpr128 = AESIMCrrTied %6
42     ; CHECK: SU(8): %8:fpr128 = AESDrr undef $q2(tied-def 0), undef $q3
43     ; CHECK: Successors:
44     ; NOFUSE-NOT: SU({{.*}}): Ord
45     ; FUSEAES:    SU(9): Ord  Latency=0 Cluster
46     ; CHECK: SU(9): dead %9:fpr128 = AESIMCrr %8:fpr128
47     %8:fpr128 = AESDrr undef $q2, undef $q3
48     %9:fpr128 = AESIMCrr %8
50     ; CHECK: SU(10): %10:fpr128 = AESDrr %7:fpr128(tied-def 0), undef $q0
51     ; CHECK: Successors:
52     ; NOFUSE-NOT: SU({{.*}}): Ord
53     ; FUSEAES-NOT: SU({{.*}}): Ord
54     ; FUSECRYPTO: SU(11): Ord  Latency=0 Cluster
55     ; CHECK: SU(11): dead %11:fpr128 = EORv16i8 %10:fpr128, undef $q1
56     %10:fpr128 = AESDrr %7, undef $q0
57     %11:fpr128 = EORv16i8 %10, undef $q1
59     ; CHECK: SU(12): %12:fpr128 = PMULLv16i8 undef $q0, undef $q1
60     ; CHECK: Successors:
61     ; NOFUSE-NOT: SU({{.*}}): Ord
62     ; FUSEAES-NOT: SU({{.*}}): Ord
63     ; FUSECRYPTO: SU(13): Ord  Latency=0 Cluster
64     ; CHECK: SU(13): dead %13:fpr128 = EORv16i8 %12:fpr128, undef $q2
65     %12:fpr128 = PMULLv16i8 undef $q0, undef $q1
66     %13:fpr128 = EORv16i8 %12, undef $q2
68     ; CHECK: SU(14): %14:fpr128 = PMULLv8i8 undef $d0, undef $d1
69     ; CHECK: Successors:
70     ; NOFUSE-NOT: SU({{.*}}): Ord
71     ; FUSEAES-NOT: SU({{.*}}): Ord
72     ; FUSECRYPTO: SU(15): Ord  Latency=0 Cluster
73     ; CHECK: SU(15): dead %15:fpr128 = EORv16i8 %14:fpr128, undef $q3
74     %14:fpr128 = PMULLv8i8 undef $d0, undef $d1
75     %15:fpr128 = EORv16i8 %14, undef $q3