[ORC] Add std::tuple support to SimplePackedSerialization.
[llvm-project.git] / llvm / test / CodeGen / AArch64 / stp-opt-with-renaming-reserved-regs.mir
blob8af0e385fc31ac340322e01c783d6637eca150cb
1 # RUN: llc -run-pass=aarch64-ldst-opt -aarch64-load-store-renaming=true -mattr=+reserve-x10 \
2 # RUN:     -mattr=+reserve-x11 -mattr=+reserve-x15 -mtriple=arm64-apple-iphoneos -verify-machineinstrs \
3 # RUN:     -o - %s | FileCheck --check-prefix=CHECK --check-prefix=PRESERVED %s
5 # RUN: llc -run-pass=aarch64-ldst-opt -aarch64-load-store-renaming=true -mtriple=arm64-apple-iphoneos \
6 # RUN:     -verify-machineinstrs -o - %s | FileCheck --check-prefix=CHECK --check-prefix=NOPRES %s
9 # Make sure we do not pick reserved registers. For test1, we would pick x10,
10 # and for test2 we would pick x15, both of which are reserved.
12 ---
13 # CHECK-LABEL: name: test1
14 # CHECK:       bb.0:
15 # CHECK-NEXT:     liveins: $x0, $x1
16 # PRESERVED:      $x18, renamable $x8 = LDPXi renamable $x0, 0 :: (load (s64))
17 # NOPRES:         $x10, renamable $x8 = LDPXi renamable $x0, 0 :: (load (s64))
18 # CHECK-NEXT:     renamable $x9 = LDRXui renamable $x0, 1 :: (load (s64))
19 # CHECK-NEXT:     STRXui renamable $x9, renamable $x0, 100 :: (store (s64), align 4)
20 # CHECK-NEXT:     renamable $x8 = ADDXrr $x8, $x8
21 # PRESERVED-NEXT: STPXi renamable $x8, killed $x18, renamable $x0, 10 :: (store (s64), align 4)
22 # NOPRES-NEXT:    STPXi renamable $x8, killed $x10, renamable $x0, 10 :: (store (s64), align 4)
23 # CHECK-NEXT:     RET undef $lr
25 name:            test1
26 alignment:       4
27 tracksRegLiveness: true
28 liveins:
29   - { reg: '$x0' }
30   - { reg: '$x1' }
31   - { reg: '$x8' }
32 frameInfo:
33   maxAlignment:    1
34   maxCallFrameSize: 0
35 machineFunctionInfo: {}
36 body:             |
37   bb.0:
38     liveins: $x0, $x1
39     renamable $x9, renamable $x8 = LDPXi renamable $x0, 0 :: (load (s64))
40     STRXui renamable killed $x9, renamable $x0, 11 :: (store (s64), align 4)
41     renamable $x9 = LDRXui renamable $x0, 1 :: (load (s64))
42     STRXui renamable $x9, renamable $x0, 100 :: (store (s64), align 4)
43     renamable $x8 = ADDXrr $x8, $x8
44     STRXui renamable $x8, renamable $x0, 10 :: (store (s64), align 4)
45     RET undef $lr
47 ...
48 # CHECK-LABEL: name: test2
49 # CHECK:       bb.0:
50 # CHECK-NEXT:     liveins: $x0, $x1, $x10, $x11, $x12, $x13
51 # CHECK:          renamable $w19 = LDRWui renamable $x0, 0 :: (load (s64))
52 # PRESERVED-NEXT: $x18, renamable $x8 = LDPXi renamable $x0, 1 :: (load (s64))
53 # NOPRES-NEXT:    $x18, renamable $x8 = LDPXi renamable $x0, 1 :: (load (s64))
54 # CHECK-NEXT:     renamable $x9 = LDRXui renamable $x0, 3 :: (load (s64))
55 # CHECK-NEXT:     renamable $x14 = LDRXui renamable $x0, 5 :: (load (s64))
56 # PRESERVED-NEXT: STPXi renamable $x9, killed $x18, renamable $x0, 10 :: (store (s64), align 4)
57 # NOPRES-NEXT:    STPXi renamable $x9, killed $x18, renamable $x0, 10 :: (store (s64), align 4)
58 # CHECK-NEXT:     STRXui killed renamable $x14, renamable $x0, 200 :: (store (s64), align 4)
59 # CHECK-NEXT:     renamable $w8 = ADDWrr $w19, $w19
60 # CHECK-NEXT:     STRWui renamable $w8, renamable $x0, 100 :: (store (s64), align 4)
61 # CHECK-NEXT:     RET undef $lr
63 name:            test2
64 alignment:       4
65 tracksRegLiveness: true
66 liveins:
67   - { reg: '$x0' }
68   - { reg: '$x1' }
69   - { reg: '$x8' }
70 frameInfo:
71   maxAlignment:    1
72   maxCallFrameSize: 0
73 machineFunctionInfo: {}
74 body:             |
75   bb.0:
76     liveins: $x0, $x1, $x10, $x11, $x12, $x13
77     renamable $w19 = LDRWui renamable $x0, 0 :: (load (s64))
78     renamable $x9, renamable $x8 = LDPXi renamable $x0, 1 :: (load (s64))
79     STRXui renamable killed $x9, renamable $x0, 11 :: (store (s64), align 4)
80     renamable $x9 = LDRXui renamable $x0, 3 :: (load (s64))
81     renamable $x14 = LDRXui renamable $x0, 5 :: (load (s64))
82     STRXui renamable $x9, renamable $x0, 10 :: (store (s64), align 4)
83     STRXui renamable killed $x14, renamable $x0, 200 :: (store (s64), align 4)
84     renamable $w8 = ADDWrr $w19, $w19
85     STRWui renamable $w8, renamable $x0, 100 :: (store (s64), align 4)
86     RET undef $lr
88 ...
89 ---