brintos

brintos / llvm-project-archived public Read only

0
0
Text · 8.2 KiB · 9632469 Raw
206 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=thumbv8.1m.main-none-none-eabi -mattr=+mve %s -o - | FileCheck %s3 4define dso_local i32 @test_500_504(ptr nocapture readonly %x) {5; CHECK-LABEL: test_500_504:6; CHECK:       @ %bb.0: @ %entry7; CHECK-NEXT:    .save {r7, lr}8; CHECK-NEXT:    push {r7, lr}9; CHECK-NEXT:    mov.w lr, #12610; CHECK-NEXT:    adr r1, .LCPI0_011; CHECK-NEXT:    vldrw.u32 q0, [r1]12; CHECK-NEXT:    mov.w r1, #50013; CHECK-NEXT:    mov.w r12, #014; CHECK-NEXT:    vdup.32 q1, r115; CHECK-NEXT:    movs r2, #016; CHECK-NEXT:  .LBB0_1: @ %vector.body17; CHECK-NEXT:    @ =>This Inner Loop Header: Depth=118; CHECK-NEXT:    vqadd.u32 q2, q0, r219; CHECK-NEXT:    adds r2, #420; CHECK-NEXT:    vptt.u32 hi, q1, q221; CHECK-NEXT:    vldrwt.u32 q2, [r0], #1622; CHECK-NEXT:    vaddvat.u32 r12, q223; CHECK-NEXT:    le lr, .LBB0_124; CHECK-NEXT:  @ %bb.2: @ %for.cond.cleanup25; CHECK-NEXT:    mov r0, r1226; CHECK-NEXT:    pop {r7, pc}27; CHECK-NEXT:    .p2align 428; CHECK-NEXT:  @ %bb.3:29; CHECK-NEXT:  .LCPI0_0:30; CHECK-NEXT:    .long 0 @ 0x031; CHECK-NEXT:    .long 1 @ 0x132; CHECK-NEXT:    .long 2 @ 0x233; CHECK-NEXT:    .long 3 @ 0x334entry:35  br label %vector.body36 37vector.body:                                      ; preds = %vector.body, %entry38  %index = phi i32 [ 0, %entry ], [ %index.next, %vector.body ]39  %vec.phi = phi i32 [ 0, %entry ], [ %4, %vector.body ]40  %active.lane.mask = call <4 x i1> @llvm.get.active.lane.mask.v4i1.i32(i32 %index, i32 500)41  %0 = getelementptr inbounds i32, ptr %x, i32 %index42  %1 = bitcast ptr %0 to ptr43  %wide.masked.load = call <4 x i32> @llvm.masked.load.v4i32.p0(ptr %1, i32 4, <4 x i1> %active.lane.mask, <4 x i32> undef)44  %2 = select <4 x i1> %active.lane.mask, <4 x i32> %wide.masked.load, <4 x i32> zeroinitializer45  %3 = call i32 @llvm.vector.reduce.add.v4i32(<4 x i32> %2)46  %4 = add i32 %3, %vec.phi47  %index.next = add i32 %index, 448  %5 = icmp eq i32 %index.next, 50449  br i1 %5, label %for.cond.cleanup, label %vector.body50 51for.cond.cleanup:                                 ; preds = %vector.body52  ret i32 %453}54 55define dso_local i32 @test_501_504(ptr nocapture readonly %x) {56; CHECK-LABEL: test_501_504:57; CHECK:       @ %bb.0: @ %entry58; CHECK-NEXT:    .save {r7, lr}59; CHECK-NEXT:    push {r7, lr}60; CHECK-NEXT:    movw r1, #50161; CHECK-NEXT:    movs r2, #062; CHECK-NEXT:    dlstp.32 lr, r163; CHECK-NEXT:  .LBB1_1: @ %vector.body64; CHECK-NEXT:    @ =>This Inner Loop Header: Depth=165; CHECK-NEXT:    vldrw.u32 q0, [r0], #1666; CHECK-NEXT:    vaddva.u32 r2, q067; CHECK-NEXT:    letp lr, .LBB1_168; CHECK-NEXT:  @ %bb.2: @ %for.cond.cleanup69; CHECK-NEXT:    mov r0, r270; CHECK-NEXT:    pop {r7, pc}71entry:72  br label %vector.body73 74vector.body:                                      ; preds = %vector.body, %entry75  %index = phi i32 [ 0, %entry ], [ %index.next, %vector.body ]76  %vec.phi = phi i32 [ 0, %entry ], [ %4, %vector.body ]77  %active.lane.mask = call <4 x i1> @llvm.get.active.lane.mask.v4i1.i32(i32 %index, i32 501)78  %0 = getelementptr inbounds i32, ptr %x, i32 %index79  %1 = bitcast ptr %0 to ptr80  %wide.masked.load = call <4 x i32> @llvm.masked.load.v4i32.p0(ptr %1, i32 4, <4 x i1> %active.lane.mask, <4 x i32> undef)81  %2 = select <4 x i1> %active.lane.mask, <4 x i32> %wide.masked.load, <4 x i32> zeroinitializer82  %3 = call i32 @llvm.vector.reduce.add.v4i32(<4 x i32> %2)83  %4 = add i32 %3, %vec.phi84  %index.next = add i32 %index, 485  %5 = icmp eq i32 %index.next, 50486  br i1 %5, label %for.cond.cleanup, label %vector.body87 88for.cond.cleanup:                                 ; preds = %vector.body89  ret i32 %490}91 92define dso_local i32 @test_502_504(ptr nocapture readonly %x) {93; CHECK-LABEL: test_502_504:94; CHECK:       @ %bb.0: @ %entry95; CHECK-NEXT:    .save {r7, lr}96; CHECK-NEXT:    push {r7, lr}97; CHECK-NEXT:    mov.w r1, #50298; CHECK-NEXT:    movs r2, #099; CHECK-NEXT:    dlstp.32 lr, r1100; CHECK-NEXT:  .LBB2_1: @ %vector.body101; CHECK-NEXT:    @ =>This Inner Loop Header: Depth=1102; CHECK-NEXT:    vldrw.u32 q0, [r0], #16103; CHECK-NEXT:    vaddva.u32 r2, q0104; CHECK-NEXT:    letp lr, .LBB2_1105; CHECK-NEXT:  @ %bb.2: @ %for.cond.cleanup106; CHECK-NEXT:    mov r0, r2107; CHECK-NEXT:    pop {r7, pc}108entry:109  br label %vector.body110 111vector.body:                                      ; preds = %vector.body, %entry112  %index = phi i32 [ 0, %entry ], [ %index.next, %vector.body ]113  %vec.phi = phi i32 [ 0, %entry ], [ %4, %vector.body ]114  %active.lane.mask = call <4 x i1> @llvm.get.active.lane.mask.v4i1.i32(i32 %index, i32 502)115  %0 = getelementptr inbounds i32, ptr %x, i32 %index116  %1 = bitcast ptr %0 to ptr117  %wide.masked.load = call <4 x i32> @llvm.masked.load.v4i32.p0(ptr %1, i32 4, <4 x i1> %active.lane.mask, <4 x i32> undef)118  %2 = select <4 x i1> %active.lane.mask, <4 x i32> %wide.masked.load, <4 x i32> zeroinitializer119  %3 = call i32 @llvm.vector.reduce.add.v4i32(<4 x i32> %2)120  %4 = add i32 %3, %vec.phi121  %index.next = add i32 %index, 4122  %5 = icmp eq i32 %index.next, 504123  br i1 %5, label %for.cond.cleanup, label %vector.body124 125for.cond.cleanup:                                 ; preds = %vector.body126  ret i32 %4127}128 129define dso_local i32 @test_503_504(ptr nocapture readonly %x) {130; CHECK-LABEL: test_503_504:131; CHECK:       @ %bb.0: @ %entry132; CHECK-NEXT:    .save {r7, lr}133; CHECK-NEXT:    push {r7, lr}134; CHECK-NEXT:    movw r1, #503135; CHECK-NEXT:    movs r2, #0136; CHECK-NEXT:    dlstp.32 lr, r1137; CHECK-NEXT:  .LBB3_1: @ %vector.body138; CHECK-NEXT:    @ =>This Inner Loop Header: Depth=1139; CHECK-NEXT:    vldrw.u32 q0, [r0], #16140; CHECK-NEXT:    vaddva.u32 r2, q0141; CHECK-NEXT:    letp lr, .LBB3_1142; CHECK-NEXT:  @ %bb.2: @ %for.cond.cleanup143; CHECK-NEXT:    mov r0, r2144; CHECK-NEXT:    pop {r7, pc}145entry:146  br label %vector.body147 148vector.body:                                      ; preds = %vector.body, %entry149  %index = phi i32 [ 0, %entry ], [ %index.next, %vector.body ]150  %vec.phi = phi i32 [ 0, %entry ], [ %4, %vector.body ]151  %active.lane.mask = call <4 x i1> @llvm.get.active.lane.mask.v4i1.i32(i32 %index, i32 503)152  %0 = getelementptr inbounds i32, ptr %x, i32 %index153  %1 = bitcast ptr %0 to ptr154  %wide.masked.load = call <4 x i32> @llvm.masked.load.v4i32.p0(ptr %1, i32 4, <4 x i1> %active.lane.mask, <4 x i32> undef)155  %2 = select <4 x i1> %active.lane.mask, <4 x i32> %wide.masked.load, <4 x i32> zeroinitializer156  %3 = call i32 @llvm.vector.reduce.add.v4i32(<4 x i32> %2)157  %4 = add i32 %3, %vec.phi158  %index.next = add i32 %index, 4159  %5 = icmp eq i32 %index.next, 504160  br i1 %5, label %for.cond.cleanup, label %vector.body161 162for.cond.cleanup:                                 ; preds = %vector.body163  ret i32 %4164}165 166define dso_local i32 @test_504_504(ptr nocapture readonly %x) {167; CHECK-LABEL: test_504_504:168; CHECK:       @ %bb.0: @ %entry169; CHECK-NEXT:    .save {r7, lr}170; CHECK-NEXT:    push {r7, lr}171; CHECK-NEXT:    mov.w r1, #504172; CHECK-NEXT:    movs r2, #0173; CHECK-NEXT:    dlstp.32 lr, r1174; CHECK-NEXT:  .LBB4_1: @ %vector.body175; CHECK-NEXT:    @ =>This Inner Loop Header: Depth=1176; CHECK-NEXT:    vldrw.u32 q0, [r0], #16177; CHECK-NEXT:    vaddva.u32 r2, q0178; CHECK-NEXT:    letp lr, .LBB4_1179; CHECK-NEXT:  @ %bb.2: @ %for.cond.cleanup180; CHECK-NEXT:    mov r0, r2181; CHECK-NEXT:    pop {r7, pc}182entry:183  br label %vector.body184 185vector.body:                                      ; preds = %vector.body, %entry186  %index = phi i32 [ 0, %entry ], [ %index.next, %vector.body ]187  %vec.phi = phi i32 [ 0, %entry ], [ %4, %vector.body ]188  %active.lane.mask = call <4 x i1> @llvm.get.active.lane.mask.v4i1.i32(i32 %index, i32 504)189  %0 = getelementptr inbounds i32, ptr %x, i32 %index190  %1 = bitcast ptr %0 to ptr191  %wide.masked.load = call <4 x i32> @llvm.masked.load.v4i32.p0(ptr %1, i32 4, <4 x i1> %active.lane.mask, <4 x i32> undef)192  %2 = select <4 x i1> %active.lane.mask, <4 x i32> %wide.masked.load, <4 x i32> zeroinitializer193  %3 = call i32 @llvm.vector.reduce.add.v4i32(<4 x i32> %2)194  %4 = add i32 %3, %vec.phi195  %index.next = add i32 %index, 4196  %5 = icmp eq i32 %index.next, 504197  br i1 %5, label %for.cond.cleanup, label %vector.body198 199for.cond.cleanup:                                 ; preds = %vector.body200  ret i32 %4201}202 203declare <4 x i1> @llvm.get.active.lane.mask.v4i1.i32(i32, i32)204declare <4 x i32> @llvm.masked.load.v4i32.p0(ptr, i32 immarg, <4 x i1>, <4 x i32>)205declare i32 @llvm.vector.reduce.add.v4i32(<4 x i32>)206