
This patch is moving out stepvector intrinsic from the experimental namespace. This intrinsic exists in LLVM for several years now, and is widely used.
91 lines
6.4 KiB
LLVM
91 lines
6.4 KiB
LLVM
; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py
|
|
; Check stepvector for scalable vector
|
|
; RUN: opt < %s -passes="print<cost-model>" 2>&1 -disable-output -S -mtriple=riscv64 -mattr=+v | FileCheck %s
|
|
|
|
define void @stepvector() {
|
|
; CHECK-LABEL: 'stepvector'
|
|
; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %1 = call <vscale x 1 x i8> @llvm.stepvector.nxv1i8()
|
|
; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %2 = call <vscale x 2 x i8> @llvm.stepvector.nxv2i8()
|
|
; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %3 = call <vscale x 4 x i8> @llvm.stepvector.nxv4i8()
|
|
; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %4 = call <vscale x 8 x i8> @llvm.stepvector.nxv8i8()
|
|
; CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %5 = call <vscale x 16 x i8> @llvm.stepvector.nxv16i8()
|
|
; CHECK-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %6 = call <vscale x 32 x i8> @llvm.stepvector.nxv32i8()
|
|
; CHECK-NEXT: Cost Model: Found an estimated cost of 8 for instruction: %7 = call <vscale x 64 x i8> @llvm.stepvector.nxv64i8()
|
|
; CHECK-NEXT: Cost Model: Found an estimated cost of 16 for instruction: %8 = call <vscale x 128 x i8> @llvm.stepvector.nxv128i8()
|
|
; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %9 = call <vscale x 1 x i16> @llvm.stepvector.nxv1i16()
|
|
; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %10 = call <vscale x 2 x i16> @llvm.stepvector.nxv2i16()
|
|
; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %11 = call <vscale x 4 x i16> @llvm.stepvector.nxv4i16()
|
|
; CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %12 = call <vscale x 8 x i16> @llvm.stepvector.nxv8i16()
|
|
; CHECK-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %13 = call <vscale x 16 x i16> @llvm.stepvector.nxv16i16()
|
|
; CHECK-NEXT: Cost Model: Found an estimated cost of 8 for instruction: %14 = call <vscale x 32 x i16> @llvm.stepvector.nxv32i16()
|
|
; CHECK-NEXT: Cost Model: Found an estimated cost of 16 for instruction: %15 = call <vscale x 64 x i16> @llvm.stepvector.nxv64i16()
|
|
; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %16 = call <vscale x 1 x i32> @llvm.stepvector.nxv1i32()
|
|
; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %17 = call <vscale x 2 x i32> @llvm.stepvector.nxv2i32()
|
|
; CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %18 = call <vscale x 4 x i32> @llvm.stepvector.nxv4i32()
|
|
; CHECK-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %19 = call <vscale x 8 x i32> @llvm.stepvector.nxv8i32()
|
|
; CHECK-NEXT: Cost Model: Found an estimated cost of 8 for instruction: %20 = call <vscale x 16 x i32> @llvm.stepvector.nxv16i32()
|
|
; CHECK-NEXT: Cost Model: Found an estimated cost of 16 for instruction: %21 = call <vscale x 32 x i32> @llvm.stepvector.nxv32i32()
|
|
; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %22 = call <vscale x 1 x i64> @llvm.stepvector.nxv1i64()
|
|
; CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %23 = call <vscale x 2 x i64> @llvm.stepvector.nxv2i64()
|
|
; CHECK-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %24 = call <vscale x 4 x i64> @llvm.stepvector.nxv4i64()
|
|
; CHECK-NEXT: Cost Model: Found an estimated cost of 8 for instruction: %25 = call <vscale x 8 x i64> @llvm.stepvector.nxv8i64()
|
|
; CHECK-NEXT: Cost Model: Found an estimated cost of 16 for instruction: %26 = call <vscale x 16 x i64> @llvm.stepvector.nxv16i64()
|
|
; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret void
|
|
;
|
|
call <vscale x 1 x i8> @llvm.stepvector.nxv1i8()
|
|
call <vscale x 2 x i8> @llvm.stepvector.nxv2i8()
|
|
call <vscale x 4 x i8> @llvm.stepvector.nxv4i8()
|
|
call <vscale x 8 x i8> @llvm.stepvector.nxv8i8()
|
|
call <vscale x 16 x i8> @llvm.stepvector.nxv16i8()
|
|
call <vscale x 32 x i8> @llvm.stepvector.nxv32i8()
|
|
call <vscale x 64 x i8> @llvm.stepvector.nxv64i8()
|
|
call <vscale x 128 x i8> @llvm.stepvector.nxv128i8()
|
|
call <vscale x 1 x i16> @llvm.stepvector.nxv1i16()
|
|
call <vscale x 2 x i16> @llvm.stepvector.nxv2i16()
|
|
call <vscale x 4 x i16> @llvm.stepvector.nxv4i16()
|
|
call <vscale x 8 x i16> @llvm.stepvector.nxv8i16()
|
|
call <vscale x 16 x i16> @llvm.stepvector.nxv16i16()
|
|
call <vscale x 32 x i16> @llvm.stepvector.nxv32i16()
|
|
call <vscale x 64 x i16> @llvm.stepvector.nxv64i16()
|
|
call <vscale x 1 x i32> @llvm.stepvector.nxv1i32()
|
|
call <vscale x 2 x i32> @llvm.stepvector.nxv2i32()
|
|
call <vscale x 4 x i32> @llvm.stepvector.nxv4i32()
|
|
call <vscale x 8 x i32> @llvm.stepvector.nxv8i32()
|
|
call <vscale x 16 x i32> @llvm.stepvector.nxv16i32()
|
|
call <vscale x 32 x i32> @llvm.stepvector.nxv32i32()
|
|
call <vscale x 1 x i64> @llvm.stepvector.nxv1i64()
|
|
call <vscale x 2 x i64> @llvm.stepvector.nxv2i64()
|
|
call <vscale x 4 x i64> @llvm.stepvector.nxv4i64()
|
|
call <vscale x 8 x i64> @llvm.stepvector.nxv8i64()
|
|
call <vscale x 16 x i64> @llvm.stepvector.nxv16i64()
|
|
ret void
|
|
}
|
|
|
|
|
|
declare <vscale x 1 x i8> @llvm.stepvector.nxv1i8()
|
|
declare <vscale x 2 x i8> @llvm.stepvector.nxv2i8()
|
|
declare <vscale x 4 x i8> @llvm.stepvector.nxv4i8()
|
|
declare <vscale x 8 x i8> @llvm.stepvector.nxv8i8()
|
|
declare <vscale x 16 x i8> @llvm.stepvector.nxv16i8()
|
|
declare <vscale x 32 x i8> @llvm.stepvector.nxv32i8()
|
|
declare <vscale x 64 x i8> @llvm.stepvector.nxv64i8()
|
|
declare <vscale x 128 x i8> @llvm.stepvector.nxv128i8()
|
|
declare <vscale x 1 x i16> @llvm.stepvector.nxv1i16()
|
|
declare <vscale x 2 x i16> @llvm.stepvector.nxv2i16()
|
|
declare <vscale x 4 x i16> @llvm.stepvector.nxv4i16()
|
|
declare <vscale x 8 x i16> @llvm.stepvector.nxv8i16()
|
|
declare <vscale x 16 x i16> @llvm.stepvector.nxv16i16()
|
|
declare <vscale x 32 x i16> @llvm.stepvector.nxv32i16()
|
|
declare <vscale x 64 x i16> @llvm.stepvector.nxv64i16()
|
|
declare <vscale x 1 x i32> @llvm.stepvector.nxv1i32()
|
|
declare <vscale x 2 x i32> @llvm.stepvector.nxv2i32()
|
|
declare <vscale x 4 x i32> @llvm.stepvector.nxv4i32()
|
|
declare <vscale x 8 x i32> @llvm.stepvector.nxv8i32()
|
|
declare <vscale x 16 x i32> @llvm.stepvector.nxv16i32()
|
|
declare <vscale x 32 x i32> @llvm.stepvector.nxv32i32()
|
|
declare <vscale x 1 x i64> @llvm.stepvector.nxv1i64()
|
|
declare <vscale x 2 x i64> @llvm.stepvector.nxv2i64()
|
|
declare <vscale x 4 x i64> @llvm.stepvector.nxv4i64()
|
|
declare <vscale x 8 x i64> @llvm.stepvector.nxv8i64()
|
|
declare <vscale x 16 x i64> @llvm.stepvector.nxv16i64()
|