diff options
author | David Green <david.green@arm.com> | 2019-12-08 15:26:32 +0000 |
---|---|---|
committer | David Green <david.green@arm.com> | 2019-12-09 10:24:33 +0000 |
commit | f008b5b8ce724d60f0f0eeafceee0119c42022d4 (patch) | |
tree | 7b7dcb6f3ec0aad75a0006d4075d2bdda3086471 /llvm/test/Transforms | |
parent | 6d5c273500ad8352a061126999235aa71e0056ce (diff) | |
download | bcm5719-llvm-f008b5b8ce724d60f0f0eeafceee0119c42022d4.tar.gz bcm5719-llvm-f008b5b8ce724d60f0f0eeafceee0119c42022d4.zip |
[ARM] Additional tests and minor formatting. NFC
This adds some extra cost model tests for shifts, and does some minor
adjustments to some Neon code to make it clear as to what it applies to.
Both NFC.
Diffstat (limited to 'llvm/test/Transforms')
-rw-r--r-- | llvm/test/Transforms/LoopVectorize/ARM/mve-shiftcost.ll | 86 |
1 files changed, 86 insertions, 0 deletions
diff --git a/llvm/test/Transforms/LoopVectorize/ARM/mve-shiftcost.ll b/llvm/test/Transforms/LoopVectorize/ARM/mve-shiftcost.ll new file mode 100644 index 00000000000..858d3d88099 --- /dev/null +++ b/llvm/test/Transforms/LoopVectorize/ARM/mve-shiftcost.ll @@ -0,0 +1,86 @@ +; RUN: opt -loop-vectorize -enable-arm-maskedldst < %s -S -o - | FileCheck %s --check-prefix=CHECK +; RUN: opt -loop-vectorize -enable-arm-maskedldst -debug-only=loop-vectorize -disable-output < %s 2>&1 | FileCheck %s --check-prefix=CHECK-COST + +target datalayout = "e-m:e-p:32:32-Fi8-i64:64-v128:64:128-a:0:32-n32-S64" +target triple = "thumbv8.1m.main-arm-none-eabi" + +; CHECK-LABEL: test +; CHECK-COST: LV: Found an estimated cost of 1 for VF 1 For instruction: %and515 = shl i32 %l41, 3 +; CHECK-COST: LV: Found an estimated cost of 1 for VF 1 For instruction: %l45 = and i32 %and515, 131072 +; CHECK-COST: LV: Found an estimated cost of 2 for VF 4 For instruction: %and515 = shl i32 %l41, 3 +; CHECK-COST: LV: Found an estimated cost of 2 for VF 4 For instruction: %l45 = and i32 %and515, 131072 +; CHECK: vector.body + +define void @test([101 x i32] *%src, i32 %N) #0 { +entry: + br label %for.body386 + +for.body386: ; preds = %entry, %l77 + %add387 = phi i32 [ %inc532, %l77 ], [ 0, %entry ] + %arrayidx388 = getelementptr inbounds [101 x i32], [101 x i32]* %src, i32 0, i32 %add387 + %l41 = load i32, i32* %arrayidx388, align 4 + %l42 = and i32 %l41, 65535 + %l43 = icmp eq i32 %l42, 0 + br i1 %l43, label %l77, label %l44 + +l44: ; preds = %for.body386 + %and515 = shl i32 %l41, 3 + %l45 = and i32 %and515, 131072 + %and506 = shl i32 %l41, 5 + %l46 = and i32 %and506, 262144 + %and497 = shl i32 %l41, 7 + %l47 = and i32 %and497, 524288 + %and488 = shl i32 %l41, 9 + %l48 = and i32 %and488, 1048576 + %and479 = shl i32 %l41, 11 + %l49 = and i32 %and479, 2097152 + %and470 = shl i32 %l41, 13 + %l50 = and i32 %and470, 4194304 + %and461 = shl i32 %l41, 15 + %l51 = and i32 %and461, 8388608 + %and452 = shl i32 %l41, 17 + %l52 = and i32 %and452, 16777216 + %and443 = shl i32 %l41, 19 + %l53 = and i32 %and443, 33554432 + %and434 = shl i32 %l41, 21 + %l54 = and i32 %and434, 67108864 + %and425 = shl i32 %l41, 23 + %l55 = and i32 %and425, 134217728 + %and416 = shl i32 %l41, 25 + %l56 = and i32 %and416, 268435456 + %and407 = shl i32 %l41, 27 + %l57 = and i32 %and407, 536870912 + %and398 = shl i32 %l41, 29 + %l58 = and i32 %and398, 1073741824 + %l59 = shl i32 %l41, 31 + %l60 = or i32 %l59, %l41 + %l61 = or i32 %l58, %l60 + %l62 = or i32 %l57, %l61 + %l63 = or i32 %l56, %l62 + %l64 = or i32 %l55, %l63 + %l65 = or i32 %l54, %l64 + %l66 = or i32 %l53, %l65 + %l67 = or i32 %l52, %l66 + %l68 = or i32 %l51, %l67 + %l69 = or i32 %l50, %l68 + %l70 = or i32 %l49, %l69 + %l71 = or i32 %l48, %l70 + %l72 = or i32 %l47, %l71 + %l73 = or i32 %l46, %l72 + %l74 = or i32 %l45, %l73 + %and524 = shl i32 %l41, 1 + %l75 = and i32 %and524, 65536 + %l76 = or i32 %l75, %l74 + store i32 %l76, i32* %arrayidx388, align 4 + br label %l77 + +l77: ; preds = %for.body386, %l44 + %inc532 = add nuw nsw i32 %add387, 1 + %exitcond649 = icmp eq i32 %inc532, %N + br i1 %exitcond649, label %exit, label %for.body386 + +exit: + ret void +} + +attributes #0 = { nounwind "min-legal-vector-width"="0" "target-cpu"="generic" "target-features"="+armv8.1-m.main,+fp-armv8d16sp,+fp16,+fpregs,+fullfp16,+hwdiv,+lob,+mve.fp,+ras,+strict-align,+thumb-mode,+vfp2sp,+vfp3d16sp,+vfp4d16sp" "use-soft-float"="false" } |