This patch is moving out stepvector intrinsic from the experimental namespace. This intrinsic exists in LLVM for several years now, and is widely used.
42 lines
1.9 KiB
LLVM
42 lines
1.9 KiB
LLVM
; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --version 2
|
|
; RUN: opt -passes="print<cost-model>" 2>&1 -disable-output -mtriple=aarch64--linux-gnu -mattr=+neon < %s | FileCheck %s
|
|
|
|
target datalayout = "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128"
|
|
|
|
; Check icmp for legal integer vectors.
|
|
define void @stepvector_legal_int() {
|
|
; CHECK-LABEL: 'stepvector_legal_int'
|
|
; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %1 = call <2 x i64> @llvm.stepvector.v2i64()
|
|
; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %2 = call <4 x i32> @llvm.stepvector.v4i32()
|
|
; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %3 = call <8 x i16> @llvm.stepvector.v8i16()
|
|
; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %4 = call <16 x i8> @llvm.stepvector.v16i8()
|
|
; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret void
|
|
;
|
|
%1 = call <2 x i64> @llvm.stepvector.v2i64()
|
|
%2 = call <4 x i32> @llvm.stepvector.v4i32()
|
|
%3 = call <8 x i16> @llvm.stepvector.v8i16()
|
|
%4 = call <16 x i8> @llvm.stepvector.v16i8()
|
|
ret void
|
|
}
|
|
|
|
; Check icmp for an illegal integer vector.
|
|
define void @stepvector_illegal_int() {
|
|
; CHECK-LABEL: 'stepvector_illegal_int'
|
|
; CHECK-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %1 = call <4 x i64> @llvm.stepvector.v4i64()
|
|
; CHECK-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %2 = call <16 x i32> @llvm.stepvector.v16i32()
|
|
; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret void
|
|
;
|
|
%1 = call <4 x i64> @llvm.stepvector.v4i64()
|
|
%2 = call <16 x i32> @llvm.stepvector.v16i32()
|
|
ret void
|
|
}
|
|
|
|
|
|
declare <2 x i64> @llvm.stepvector.v2i64()
|
|
declare <4 x i32> @llvm.stepvector.v4i32()
|
|
declare <8 x i16> @llvm.stepvector.v8i16()
|
|
declare <16 x i8> @llvm.stepvector.v16i8()
|
|
|
|
declare <4 x i64> @llvm.stepvector.v4i64()
|
|
declare <16 x i32> @llvm.stepvector.v16i32()
|