forked from llvm/llvm-project
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[RISCV] Add tests for reduce.fmaximum/fminimum. NFC (llvm#80553)
This is to add test coverage for crash report in llvm#80340
- Loading branch information
Showing
3 changed files
with
2,810 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,77 @@ | ||
; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --version 4 | ||
; RUN: opt < %s -mtriple=riscv32 -mattr=+v -riscv-v-vector-bits-min=256 -passes="print<cost-model>" -cost-kind=throughput 2>&1 -disable-output | FileCheck %s | ||
; RUN: opt < %s -mtriple=riscv64 -mattr=+v -riscv-v-vector-bits-min=256 -passes="print<cost-model>" -cost-kind=throughput 2>&1 -disable-output | FileCheck %s | ||
; RUN: opt < %s -mtriple=riscv32 -mattr=+v -riscv-v-vector-bits-min=256 -passes="print<cost-model>" -cost-kind=code-size 2>&1 -disable-output | FileCheck %s --check-prefix=SIZE | ||
; RUN: opt < %s -mtriple=riscv64 -mattr=+v -riscv-v-vector-bits-min=256 -passes="print<cost-model>" -cost-kind=code-size 2>&1 -disable-output | FileCheck %s --check-prefix=SIZE | ||
|
||
define float @reduce_fmaximum_f32(float %arg) { | ||
; CHECK-LABEL: 'reduce_fmaximum_f32' | ||
; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V2 = call float @llvm.vector.reduce.fmaximum.v2f32(<2 x float> undef) | ||
; CHECK-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %V4 = call float @llvm.vector.reduce.fmaximum.v4f32(<4 x float> undef) | ||
; CHECK-NEXT: Cost Model: Found an estimated cost of 5 for instruction: %V8 = call float @llvm.vector.reduce.fmaximum.v8f32(<8 x float> undef) | ||
; CHECK-NEXT: Cost Model: Found an estimated cost of 6 for instruction: %V16 = call float @llvm.vector.reduce.fmaximum.v16f32(<16 x float> undef) | ||
; CHECK-NEXT: Cost Model: Found an estimated cost of 7 for instruction: %V32 = call float @llvm.vector.reduce.fmaximum.v32f32(<32 x float> undef) | ||
; CHECK-NEXT: Cost Model: Found an estimated cost of 8 for instruction: %V64 = call float @llvm.vector.reduce.fmaximum.v64f32(<64 x float> undef) | ||
; CHECK-NEXT: Cost Model: Found an estimated cost of 10 for instruction: %V128 = call float @llvm.vector.reduce.fmaximum.v128f32(<128 x float> undef) | ||
; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret float undef | ||
; | ||
; SIZE-LABEL: 'reduce_fmaximum_f32' | ||
; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V2 = call float @llvm.vector.reduce.fmaximum.v2f32(<2 x float> undef) | ||
; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V4 = call float @llvm.vector.reduce.fmaximum.v4f32(<4 x float> undef) | ||
; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V8 = call float @llvm.vector.reduce.fmaximum.v8f32(<8 x float> undef) | ||
; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V16 = call float @llvm.vector.reduce.fmaximum.v16f32(<16 x float> undef) | ||
; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V32 = call float @llvm.vector.reduce.fmaximum.v32f32(<32 x float> undef) | ||
; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V64 = call float @llvm.vector.reduce.fmaximum.v64f32(<64 x float> undef) | ||
; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V128 = call float @llvm.vector.reduce.fmaximum.v128f32(<128 x float> undef) | ||
; SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret float undef | ||
; | ||
%V2 = call float @llvm.vector.reduce.fmaximum.v2f32(<2 x float> undef) | ||
%V4 = call float @llvm.vector.reduce.fmaximum.v4f32(<4 x float> undef) | ||
%V8 = call float @llvm.vector.reduce.fmaximum.v8f32(<8 x float> undef) | ||
%V16 = call float @llvm.vector.reduce.fmaximum.v16f32(<16 x float> undef) | ||
%V32 = call float @llvm.vector.reduce.fmaximum.v32f32(<32 x float> undef) | ||
%V64 = call float @llvm.vector.reduce.fmaximum.v64f32(<64 x float> undef) | ||
%V128 = call float @llvm.vector.reduce.fmaximum.v128f32(<128 x float> undef) | ||
ret float undef | ||
} | ||
declare float @llvm.vector.reduce.fmaximum.v2f32(<2 x float>) | ||
declare float @llvm.vector.reduce.fmaximum.v4f32(<4 x float>) | ||
declare float @llvm.vector.reduce.fmaximum.v8f32(<8 x float>) | ||
declare float @llvm.vector.reduce.fmaximum.v16f32(<16 x float>) | ||
declare float @llvm.vector.reduce.fmaximum.v32f32(<32 x float>) | ||
declare float @llvm.vector.reduce.fmaximum.v64f32(<64 x float>) | ||
declare float @llvm.vector.reduce.fmaximum.v128f32(<128 x float>) | ||
|
||
define double @reduce_fmaximum_f64(double %arg) { | ||
; CHECK-LABEL: 'reduce_fmaximum_f64' | ||
; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V2 = call double @llvm.vector.reduce.fmaximum.v2f64(<2 x double> undef) | ||
; CHECK-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %V4 = call double @llvm.vector.reduce.fmaximum.v4f64(<4 x double> undef) | ||
; CHECK-NEXT: Cost Model: Found an estimated cost of 5 for instruction: %V8 = call double @llvm.vector.reduce.fmaximum.v8f64(<8 x double> undef) | ||
; CHECK-NEXT: Cost Model: Found an estimated cost of 6 for instruction: %V16 = call double @llvm.vector.reduce.fmaximum.v16f64(<16 x double> undef) | ||
; CHECK-NEXT: Cost Model: Found an estimated cost of 7 for instruction: %V32 = call double @llvm.vector.reduce.fmaximum.v32f64(<32 x double> undef) | ||
; CHECK-NEXT: Cost Model: Found an estimated cost of 9 for instruction: %V64 = call double @llvm.vector.reduce.fmaximum.v64f64(<64 x double> undef) | ||
; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret double undef | ||
; | ||
; SIZE-LABEL: 'reduce_fmaximum_f64' | ||
; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V2 = call double @llvm.vector.reduce.fmaximum.v2f64(<2 x double> undef) | ||
; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V4 = call double @llvm.vector.reduce.fmaximum.v4f64(<4 x double> undef) | ||
; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V8 = call double @llvm.vector.reduce.fmaximum.v8f64(<8 x double> undef) | ||
; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V16 = call double @llvm.vector.reduce.fmaximum.v16f64(<16 x double> undef) | ||
; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V32 = call double @llvm.vector.reduce.fmaximum.v32f64(<32 x double> undef) | ||
; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V64 = call double @llvm.vector.reduce.fmaximum.v64f64(<64 x double> undef) | ||
; SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret double undef | ||
; | ||
%V2 = call double @llvm.vector.reduce.fmaximum.v2f64(<2 x double> undef) | ||
%V4 = call double @llvm.vector.reduce.fmaximum.v4f64(<4 x double> undef) | ||
%V8 = call double @llvm.vector.reduce.fmaximum.v8f64(<8 x double> undef) | ||
%V16 = call double @llvm.vector.reduce.fmaximum.v16f64(<16 x double> undef) | ||
%V32 = call double @llvm.vector.reduce.fmaximum.v32f64(<32 x double> undef) | ||
%V64 = call double @llvm.vector.reduce.fmaximum.v64f64(<64 x double> undef) | ||
ret double undef | ||
} | ||
declare double @llvm.vector.reduce.fmaximum.v2f64(<2 x double>) | ||
declare double @llvm.vector.reduce.fmaximum.v4f64(<4 x double>) | ||
declare double @llvm.vector.reduce.fmaximum.v8f64(<8 x double>) | ||
declare double @llvm.vector.reduce.fmaximum.v16f64(<16 x double>) | ||
declare double @llvm.vector.reduce.fmaximum.v32f64(<32 x double>) | ||
declare double @llvm.vector.reduce.fmaximum.v64f64(<64 x double>) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,77 @@ | ||
; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --version 4 | ||
; RUN: opt < %s -mtriple=riscv32 -mattr=+v -riscv-v-vector-bits-min=256 -passes="print<cost-model>" -cost-kind=throughput 2>&1 -disable-output | FileCheck %s | ||
; RUN: opt < %s -mtriple=riscv64 -mattr=+v -riscv-v-vector-bits-min=256 -passes="print<cost-model>" -cost-kind=throughput 2>&1 -disable-output | FileCheck %s | ||
; RUN: opt < %s -mtriple=riscv32 -mattr=+v -riscv-v-vector-bits-min=256 -passes="print<cost-model>" -cost-kind=code-size 2>&1 -disable-output | FileCheck %s --check-prefix=SIZE | ||
; RUN: opt < %s -mtriple=riscv64 -mattr=+v -riscv-v-vector-bits-min=256 -passes="print<cost-model>" -cost-kind=code-size 2>&1 -disable-output | FileCheck %s --check-prefix=SIZE | ||
|
||
define float @reduce_fmaximum_f32(float %arg) { | ||
; CHECK-LABEL: 'reduce_fmaximum_f32' | ||
; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V2 = call float @llvm.vector.reduce.fminimum.v2f32(<2 x float> undef) | ||
; CHECK-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %V4 = call float @llvm.vector.reduce.fminimum.v4f32(<4 x float> undef) | ||
; CHECK-NEXT: Cost Model: Found an estimated cost of 5 for instruction: %V8 = call float @llvm.vector.reduce.fminimum.v8f32(<8 x float> undef) | ||
; CHECK-NEXT: Cost Model: Found an estimated cost of 6 for instruction: %V16 = call float @llvm.vector.reduce.fminimum.v16f32(<16 x float> undef) | ||
; CHECK-NEXT: Cost Model: Found an estimated cost of 7 for instruction: %V32 = call float @llvm.vector.reduce.fminimum.v32f32(<32 x float> undef) | ||
; CHECK-NEXT: Cost Model: Found an estimated cost of 8 for instruction: %V64 = call float @llvm.vector.reduce.fminimum.v64f32(<64 x float> undef) | ||
; CHECK-NEXT: Cost Model: Found an estimated cost of 10 for instruction: %V128 = call float @llvm.vector.reduce.fminimum.v128f32(<128 x float> undef) | ||
; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret float undef | ||
; | ||
; SIZE-LABEL: 'reduce_fmaximum_f32' | ||
; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V2 = call float @llvm.vector.reduce.fminimum.v2f32(<2 x float> undef) | ||
; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V4 = call float @llvm.vector.reduce.fminimum.v4f32(<4 x float> undef) | ||
; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V8 = call float @llvm.vector.reduce.fminimum.v8f32(<8 x float> undef) | ||
; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V16 = call float @llvm.vector.reduce.fminimum.v16f32(<16 x float> undef) | ||
; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V32 = call float @llvm.vector.reduce.fminimum.v32f32(<32 x float> undef) | ||
; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V64 = call float @llvm.vector.reduce.fminimum.v64f32(<64 x float> undef) | ||
; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V128 = call float @llvm.vector.reduce.fminimum.v128f32(<128 x float> undef) | ||
; SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret float undef | ||
; | ||
%V2 = call float @llvm.vector.reduce.fminimum.v2f32(<2 x float> undef) | ||
%V4 = call float @llvm.vector.reduce.fminimum.v4f32(<4 x float> undef) | ||
%V8 = call float @llvm.vector.reduce.fminimum.v8f32(<8 x float> undef) | ||
%V16 = call float @llvm.vector.reduce.fminimum.v16f32(<16 x float> undef) | ||
%V32 = call float @llvm.vector.reduce.fminimum.v32f32(<32 x float> undef) | ||
%V64 = call float @llvm.vector.reduce.fminimum.v64f32(<64 x float> undef) | ||
%V128 = call float @llvm.vector.reduce.fminimum.v128f32(<128 x float> undef) | ||
ret float undef | ||
} | ||
declare float @llvm.vector.reduce.fminimum.v2f32(<2 x float>) | ||
declare float @llvm.vector.reduce.fminimum.v4f32(<4 x float>) | ||
declare float @llvm.vector.reduce.fminimum.v8f32(<8 x float>) | ||
declare float @llvm.vector.reduce.fminimum.v16f32(<16 x float>) | ||
declare float @llvm.vector.reduce.fminimum.v32f32(<32 x float>) | ||
declare float @llvm.vector.reduce.fminimum.v64f32(<64 x float>) | ||
declare float @llvm.vector.reduce.fminimum.v128f32(<128 x float>) | ||
|
||
define double @reduce_fmaximum_f64(double %arg) { | ||
; CHECK-LABEL: 'reduce_fmaximum_f64' | ||
; CHECK-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V2 = call double @llvm.vector.reduce.fminimum.v2f64(<2 x double> undef) | ||
; CHECK-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %V4 = call double @llvm.vector.reduce.fminimum.v4f64(<4 x double> undef) | ||
; CHECK-NEXT: Cost Model: Found an estimated cost of 5 for instruction: %V8 = call double @llvm.vector.reduce.fminimum.v8f64(<8 x double> undef) | ||
; CHECK-NEXT: Cost Model: Found an estimated cost of 6 for instruction: %V16 = call double @llvm.vector.reduce.fminimum.v16f64(<16 x double> undef) | ||
; CHECK-NEXT: Cost Model: Found an estimated cost of 7 for instruction: %V32 = call double @llvm.vector.reduce.fminimum.v32f64(<32 x double> undef) | ||
; CHECK-NEXT: Cost Model: Found an estimated cost of 9 for instruction: %V64 = call double @llvm.vector.reduce.fminimum.v64f64(<64 x double> undef) | ||
; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret double undef | ||
; | ||
; SIZE-LABEL: 'reduce_fmaximum_f64' | ||
; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V2 = call double @llvm.vector.reduce.fminimum.v2f64(<2 x double> undef) | ||
; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V4 = call double @llvm.vector.reduce.fminimum.v4f64(<4 x double> undef) | ||
; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V8 = call double @llvm.vector.reduce.fminimum.v8f64(<8 x double> undef) | ||
; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V16 = call double @llvm.vector.reduce.fminimum.v16f64(<16 x double> undef) | ||
; SIZE-NEXT: Cost Model: Found an estimated cost of 2 for instruction: %V32 = call double @llvm.vector.reduce.fminimum.v32f64(<32 x double> undef) | ||
; SIZE-NEXT: Cost Model: Found an estimated cost of 3 for instruction: %V64 = call double @llvm.vector.reduce.fminimum.v64f64(<64 x double> undef) | ||
; SIZE-NEXT: Cost Model: Found an estimated cost of 1 for instruction: ret double undef | ||
; | ||
%V2 = call double @llvm.vector.reduce.fminimum.v2f64(<2 x double> undef) | ||
%V4 = call double @llvm.vector.reduce.fminimum.v4f64(<4 x double> undef) | ||
%V8 = call double @llvm.vector.reduce.fminimum.v8f64(<8 x double> undef) | ||
%V16 = call double @llvm.vector.reduce.fminimum.v16f64(<16 x double> undef) | ||
%V32 = call double @llvm.vector.reduce.fminimum.v32f64(<32 x double> undef) | ||
%V64 = call double @llvm.vector.reduce.fminimum.v64f64(<64 x double> undef) | ||
ret double undef | ||
} | ||
declare double @llvm.vector.reduce.fminimum.v2f64(<2 x double>) | ||
declare double @llvm.vector.reduce.fminimum.v4f64(<4 x double>) | ||
declare double @llvm.vector.reduce.fminimum.v8f64(<8 x double>) | ||
declare double @llvm.vector.reduce.fminimum.v16f64(<16 x double>) | ||
declare double @llvm.vector.reduce.fminimum.v32f64(<32 x double>) | ||
declare double @llvm.vector.reduce.fminimum.v64f64(<64 x double>) |
Oops, something went wrong.