168 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2# RUN: llc -mtriple aarch64-apple-ios -run-pass=aarch64-prelegalizer-combiner %s -o - -verify-machineinstrs | FileCheck %s3# REQUIRES: asserts4 5# Check that we fold two adds of constant offsets with G_PTR_ADD into a single G_PTR_ADD.6---7name: ptradd_chain8tracksRegLiveness: true9body: |10 bb.1:11 liveins: $x012 13 ; CHECK-LABEL: name: ptradd_chain14 ; CHECK: liveins: $x015 ; CHECK-NEXT: {{ $}}16 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x017 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 1618 ; CHECK-NEXT: [[PTR_ADD:%[0-9]+]]:_(p0) = G_PTR_ADD [[COPY]], [[C]](s64)19 ; CHECK-NEXT: $x0 = COPY [[PTR_ADD]](p0)20 ; CHECK-NEXT: RET_ReallyLR implicit $x021 %0:_(p0) = COPY $x022 %1:_(s64) = G_CONSTANT i64 423 %2:_(s64) = G_CONSTANT i64 1224 %3:_(p0) = G_PTR_ADD %0(p0), %125 %4:_(p0) = G_PTR_ADD %3(p0), %226 $x0 = COPY %4(p0)27 RET_ReallyLR implicit $x028...29---30name: ptradd_chain_231tracksRegLiveness: true32body: |33 bb.1:34 liveins: $x035 ; CHECK-LABEL: name: ptradd_chain_236 ; CHECK: liveins: $x037 ; CHECK-NEXT: {{ $}}38 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x039 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 2840 ; CHECK-NEXT: [[PTR_ADD:%[0-9]+]]:_(p0) = G_PTR_ADD [[COPY]], [[C]](s64)41 ; CHECK-NEXT: $x0 = COPY [[PTR_ADD]](p0)42 ; CHECK-NEXT: RET_ReallyLR implicit $x043 %0:_(p0) = COPY $x044 %1:_(s64) = G_CONSTANT i64 445 %2:_(s64) = G_CONSTANT i64 1246 %3:_(p0) = G_PTR_ADD %0(p0), %147 %4:_(p0) = G_PTR_ADD %3(p0), %248 %5:_(p0) = G_PTR_ADD %4(p0), %249 $x0 = COPY %5(p0)50 RET_ReallyLR implicit $x051...52---53name: ptradd_chain_lookthough54tracksRegLiveness: true55body: |56 bb.1:57 liveins: $x058 ; CHECK-LABEL: name: ptradd_chain_lookthough59 ; CHECK: liveins: $x060 ; CHECK-NEXT: {{ $}}61 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x062 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 2863 ; CHECK-NEXT: [[PTR_ADD:%[0-9]+]]:_(p0) = G_PTR_ADD [[COPY]], [[C]](s64)64 ; CHECK-NEXT: $x0 = COPY [[PTR_ADD]](p0)65 ; CHECK-NEXT: RET_ReallyLR implicit $x066 %0:_(p0) = COPY $x067 %1:_(s64) = G_CONSTANT i64 468 %2:_(s64) = G_CONSTANT i64 1269 %6:_(s32) = G_TRUNC %2(s64)70 %7:_(s64) = G_SEXT %6(s32)71 %3:_(p0) = G_PTR_ADD %0(p0), %172 %4:_(p0) = G_PTR_ADD %3(p0), %273 %5:_(p0) = G_PTR_ADD %4(p0), %774 $x0 = COPY %5(p0)75 RET_ReallyLR implicit $x076...77---78name: ptradd_would_form_illegal_load_addressing79tracksRegLiveness: true80body: |81 bb.1:82 liveins: $x083 84 ; CHECK-LABEL: name: ptradd_would_form_illegal_load_addressing85 ; CHECK: liveins: $x086 ; CHECK-NEXT: {{ $}}87 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x088 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 489 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 409690 ; CHECK-NEXT: [[PTR_ADD:%[0-9]+]]:_(p0) = G_PTR_ADD [[COPY]], [[C]](s64)91 ; CHECK-NEXT: [[PTR_ADD1:%[0-9]+]]:_(p0) = G_PTR_ADD [[PTR_ADD]], [[C1]](s64)92 ; CHECK-NEXT: %ld:_(s64) = G_LOAD [[PTR_ADD1]](p0) :: (load (s64))93 ; CHECK-NEXT: %ld_other:_(s64) = G_LOAD [[PTR_ADD]](p0) :: (load (s64))94 ; CHECK-NEXT: $x0 = COPY %ld(s64)95 ; CHECK-NEXT: $x1 = COPY %ld_other(s64)96 ; CHECK-NEXT: RET_ReallyLR implicit $x097 %0:_(p0) = COPY $x098 %1:_(s64) = G_CONSTANT i64 499 %2:_(s64) = G_CONSTANT i64 4096100 %3:_(p0) = G_PTR_ADD %0(p0), %1101 %4:_(p0) = G_PTR_ADD %3(p0), %2102 %ld:_(s64) = G_LOAD %4(p0) :: (load 8)103 %ld_other:_(s64) = G_LOAD %3(p0) :: (load 8)104 $x0 = COPY %ld(s64)105 $x1 = COPY %ld_other(s64)106 RET_ReallyLR implicit $x0107...108---109name: ptradd_would_form_illegal_load_addressing_wrong_orig_immed110tracksRegLiveness: true111body: |112 bb.1:113 liveins: $x0114 115 ; CHECK-LABEL: name: ptradd_would_form_illegal_load_addressing_wrong_orig_immed116 ; CHECK: liveins: $x0117 ; CHECK-NEXT: {{ $}}118 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x0119 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 1600136120 ; CHECK-NEXT: [[C1:%[0-9]+]]:_(s64) = G_CONSTANT i64 8121 ; CHECK-NEXT: [[PTR_ADD:%[0-9]+]]:_(p0) = G_PTR_ADD [[COPY]], [[C]](s64)122 ; CHECK-NEXT: [[PTR_ADD1:%[0-9]+]]:_(p0) = G_PTR_ADD [[PTR_ADD]], [[C1]](s64)123 ; CHECK-NEXT: %ld:_(s64) = G_LOAD [[PTR_ADD1]](p0) :: (load (s64))124 ; CHECK-NEXT: %ld_other:_(s64) = G_LOAD [[PTR_ADD]](p0) :: (load (s64))125 ; CHECK-NEXT: $x0 = COPY %ld(s64)126 ; CHECK-NEXT: $x1 = COPY %ld_other(s64)127 ; CHECK-NEXT: RET_ReallyLR implicit $x0128 %0:_(p0) = COPY $x0129 %1:_(s64) = G_CONSTANT i64 1600136130 %2:_(s64) = G_CONSTANT i64 8131 %3:_(p0) = G_PTR_ADD %0(p0), %1132 %4:_(p0) = G_PTR_ADD %3(p0), %2133 %ld:_(s64) = G_LOAD %4(p0) :: (load 8)134 %ld_other:_(s64) = G_LOAD %3(p0) :: (load 8)135 $x0 = COPY %ld(s64)136 $x1 = COPY %ld_other(s64)137 RET_ReallyLR implicit $x0138...139---140# PR58906141name: ptradd_constant_type_mismatch142tracksRegLiveness: true143body: |144 bb.1:145 liveins: $x0, $x1146 147 ; CHECK-LABEL: name: ptradd_constant_type_mismatch148 ; CHECK: liveins: $x0, $x1149 ; CHECK-NEXT: {{ $}}150 ; CHECK-NEXT: [[COPY:%[0-9]+]]:_(p0) = COPY $x0151 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:_(s64) = COPY $x1152 ; CHECK-NEXT: [[C:%[0-9]+]]:_(s64) = G_CONSTANT i64 8153 ; CHECK-NEXT: [[PTR_ADD:%[0-9]+]]:_(p0) = G_PTR_ADD [[COPY]], [[COPY1]](s64)154 ; CHECK-NEXT: [[PTR_ADD1:%[0-9]+]]:_(p0) = G_PTR_ADD [[PTR_ADD]], [[C]](s64)155 ; CHECK-NEXT: %ld:_(s64) = G_LOAD [[PTR_ADD1]](p0) :: (load (s64))156 ; CHECK-NEXT: $x0 = COPY %ld(s64)157 ; CHECK-NEXT: RET_ReallyLR implicit $x0158 %0:_(p0) = COPY $x0159 %1:_(s64) = COPY $x1160 %2:_(s32) = G_CONSTANT i32 8161 %3:_(s64) = G_ZEXT %2:_(s32)162 %4:_(p0) = G_PTR_ADD %0:_, %3:_(s64)163 %5:_(p0) = G_PTR_ADD %4:_, %1:_(s64)164 %ld:_(s64) = G_LOAD %5(p0) :: (load 8)165 $x0 = COPY %ld(s64)166 RET_ReallyLR implicit $x0167...168