From 679aa92d2e69c96c7f249368380c5ff3666c192c Mon Sep 17 00:00:00 2001 From: Philip Reames Date: Fri, 10 Jun 2022 13:13:43 -0700 Subject: [PATCH] [RISCV] Minor test improvements for scalable scatter/gather tests added in 275b2e524 --- .../Analysis/CostModel/RISCV/scalable-gather.ll | 76 +++++++++++---------- .../Analysis/CostModel/RISCV/scalable-scatter.ll | 77 ++++++++++++---------- 2 files changed, 81 insertions(+), 72 deletions(-) diff --git a/llvm/test/Analysis/CostModel/RISCV/scalable-gather.ll b/llvm/test/Analysis/CostModel/RISCV/scalable-gather.ll index b87120b..5a259c2 100644 --- a/llvm/test/Analysis/CostModel/RISCV/scalable-gather.ll +++ b/llvm/test/Analysis/CostModel/RISCV/scalable-gather.ll @@ -1,11 +1,10 @@ ; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py ; RUN: opt -passes='print' 2>&1 -disable-output -mtriple=riscv64 -mattr=+v,+f,+d,+zfh,+experimental-zvfh < %s | FileCheck %s ; RUN: opt -passes='print' 2>&1 -disable-output -mtriple=riscv64 -mattr=+v,+f,+d,+zfh,+experimental-zvfh -riscv-v-vector-bits-max=256 < %s | FileCheck %s -; RUN: opt -passes='print' 2>&1 -disable-output -mtriple=riscv64 -mattr=+v,+f,+d,+zfh,+experimental-zvfh -riscv-v-vector-bits-min=256 -riscv-v-vector-bits-min=256 < %s | FileCheck %s ; RUN: opt -passes='print' 2>&1 -disable-output -mtriple=riscv64 < %s | FileCheck %s -define i32 @masked_gather() { -; CHECK-LABEL: 'masked_gather' +define void @masked_gather_aligned() { +; CHECK-LABEL: 'masked_gather_aligned' ; CHECK-NEXT: Cost Model: Invalid cost for instruction: %V8F64 = call @llvm.masked.gather.nxv8f64.nxv8p0f64( undef, i32 8, undef, undef) ; CHECK-NEXT: Cost Model: Invalid cost for instruction: %V4F64 = call @llvm.masked.gather.nxv4f64.nxv4p0f64( undef, i32 8, undef, undef) ; CHECK-NEXT: Cost Model: Invalid cost for instruction: %V2F64 = call @llvm.masked.gather.nxv2f64.nxv2p0f64( undef, i32 8, undef, undef) @@ -43,37 +42,7 @@ define i32 @masked_gather() { ; CHECK-NEXT: Cost Model: Invalid cost for instruction: %V4I8 = call @llvm.masked.gather.nxv4i8.nxv4p0i8( undef, i32 1, undef, undef) ; CHECK-NEXT: Cost Model: Invalid cost for instruction: %V2I8 = call @llvm.masked.gather.nxv2i8.nxv2p0i8( undef, i32 1, undef, undef) ; CHECK-NEXT: Cost Model: Invalid cost for instruction: %V1I8 = call @llvm.masked.gather.nxv1i8.nxv1p0i8( undef, i32 1, undef, undef) -; CHECK-NEXT: Cost Model: Invalid cost for instruction: %V8F64.u = call @llvm.masked.gather.nxv8f64.nxv8p0f64( undef, i32 2, undef, undef) -; CHECK-NEXT: Cost Model: Invalid cost for instruction: %V4F64.u = call @llvm.masked.gather.nxv4f64.nxv4p0f64( undef, i32 2, undef, undef) -; CHECK-NEXT: Cost Model: Invalid cost for instruction: %V2F64.u = call @llvm.masked.gather.nxv2f64.nxv2p0f64( undef, i32 2, undef, undef) -; CHECK-NEXT: Cost Model: Invalid cost for instruction: %V1F64.u = call @llvm.masked.gather.nxv1f64.nxv1p0f64( undef, i32 2, undef, undef) -; CHECK-NEXT: Cost Model: Invalid cost for instruction: %V16F32.u = call @llvm.masked.gather.nxv16f32.nxv16p0f32( undef, i32 2, undef, undef) -; CHECK-NEXT: Cost Model: Invalid cost for instruction: %V8F32.u = call @llvm.masked.gather.nxv8f32.nxv8p0f32( undef, i32 2, undef, undef) -; CHECK-NEXT: Cost Model: Invalid cost for instruction: %V4F32.u = call @llvm.masked.gather.nxv4f32.nxv4p0f32( undef, i32 2, undef, undef) -; CHECK-NEXT: Cost Model: Invalid cost for instruction: %V2F32.u = call @llvm.masked.gather.nxv2f32.nxv2p0f32( undef, i32 2, undef, undef) -; CHECK-NEXT: Cost Model: Invalid cost for instruction: %V1F32.u = call @llvm.masked.gather.nxv1f32.nxv1p0f32( undef, i32 2, undef, undef) -; CHECK-NEXT: Cost Model: Invalid cost for instruction: %V32F16.u = call @llvm.masked.gather.nxv32f16.nxv32p0f16( undef, i32 1, undef, undef) -; CHECK-NEXT: Cost Model: Invalid cost for instruction: %V16F16.u = call @llvm.masked.gather.nxv16f16.nxv16p0f16( undef, i32 1, undef, undef) -; CHECK-NEXT: Cost Model: Invalid cost for instruction: %V8F16.u = call @llvm.masked.gather.nxv8f16.nxv8p0f16( undef, i32 1, undef, undef) -; CHECK-NEXT: Cost Model: Invalid cost for instruction: %V4F16.u = call @llvm.masked.gather.nxv4f16.nxv4p0f16( undef, i32 1, undef, undef) -; CHECK-NEXT: Cost Model: Invalid cost for instruction: %V2F16.u = call @llvm.masked.gather.nxv2f16.nxv2p0f16( undef, i32 1, undef, undef) -; CHECK-NEXT: Cost Model: Invalid cost for instruction: %V1F16.u = call @llvm.masked.gather.nxv1f16.nxv1p0f16( undef, i32 1, undef, undef) -; CHECK-NEXT: Cost Model: Invalid cost for instruction: %V8I64.u = call @llvm.masked.gather.nxv8i64.nxv8p0i64( undef, i32 4, undef, undef) -; CHECK-NEXT: Cost Model: Invalid cost for instruction: %V4I64.u = call @llvm.masked.gather.nxv4i64.nxv4p0i64( undef, i32 4, undef, undef) -; CHECK-NEXT: Cost Model: Invalid cost for instruction: %V2I64.u = call @llvm.masked.gather.nxv2i64.nxv2p0i64( undef, i32 4, undef, undef) -; CHECK-NEXT: Cost Model: Invalid cost for instruction: %V1I64.u = call @llvm.masked.gather.nxv1i64.nxv1p0i64( undef, i32 4, undef, undef) -; CHECK-NEXT: Cost Model: Invalid cost for instruction: %V16I32.u = call @llvm.masked.gather.nxv16i32.nxv16p0i32( undef, i32 1, undef, undef) -; CHECK-NEXT: Cost Model: Invalid cost for instruction: %V8I32.u = call @llvm.masked.gather.nxv8i32.nxv8p0i32( undef, i32 1, undef, undef) -; CHECK-NEXT: Cost Model: Invalid cost for instruction: %V4I32.u = call @llvm.masked.gather.nxv4i32.nxv4p0i32( undef, i32 1, undef, undef) -; CHECK-NEXT: Cost Model: Invalid cost for instruction: %V2I32.u = call @llvm.masked.gather.nxv2i32.nxv2p0i32( undef, i32 1, undef, undef) -; CHECK-NEXT: Cost Model: Invalid cost for instruction: %V1I32.u = call @llvm.masked.gather.nxv1i32.nxv1p0i32( undef, i32 1, undef, undef) -; CHECK-NEXT: Cost Model: Invalid cost for instruction: %V32I16.u = call @llvm.masked.gather.nxv32i16.nxv32p0i16( undef, i32 1, undef, undef) -; CHECK-NEXT: Cost Model: Invalid cost for instruction: %V16I16.u = call @llvm.masked.gather.nxv16i16.nxv16p0i16( undef, i32 1, undef, undef) -; CHECK-NEXT: Cost Model: Invalid cost for instruction: %V8I16.u = call @llvm.masked.gather.nxv8i16.nxv8p0i16( undef, i32 1, undef, undef) -; CHECK-NEXT: Cost Model: Invalid cost for instruction: %V4I16.u = call @llvm.masked.gather.nxv4i16.nxv4p0i16( undef, i32 1, undef, undef) -; CHECK-NEXT: Cost Model: Invalid cost for instruction: %V2I16.u = call @llvm.masked.gather.nxv2i16.nxv2p0i16( undef, i32 1, undef, undef) -; CHECK-NEXT: Cost Model: Invalid cost for instruction: %V1I16.u = call @llvm.masked.gather.nxv1i16.nxv1p0i16( undef, i32 1, undef, undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret i32 0 +; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret void ; %V8F64 = call @llvm.masked.gather.nxv8f64.nxv8p0f64( undef, i32 8, undef, undef) %V4F64 = call @llvm.masked.gather.nxv4f64.nxv4p0f64( undef, i32 8, undef, undef) @@ -118,8 +87,43 @@ define i32 @masked_gather() { %V4I8 = call @llvm.masked.gather.nxv4i8.nxv4p0i8( undef, i32 1, undef, undef) %V2I8 = call @llvm.masked.gather.nxv2i8.nxv2p0i8( undef, i32 1, undef, undef) %V1I8 = call @llvm.masked.gather.nxv1i8.nxv1p0i8( undef, i32 1, undef, undef) + ret void +} - ; Test unaligned gathers +define void @masked_gather_unaligned() { +; CHECK-LABEL: 'masked_gather_unaligned' +; CHECK-NEXT: Cost Model: Invalid cost for instruction: %V8F64.u = call @llvm.masked.gather.nxv8f64.nxv8p0f64( undef, i32 2, undef, undef) +; CHECK-NEXT: Cost Model: Invalid cost for instruction: %V4F64.u = call @llvm.masked.gather.nxv4f64.nxv4p0f64( undef, i32 2, undef, undef) +; CHECK-NEXT: Cost Model: Invalid cost for instruction: %V2F64.u = call @llvm.masked.gather.nxv2f64.nxv2p0f64( undef, i32 2, undef, undef) +; CHECK-NEXT: Cost Model: Invalid cost for instruction: %V1F64.u = call @llvm.masked.gather.nxv1f64.nxv1p0f64( undef, i32 2, undef, undef) +; CHECK-NEXT: Cost Model: Invalid cost for instruction: %V16F32.u = call @llvm.masked.gather.nxv16f32.nxv16p0f32( undef, i32 2, undef, undef) +; CHECK-NEXT: Cost Model: Invalid cost for instruction: %V8F32.u = call @llvm.masked.gather.nxv8f32.nxv8p0f32( undef, i32 2, undef, undef) +; CHECK-NEXT: Cost Model: Invalid cost for instruction: %V4F32.u = call @llvm.masked.gather.nxv4f32.nxv4p0f32( undef, i32 2, undef, undef) +; CHECK-NEXT: Cost Model: Invalid cost for instruction: %V2F32.u = call @llvm.masked.gather.nxv2f32.nxv2p0f32( undef, i32 2, undef, undef) +; CHECK-NEXT: Cost Model: Invalid cost for instruction: %V1F32.u = call @llvm.masked.gather.nxv1f32.nxv1p0f32( undef, i32 2, undef, undef) +; CHECK-NEXT: Cost Model: Invalid cost for instruction: %V32F16.u = call @llvm.masked.gather.nxv32f16.nxv32p0f16( undef, i32 1, undef, undef) +; CHECK-NEXT: Cost Model: Invalid cost for instruction: %V16F16.u = call @llvm.masked.gather.nxv16f16.nxv16p0f16( undef, i32 1, undef, undef) +; CHECK-NEXT: Cost Model: Invalid cost for instruction: %V8F16.u = call @llvm.masked.gather.nxv8f16.nxv8p0f16( undef, i32 1, undef, undef) +; CHECK-NEXT: Cost Model: Invalid cost for instruction: %V4F16.u = call @llvm.masked.gather.nxv4f16.nxv4p0f16( undef, i32 1, undef, undef) +; CHECK-NEXT: Cost Model: Invalid cost for instruction: %V2F16.u = call @llvm.masked.gather.nxv2f16.nxv2p0f16( undef, i32 1, undef, undef) +; CHECK-NEXT: Cost Model: Invalid cost for instruction: %V1F16.u = call @llvm.masked.gather.nxv1f16.nxv1p0f16( undef, i32 1, undef, undef) +; CHECK-NEXT: Cost Model: Invalid cost for instruction: %V8I64.u = call @llvm.masked.gather.nxv8i64.nxv8p0i64( undef, i32 4, undef, undef) +; CHECK-NEXT: Cost Model: Invalid cost for instruction: %V4I64.u = call @llvm.masked.gather.nxv4i64.nxv4p0i64( undef, i32 4, undef, undef) +; CHECK-NEXT: Cost Model: Invalid cost for instruction: %V2I64.u = call @llvm.masked.gather.nxv2i64.nxv2p0i64( undef, i32 4, undef, undef) +; CHECK-NEXT: Cost Model: Invalid cost for instruction: %V1I64.u = call @llvm.masked.gather.nxv1i64.nxv1p0i64( undef, i32 4, undef, undef) +; CHECK-NEXT: Cost Model: Invalid cost for instruction: %V16I32.u = call @llvm.masked.gather.nxv16i32.nxv16p0i32( undef, i32 1, undef, undef) +; CHECK-NEXT: Cost Model: Invalid cost for instruction: %V8I32.u = call @llvm.masked.gather.nxv8i32.nxv8p0i32( undef, i32 1, undef, undef) +; CHECK-NEXT: Cost Model: Invalid cost for instruction: %V4I32.u = call @llvm.masked.gather.nxv4i32.nxv4p0i32( undef, i32 1, undef, undef) +; CHECK-NEXT: Cost Model: Invalid cost for instruction: %V2I32.u = call @llvm.masked.gather.nxv2i32.nxv2p0i32( undef, i32 1, undef, undef) +; CHECK-NEXT: Cost Model: Invalid cost for instruction: %V1I32.u = call @llvm.masked.gather.nxv1i32.nxv1p0i32( undef, i32 1, undef, undef) +; CHECK-NEXT: Cost Model: Invalid cost for instruction: %V32I16.u = call @llvm.masked.gather.nxv32i16.nxv32p0i16( undef, i32 1, undef, undef) +; CHECK-NEXT: Cost Model: Invalid cost for instruction: %V16I16.u = call @llvm.masked.gather.nxv16i16.nxv16p0i16( undef, i32 1, undef, undef) +; CHECK-NEXT: Cost Model: Invalid cost for instruction: %V8I16.u = call @llvm.masked.gather.nxv8i16.nxv8p0i16( undef, i32 1, undef, undef) +; CHECK-NEXT: Cost Model: Invalid cost for instruction: %V4I16.u = call @llvm.masked.gather.nxv4i16.nxv4p0i16( undef, i32 1, undef, undef) +; CHECK-NEXT: Cost Model: Invalid cost for instruction: %V2I16.u = call @llvm.masked.gather.nxv2i16.nxv2p0i16( undef, i32 1, undef, undef) +; CHECK-NEXT: Cost Model: Invalid cost for instruction: %V1I16.u = call @llvm.masked.gather.nxv1i16.nxv1p0i16( undef, i32 1, undef, undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret void +; %V8F64.u = call @llvm.masked.gather.nxv8f64.nxv8p0f64( undef, i32 2, undef, undef) %V4F64.u = call @llvm.masked.gather.nxv4f64.nxv4p0f64( undef, i32 2, undef, undef) %V2F64.u = call @llvm.masked.gather.nxv2f64.nxv2p0f64( undef, i32 2, undef, undef) @@ -156,7 +160,7 @@ define i32 @masked_gather() { %V2I16.u = call @llvm.masked.gather.nxv2i16.nxv2p0i16( undef, i32 1, undef, undef) %V1I16.u = call @llvm.masked.gather.nxv1i16.nxv1p0i16( undef, i32 1, undef, undef) - ret i32 0 + ret void } declare @llvm.masked.gather.nxv8f64.nxv8p0f64(, i32, , ) diff --git a/llvm/test/Analysis/CostModel/RISCV/scalable-scatter.ll b/llvm/test/Analysis/CostModel/RISCV/scalable-scatter.ll index 07f5f91..0bb3314 100644 --- a/llvm/test/Analysis/CostModel/RISCV/scalable-scatter.ll +++ b/llvm/test/Analysis/CostModel/RISCV/scalable-scatter.ll @@ -1,11 +1,10 @@ ; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py ; RUN: opt -passes='print' 2>&1 -disable-output -mtriple=riscv64 -mattr=+v,+f,+d,+zfh,+experimental-zvfh < %s | FileCheck %s ; RUN: opt -passes='print' 2>&1 -disable-output -mtriple=riscv64 -mattr=+v,+f,+d,+zfh,+experimental-zvfh -riscv-v-vector-bits-max=256 < %s | FileCheck %s -; RUN: opt -passes='print' 2>&1 -disable-output -mtriple=riscv64 -mattr=+v,+f,+d,+zfh,+experimental-zvfh -riscv-v-vector-bits-min=256 -riscv-v-vector-bits-min=256 < %s | FileCheck %s ; RUN: opt -passes='print' 2>&1 -disable-output -mtriple=riscv64 < %s | FileCheck %s -define i32 @masked_scatter() { -; CHECK-LABEL: 'masked_scatter' +define void @masked_scatter_aligned() { +; CHECK-LABEL: 'masked_scatter_aligned' ; CHECK-NEXT: Cost Model: Invalid cost for instruction: call void @llvm.masked.scatter.nxv8f64.nxv8p0f64( undef, undef, i32 8, undef) ; CHECK-NEXT: Cost Model: Invalid cost for instruction: call void @llvm.masked.scatter.nxv4f64.nxv4p0f64( undef, undef, i32 8, undef) ; CHECK-NEXT: Cost Model: Invalid cost for instruction: call void @llvm.masked.scatter.nxv2f64.nxv2p0f64( undef, undef, i32 8, undef) @@ -43,37 +42,7 @@ define i32 @masked_scatter() { ; CHECK-NEXT: Cost Model: Invalid cost for instruction: call void @llvm.masked.scatter.nxv4i8.nxv4p0i8( undef, undef, i32 1, undef) ; CHECK-NEXT: Cost Model: Invalid cost for instruction: call void @llvm.masked.scatter.nxv2i8.nxv2p0i8( undef, undef, i32 1, undef) ; CHECK-NEXT: Cost Model: Invalid cost for instruction: call void @llvm.masked.scatter.nxv1i8.nxv1p0i8( undef, undef, i32 1, undef) -; CHECK-NEXT: Cost Model: Invalid cost for instruction: call void @llvm.masked.scatter.nxv8f64.nxv8p0f64( undef, undef, i32 2, undef) -; CHECK-NEXT: Cost Model: Invalid cost for instruction: call void @llvm.masked.scatter.nxv4f64.nxv4p0f64( undef, undef, i32 2, undef) -; CHECK-NEXT: Cost Model: Invalid cost for instruction: call void @llvm.masked.scatter.nxv2f64.nxv2p0f64( undef, undef, i32 2, undef) -; CHECK-NEXT: Cost Model: Invalid cost for instruction: call void @llvm.masked.scatter.nxv1f64.nxv1p0f64( undef, undef, i32 2, undef) -; CHECK-NEXT: Cost Model: Invalid cost for instruction: call void @llvm.masked.scatter.nxv16f32.nxv16p0f32( undef, undef, i32 2, undef) -; CHECK-NEXT: Cost Model: Invalid cost for instruction: call void @llvm.masked.scatter.nxv8f32.nxv8p0f32( undef, undef, i32 2, undef) -; CHECK-NEXT: Cost Model: Invalid cost for instruction: call void @llvm.masked.scatter.nxv4f32.nxv4p0f32( undef, undef, i32 2, undef) -; CHECK-NEXT: Cost Model: Invalid cost for instruction: call void @llvm.masked.scatter.nxv2f32.nxv2p0f32( undef, undef, i32 2, undef) -; CHECK-NEXT: Cost Model: Invalid cost for instruction: call void @llvm.masked.scatter.nxv1f32.nxv1p0f32( undef, undef, i32 2, undef) -; CHECK-NEXT: Cost Model: Invalid cost for instruction: call void @llvm.masked.scatter.nxv32f16.nxv32p0f16( undef, undef, i32 1, undef) -; CHECK-NEXT: Cost Model: Invalid cost for instruction: call void @llvm.masked.scatter.nxv16f16.nxv16p0f16( undef, undef, i32 1, undef) -; CHECK-NEXT: Cost Model: Invalid cost for instruction: call void @llvm.masked.scatter.nxv8f16.nxv8p0f16( undef, undef, i32 1, undef) -; CHECK-NEXT: Cost Model: Invalid cost for instruction: call void @llvm.masked.scatter.nxv4f16.nxv4p0f16( undef, undef, i32 1, undef) -; CHECK-NEXT: Cost Model: Invalid cost for instruction: call void @llvm.masked.scatter.nxv2f16.nxv2p0f16( undef, undef, i32 1, undef) -; CHECK-NEXT: Cost Model: Invalid cost for instruction: call void @llvm.masked.scatter.nxv1f16.nxv1p0f16( undef, undef, i32 1, undef) -; CHECK-NEXT: Cost Model: Invalid cost for instruction: call void @llvm.masked.scatter.nxv8i64.nxv8p0i64( undef, undef, i32 1, undef) -; CHECK-NEXT: Cost Model: Invalid cost for instruction: call void @llvm.masked.scatter.nxv4i64.nxv4p0i64( undef, undef, i32 1, undef) -; CHECK-NEXT: Cost Model: Invalid cost for instruction: call void @llvm.masked.scatter.nxv2i64.nxv2p0i64( undef, undef, i32 1, undef) -; CHECK-NEXT: Cost Model: Invalid cost for instruction: call void @llvm.masked.scatter.nxv1i64.nxv1p0i64( undef, undef, i32 1, undef) -; CHECK-NEXT: Cost Model: Invalid cost for instruction: call void @llvm.masked.scatter.nxv16i32.nxv16p0i32( undef, undef, i32 1, undef) -; CHECK-NEXT: Cost Model: Invalid cost for instruction: call void @llvm.masked.scatter.nxv8i32.nxv8p0i32( undef, undef, i32 1, undef) -; CHECK-NEXT: Cost Model: Invalid cost for instruction: call void @llvm.masked.scatter.nxv4i32.nxv4p0i32( undef, undef, i32 1, undef) -; CHECK-NEXT: Cost Model: Invalid cost for instruction: call void @llvm.masked.scatter.nxv2i32.nxv2p0i32( undef, undef, i32 1, undef) -; CHECK-NEXT: Cost Model: Invalid cost for instruction: call void @llvm.masked.scatter.nxv1i32.nxv1p0i32( undef, undef, i32 1, undef) -; CHECK-NEXT: Cost Model: Invalid cost for instruction: call void @llvm.masked.scatter.nxv32i16.nxv32p0i16( undef, undef, i32 1, undef) -; CHECK-NEXT: Cost Model: Invalid cost for instruction: call void @llvm.masked.scatter.nxv16i16.nxv16p0i16( undef, undef, i32 1, undef) -; CHECK-NEXT: Cost Model: Invalid cost for instruction: call void @llvm.masked.scatter.nxv8i16.nxv8p0i16( undef, undef, i32 1, undef) -; CHECK-NEXT: Cost Model: Invalid cost for instruction: call void @llvm.masked.scatter.nxv4i16.nxv4p0i16( undef, undef, i32 1, undef) -; CHECK-NEXT: Cost Model: Invalid cost for instruction: call void @llvm.masked.scatter.nxv2i16.nxv2p0i16( undef, undef, i32 1, undef) -; CHECK-NEXT: Cost Model: Invalid cost for instruction: call void @llvm.masked.scatter.nxv1i16.nxv1p0i16( undef, undef, i32 1, undef) -; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret i32 0 +; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret void ; call void @llvm.masked.scatter.nxv8f64.nxv8p0f64( undef, undef, i32 8, undef) call void @llvm.masked.scatter.nxv4f64.nxv4p0f64( undef, undef, i32 8, undef) @@ -119,7 +88,43 @@ define i32 @masked_scatter() { call void @llvm.masked.scatter.nxv2i8.nxv2p0i8( undef, undef, i32 1, undef) call void @llvm.masked.scatter.nxv1i8.nxv1p0i8( undef, undef, i32 1, undef) - ; Test unaligned scatters + ret void +} + +define void @masked_scatter_unaligned() { +; CHECK-LABEL: 'masked_scatter_unaligned' +; CHECK-NEXT: Cost Model: Invalid cost for instruction: call void @llvm.masked.scatter.nxv8f64.nxv8p0f64( undef, undef, i32 2, undef) +; CHECK-NEXT: Cost Model: Invalid cost for instruction: call void @llvm.masked.scatter.nxv4f64.nxv4p0f64( undef, undef, i32 2, undef) +; CHECK-NEXT: Cost Model: Invalid cost for instruction: call void @llvm.masked.scatter.nxv2f64.nxv2p0f64( undef, undef, i32 2, undef) +; CHECK-NEXT: Cost Model: Invalid cost for instruction: call void @llvm.masked.scatter.nxv1f64.nxv1p0f64( undef, undef, i32 2, undef) +; CHECK-NEXT: Cost Model: Invalid cost for instruction: call void @llvm.masked.scatter.nxv16f32.nxv16p0f32( undef, undef, i32 2, undef) +; CHECK-NEXT: Cost Model: Invalid cost for instruction: call void @llvm.masked.scatter.nxv8f32.nxv8p0f32( undef, undef, i32 2, undef) +; CHECK-NEXT: Cost Model: Invalid cost for instruction: call void @llvm.masked.scatter.nxv4f32.nxv4p0f32( undef, undef, i32 2, undef) +; CHECK-NEXT: Cost Model: Invalid cost for instruction: call void @llvm.masked.scatter.nxv2f32.nxv2p0f32( undef, undef, i32 2, undef) +; CHECK-NEXT: Cost Model: Invalid cost for instruction: call void @llvm.masked.scatter.nxv1f32.nxv1p0f32( undef, undef, i32 2, undef) +; CHECK-NEXT: Cost Model: Invalid cost for instruction: call void @llvm.masked.scatter.nxv32f16.nxv32p0f16( undef, undef, i32 1, undef) +; CHECK-NEXT: Cost Model: Invalid cost for instruction: call void @llvm.masked.scatter.nxv16f16.nxv16p0f16( undef, undef, i32 1, undef) +; CHECK-NEXT: Cost Model: Invalid cost for instruction: call void @llvm.masked.scatter.nxv8f16.nxv8p0f16( undef, undef, i32 1, undef) +; CHECK-NEXT: Cost Model: Invalid cost for instruction: call void @llvm.masked.scatter.nxv4f16.nxv4p0f16( undef, undef, i32 1, undef) +; CHECK-NEXT: Cost Model: Invalid cost for instruction: call void @llvm.masked.scatter.nxv2f16.nxv2p0f16( undef, undef, i32 1, undef) +; CHECK-NEXT: Cost Model: Invalid cost for instruction: call void @llvm.masked.scatter.nxv1f16.nxv1p0f16( undef, undef, i32 1, undef) +; CHECK-NEXT: Cost Model: Invalid cost for instruction: call void @llvm.masked.scatter.nxv8i64.nxv8p0i64( undef, undef, i32 1, undef) +; CHECK-NEXT: Cost Model: Invalid cost for instruction: call void @llvm.masked.scatter.nxv4i64.nxv4p0i64( undef, undef, i32 1, undef) +; CHECK-NEXT: Cost Model: Invalid cost for instruction: call void @llvm.masked.scatter.nxv2i64.nxv2p0i64( undef, undef, i32 1, undef) +; CHECK-NEXT: Cost Model: Invalid cost for instruction: call void @llvm.masked.scatter.nxv1i64.nxv1p0i64( undef, undef, i32 1, undef) +; CHECK-NEXT: Cost Model: Invalid cost for instruction: call void @llvm.masked.scatter.nxv16i32.nxv16p0i32( undef, undef, i32 1, undef) +; CHECK-NEXT: Cost Model: Invalid cost for instruction: call void @llvm.masked.scatter.nxv8i32.nxv8p0i32( undef, undef, i32 1, undef) +; CHECK-NEXT: Cost Model: Invalid cost for instruction: call void @llvm.masked.scatter.nxv4i32.nxv4p0i32( undef, undef, i32 1, undef) +; CHECK-NEXT: Cost Model: Invalid cost for instruction: call void @llvm.masked.scatter.nxv2i32.nxv2p0i32( undef, undef, i32 1, undef) +; CHECK-NEXT: Cost Model: Invalid cost for instruction: call void @llvm.masked.scatter.nxv1i32.nxv1p0i32( undef, undef, i32 1, undef) +; CHECK-NEXT: Cost Model: Invalid cost for instruction: call void @llvm.masked.scatter.nxv32i16.nxv32p0i16( undef, undef, i32 1, undef) +; CHECK-NEXT: Cost Model: Invalid cost for instruction: call void @llvm.masked.scatter.nxv16i16.nxv16p0i16( undef, undef, i32 1, undef) +; CHECK-NEXT: Cost Model: Invalid cost for instruction: call void @llvm.masked.scatter.nxv8i16.nxv8p0i16( undef, undef, i32 1, undef) +; CHECK-NEXT: Cost Model: Invalid cost for instruction: call void @llvm.masked.scatter.nxv4i16.nxv4p0i16( undef, undef, i32 1, undef) +; CHECK-NEXT: Cost Model: Invalid cost for instruction: call void @llvm.masked.scatter.nxv2i16.nxv2p0i16( undef, undef, i32 1, undef) +; CHECK-NEXT: Cost Model: Invalid cost for instruction: call void @llvm.masked.scatter.nxv1i16.nxv1p0i16( undef, undef, i32 1, undef) +; CHECK-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret void +; call void @llvm.masked.scatter.nxv8f64.nxv8p0f64( undef, undef, i32 2, undef) call void @llvm.masked.scatter.nxv4f64.nxv4p0f64( undef, undef, i32 2, undef) call void @llvm.masked.scatter.nxv2f64.nxv2p0f64( undef, undef, i32 2, undef) @@ -156,7 +161,7 @@ define i32 @masked_scatter() { call void @llvm.masked.scatter.nxv2i16.nxv2p0i16( undef, undef, i32 1, undef) call void @llvm.masked.scatter.nxv1i16.nxv1p0i16( undef, undef, i32 1, undef) - ret i32 0 + ret void } declare void @llvm.masked.scatter.nxv8f64.nxv8p0f64(, , i32, ) -- 2.7.4