[AArch64] add cost model test for scalable vector math; NFC
authorSanjay Patel <spatel@rotateright.com>
Tue, 13 Oct 2020 12:35:43 +0000 (08:35 -0400)
committerSanjay Patel <spatel@rotateright.com>
Tue, 13 Oct 2020 12:39:04 +0000 (08:39 -0400)
Testing for the various cost model "TargetCostKind" is limited,
and testing for scalable vectors is limited. The motivating
example of an intrinsic is not included here yet because that
just crashes.

llvm/test/Analysis/CostModel/AArch64/sve-math.ll [new file with mode: 0644]

diff --git a/llvm/test/Analysis/CostModel/AArch64/sve-math.ll b/llvm/test/Analysis/CostModel/AArch64/sve-math.ll
new file mode 100644 (file)
index 0000000..5bd9d26
--- /dev/null
@@ -0,0 +1,28 @@
+; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py
+; RUN: opt -mtriple=aarch64-- -mattr=+sve -cost-model -analyze -cost-kind=throughput < %s | FileCheck %s --check-prefix=THRU
+; RUN: opt -mtriple=aarch64-- -mattr=+sve -cost-model -analyze -cost-kind=latency < %s | FileCheck %s --check-prefix=LATE
+; RUN: opt -mtriple=aarch64- --mattr=+sve -cost-model -analyze -cost-kind=code-size < %s | FileCheck %s --check-prefix=SIZE
+; RUN: opt -mtriple=aarch64-- -mattr=+sve -cost-model -analyze -cost-kind=size-latency < %s | FileCheck %s --check-prefix=SIZE_LATE
+
+declare <vscale x 2 x double> @llvm.sqrt.v2f64(<vscale x 2 x double>)
+
+define <vscale x 2 x double> @fadd_v2f64(<vscale x 2 x double> %a, <vscale x 2 x double> %b) {
+; THRU-LABEL: 'fadd_v2f64'
+; THRU-NEXT:  Cost Model: Found an estimated cost of 4 for instruction: %r = fadd <vscale x 2 x double> %a, %b
+; THRU-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: ret <vscale x 2 x double> %r
+;
+; LATE-LABEL: 'fadd_v2f64'
+; LATE-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %r = fadd <vscale x 2 x double> %a, %b
+; LATE-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret <vscale x 2 x double> %r
+;
+; SIZE-LABEL: 'fadd_v2f64'
+; SIZE-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %r = fadd <vscale x 2 x double> %a, %b
+; SIZE-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret <vscale x 2 x double> %r
+;
+; SIZE_LATE-LABEL: 'fadd_v2f64'
+; SIZE_LATE-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %r = fadd <vscale x 2 x double> %a, %b
+; SIZE_LATE-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret <vscale x 2 x double> %r
+;
+  %r = fadd <vscale x 2 x double> %a, %b
+  ret <vscale x 2 x double> %r
+}