From e7d810537385bf3790b172208b3b6c31c4bdb3fa Mon Sep 17 00:00:00 2001 From: Alexey Bataev Date: Tue, 20 Apr 2021 10:00:05 -0700 Subject: [PATCH] [COST]Add a test for reverse shuffles cost on AArch64, NFC. --- .../Analysis/CostModel/AArch64/shuffle-reverse.ll | 61 ++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 llvm/test/Analysis/CostModel/AArch64/shuffle-reverse.ll diff --git a/llvm/test/Analysis/CostModel/AArch64/shuffle-reverse.ll b/llvm/test/Analysis/CostModel/AArch64/shuffle-reverse.ll new file mode 100644 index 0000000..c23b6ef --- /dev/null +++ b/llvm/test/Analysis/CostModel/AArch64/shuffle-reverse.ll @@ -0,0 +1,61 @@ +; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py +; RUN: opt < %s -mtriple=aarch64--linux-gnu -cost-model -analyze | FileCheck %s + +; +; Verify the cost model for reverse shuffles. +; + +define void @test_vXi32(<2 x i32> %src64, <4 x i32> %src128) { +; CHECK-LABEL: 'test_vXi32' +; CHECK-NEXT: Cost Model: Found an estimated cost of 6 for instruction: %V64 = shufflevector <2 x i32> %src64, <2 x i32> undef, <2 x i32> +; CHECK-NEXT: Cost Model: Found an estimated cost of 18 for instruction: %V128 = shufflevector <4 x i32> %src128, <4 x i32> undef, <4 x i32> +; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret void +; + %V64 = shufflevector <2 x i32> %src64, <2 x i32> undef, <2 x i32> + %V128 = shufflevector <4 x i32> %src128, <4 x i32> undef, <4 x i32> + ret void +} + +define void @test_vXi64(<2 x i64> %src128) { +; CHECK-LABEL: 'test_vXi64' +; CHECK-NEXT: Cost Model: Found an estimated cost of 6 for instruction: %V128 = shufflevector <2 x i64> %src128, <2 x i64> undef, <2 x i32> +; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret void +; + %V128 = shufflevector <2 x i64> %src128, <2 x i64> undef, <2 x i32> + ret void +} + +define void @test_vXf32(<2 x float> %src64, <4 x float> %src128) { +; CHECK-LABEL: 'test_vXf32' +; CHECK-NEXT: Cost Model: Found an estimated cost of 6 for instruction: %V64 = shufflevector <2 x float> %src64, <2 x float> undef, <2 x i32> +; CHECK-NEXT: Cost Model: Found an estimated cost of 18 for instruction: %V128 = shufflevector <4 x float> %src128, <4 x float> undef, <4 x i32> +; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret void +; + %V64 = shufflevector <2 x float> %src64, <2 x float> undef, <2 x i32> + %V128 = shufflevector <4 x float> %src128, <4 x float> undef, <4 x i32> + ret void +} + +define void @test_vXf64(<2 x double> %src128) { +; CHECK-LABEL: 'test_vXf64' +; CHECK-NEXT: Cost Model: Found an estimated cost of 6 for instruction: %V128 = shufflevector <2 x double> %src128, <2 x double> undef, <2 x i32> +; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret void +; + %V128 = shufflevector <2 x double> %src128, <2 x double> undef, <2 x i32> + ret void +} + +; +; Tests the cost model for reverse shuffles of second operand. +; + +define void @test_upper_vXf32(<2 x float> %a64, <2 x float> %b64, <4 x float> %a128, <4 x float> %b128) { +; CHECK-LABEL: 'test_upper_vXf32' +; CHECK-NEXT: Cost Model: Found an estimated cost of 6 for instruction: %V64 = shufflevector <2 x float> %a64, <2 x float> %b64, <2 x i32> +; CHECK-NEXT: Cost Model: Found an estimated cost of 18 for instruction: %V128 = shufflevector <4 x float> %a128, <4 x float> %b128, <4 x i32> +; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret void +; + %V64 = shufflevector <2 x float> %a64, <2 x float> %b64, <2 x i32> + %V128 = shufflevector <4 x float> %a128, <4 x float> %b128, <4 x i32> + ret void +} -- 2.7.4