brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.4 KiB · d531dac Raw
49 lines · plain
1; RUN: llc -mtriple=thumbv4t-none--eabi < %s | FileCheck %s --check-prefix=CHECK --check-prefix=CHECK-V4T2; RUN: llc -mtriple=thumbv6m-none--eabi < %s | FileCheck %s --check-prefix=CHECK --check-prefix=CHECK-V6M3 4; CHECK-LABEL: test15define i32 @test1(ptr %p) {6 7; Offsets less than 8 can be generated in a single add8; CHECK: adds [[NEWBASE:r[0-9]]], r0, #49  %1 = getelementptr inbounds i32, ptr %p, i32 110  %2 = getelementptr inbounds i32, ptr %p, i32 211  %3 = getelementptr inbounds i32, ptr %p, i32 312  %4 = getelementptr inbounds i32, ptr %p, i32 413 14; CHECK-NEXT: ldm [[NEWBASE]],15  %5 = load i32, ptr %1, align 416  %6 = load i32, ptr %2, align 417  %7 = load i32, ptr %3, align 418  %8 = load i32, ptr %4, align 419 20  %9 = add nsw i32 %5, %621  %10 = add nsw i32 %9, %722  %11 = add nsw i32 %10, %823  ret i32 %1124}25 26; CHECK-LABEL: test227define i32 @test2(ptr %p) {28 29; Offsets >=8 require a mov and an add30; CHECK-V4T:  movs [[NEWBASE:r[0-9]]], r031; CHECK-V6M:  mov [[NEWBASE:r[0-9]]], r032; CHECK-NEXT: adds [[NEWBASE]], #833  %1 = getelementptr inbounds i32, ptr %p, i32 234  %2 = getelementptr inbounds i32, ptr %p, i32 335  %3 = getelementptr inbounds i32, ptr %p, i32 436  %4 = getelementptr inbounds i32, ptr %p, i32 537 38; CHECK-NEXT: ldm [[NEWBASE]],39  %5 = load i32, ptr %1, align 440  %6 = load i32, ptr %2, align 441  %7 = load i32, ptr %3, align 442  %8 = load i32, ptr %4, align 443 44  %9 = add nsw i32 %5, %645  %10 = add nsw i32 %9, %746  %11 = add nsw i32 %10, %847  ret i32 %1148}49