[ORC] Add std::tuple support to SimplePackedSerialization.
[llvm-project.git] / llvm / test / CodeGen / AArch64 / GlobalISel / prelegalizercombiner-ptradd-chain.mir
blob4fe7a1817fde891f9fd254a8c2c117af6f9b4f9d
1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2 # RUN: llc -mtriple aarch64-apple-ios  -run-pass=aarch64-prelegalizer-combiner --aarch64prelegalizercombinerhelper-only-enable-rule="ptr_add_immed_chain"  %s -o - -verify-machineinstrs | FileCheck %s
3 # REQUIRES: asserts
5 # Check that we fold two adds of constant offsets with G_PTR_ADD into a single G_PTR_ADD.
6 ---
7 name: ptradd_chain
8 tracksRegLiveness: true
9 body:             |
10   bb.1:
11     liveins: $x0
13     ; CHECK-LABEL: name: ptradd_chain
14     ; CHECK: liveins: $x0
15     ; CHECK: [[COPY:%[0-9]+]]:_(p0) = COPY $x0
16     ; CHECK: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 16
17     ; CHECK: [[PTR_ADD:%[0-9]+]]:_(p0) = G_PTR_ADD [[COPY]], [[C]](s64)
18     ; CHECK: $x0 = COPY [[PTR_ADD]](p0)
19     ; CHECK: RET_ReallyLR implicit $x0
20     %0:_(p0) = COPY $x0
21     %1:_(s64) = G_CONSTANT i64 4
22     %2:_(s64) = G_CONSTANT i64 12
23     %3:_(p0) = G_PTR_ADD %0(p0), %1
24     %4:_(p0) = G_PTR_ADD %3(p0), %2
25     $x0 = COPY %4(p0)
26     RET_ReallyLR implicit $x0
27 ...
28 ---
29 name: ptradd_chain_2
30 tracksRegLiveness: true
31 body:             |
32   bb.1:
33     liveins: $x0
34     ; CHECK-LABEL: name: ptradd_chain_2
35     ; CHECK: liveins: $x0
36     ; CHECK: [[COPY:%[0-9]+]]:_(p0) = COPY $x0
37     ; CHECK: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 28
38     ; CHECK: [[PTR_ADD:%[0-9]+]]:_(p0) = G_PTR_ADD [[COPY]], [[C]](s64)
39     ; CHECK: $x0 = COPY [[PTR_ADD]](p0)
40     ; CHECK: RET_ReallyLR implicit $x0
41     %0:_(p0) = COPY $x0
42     %1:_(s64) = G_CONSTANT i64 4
43     %2:_(s64) = G_CONSTANT i64 12
44     %3:_(p0) = G_PTR_ADD %0(p0), %1
45     %4:_(p0) = G_PTR_ADD %3(p0), %2
46     %5:_(p0) = G_PTR_ADD %4(p0), %2
47     $x0 = COPY %5(p0)
48     RET_ReallyLR implicit $x0
49 ...
50 ---
51 name: ptradd_chain_lookthough
52 tracksRegLiveness: true
53 body:             |
54   bb.1:
55     liveins: $x0
56     ; CHECK-LABEL: name: ptradd_chain_lookthough
57     ; CHECK: liveins: $x0
58     ; CHECK: [[COPY:%[0-9]+]]:_(p0) = COPY $x0
59     ; CHECK: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 28
60     ; CHECK: [[PTR_ADD:%[0-9]+]]:_(p0) = G_PTR_ADD [[COPY]], [[C]](s64)
61     ; CHECK: $x0 = COPY [[PTR_ADD]](p0)
62     ; CHECK: RET_ReallyLR implicit $x0
63     %0:_(p0) = COPY $x0
64     %1:_(s64) = G_CONSTANT i64 4
65     %2:_(s64) = G_CONSTANT i64 12
66     %6:_(s32) = G_TRUNC %2(s64)
67     %7:_(s64) = G_SEXT %6(s32)
68     %3:_(p0) = G_PTR_ADD %0(p0), %1
69     %4:_(p0) = G_PTR_ADD %3(p0), %2
70     %5:_(p0) = G_PTR_ADD %4(p0), %7
71     $x0 = COPY %5(p0)
72     RET_ReallyLR implicit $x0
73 ...
74 ---
75 name: ptradd_would_form_illegal_load_addressing
76 tracksRegLiveness: true
77 body:             |
78   bb.1:
79     liveins: $x0
81     ; CHECK-LABEL: name: ptradd_would_form_illegal_load_addressing
82     ; CHECK: liveins: $x0
83     ; CHECK: [[COPY:%[0-9]+]]:_(p0) = COPY $x0
84     ; CHECK: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 4
85     ; CHECK: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 4096
86     ; CHECK: [[PTR_ADD:%[0-9]+]]:_(p0) = G_PTR_ADD [[COPY]], [[C]](s64)
87     ; CHECK: [[PTR_ADD1:%[0-9]+]]:_(p0) = G_PTR_ADD [[PTR_ADD]], [[C1]](s64)
88     ; CHECK: %ld:_(s64) = G_LOAD [[PTR_ADD1]](p0) :: (load (s64))
89     ; CHECK: %ld_other:_(s64) = G_LOAD [[PTR_ADD]](p0) :: (load (s64))
90     ; CHECK: $x0 = COPY %ld(s64)
91     ; CHECK: $x1 = COPY %ld_other(s64)
92     ; CHECK: RET_ReallyLR implicit $x0
93     %0:_(p0) = COPY $x0
94     %1:_(s64) = G_CONSTANT i64 4
95     %2:_(s64) = G_CONSTANT i64 4096
96     %3:_(p0) = G_PTR_ADD %0(p0), %1
97     %4:_(p0) = G_PTR_ADD %3(p0), %2
98     %ld:_(s64) = G_LOAD %4(p0) :: (load 8)
99     %ld_other:_(s64) = G_LOAD %3(p0) :: (load 8)
100     $x0 = COPY %ld(s64)
101     $x1 = COPY %ld_other(s64)
102     RET_ReallyLR implicit $x0