[RISCV][VLOPT] Add vector narrowing integer right shift instructions to isSupportedIn...
[llvm-project.git] / llvm / test / CodeGen / AArch64 / stp-opt-with-renaming-reserved-regs.mir
blob8159b52679f58285c6e714c318973dc7592e1f31
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:      $x9, renamable $x8 = LDPXi renamable $x0, 0 :: (load (s64))
17 # NOPRES:         $x10, renamable $x8 = LDPXi renamable $x0, 0 :: (load (s64))
18 # CHECK:          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: STRXui renamable $x8, 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, $x2, $x3, $x4, $x5, $x6, $x7, $x9, $x10, $x11, $x12, $x13
51 # CHECK:          renamable $w19 = LDRWui renamable $x0, 0 :: (load (s64))
52 # PRESERVED-NEXT: renamable $x9, renamable $x8 = LDPXi renamable $x0, 1 :: (load (s64))
53 # NOPRES-NEXT:    renamable $x9, renamable $x8 = LDPXi renamable $x0, 1 :: (load (s64))
54 # CHECK-NEXT:     STRXui killed renamable $x9, renamable $x0, 11 :: (store (s64), align 4)
55 # CHECK-NEXT:     renamable $x9 = LDRXui renamable $x0, 3 :: (load (s64))
56 # CHECK-NEXT:     renamable $x14 = LDRXui renamable $x0, 5 :: (load (s64))
57 # PRESERVED-NEXT: STRXui renamable $x9, renamable $x0, 10 :: (store (s64), align 4)
58 # NOPRES-NEXT:    STRXui renamable $x9, renamable $x0, 10 :: (store (s64), align 4)
59 # CHECK-NEXT:     STRXui killed renamable $x14, renamable $x0, 200 :: (store (s64), align 4)
60 # CHECK-NEXT:     renamable $w8 = ADDWrr $w19, $w19
61 # CHECK-NEXT:     STRWui renamable $w8, renamable $x0, 100 :: (store (s64), align 4)
62 # CHECK-NEXT:    RET undef $lr
64 name:            test2
65 alignment:       4
66 tracksRegLiveness: true
67 liveins:
68   - { reg: '$x0' }
69   - { reg: '$x1' }
70   - { reg: '$x8' }
71 frameInfo:
72   maxAlignment:    1
73   maxCallFrameSize: 0
74 machineFunctionInfo: {}
75 body:             |
76   bb.0:
77     liveins: $x0, $x1, $x2, $x3, $x4, $x5, $x6, $x7, $x9, $x10, $x11, $x12, $x13
78     renamable $w19 = LDRWui renamable $x0, 0 :: (load (s64))
79     renamable $x9, renamable $x8 = LDPXi renamable $x0, 1 :: (load (s64))
80     STRXui renamable killed $x9, renamable $x0, 11 :: (store (s64), align 4)
81     renamable $x9 = LDRXui renamable $x0, 3 :: (load (s64))
82     renamable $x14 = LDRXui renamable $x0, 5 :: (load (s64))
83     STRXui renamable $x9, renamable $x0, 10 :: (store (s64), align 4)
84     STRXui renamable killed $x14, renamable $x0, 200 :: (store (s64), align 4)
85     renamable $w8 = ADDWrr $w19, $w19
86     STRWui renamable $w8, renamable $x0, 100 :: (store (s64), align 4)
87     RET undef $lr
89 ...
90 ---