401 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 52# RUN: llc -run-pass=machine-combiner -mcpu=neoverse-n2 -mtriple=aarch64-none-linux-gnu -verify-machineinstrs %s -o - | FileCheck %s3 4---5name: split_loads_to_fpr1286body: |7 bb.0.entry:8 liveins: $x0, $x1, $x2, $x3, $x49 10 ; CHECK-LABEL: name: split_loads_to_fpr12811 ; CHECK: [[COPY:%[0-9]+]]:gpr64common = COPY $x012 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr64common = COPY $x113 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:gpr64common = COPY $x214 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:gpr64common = COPY $x315 ; CHECK-NEXT: [[COPY4:%[0-9]+]]:gpr64common = COPY $x416 ; CHECK-NEXT: [[LD_i32:%[0-9]+]]:fpr32 = LDRSroX [[COPY]], [[COPY1]], 0, 117 ; CHECK-NEXT: [[FIRST_REG:%[0-9]+]]:fpr128 = SUBREG_TO_REG 0, [[LD_i32]], %subreg.ssub18 ; CHECK-NEXT: [[LD0_1:%[0-9]+]]:fpr128 = LD1i32 [[FIRST_REG]], 1, [[COPY2]] 19 ; CHECK-NEXT: [[LD1_0:%[0-9]+]]:fpr32 = LDRSui [[COPY3]], 020 ; CHECK-NEXT: [[SECOND_REG:%[0-9]+]]:fpr128 = SUBREG_TO_REG 0, killed [[LD1_0]], %subreg.ssub21 ; CHECK-NEXT: [[LD1_1:%[0-9]+]]:fpr128 = LD1i32 [[SECOND_REG]], 1, [[COPY4]]22 ; CHECK-NEXT: [[ZIP:%[0-9]+]]:fpr128 = ZIP1v2i64 [[LD0_1]], [[LD1_1]]23 ; CHECK-NEXT: $q0 = COPY [[ZIP]]24 ; CHECK-NEXT: RET_ReallyLR implicit $q025 %0:gpr64common = COPY $x026 %1:gpr64common = COPY $x127 %2:gpr64common = COPY $x228 %3:gpr64common = COPY $x329 %4:gpr64common = COPY $x430 %5:fpr32 = LDRSroX %0, %1, 0, 131 %6:fpr128 = SUBREG_TO_REG 0, %5, %subreg.ssub32 %7:fpr128 = LD1i32 %6, 1, %233 %8:fpr128 = LD1i32 %7, 2, %334 %9:fpr128 = LD1i32 %8, 3, %435 $q0 = COPY %936 RET_ReallyLR implicit $q037 38---39name: split_loads_to_fpr128_ui40body: |41 bb.0.entry:42 liveins: $x0, $x1, $x2, $x3, $x443 44 ; CHECK-LABEL: name: split_loads_to_fpr128_ui45 ; CHECK: [[COPY:%[0-9]+]]:gpr64common = COPY $x046 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr64common = COPY $x147 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:gpr64common = COPY $x248 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:gpr64common = COPY $x349 ; CHECK-NEXT: [[COPY4:%[0-9]+]]:gpr64common = COPY $x450 ; CHECK-NEXT: [[LD_i32:%[0-9]+]]:fpr32 = LDRSui [[COPY]], 051 ; CHECK-NEXT: [[FIRST_REG:%[0-9]+]]:fpr128 = SUBREG_TO_REG 0, killed [[LD_i32]], %subreg.ssub52 ; CHECK-NEXT: [[LD0_1:%[0-9]+]]:fpr128 = LD1i32 [[FIRST_REG]], 1, killed [[COPY1]] 53 ; CHECK-NEXT: [[LD1_0:%[0-9]+]]:fpr32 = LDRSui [[COPY2]], 054 ; CHECK-NEXT: [[SECOND_REG:%[0-9]+]]:fpr128 = SUBREG_TO_REG 0, killed [[LD1_0]], %subreg.ssub55 ; CHECK-NEXT: [[LD1_1:%[0-9]+]]:fpr128 = LD1i32 [[SECOND_REG]], 1, killed [[COPY3]]56 ; CHECK-NEXT: [[ZIP:%[0-9]+]]:fpr128 = ZIP1v2i64 [[LD0_1]], [[LD1_1]]57 ; CHECK-NEXT: $q0 = COPY [[ZIP]]58 ; CHECK-NEXT: RET_ReallyLR implicit $q059 %0:gpr64common = COPY $x060 %1:gpr64common = COPY $x161 %2:gpr64common = COPY $x262 %3:gpr64common = COPY $x363 %4:gpr64common = COPY $x464 %5:fpr32 = LDRSui %0, 065 %6:fpr128 = SUBREG_TO_REG 0, killed %5, %subreg.ssub66 %7:fpr128 = LD1i32 %6, 1, killed %167 %8:fpr128 = LD1i32 %7, 2, killed %268 %9:fpr128 = LD1i32 %8, 3, killed %369 $q0 = COPY %970 RET_ReallyLR implicit $q071 72---73name: split_loads_to_fpr128_i1674body: |75 bb.0.entry:76 liveins: $x0, $x1, $x2, $x3, $x4, $x5, $x6, $x7, $x877 78 ; CHECK-LABEL: name: split_loads_to_fpr128_i1679 ; CHECK: [[COPY:%[0-9]+]]:gpr64common = COPY $x080 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr64common = COPY $x181 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:gpr64common = COPY $x282 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:gpr64common = COPY $x383 ; CHECK-NEXT: [[COPY4:%[0-9]+]]:gpr64common = COPY $x484 ; CHECK-NEXT: [[COPY5:%[0-9]+]]:gpr64common = COPY $x585 ; CHECK-NEXT: [[COPY6:%[0-9]+]]:gpr64common = COPY $x686 ; CHECK-NEXT: [[COPY7:%[0-9]+]]:gpr64common = COPY $x787 ; CHECK-NEXT: [[COPY8:%[0-9]+]]:gpr64common = COPY $x888 ; CHECK-NEXT: [[LD_i16:%[0-9]+]]:fpr16 = LDRHroX [[COPY]], killed [[COPY1]], 0, 189 ; CHECK-NEXT: [[FIRST_REG:%[0-9]+]]:fpr128 = SUBREG_TO_REG 0, killed [[LD_i16]], %subreg.hsub90 ; CHECK-NEXT: [[LD0_1:%[0-9]+]]:fpr128 = LD1i16 [[FIRST_REG]], 1, killed [[COPY2]]91 ; CHECK-NEXT: [[LD0_2:%[0-9]+]]:fpr128 = LD1i16 [[LD0_1]], 2, killed [[COPY3]]92 ; CHECK-NEXT: [[LD0_3:%[0-9]+]]:fpr128 = LD1i16 [[LD0_2]], 3, killed [[COPY4]]93 ; CHECK-NEXT: [[LD1_0:%[0-9]+]]:fpr16 = LDRHui [[COPY5]], 094 ; CHECK-NEXT: [[SECOND_REG:%[0-9]+]]:fpr128 = SUBREG_TO_REG 0, killed [[LD1_0]], %subreg.hsub95 ; CHECK-NEXT: [[LD1_1:%[0-9]+]]:fpr128 = LD1i16 [[SECOND_REG]], 1, killed [[COPY6]]96 ; CHECK-NEXT: [[LD1_2:%[0-9]+]]:fpr128 = LD1i16 [[LD1_1]], 2, killed [[COPY7]]97 ; CHECK-NEXT: [[LD1_3:%[0-9]+]]:fpr128 = LD1i16 [[LD1_2]], 3, killed [[COPY8]]98 ; CHECK-NEXT: [[ZIP:%[0-9]+]]:fpr128 = ZIP1v2i64 [[LD0_3]], [[LD1_3]]99 ; CHECK-NEXT: $q0 = COPY [[ZIP]]100 ; CHECK-NEXT: RET_ReallyLR implicit $q0101 %0:gpr64common = COPY $x0102 %1:gpr64common = COPY $x1103 %2:gpr64common = COPY $x2104 %3:gpr64common = COPY $x3105 %4:gpr64common = COPY $x4106 %5:gpr64common = COPY $x5107 %6:gpr64common = COPY $x6108 %7:gpr64common = COPY $x7109 %8:gpr64common = COPY $x8110 %9:fpr16 = LDRHroX %0, killed %1, 0, 1111 %10:fpr128 = SUBREG_TO_REG 0, killed %9, %subreg.hsub112 %11:fpr128 = LD1i16 %10, 1, killed %2113 %12:fpr128 = LD1i16 %11, 2, killed %3114 %13:fpr128 = LD1i16 %12, 3, killed %4115 %14:fpr128 = LD1i16 %13, 4, killed %5116 %15:fpr128 = LD1i16 %14, 5, killed %6117 %16:fpr128 = LD1i16 %15, 6, killed %7118 %17:fpr128 = LD1i16 %16, 7, killed %8119 $q0 = COPY %17120 RET_ReallyLR implicit $q0121 122---123name: split_loads_to_fpr128_i16_ui124body: |125 bb.0.entry:126 liveins: $x0, $x1, $x2, $x3, $x4, $x5, $x6, $x7, $x8127 128 ; CHECK-LABEL: name: split_loads_to_fpr128_i16_ui129 ; CHECK: [[COPY:%[0-9]+]]:gpr64common = COPY $x0130 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr64common = COPY $x1131 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:gpr64common = COPY $x2132 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:gpr64common = COPY $x3133 ; CHECK-NEXT: [[COPY4:%[0-9]+]]:gpr64common = COPY $x4134 ; CHECK-NEXT: [[COPY5:%[0-9]+]]:gpr64common = COPY $x5135 ; CHECK-NEXT: [[COPY6:%[0-9]+]]:gpr64common = COPY $x6136 ; CHECK-NEXT: [[COPY7:%[0-9]+]]:gpr64common = COPY $x7137 ; CHECK-NEXT: [[COPY8:%[0-9]+]]:gpr64common = COPY $x8138 ; CHECK-NEXT: [[LD_i16:%[0-9]+]]:fpr16 = LDRHui [[COPY]], 0139 ; CHECK-NEXT: [[FIRST_REG:%[0-9]+]]:fpr128 = SUBREG_TO_REG 0, killed [[LD_i16]], %subreg.hsub140 ; CHECK-NEXT: [[LD0_1:%[0-9]+]]:fpr128 = LD1i16 [[FIRST_REG]], 1, killed [[COPY1]]141 ; CHECK-NEXT: [[LD0_2:%[0-9]+]]:fpr128 = LD1i16 [[LD0_1]], 2, killed [[COPY2]]142 ; CHECK-NEXT: [[LD0_3:%[0-9]+]]:fpr128 = LD1i16 [[LD0_2]], 3, killed [[COPY3]]143 ; CHECK-NEXT: [[LD1_0:%[0-9]+]]:fpr16 = LDRHui [[COPY4]], 0144 ; CHECK-NEXT: [[SECOND_REG:%[0-9]+]]:fpr128 = SUBREG_TO_REG 0, killed [[LD1_0]], %subreg.hsub145 ; CHECK-NEXT: [[LD1_1:%[0-9]+]]:fpr128 = LD1i16 [[SECOND_REG]], 1, killed [[COPY5]]146 ; CHECK-NEXT: [[LD1_2:%[0-9]+]]:fpr128 = LD1i16 [[LD1_1]], 2, killed [[COPY6]]147 ; CHECK-NEXT: [[LD1_3:%[0-9]+]]:fpr128 = LD1i16 [[LD1_2]], 3, killed [[COPY7]]148 ; CHECK-NEXT: [[ZIP:%[0-9]+]]:fpr128 = ZIP1v2i64 [[LD0_3]], [[LD1_3]]149 ; CHECK-NEXT: $q0 = COPY [[ZIP]]150 ; CHECK-NEXT: RET_ReallyLR implicit $q0151 %0:gpr64common = COPY $x0152 %1:gpr64common = COPY $x1153 %2:gpr64common = COPY $x2154 %3:gpr64common = COPY $x3155 %4:gpr64common = COPY $x4156 %5:gpr64common = COPY $x5157 %6:gpr64common = COPY $x6158 %7:gpr64common = COPY $x7159 %8:gpr64common = COPY $x8160 %9:fpr16 = LDRHui %0, 0161 %10:fpr128 = SUBREG_TO_REG 0, killed %9, %subreg.hsub162 %11:fpr128 = LD1i16 %10, 1, killed %1163 %12:fpr128 = LD1i16 %11, 2, killed %2164 %13:fpr128 = LD1i16 %12, 3, killed %3165 %14:fpr128 = LD1i16 %13, 4, killed %4166 %15:fpr128 = LD1i16 %14, 5, killed %5167 %16:fpr128 = LD1i16 %15, 6, killed %6168 %17:fpr128 = LD1i16 %16, 7, killed %7169 $q0 = COPY %17170 RET_ReallyLR implicit $q0171 172---173name: split_loads_to_fpr128_i8174body: |175 bb.0.entry:176 liveins: $x0, $x1, $x2, $x3, $x4, $x5, $x6, $x7, $x8, $x9, $x10, $x11, $x12, $x13, $x14, $x15, $x16177 178 ; CHECK-LABEL: name: split_loads_to_fpr128_i8179 ; CHECK: [[COPY:%[0-9]+]]:gpr64common = COPY $x0180 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr64common = COPY $x1181 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:gpr64common = COPY $x2182 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:gpr64common = COPY $x3183 ; CHECK-NEXT: [[COPY4:%[0-9]+]]:gpr64common = COPY $x4184 ; CHECK-NEXT: [[COPY5:%[0-9]+]]:gpr64common = COPY $x5185 ; CHECK-NEXT: [[COPY6:%[0-9]+]]:gpr64common = COPY $x6186 ; CHECK-NEXT: [[COPY7:%[0-9]+]]:gpr64common = COPY $x7187 ; CHECK-NEXT: [[COPY8:%[0-9]+]]:gpr64common = COPY $x8188 ; CHECK-NEXT: [[COPY9:%[0-9]+]]:gpr64common = COPY $x9189 ; CHECK-NEXT: [[COPY10:%[0-9]+]]:gpr64common = COPY $x10190 ; CHECK-NEXT: [[COPY11:%[0-9]+]]:gpr64common = COPY $x11191 ; CHECK-NEXT: [[COPY12:%[0-9]+]]:gpr64common = COPY $x12192 ; CHECK-NEXT: [[COPY13:%[0-9]+]]:gpr64common = COPY $x13193 ; CHECK-NEXT: [[COPY14:%[0-9]+]]:gpr64common = COPY $x14194 ; CHECK-NEXT: [[COPY15:%[0-9]+]]:gpr64common = COPY $x15195 ; CHECK-NEXT: [[COPY16:%[0-9]+]]:gpr64common = COPY $x16196 ; CHECK-NEXT: [[LD_i8:%[0-9]+]]:fpr8 = LDRBroX [[COPY]], killed [[COPY1]], 0, 0197 ; CHECK-NEXT: [[FIRST_REG:%[0-9]+]]:fpr128 = SUBREG_TO_REG 0, killed [[LD_i8]], %subreg.bsub198 ; CHECK-NEXT: [[LD0_1:%[0-9]+]]:fpr128 = LD1i8 [[FIRST_REG]], 1, killed [[COPY2]]199 ; CHECK-NEXT: [[LD0_2:%[0-9]+]]:fpr128 = LD1i8 [[LD0_1]], 2, killed [[COPY3]]200 ; CHECK-NEXT: [[LD0_3:%[0-9]+]]:fpr128 = LD1i8 [[LD0_2]], 3, killed [[COPY4]]201 ; CHECK-NEXT: [[LD0_4:%[0-9]+]]:fpr128 = LD1i8 [[LD0_3]], 4, killed [[COPY5]]202 ; CHECK-NEXT: [[LD0_5:%[0-9]+]]:fpr128 = LD1i8 [[LD0_4]], 5, killed [[COPY6]]203 ; CHECK-NEXT: [[LD0_6:%[0-9]+]]:fpr128 = LD1i8 [[LD0_5]], 6, killed [[COPY7]]204 ; CHECK-NEXT: [[LD0_7:%[0-9]+]]:fpr128 = LD1i8 [[LD0_6]], 7, killed [[COPY8]]205 ; CHECK-NEXT: [[LD1_0:%[0-9]+]]:fpr8 = LDRBui [[COPY9]], 0206 ; CHECK-NEXT: [[SECOND_REG:%[0-9]+]]:fpr128 = SUBREG_TO_REG 0, killed [[LD1_0]], %subreg.bsub207 ; CHECK-NEXT: [[LD1_1:%[0-9]+]]:fpr128 = LD1i8 [[SECOND_REG]], 1, killed [[COPY10]]208 ; CHECK-NEXT: [[LD1_2:%[0-9]+]]:fpr128 = LD1i8 [[LD1_1]], 2, killed [[COPY11]]209 ; CHECK-NEXT: [[LD1_3:%[0-9]+]]:fpr128 = LD1i8 [[LD1_2]], 3, killed [[COPY12]]210 ; CHECK-NEXT: [[LD1_4:%[0-9]+]]:fpr128 = LD1i8 [[LD1_3]], 4, killed [[COPY13]]211 ; CHECK-NEXT: [[LD1_5:%[0-9]+]]:fpr128 = LD1i8 [[LD1_4]], 5, killed [[COPY14]]212 ; CHECK-NEXT: [[LD1_6:%[0-9]+]]:fpr128 = LD1i8 [[LD1_5]], 6, killed [[COPY15]]213 ; CHECK-NEXT: [[LD1_7:%[0-9]+]]:fpr128 = LD1i8 [[LD1_6]], 7, killed [[COPY16]]214 ; CHECK-NEXT: [[ZIP:%[0-9]+]]:fpr128 = ZIP1v2i64 [[LD0_7]], [[LD1_7]]215 ; CHECK-NEXT: $q0 = COPY [[ZIP]]216 ; CHECK-NEXT: RET_ReallyLR implicit $q0217 %0:gpr64common = COPY $x0218 %1:gpr64common = COPY $x1219 %2:gpr64common = COPY $x2220 %3:gpr64common = COPY $x3221 %4:gpr64common = COPY $x4222 %5:gpr64common = COPY $x5223 %6:gpr64common = COPY $x6224 %7:gpr64common = COPY $x7225 %8:gpr64common = COPY $x8226 %9:gpr64common = COPY $x9227 %10:gpr64common = COPY $x10228 %11:gpr64common = COPY $x11229 %12:gpr64common = COPY $x12230 %13:gpr64common = COPY $x13231 %14:gpr64common = COPY $x14232 %15:gpr64common = COPY $x15233 %16:gpr64common = COPY $x16234 %17:fpr8 = LDRBroX %0, killed %1, 0, 0235 %18:fpr128 = SUBREG_TO_REG 0, killed %17, %subreg.bsub236 %19:fpr128 = LD1i8 %18, 1, killed %2237 %20:fpr128 = LD1i8 %19, 2, killed %3238 %21:fpr128 = LD1i8 %20, 3, killed %4239 %22:fpr128 = LD1i8 %21, 4, killed %5240 %23:fpr128 = LD1i8 %22, 5, killed %6241 %24:fpr128 = LD1i8 %23, 6, killed %7242 %25:fpr128 = LD1i8 %24, 7, killed %8243 %26:fpr128 = LD1i8 %25, 8, killed %9244 %27:fpr128 = LD1i8 %26, 9, killed %10245 %28:fpr128 = LD1i8 %27, 10, killed %11246 %29:fpr128 = LD1i8 %28, 11, killed %12247 %30:fpr128 = LD1i8 %29, 12, killed %13248 %31:fpr128 = LD1i8 %30, 13, killed %14249 %32:fpr128 = LD1i8 %31, 14, killed %15250 %33:fpr128 = LD1i8 %32, 15, killed %16251 $q0 = COPY %33252 RET_ReallyLR implicit $q0253 254---255name: negative_pattern_missing_lanes256body: |257 bb.0.entry:258 liveins: $x0, $x1259 260 ; CHECK-LABEL: name: negative_pattern_missing_lanes261 ; CHECK: [[LD1:%.*]]:fpr128 = LDRQui $x1, 0262 ; CHECK-NEXT: [[LD2:%.*]]:fpr128 = LD1i32 [[LD1]]263 264 %0:gpr64common = COPY $x0265 %1:fpr128 = LDRQui $x1, 0266 %2:fpr128 = LD1i32 %1, 3, %0267 $q0 = COPY %2268 RET_ReallyLR implicit $q0269 270---271name: out_of_order_lanes272body: |273 bb.0.entry:274 liveins: $x0, $x1, $x2, $x3, $x4275 276 ; CHECK-LABEL: name: out_of_order_lanes277 ; CHECK: [[COPY:%[0-9]+]]:gpr64common = COPY $x0278 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr64common = COPY $x1279 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:gpr64common = COPY $x2280 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:gpr64common = COPY $x3281 ; CHECK-NEXT: [[COPY4:%[0-9]+]]:gpr64common = COPY $x4282 ; CHECK-NEXT: [[LD_i32:%[0-9]+]]:fpr32 = LDRSroX [[COPY]], killed [[COPY1]], 0, 1283 ; CHECK-NEXT: [[FIRST_REG:%[0-9]+]]:fpr128 = SUBREG_TO_REG 0, killed [[LD_i32]], %subreg.ssub284 ; CHECK-NEXT: [[LD0_1:%[0-9]+]]:fpr128 = LD1i32 [[FIRST_REG]], 1, killed [[COPY3]] 285 ; CHECK-NEXT: [[LD1_0:%[0-9]+]]:fpr32 = LDRSui [[COPY2]], 0286 ; CHECK-NEXT: [[SECOND_REG:%[0-9]+]]:fpr128 = SUBREG_TO_REG 0, killed [[LD1_0]], %subreg.ssub287 ; CHECK-NEXT: [[LD1_1:%[0-9]+]]:fpr128 = LD1i32 [[SECOND_REG]], 1, killed [[COPY4]]288 ; CHECK-NEXT: [[ZIP:%[0-9]+]]:fpr128 = ZIP1v2i64 [[LD0_1]], [[LD1_1]]289 ; CHECK-NEXT: $q0 = COPY [[ZIP]]290 ; CHECK-NEXT: RET_ReallyLR implicit $q0291 %0:gpr64common = COPY $x0292 %1:gpr64common = COPY $x1293 %2:gpr64common = COPY $x2294 %3:gpr64common = COPY $x3295 %4:gpr64common = COPY $x4296 %5:fpr32 = LDRSroX %0, killed %1, 0, 1297 %6:fpr128 = SUBREG_TO_REG 0, killed %5, %subreg.ssub298 %7:fpr128 = LD1i32 %6, 2, killed %2299 %8:fpr128 = LD1i32 %7, 1, killed %3300 %9:fpr128 = LD1i32 %8, 3, killed %4301 $q0 = COPY %9302 RET_ReallyLR implicit $q0303 304---305name: negative_pattern_no_subreg_to_reg306body: |307 bb.0.entry:308 liveins: $x0, $x1, $x2, $x3309 310 ; CHECK-LABEL: name: negative_pattern_no_subreg_to_reg311 ; CHECK: [[COPY:%[0-9]+]]:gpr64common = COPY $x0312 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr64common = COPY $x1313 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:gpr64common = COPY $x2314 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:gpr64common = COPY $x3315 ; CHECK-NEXT: [[INITIAL_VEC:%[0-9]+]]:fpr128 = LDRQui [[COPY]], 0316 ; CHECK-NEXT: [[LD_LANE_1:%[0-9]+]]:fpr128 = LD1i32 [[INITIAL_VEC]], 1, killed [[COPY1]]317 ; CHECK-NEXT: [[LD_LANE_2:%[0-9]+]]:fpr128 = LD1i32 [[LD_LANE_1]], 2, killed [[COPY2]]318 ; CHECK-NEXT: [[LD_LANE_3:%[0-9]+]]:fpr128 = LD1i32 [[LD_LANE_2]], 3, killed [[COPY3]]319 ; CHECK-NEXT: $q0 = COPY [[LD_LANE_3]]320 ; CHECK-NEXT: RET_ReallyLR implicit $q0321 %0:gpr64common = COPY $x0322 %1:gpr64common = COPY $x1323 %2:gpr64common = COPY $x2324 %3:gpr64common = COPY $x3325 %4:fpr128 = LDRQui %0, 0 326 %5:fpr128 = LD1i32 %4, 1, killed %1 327 %6:fpr128 = LD1i32 %5, 2, killed %2328 %7:fpr128 = LD1i32 %6, 3, killed %3329 $q0 = COPY %7330 RET_ReallyLR implicit $q0331 332---333name: negative_pattern_multiple_users334body: |335 bb.0.entry:336 liveins: $x0, $x1, $x2, $x3, $x4337 338 ; CHECK-LABEL: name: negative_pattern_multiple_users339 ; CHECK: [[COPY:%[0-9]+]]:gpr64common = COPY $x0340 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr64common = COPY $x1341 ; CHECK-NEXT: [[COPY2:%[0-9]+]]:gpr64common = COPY $x2342 ; CHECK-NEXT: [[COPY3:%[0-9]+]]:gpr64common = COPY $x3343 ; CHECK-NEXT: [[COPY4:%[0-9]+]]:gpr64common = COPY $x4344 ; CHECK-NEXT: [[LD_i32:%[0-9]+]]:fpr32 = LDRSroX [[COPY]], killed [[COPY1]], 0, 1345 ; CHECK-NEXT: [[FIRST_REG:%[0-9]+]]:fpr128 = SUBREG_TO_REG 0, killed [[LD_i32]], %subreg.ssub346 ; CHECK-NEXT: [[LD_LANE_1:%[0-9]+]]:fpr128 = LD1i32 [[FIRST_REG]], 1, killed [[COPY2]]347 ; CHECK-NEXT: [[LD_LANE_2:%[0-9]+]]:fpr128 = LD1i32 [[LD_LANE_1]], 2, killed [[COPY3]]348 ; CHECK-NEXT: [[LD_LANE_3:%[0-9]+]]:fpr128 = LD1i32 [[LD_LANE_2]], 3, killed [[COPY4]]349 ; CHECK-NEXT: $q0 = COPY [[LD_LANE_3]]350 ; CHECK-NEXT: $q1 = COPY [[LD_LANE_2]]351 ; CHECK-NEXT: RET_ReallyLR implicit $q0, implicit $q1352 %0:gpr64common = COPY $x0353 %1:gpr64common = COPY $x1354 %2:gpr64common = COPY $x2355 %3:gpr64common = COPY $x3356 %4:gpr64common = COPY $x4357 %5:fpr32 = LDRSroX %0, killed %1, 0, 1358 %6:fpr128 = SUBREG_TO_REG 0, killed %5, %subreg.ssub359 %7:fpr128 = LD1i32 %6, 1, killed %2360 %8:fpr128 = LD1i32 %7, 2, killed %3361 %9:fpr128 = LD1i32 %8, 3, killed %4362 $q0 = COPY %9363 $q1 = COPY %8364 RET_ReallyLR implicit $q0, implicit $q1365 366---367name: aliasing_store_between_vector_loads368alignment: 4369tracksRegLiveness: true370body: |371 bb.0.entry:372 liveins: $x0, $x1, $x2, $x3373 374 ; CHECK-LABEL: name: aliasing_store_between_vector_loads375 ; CHECK: [[BASE_PTR:%[0-9]+]]:gpr64common = COPY $x0376 ; CHECK-NEXT: [[OFFSET_PTR:%[0-9]+]]:gpr64common = COPY $x1377 ; CHECK-NEXT: [[ALIAS_ADDR:%[0-9]+]]:gpr64common = COPY $x2378 ; CHECK-NEXT: [[OTHER_ADDR:%[0-9]+]]:gpr64common = COPY $x3379 ; CHECK-NEXT: [[LOAD0:%[0-9]+]]:fpr32 = LDRSroX [[BASE_PTR]], killed [[OFFSET_PTR]], 0, 1380 ; CHECK-NEXT: [[VEC0:%[0-9]+]]:fpr128 = SUBREG_TO_REG 0, killed [[LOAD0]], %subreg.ssub381 ; CHECK-NEXT: [[VEC1:%[0-9]+]]:fpr128 = LD1i32 [[VEC0]], 1, [[ALIAS_ADDR]]382 ; CHECK-NEXT: [[CONST:%[0-9]+]]:gpr32 = MOVi32imm 99383 ; CHECK-NEXT: STRWui [[CONST]], [[ALIAS_ADDR]], 0384 ; CHECK-NEXT: [[VEC2:%[0-9]+]]:fpr128 = LD1i32 [[VEC1]], 2, killed [[ALIAS_ADDR]]385 ; CHECK-NEXT: [[VEC3:%[0-9]+]]:fpr128 = LD1i32 [[VEC2]], 3, killed [[OTHER_ADDR]]386 ; CHECK-NEXT: $q0 = COPY [[VEC3]]387 ; CHECK-NEXT: RET_ReallyLR implicit $q0388 %0:gpr64common = COPY $x0389 %1:gpr64common = COPY $x1390 %2:gpr64common = COPY $x2391 %3:gpr64common = COPY $x3392 %5:fpr32 = LDRSroX %0, killed %1, 0, 1393 %6:fpr128 = SUBREG_TO_REG 0, killed %5, %subreg.ssub394 %7:fpr128 = LD1i32 %6, 1, %2395 %10:gpr32 = MOVi32imm 99396 STRWui %10, %2, 0397 %8:fpr128 = LD1i32 %7, 2, killed %2398 %9:fpr128 = LD1i32 %8, 3, killed %3399 $q0 = COPY %9400 RET_ReallyLR implicit $q0401