[PATCH] D93639: [AArch64][SVE]Add cost model for vector reduce for scalable vector
Sander de Smalen via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Mon Jan 18 01:10:33 PST 2021
sdesmalen added inline comments.
================
Comment at: llvm/test/Analysis/CostModel/AArch64/sve-getIntrinsicInstrCost-vector-reduce.ll:91-98
+define i32 @fmin.i32.nxv4i32(<vscale x 4 x i32> %v) {
+; CHECK-LABEL: 'fmin.i32.nxv4i32'
+; CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %r = call i32 @llvm.vector.reduce.fmin.nxv4i32(<vscale x 4 x i32> %v)
+; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret i32 %r
+
+ %r = call i32 @llvm.vector.reduce.fmin.nxv4i32(<vscale x 4 x i32> %v)
+ ret i32 %r
----------------
These tests can be removed because Floating Point reductions need an FP vector as their input, not an integer vector.
================
Comment at: llvm/test/Analysis/CostModel/AArch64/sve-getIntrinsicInstrCost-vector-reduce.ll:153
+
+define i64 @mul.i64.nxv8i64(<vscale x 8 x i64> %v) {
+; CHECK-LABEL: 'mul.i64.nxv8i64'
----------------
I was actually hoping for the test file to be organised in pairs of tests with a legal type, followed by an illegal (too wide) type, as follows:
```define i64 @mul.i64.nxv2i64(<vscale x 2 x i64> %v) {
; CHECK-LABEL: 'mul.i64.nxv2i64'
; CHECK-NEXT: Cost Model: Found an estimated cost of .... for instruction: %r = call i64 @llvm.vector.reduce.mul.nxv2i64(<vscale x 2 x i64> %v)
; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret i64 %r
%r = call i64 @llvm.vector.reduce.mul.nxv2i64(<vscale x 2 x i64> %v)
ret i64 %r
}
define i64 @mul.i64.nxv8i64(<vscale x 8 x i64> %v) {
; CHECK-LABEL: 'mul.i64.nxv8i64'
; CHECK-NEXT: Cost Model: Found an estimated cost of 16 for instruction: %r = call i64 @llvm.vector.reduce.mul.nxv8i64(<vscale x 8 x i64> %v)
; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret i64 %r
%r = call i64 @llvm.vector.reduce.mul.nxv8i64(<vscale x 8 x i64> %v)
ret i64 %r
}```
where the only difference is the number of elements (not the element type). This then clearly tests the cost on a legal type followed by a test where the code for legalization cost is exercised.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D93639/new/
https://reviews.llvm.org/D93639
More information about the llvm-commits
mailing list