Run DCE after a LoopFlatten test to reduce spurious output [nfc]
[llvm-project.git] / llvm / test / Analysis / CostModel / AMDGPU / fabs.ll
blobdaad19e42f3c40fbc2f441f07b6351bc28492f3d
1 ; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py
2 ; RUN: opt -passes="print<cost-model>" 2>&1 -disable-output -mtriple=amdgcn-unknown-amdhsa < %s | FileCheck -check-prefixes=ALL %s
3 ; RUN: opt -passes="print<cost-model>" -cost-kind=code-size 2>&1 -disable-output -mtriple=amdgcn-unknown-amdhsa < %s | FileCheck -check-prefixes=ALL-SIZE %s
4 ; END.
6 define amdgpu_kernel void @fabs_f32() #0 {
7 ; ALL-LABEL: 'fabs_f32'
8 ; ALL-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %f32 = call float @llvm.fabs.f32(float undef) #2
9 ; ALL-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %v2f32 = call <2 x float> @llvm.fabs.v2f32(<2 x float> undef) #2
10 ; ALL-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %v3f32 = call <3 x float> @llvm.fabs.v3f32(<3 x float> undef) #2
11 ; ALL-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %v4f32 = call <4 x float> @llvm.fabs.v4f32(<4 x float> undef) #2
12 ; ALL-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %v5f32 = call <5 x float> @llvm.fabs.v5f32(<5 x float> undef) #2
13 ; ALL-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %v8f32 = call <8 x float> @llvm.fabs.v8f32(<8 x float> undef) #2
14 ; ALL-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %v9f32 = call <9 x float> @llvm.fabs.v9f32(<9 x float> undef) #2
15 ; ALL-NEXT:  Cost Model: Found an estimated cost of 10 for instruction: ret void
17 ; ALL-SIZE-LABEL: 'fabs_f32'
18 ; ALL-SIZE-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %f32 = call float @llvm.fabs.f32(float undef) #2
19 ; ALL-SIZE-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %v2f32 = call <2 x float> @llvm.fabs.v2f32(<2 x float> undef) #2
20 ; ALL-SIZE-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %v3f32 = call <3 x float> @llvm.fabs.v3f32(<3 x float> undef) #2
21 ; ALL-SIZE-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %v4f32 = call <4 x float> @llvm.fabs.v4f32(<4 x float> undef) #2
22 ; ALL-SIZE-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %v5f32 = call <5 x float> @llvm.fabs.v5f32(<5 x float> undef) #2
23 ; ALL-SIZE-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %v8f32 = call <8 x float> @llvm.fabs.v8f32(<8 x float> undef) #2
24 ; ALL-SIZE-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %v9f32 = call <9 x float> @llvm.fabs.v9f32(<9 x float> undef) #2
25 ; ALL-SIZE-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret void
27   %f32 = call float @llvm.fabs.f32(float undef) #1
28   %v2f32 = call <2 x float> @llvm.fabs.v2f32(<2 x float> undef) #1
29   %v3f32 = call <3 x float> @llvm.fabs.v3f32(<3 x float> undef) #1
30   %v4f32 = call <4 x float> @llvm.fabs.v4f32(<4 x float> undef) #1
31   %v5f32 = call <5 x float> @llvm.fabs.v5f32(<5 x float> undef) #1
32   %v8f32 = call <8 x float> @llvm.fabs.v8f32(<8 x float> undef) #1
33   %v9f32 = call <9 x float> @llvm.fabs.v9f32(<9 x float> undef) #1
34   ret void
37 define amdgpu_kernel void @fabs_f64() #0 {
38 ; ALL-LABEL: 'fabs_f64'
39 ; ALL-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %f64 = call double @llvm.fabs.f64(double undef) #2
40 ; ALL-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %v2f64 = call <2 x double> @llvm.fabs.v2f64(<2 x double> undef) #2
41 ; ALL-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %v3f64 = call <3 x double> @llvm.fabs.v3f64(<3 x double> undef) #2
42 ; ALL-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %v4f64 = call <4 x double> @llvm.fabs.v4f64(<4 x double> undef) #2
43 ; ALL-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %v5f64 = call <5 x double> @llvm.fabs.v5f64(<5 x double> undef) #2
44 ; ALL-NEXT:  Cost Model: Found an estimated cost of 10 for instruction: ret void
46 ; ALL-SIZE-LABEL: 'fabs_f64'
47 ; ALL-SIZE-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %f64 = call double @llvm.fabs.f64(double undef) #2
48 ; ALL-SIZE-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %v2f64 = call <2 x double> @llvm.fabs.v2f64(<2 x double> undef) #2
49 ; ALL-SIZE-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %v3f64 = call <3 x double> @llvm.fabs.v3f64(<3 x double> undef) #2
50 ; ALL-SIZE-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %v4f64 = call <4 x double> @llvm.fabs.v4f64(<4 x double> undef) #2
51 ; ALL-SIZE-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %v5f64 = call <5 x double> @llvm.fabs.v5f64(<5 x double> undef) #2
52 ; ALL-SIZE-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret void
54   %f64 = call double @llvm.fabs.f64(double undef) #1
55   %v2f64 = call <2 x double> @llvm.fabs.v2f64(<2 x double> undef) #1
56   %v3f64 = call <3 x double> @llvm.fabs.v3f64(<3 x double> undef) #1
57   %v4f64 = call <4 x double> @llvm.fabs.v4f64(<4 x double> undef) #1
58   %v5f64 = call <5 x double> @llvm.fabs.v5f64(<5 x double> undef) #1
59   ret void
62 define amdgpu_kernel void @fabs_f16() #0 {
63 ; ALL-LABEL: 'fabs_f16'
64 ; ALL-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %f16 = call half @llvm.fabs.f16(half undef) #2
65 ; ALL-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %v2f16 = call <2 x half> @llvm.fabs.v2f16(<2 x half> undef) #2
66 ; ALL-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %v3f16 = call <3 x half> @llvm.fabs.v3f16(<3 x half> undef) #2
67 ; ALL-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %v4f16 = call <4 x half> @llvm.fabs.v4f16(<4 x half> undef) #2
68 ; ALL-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %v5f16 = call <5 x half> @llvm.fabs.v5f16(<5 x half> undef) #2
69 ; ALL-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %v16f16 = call <16 x half> @llvm.fabs.v16f16(<16 x half> undef) #2
70 ; ALL-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %v17f16 = call <17 x half> @llvm.fabs.v17f16(<17 x half> undef) #2
71 ; ALL-NEXT:  Cost Model: Found an estimated cost of 10 for instruction: ret void
73 ; ALL-SIZE-LABEL: 'fabs_f16'
74 ; ALL-SIZE-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %f16 = call half @llvm.fabs.f16(half undef) #2
75 ; ALL-SIZE-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %v2f16 = call <2 x half> @llvm.fabs.v2f16(<2 x half> undef) #2
76 ; ALL-SIZE-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %v3f16 = call <3 x half> @llvm.fabs.v3f16(<3 x half> undef) #2
77 ; ALL-SIZE-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %v4f16 = call <4 x half> @llvm.fabs.v4f16(<4 x half> undef) #2
78 ; ALL-SIZE-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %v5f16 = call <5 x half> @llvm.fabs.v5f16(<5 x half> undef) #2
79 ; ALL-SIZE-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %v16f16 = call <16 x half> @llvm.fabs.v16f16(<16 x half> undef) #2
80 ; ALL-SIZE-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %v17f16 = call <17 x half> @llvm.fabs.v17f16(<17 x half> undef) #2
81 ; ALL-SIZE-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: ret void
83   %f16 = call half @llvm.fabs.f16(half undef) #1
84   %v2f16 = call <2 x half> @llvm.fabs.v2f16(<2 x half> undef) #1
85   %v3f16 = call <3 x half> @llvm.fabs.v3f16(<3 x half> undef) #1
86   %v4f16 = call <4 x half> @llvm.fabs.v4f16(<4 x half> undef) #1
87   %v5f16 = call <5 x half> @llvm.fabs.v5f16(<5 x half> undef) #1
88   %v16f16 = call <16 x half> @llvm.fabs.v16f16(<16 x half> undef) #1
89   %v17f16 = call <17 x half> @llvm.fabs.v17f16(<17 x half> undef) #1
90   ret void
93 declare float @llvm.fabs.f32(float) #1
94 declare <2 x float> @llvm.fabs.v2f32(<2 x float>) #1
95 declare <3 x float> @llvm.fabs.v3f32(<3 x float>) #1
96 declare <4 x float> @llvm.fabs.v4f32(<4 x float>) #1
97 declare <5 x float> @llvm.fabs.v5f32(<5 x float>) #1
98 declare <8 x float> @llvm.fabs.v8f32(<8 x float>) #1
99 declare <9 x float> @llvm.fabs.v9f32(<9 x float>) #1
101 declare double @llvm.fabs.f64(double) #1
102 declare <2 x double> @llvm.fabs.v2f64(<2 x double>) #1
103 declare <3 x double> @llvm.fabs.v3f64(<3 x double>) #1
104 declare <4 x double> @llvm.fabs.v4f64(<4 x double>) #1
105 declare <5 x double> @llvm.fabs.v5f64(<5 x double>) #1
107 declare half @llvm.fabs.f16(half) #1
108 declare <2 x half> @llvm.fabs.v2f16(<2 x half>) #1
109 declare <3 x half> @llvm.fabs.v3f16(<3 x half>) #1
110 declare <4 x half> @llvm.fabs.v4f16(<4 x half>) #1
111 declare <5 x half> @llvm.fabs.v5f16(<5 x half>) #1
112 declare <16 x half> @llvm.fabs.v16f16(<16 x half>) #1
113 declare <17 x half> @llvm.fabs.v17f16(<17 x half>) #1
115 attributes #0 = { nounwind }
116 attributes #1 = { nounwind readnone }