1; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py 2; RUN: opt < %s -passes="print<cost-model>" 2>&1 -disable-output -S -mtriple=riscv64 -mattr=+v,+f,+d,+zvfh,+zvfbfmin | FileCheck %s --check-prefixes=CHECK,ZVFH 3; RUN: opt < %s -passes="print<cost-model>" 2>&1 -disable-output -S -mtriple=riscv64 -mattr=+v,+f,+d,+zvfhmin,+zvfbfmin | FileCheck %s --check-prefixes=CHECK,ZVFHMIN 4 5define void @sin() { 6; CHECK-LABEL: 'sin' 7; CHECK-NEXT: Cost Model: Found an estimated cost of 10 for instruction: %1 = call bfloat @llvm.sin.bf16(bfloat undef) 8; CHECK-NEXT: Cost Model: Found an estimated cost of 22 for instruction: %2 = call <2 x bfloat> @llvm.sin.v2bf16(<2 x bfloat> undef) 9; CHECK-NEXT: Cost Model: Found an estimated cost of 44 for instruction: %3 = call <4 x bfloat> @llvm.sin.v4bf16(<4 x bfloat> undef) 10; CHECK-NEXT: Cost Model: Found an estimated cost of 88 for instruction: %4 = call <8 x bfloat> @llvm.sin.v8bf16(<8 x bfloat> undef) 11; CHECK-NEXT: Cost Model: Found an estimated cost of 191 for instruction: %5 = call <16 x bfloat> @llvm.sin.v16bf16(<16 x bfloat> undef) 12; CHECK-NEXT: Cost Model: Invalid cost for instruction: %6 = call <vscale x 1 x bfloat> @llvm.sin.nxv1bf16(<vscale x 1 x bfloat> undef) 13; CHECK-NEXT: Cost Model: Invalid cost for instruction: %7 = call <vscale x 2 x bfloat> @llvm.sin.nxv2bf16(<vscale x 2 x bfloat> undef) 14; CHECK-NEXT: Cost Model: Invalid cost for instruction: %8 = call <vscale x 4 x bfloat> @llvm.sin.nxv4bf16(<vscale x 4 x bfloat> undef) 15; CHECK-NEXT: Cost Model: Invalid cost for instruction: %9 = call <vscale x 8 x bfloat> @llvm.sin.nxv8bf16(<vscale x 8 x bfloat> undef) 16; CHECK-NEXT: Cost Model: Invalid cost for instruction: %10 = call <vscale x 16 x bfloat> @llvm.sin.nxv16bf16(<vscale x 16 x bfloat> undef) 17; CHECK-NEXT: Cost Model: Found an estimated cost of 10 for instruction: %11 = call float @llvm.sin.f32(float undef) 18; CHECK-NEXT: Cost Model: Found an estimated cost of 22 for instruction: %12 = call <2 x float> @llvm.sin.v2f32(<2 x float> undef) 19; CHECK-NEXT: Cost Model: Found an estimated cost of 44 for instruction: %13 = call <4 x float> @llvm.sin.v4f32(<4 x float> undef) 20; CHECK-NEXT: Cost Model: Found an estimated cost of 95 for instruction: %14 = call <8 x float> @llvm.sin.v8f32(<8 x float> undef) 21; CHECK-NEXT: Cost Model: Found an estimated cost of 191 for instruction: %15 = call <16 x float> @llvm.sin.v16f32(<16 x float> undef) 22; CHECK-NEXT: Cost Model: Invalid cost for instruction: %16 = call <vscale x 1 x float> @llvm.sin.nxv1f32(<vscale x 1 x float> undef) 23; CHECK-NEXT: Cost Model: Invalid cost for instruction: %17 = call <vscale x 2 x float> @llvm.sin.nxv2f32(<vscale x 2 x float> undef) 24; CHECK-NEXT: Cost Model: Invalid cost for instruction: %18 = call <vscale x 4 x float> @llvm.sin.nxv4f32(<vscale x 4 x float> undef) 25; CHECK-NEXT: Cost Model: Invalid cost for instruction: %19 = call <vscale x 8 x float> @llvm.sin.nxv8f32(<vscale x 8 x float> undef) 26; CHECK-NEXT: Cost Model: Invalid cost for instruction: %20 = call <vscale x 16 x float> @llvm.sin.nxv16f32(<vscale x 16 x float> undef) 27; CHECK-NEXT: Cost Model: Found an estimated cost of 10 for instruction: %21 = call double @llvm.sin.f64(double undef) 28; CHECK-NEXT: Cost Model: Found an estimated cost of 22 for instruction: %22 = call <2 x double> @llvm.sin.v2f64(<2 x double> undef) 29; CHECK-NEXT: Cost Model: Found an estimated cost of 47 for instruction: %23 = call <4 x double> @llvm.sin.v4f64(<4 x double> undef) 30; CHECK-NEXT: Cost Model: Found an estimated cost of 95 for instruction: %24 = call <8 x double> @llvm.sin.v8f64(<8 x double> undef) 31; CHECK-NEXT: Cost Model: Found an estimated cost of 191 for instruction: %25 = call <16 x double> @llvm.sin.v16f64(<16 x double> undef) 32; CHECK-NEXT: Cost Model: Invalid cost for instruction: %26 = call <vscale x 1 x double> @llvm.sin.nxv1f64(<vscale x 1 x double> undef) 33; CHECK-NEXT: Cost Model: Invalid cost for instruction: %27 = call <vscale x 2 x double> @llvm.sin.nxv2f64(<vscale x 2 x double> undef) 34; CHECK-NEXT: Cost Model: Invalid cost for instruction: %28 = call <vscale x 4 x double> @llvm.sin.nxv4f64(<vscale x 4 x double> undef) 35; CHECK-NEXT: Cost Model: Invalid cost for instruction: %29 = call <vscale x 8 x double> @llvm.sin.nxv8f64(<vscale x 8 x double> undef) 36; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret void 37; 38 call bfloat @llvm.sin.bf16(bfloat undef) 39 call <2 x bfloat> @llvm.sin.v2bf16(<2 x bfloat> undef) 40 call <4 x bfloat> @llvm.sin.v4bf16(<4 x bfloat> undef) 41 call <8 x bfloat> @llvm.sin.v8bf16(<8 x bfloat> undef) 42 call <16 x bfloat> @llvm.sin.v16bf16(<16 x bfloat> undef) 43 call <vscale x 1 x bfloat> @llvm.sin.nxv1bf16(<vscale x 1 x bfloat> undef) 44 call <vscale x 2 x bfloat> @llvm.sin.nxv2bf16(<vscale x 2 x bfloat> undef) 45 call <vscale x 4 x bfloat> @llvm.sin.nxv4bf16(<vscale x 4 x bfloat> undef) 46 call <vscale x 8 x bfloat> @llvm.sin.nxv8bf16(<vscale x 8 x bfloat> undef) 47 call <vscale x 16 x bfloat> @llvm.sin.nxv16bf16(<vscale x 16 x bfloat> undef) 48 call float @llvm.sin.f32(float undef) 49 call <2 x float> @llvm.sin.v2f32(<2 x float> undef) 50 call <4 x float> @llvm.sin.v4f32(<4 x float> undef) 51 call <8 x float> @llvm.sin.v8f32(<8 x float> undef) 52 call <16 x float> @llvm.sin.v16f32(<16 x float> undef) 53 call <vscale x 1 x float> @llvm.sin.nxv1f32(<vscale x 1 x float> undef) 54 call <vscale x 2 x float> @llvm.sin.nxv2f32(<vscale x 2 x float> undef) 55 call <vscale x 4 x float> @llvm.sin.nxv4f32(<vscale x 4 x float> undef) 56 call <vscale x 8 x float> @llvm.sin.nxv8f32(<vscale x 8 x float> undef) 57 call <vscale x 16 x float> @llvm.sin.nxv16f32(<vscale x 16 x float> undef) 58 call double @llvm.sin.f64(double undef) 59 call <2 x double> @llvm.sin.v2f64(<2 x double> undef) 60 call <4 x double> @llvm.sin.v4f64(<4 x double> undef) 61 call <8 x double> @llvm.sin.v8f64(<8 x double> undef) 62 call <16 x double> @llvm.sin.v16f64(<16 x double> undef) 63 call <vscale x 1 x double> @llvm.sin.nxv1f64(<vscale x 1 x double> undef) 64 call <vscale x 2 x double> @llvm.sin.nxv2f64(<vscale x 2 x double> undef) 65 call <vscale x 4 x double> @llvm.sin.nxv4f64(<vscale x 4 x double> undef) 66 call <vscale x 8 x double> @llvm.sin.nxv8f64(<vscale x 8 x double> undef) 67 ret void 68} 69 70define void @sin_f16() { 71; ZVFH-LABEL: 'sin_f16' 72; ZVFH-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %1 = call half @llvm.sin.f16(half undef) 73; ZVFH-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %2 = call <2 x half> @llvm.sin.v2f16(<2 x half> undef) 74; ZVFH-NEXT: Cost Model: Found an estimated cost of 8 for instruction: %3 = call <4 x half> @llvm.sin.v4f16(<4 x half> undef) 75; ZVFH-NEXT: Cost Model: Found an estimated cost of 16 for instruction: %4 = call <8 x half> @llvm.sin.v8f16(<8 x half> undef) 76; ZVFH-NEXT: Cost Model: Found an estimated cost of 47 for instruction: %5 = call <16 x half> @llvm.sin.v16f16(<16 x half> undef) 77; ZVFH-NEXT: Cost Model: Invalid cost for instruction: %6 = call <vscale x 1 x half> @llvm.sin.nxv1f16(<vscale x 1 x half> undef) 78; ZVFH-NEXT: Cost Model: Invalid cost for instruction: %7 = call <vscale x 2 x half> @llvm.sin.nxv2f16(<vscale x 2 x half> undef) 79; ZVFH-NEXT: Cost Model: Invalid cost for instruction: %8 = call <vscale x 4 x half> @llvm.sin.nxv4f16(<vscale x 4 x half> undef) 80; ZVFH-NEXT: Cost Model: Invalid cost for instruction: %9 = call <vscale x 8 x half> @llvm.sin.nxv8f16(<vscale x 8 x half> undef) 81; ZVFH-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret void 82; 83; ZVFHMIN-LABEL: 'sin_f16' 84; ZVFHMIN-NEXT: Cost Model: Found an estimated cost of 10 for instruction: %1 = call half @llvm.sin.f16(half undef) 85; ZVFHMIN-NEXT: Cost Model: Found an estimated cost of 22 for instruction: %2 = call <2 x half> @llvm.sin.v2f16(<2 x half> undef) 86; ZVFHMIN-NEXT: Cost Model: Found an estimated cost of 44 for instruction: %3 = call <4 x half> @llvm.sin.v4f16(<4 x half> undef) 87; ZVFHMIN-NEXT: Cost Model: Found an estimated cost of 88 for instruction: %4 = call <8 x half> @llvm.sin.v8f16(<8 x half> undef) 88; ZVFHMIN-NEXT: Cost Model: Found an estimated cost of 191 for instruction: %5 = call <16 x half> @llvm.sin.v16f16(<16 x half> undef) 89; ZVFHMIN-NEXT: Cost Model: Invalid cost for instruction: %6 = call <vscale x 1 x half> @llvm.sin.nxv1f16(<vscale x 1 x half> undef) 90; ZVFHMIN-NEXT: Cost Model: Invalid cost for instruction: %7 = call <vscale x 2 x half> @llvm.sin.nxv2f16(<vscale x 2 x half> undef) 91; ZVFHMIN-NEXT: Cost Model: Invalid cost for instruction: %8 = call <vscale x 4 x half> @llvm.sin.nxv4f16(<vscale x 4 x half> undef) 92; ZVFHMIN-NEXT: Cost Model: Invalid cost for instruction: %9 = call <vscale x 8 x half> @llvm.sin.nxv8f16(<vscale x 8 x half> undef) 93; ZVFHMIN-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret void 94; 95 call half @llvm.sin.f16(half undef) 96 call <2 x half> @llvm.sin.v2f16(<2 x half> undef) 97 call <4 x half> @llvm.sin.v4f16(<4 x half> undef) 98 call <8 x half> @llvm.sin.v8f16(<8 x half> undef) 99 call <16 x half> @llvm.sin.v16f16(<16 x half> undef) 100 call <vscale x 1 x half> @llvm.sin.nxv1f16(<vscale x 1 x half> undef) 101 call <vscale x 2 x half> @llvm.sin.nxv2f16(<vscale x 2 x half> undef) 102 call <vscale x 4 x half> @llvm.sin.nxv4f16(<vscale x 4 x half> undef) 103 call <vscale x 8 x half> @llvm.sin.nxv8f16(<vscale x 8 x half> undef) 104 ret void 105} 106 107define void @cos() { 108; CHECK-LABEL: 'cos' 109; CHECK-NEXT: Cost Model: Found an estimated cost of 10 for instruction: %1 = call bfloat @llvm.cos.bf16(bfloat undef) 110; CHECK-NEXT: Cost Model: Found an estimated cost of 22 for instruction: %2 = call <2 x bfloat> @llvm.cos.v2bf16(<2 x bfloat> undef) 111; CHECK-NEXT: Cost Model: Found an estimated cost of 44 for instruction: %3 = call <4 x bfloat> @llvm.cos.v4bf16(<4 x bfloat> undef) 112; CHECK-NEXT: Cost Model: Found an estimated cost of 88 for instruction: %4 = call <8 x bfloat> @llvm.cos.v8bf16(<8 x bfloat> undef) 113; CHECK-NEXT: Cost Model: Found an estimated cost of 191 for instruction: %5 = call <16 x bfloat> @llvm.cos.v16bf16(<16 x bfloat> undef) 114; CHECK-NEXT: Cost Model: Invalid cost for instruction: %6 = call <vscale x 1 x bfloat> @llvm.cos.nxv1bf16(<vscale x 1 x bfloat> undef) 115; CHECK-NEXT: Cost Model: Invalid cost for instruction: %7 = call <vscale x 2 x bfloat> @llvm.cos.nxv2bf16(<vscale x 2 x bfloat> undef) 116; CHECK-NEXT: Cost Model: Invalid cost for instruction: %8 = call <vscale x 4 x bfloat> @llvm.cos.nxv4bf16(<vscale x 4 x bfloat> undef) 117; CHECK-NEXT: Cost Model: Invalid cost for instruction: %9 = call <vscale x 8 x bfloat> @llvm.cos.nxv8bf16(<vscale x 8 x bfloat> undef) 118; CHECK-NEXT: Cost Model: Invalid cost for instruction: %10 = call <vscale x 16 x bfloat> @llvm.cos.nxv16bf16(<vscale x 16 x bfloat> undef) 119; CHECK-NEXT: Cost Model: Found an estimated cost of 10 for instruction: %11 = call float @llvm.cos.f32(float undef) 120; CHECK-NEXT: Cost Model: Found an estimated cost of 22 for instruction: %12 = call <2 x float> @llvm.cos.v2f32(<2 x float> undef) 121; CHECK-NEXT: Cost Model: Found an estimated cost of 44 for instruction: %13 = call <4 x float> @llvm.cos.v4f32(<4 x float> undef) 122; CHECK-NEXT: Cost Model: Found an estimated cost of 95 for instruction: %14 = call <8 x float> @llvm.cos.v8f32(<8 x float> undef) 123; CHECK-NEXT: Cost Model: Found an estimated cost of 191 for instruction: %15 = call <16 x float> @llvm.cos.v16f32(<16 x float> undef) 124; CHECK-NEXT: Cost Model: Invalid cost for instruction: %16 = call <vscale x 1 x float> @llvm.cos.nxv1f32(<vscale x 1 x float> undef) 125; CHECK-NEXT: Cost Model: Invalid cost for instruction: %17 = call <vscale x 2 x float> @llvm.cos.nxv2f32(<vscale x 2 x float> undef) 126; CHECK-NEXT: Cost Model: Invalid cost for instruction: %18 = call <vscale x 4 x float> @llvm.cos.nxv4f32(<vscale x 4 x float> undef) 127; CHECK-NEXT: Cost Model: Invalid cost for instruction: %19 = call <vscale x 8 x float> @llvm.cos.nxv8f32(<vscale x 8 x float> undef) 128; CHECK-NEXT: Cost Model: Invalid cost for instruction: %20 = call <vscale x 16 x float> @llvm.cos.nxv16f32(<vscale x 16 x float> undef) 129; CHECK-NEXT: Cost Model: Found an estimated cost of 10 for instruction: %21 = call double @llvm.cos.f64(double undef) 130; CHECK-NEXT: Cost Model: Found an estimated cost of 22 for instruction: %22 = call <2 x double> @llvm.cos.v2f64(<2 x double> undef) 131; CHECK-NEXT: Cost Model: Found an estimated cost of 47 for instruction: %23 = call <4 x double> @llvm.cos.v4f64(<4 x double> undef) 132; CHECK-NEXT: Cost Model: Found an estimated cost of 95 for instruction: %24 = call <8 x double> @llvm.cos.v8f64(<8 x double> undef) 133; CHECK-NEXT: Cost Model: Found an estimated cost of 191 for instruction: %25 = call <16 x double> @llvm.cos.v16f64(<16 x double> undef) 134; CHECK-NEXT: Cost Model: Invalid cost for instruction: %26 = call <vscale x 1 x double> @llvm.cos.nxv1f64(<vscale x 1 x double> undef) 135; CHECK-NEXT: Cost Model: Invalid cost for instruction: %27 = call <vscale x 2 x double> @llvm.cos.nxv2f64(<vscale x 2 x double> undef) 136; CHECK-NEXT: Cost Model: Invalid cost for instruction: %28 = call <vscale x 4 x double> @llvm.cos.nxv4f64(<vscale x 4 x double> undef) 137; CHECK-NEXT: Cost Model: Invalid cost for instruction: %29 = call <vscale x 8 x double> @llvm.cos.nxv8f64(<vscale x 8 x double> undef) 138; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret void 139; 140 call bfloat @llvm.cos.bf16(bfloat undef) 141 call <2 x bfloat> @llvm.cos.v2bf16(<2 x bfloat> undef) 142 call <4 x bfloat> @llvm.cos.v4bf16(<4 x bfloat> undef) 143 call <8 x bfloat> @llvm.cos.v8bf16(<8 x bfloat> undef) 144 call <16 x bfloat> @llvm.cos.v16bf16(<16 x bfloat> undef) 145 call <vscale x 1 x bfloat> @llvm.cos.nxv1bf16(<vscale x 1 x bfloat> undef) 146 call <vscale x 2 x bfloat> @llvm.cos.nxv2bf16(<vscale x 2 x bfloat> undef) 147 call <vscale x 4 x bfloat> @llvm.cos.nxv4bf16(<vscale x 4 x bfloat> undef) 148 call <vscale x 8 x bfloat> @llvm.cos.nxv8bf16(<vscale x 8 x bfloat> undef) 149 call <vscale x 16 x bfloat> @llvm.cos.nxv16bf16(<vscale x 16 x bfloat> undef) 150 call float @llvm.cos.f32(float undef) 151 call <2 x float> @llvm.cos.v2f32(<2 x float> undef) 152 call <4 x float> @llvm.cos.v4f32(<4 x float> undef) 153 call <8 x float> @llvm.cos.v8f32(<8 x float> undef) 154 call <16 x float> @llvm.cos.v16f32(<16 x float> undef) 155 call <vscale x 1 x float> @llvm.cos.nxv1f32(<vscale x 1 x float> undef) 156 call <vscale x 2 x float> @llvm.cos.nxv2f32(<vscale x 2 x float> undef) 157 call <vscale x 4 x float> @llvm.cos.nxv4f32(<vscale x 4 x float> undef) 158 call <vscale x 8 x float> @llvm.cos.nxv8f32(<vscale x 8 x float> undef) 159 call <vscale x 16 x float> @llvm.cos.nxv16f32(<vscale x 16 x float> undef) 160 call double @llvm.cos.f64(double undef) 161 call <2 x double> @llvm.cos.v2f64(<2 x double> undef) 162 call <4 x double> @llvm.cos.v4f64(<4 x double> undef) 163 call <8 x double> @llvm.cos.v8f64(<8 x double> undef) 164 call <16 x double> @llvm.cos.v16f64(<16 x double> undef) 165 call <vscale x 1 x double> @llvm.cos.nxv1f64(<vscale x 1 x double> undef) 166 call <vscale x 2 x double> @llvm.cos.nxv2f64(<vscale x 2 x double> undef) 167 call <vscale x 4 x double> @llvm.cos.nxv4f64(<vscale x 4 x double> undef) 168 call <vscale x 8 x double> @llvm.cos.nxv8f64(<vscale x 8 x double> undef) 169 ret void 170} 171 172define void @cos_f16() { 173; ZVFH-LABEL: 'cos_f16' 174; ZVFH-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %1 = call half @llvm.cos.f16(half undef) 175; ZVFH-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %2 = call <2 x half> @llvm.cos.v2f16(<2 x half> undef) 176; ZVFH-NEXT: Cost Model: Found an estimated cost of 8 for instruction: %3 = call <4 x half> @llvm.cos.v4f16(<4 x half> undef) 177; ZVFH-NEXT: Cost Model: Found an estimated cost of 16 for instruction: %4 = call <8 x half> @llvm.cos.v8f16(<8 x half> undef) 178; ZVFH-NEXT: Cost Model: Found an estimated cost of 47 for instruction: %5 = call <16 x half> @llvm.cos.v16f16(<16 x half> undef) 179; ZVFH-NEXT: Cost Model: Invalid cost for instruction: %6 = call <vscale x 1 x half> @llvm.cos.nxv1f16(<vscale x 1 x half> undef) 180; ZVFH-NEXT: Cost Model: Invalid cost for instruction: %7 = call <vscale x 2 x half> @llvm.cos.nxv2f16(<vscale x 2 x half> undef) 181; ZVFH-NEXT: Cost Model: Invalid cost for instruction: %8 = call <vscale x 4 x half> @llvm.cos.nxv4f16(<vscale x 4 x half> undef) 182; ZVFH-NEXT: Cost Model: Invalid cost for instruction: %9 = call <vscale x 8 x half> @llvm.cos.nxv8f16(<vscale x 8 x half> undef) 183; ZVFH-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret void 184; 185; ZVFHMIN-LABEL: 'cos_f16' 186; ZVFHMIN-NEXT: Cost Model: Found an estimated cost of 10 for instruction: %1 = call half @llvm.cos.f16(half undef) 187; ZVFHMIN-NEXT: Cost Model: Found an estimated cost of 22 for instruction: %2 = call <2 x half> @llvm.cos.v2f16(<2 x half> undef) 188; ZVFHMIN-NEXT: Cost Model: Found an estimated cost of 44 for instruction: %3 = call <4 x half> @llvm.cos.v4f16(<4 x half> undef) 189; ZVFHMIN-NEXT: Cost Model: Found an estimated cost of 88 for instruction: %4 = call <8 x half> @llvm.cos.v8f16(<8 x half> undef) 190; ZVFHMIN-NEXT: Cost Model: Found an estimated cost of 191 for instruction: %5 = call <16 x half> @llvm.cos.v16f16(<16 x half> undef) 191; ZVFHMIN-NEXT: Cost Model: Invalid cost for instruction: %6 = call <vscale x 1 x half> @llvm.cos.nxv1f16(<vscale x 1 x half> undef) 192; ZVFHMIN-NEXT: Cost Model: Invalid cost for instruction: %7 = call <vscale x 2 x half> @llvm.cos.nxv2f16(<vscale x 2 x half> undef) 193; ZVFHMIN-NEXT: Cost Model: Invalid cost for instruction: %8 = call <vscale x 4 x half> @llvm.cos.nxv4f16(<vscale x 4 x half> undef) 194; ZVFHMIN-NEXT: Cost Model: Invalid cost for instruction: %9 = call <vscale x 8 x half> @llvm.cos.nxv8f16(<vscale x 8 x half> undef) 195; ZVFHMIN-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret void 196; 197 call half @llvm.cos.f16(half undef) 198 call <2 x half> @llvm.cos.v2f16(<2 x half> undef) 199 call <4 x half> @llvm.cos.v4f16(<4 x half> undef) 200 call <8 x half> @llvm.cos.v8f16(<8 x half> undef) 201 call <16 x half> @llvm.cos.v16f16(<16 x half> undef) 202 call <vscale x 1 x half> @llvm.cos.nxv1f16(<vscale x 1 x half> undef) 203 call <vscale x 2 x half> @llvm.cos.nxv2f16(<vscale x 2 x half> undef) 204 call <vscale x 4 x half> @llvm.cos.nxv4f16(<vscale x 4 x half> undef) 205 call <vscale x 8 x half> @llvm.cos.nxv8f16(<vscale x 8 x half> undef) 206 ret void 207} 208 209define void @exp() { 210; CHECK-LABEL: 'exp' 211; CHECK-NEXT: Cost Model: Found an estimated cost of 10 for instruction: %1 = call bfloat @llvm.exp.bf16(bfloat undef) 212; CHECK-NEXT: Cost Model: Found an estimated cost of 22 for instruction: %2 = call <2 x bfloat> @llvm.exp.v2bf16(<2 x bfloat> undef) 213; CHECK-NEXT: Cost Model: Found an estimated cost of 44 for instruction: %3 = call <4 x bfloat> @llvm.exp.v4bf16(<4 x bfloat> undef) 214; CHECK-NEXT: Cost Model: Found an estimated cost of 88 for instruction: %4 = call <8 x bfloat> @llvm.exp.v8bf16(<8 x bfloat> undef) 215; CHECK-NEXT: Cost Model: Found an estimated cost of 191 for instruction: %5 = call <16 x bfloat> @llvm.exp.v16bf16(<16 x bfloat> undef) 216; CHECK-NEXT: Cost Model: Invalid cost for instruction: %6 = call <vscale x 1 x bfloat> @llvm.exp.nxv1bf16(<vscale x 1 x bfloat> undef) 217; CHECK-NEXT: Cost Model: Invalid cost for instruction: %7 = call <vscale x 2 x bfloat> @llvm.exp.nxv2bf16(<vscale x 2 x bfloat> undef) 218; CHECK-NEXT: Cost Model: Invalid cost for instruction: %8 = call <vscale x 4 x bfloat> @llvm.exp.nxv4bf16(<vscale x 4 x bfloat> undef) 219; CHECK-NEXT: Cost Model: Invalid cost for instruction: %9 = call <vscale x 8 x bfloat> @llvm.exp.nxv8bf16(<vscale x 8 x bfloat> undef) 220; CHECK-NEXT: Cost Model: Invalid cost for instruction: %10 = call <vscale x 16 x bfloat> @llvm.exp.nxv16bf16(<vscale x 16 x bfloat> undef) 221; CHECK-NEXT: Cost Model: Found an estimated cost of 10 for instruction: %11 = call float @llvm.exp.f32(float undef) 222; CHECK-NEXT: Cost Model: Found an estimated cost of 22 for instruction: %12 = call <2 x float> @llvm.exp.v2f32(<2 x float> undef) 223; CHECK-NEXT: Cost Model: Found an estimated cost of 44 for instruction: %13 = call <4 x float> @llvm.exp.v4f32(<4 x float> undef) 224; CHECK-NEXT: Cost Model: Found an estimated cost of 95 for instruction: %14 = call <8 x float> @llvm.exp.v8f32(<8 x float> undef) 225; CHECK-NEXT: Cost Model: Found an estimated cost of 191 for instruction: %15 = call <16 x float> @llvm.exp.v16f32(<16 x float> undef) 226; CHECK-NEXT: Cost Model: Invalid cost for instruction: %16 = call <vscale x 1 x float> @llvm.exp.nxv1f32(<vscale x 1 x float> undef) 227; CHECK-NEXT: Cost Model: Invalid cost for instruction: %17 = call <vscale x 2 x float> @llvm.exp.nxv2f32(<vscale x 2 x float> undef) 228; CHECK-NEXT: Cost Model: Invalid cost for instruction: %18 = call <vscale x 4 x float> @llvm.exp.nxv4f32(<vscale x 4 x float> undef) 229; CHECK-NEXT: Cost Model: Invalid cost for instruction: %19 = call <vscale x 8 x float> @llvm.exp.nxv8f32(<vscale x 8 x float> undef) 230; CHECK-NEXT: Cost Model: Invalid cost for instruction: %20 = call <vscale x 16 x float> @llvm.exp.nxv16f32(<vscale x 16 x float> undef) 231; CHECK-NEXT: Cost Model: Found an estimated cost of 10 for instruction: %21 = call double @llvm.exp.f64(double undef) 232; CHECK-NEXT: Cost Model: Found an estimated cost of 22 for instruction: %22 = call <2 x double> @llvm.exp.v2f64(<2 x double> undef) 233; CHECK-NEXT: Cost Model: Found an estimated cost of 47 for instruction: %23 = call <4 x double> @llvm.exp.v4f64(<4 x double> undef) 234; CHECK-NEXT: Cost Model: Found an estimated cost of 95 for instruction: %24 = call <8 x double> @llvm.exp.v8f64(<8 x double> undef) 235; CHECK-NEXT: Cost Model: Found an estimated cost of 191 for instruction: %25 = call <16 x double> @llvm.exp.v16f64(<16 x double> undef) 236; CHECK-NEXT: Cost Model: Invalid cost for instruction: %26 = call <vscale x 1 x double> @llvm.exp.nxv1f64(<vscale x 1 x double> undef) 237; CHECK-NEXT: Cost Model: Invalid cost for instruction: %27 = call <vscale x 2 x double> @llvm.exp.nxv2f64(<vscale x 2 x double> undef) 238; CHECK-NEXT: Cost Model: Invalid cost for instruction: %28 = call <vscale x 4 x double> @llvm.exp.nxv4f64(<vscale x 4 x double> undef) 239; CHECK-NEXT: Cost Model: Invalid cost for instruction: %29 = call <vscale x 8 x double> @llvm.exp.nxv8f64(<vscale x 8 x double> undef) 240; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret void 241; 242 call bfloat @llvm.exp.bf16(bfloat undef) 243 call <2 x bfloat> @llvm.exp.v2bf16(<2 x bfloat> undef) 244 call <4 x bfloat> @llvm.exp.v4bf16(<4 x bfloat> undef) 245 call <8 x bfloat> @llvm.exp.v8bf16(<8 x bfloat> undef) 246 call <16 x bfloat> @llvm.exp.v16bf16(<16 x bfloat> undef) 247 call <vscale x 1 x bfloat> @llvm.exp.nxv1bf16(<vscale x 1 x bfloat> undef) 248 call <vscale x 2 x bfloat> @llvm.exp.nxv2bf16(<vscale x 2 x bfloat> undef) 249 call <vscale x 4 x bfloat> @llvm.exp.nxv4bf16(<vscale x 4 x bfloat> undef) 250 call <vscale x 8 x bfloat> @llvm.exp.nxv8bf16(<vscale x 8 x bfloat> undef) 251 call <vscale x 16 x bfloat> @llvm.exp.nxv16bf16(<vscale x 16 x bfloat> undef) 252 call float @llvm.exp.f32(float undef) 253 call <2 x float> @llvm.exp.v2f32(<2 x float> undef) 254 call <4 x float> @llvm.exp.v4f32(<4 x float> undef) 255 call <8 x float> @llvm.exp.v8f32(<8 x float> undef) 256 call <16 x float> @llvm.exp.v16f32(<16 x float> undef) 257 call <vscale x 1 x float> @llvm.exp.nxv1f32(<vscale x 1 x float> undef) 258 call <vscale x 2 x float> @llvm.exp.nxv2f32(<vscale x 2 x float> undef) 259 call <vscale x 4 x float> @llvm.exp.nxv4f32(<vscale x 4 x float> undef) 260 call <vscale x 8 x float> @llvm.exp.nxv8f32(<vscale x 8 x float> undef) 261 call <vscale x 16 x float> @llvm.exp.nxv16f32(<vscale x 16 x float> undef) 262 call double @llvm.exp.f64(double undef) 263 call <2 x double> @llvm.exp.v2f64(<2 x double> undef) 264 call <4 x double> @llvm.exp.v4f64(<4 x double> undef) 265 call <8 x double> @llvm.exp.v8f64(<8 x double> undef) 266 call <16 x double> @llvm.exp.v16f64(<16 x double> undef) 267 call <vscale x 1 x double> @llvm.exp.nxv1f64(<vscale x 1 x double> undef) 268 call <vscale x 2 x double> @llvm.exp.nxv2f64(<vscale x 2 x double> undef) 269 call <vscale x 4 x double> @llvm.exp.nxv4f64(<vscale x 4 x double> undef) 270 call <vscale x 8 x double> @llvm.exp.nxv8f64(<vscale x 8 x double> undef) 271 ret void 272} 273 274define void @exp_f16() { 275; ZVFH-LABEL: 'exp_f16' 276; ZVFH-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %1 = call half @llvm.exp.f16(half undef) 277; ZVFH-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %2 = call <2 x half> @llvm.exp.v2f16(<2 x half> undef) 278; ZVFH-NEXT: Cost Model: Found an estimated cost of 8 for instruction: %3 = call <4 x half> @llvm.exp.v4f16(<4 x half> undef) 279; ZVFH-NEXT: Cost Model: Found an estimated cost of 16 for instruction: %4 = call <8 x half> @llvm.exp.v8f16(<8 x half> undef) 280; ZVFH-NEXT: Cost Model: Found an estimated cost of 47 for instruction: %5 = call <16 x half> @llvm.exp.v16f16(<16 x half> undef) 281; ZVFH-NEXT: Cost Model: Invalid cost for instruction: %6 = call <vscale x 1 x half> @llvm.exp.nxv1f16(<vscale x 1 x half> undef) 282; ZVFH-NEXT: Cost Model: Invalid cost for instruction: %7 = call <vscale x 2 x half> @llvm.exp.nxv2f16(<vscale x 2 x half> undef) 283; ZVFH-NEXT: Cost Model: Invalid cost for instruction: %8 = call <vscale x 4 x half> @llvm.exp.nxv4f16(<vscale x 4 x half> undef) 284; ZVFH-NEXT: Cost Model: Invalid cost for instruction: %9 = call <vscale x 8 x half> @llvm.exp.nxv8f16(<vscale x 8 x half> undef) 285; ZVFH-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret void 286; 287; ZVFHMIN-LABEL: 'exp_f16' 288; ZVFHMIN-NEXT: Cost Model: Found an estimated cost of 10 for instruction: %1 = call half @llvm.exp.f16(half undef) 289; ZVFHMIN-NEXT: Cost Model: Found an estimated cost of 22 for instruction: %2 = call <2 x half> @llvm.exp.v2f16(<2 x half> undef) 290; ZVFHMIN-NEXT: Cost Model: Found an estimated cost of 44 for instruction: %3 = call <4 x half> @llvm.exp.v4f16(<4 x half> undef) 291; ZVFHMIN-NEXT: Cost Model: Found an estimated cost of 88 for instruction: %4 = call <8 x half> @llvm.exp.v8f16(<8 x half> undef) 292; ZVFHMIN-NEXT: Cost Model: Found an estimated cost of 191 for instruction: %5 = call <16 x half> @llvm.exp.v16f16(<16 x half> undef) 293; ZVFHMIN-NEXT: Cost Model: Invalid cost for instruction: %6 = call <vscale x 1 x half> @llvm.exp.nxv1f16(<vscale x 1 x half> undef) 294; ZVFHMIN-NEXT: Cost Model: Invalid cost for instruction: %7 = call <vscale x 2 x half> @llvm.exp.nxv2f16(<vscale x 2 x half> undef) 295; ZVFHMIN-NEXT: Cost Model: Invalid cost for instruction: %8 = call <vscale x 4 x half> @llvm.exp.nxv4f16(<vscale x 4 x half> undef) 296; ZVFHMIN-NEXT: Cost Model: Invalid cost for instruction: %9 = call <vscale x 8 x half> @llvm.exp.nxv8f16(<vscale x 8 x half> undef) 297; ZVFHMIN-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret void 298; 299 call half @llvm.exp.f16(half undef) 300 call <2 x half> @llvm.exp.v2f16(<2 x half> undef) 301 call <4 x half> @llvm.exp.v4f16(<4 x half> undef) 302 call <8 x half> @llvm.exp.v8f16(<8 x half> undef) 303 call <16 x half> @llvm.exp.v16f16(<16 x half> undef) 304 call <vscale x 1 x half> @llvm.exp.nxv1f16(<vscale x 1 x half> undef) 305 call <vscale x 2 x half> @llvm.exp.nxv2f16(<vscale x 2 x half> undef) 306 call <vscale x 4 x half> @llvm.exp.nxv4f16(<vscale x 4 x half> undef) 307 call <vscale x 8 x half> @llvm.exp.nxv8f16(<vscale x 8 x half> undef) 308 ret void 309} 310 311define void @exp2() { 312; CHECK-LABEL: 'exp2' 313; CHECK-NEXT: Cost Model: Found an estimated cost of 10 for instruction: %1 = call bfloat @llvm.exp2.bf16(bfloat undef) 314; CHECK-NEXT: Cost Model: Found an estimated cost of 22 for instruction: %2 = call <2 x bfloat> @llvm.exp2.v2bf16(<2 x bfloat> undef) 315; CHECK-NEXT: Cost Model: Found an estimated cost of 44 for instruction: %3 = call <4 x bfloat> @llvm.exp2.v4bf16(<4 x bfloat> undef) 316; CHECK-NEXT: Cost Model: Found an estimated cost of 88 for instruction: %4 = call <8 x bfloat> @llvm.exp2.v8bf16(<8 x bfloat> undef) 317; CHECK-NEXT: Cost Model: Found an estimated cost of 191 for instruction: %5 = call <16 x bfloat> @llvm.exp2.v16bf16(<16 x bfloat> undef) 318; CHECK-NEXT: Cost Model: Invalid cost for instruction: %6 = call <vscale x 1 x bfloat> @llvm.exp2.nxv1bf16(<vscale x 1 x bfloat> undef) 319; CHECK-NEXT: Cost Model: Invalid cost for instruction: %7 = call <vscale x 2 x bfloat> @llvm.exp2.nxv2bf16(<vscale x 2 x bfloat> undef) 320; CHECK-NEXT: Cost Model: Invalid cost for instruction: %8 = call <vscale x 4 x bfloat> @llvm.exp2.nxv4bf16(<vscale x 4 x bfloat> undef) 321; CHECK-NEXT: Cost Model: Invalid cost for instruction: %9 = call <vscale x 8 x bfloat> @llvm.exp2.nxv8bf16(<vscale x 8 x bfloat> undef) 322; CHECK-NEXT: Cost Model: Invalid cost for instruction: %10 = call <vscale x 16 x bfloat> @llvm.exp2.nxv16bf16(<vscale x 16 x bfloat> undef) 323; CHECK-NEXT: Cost Model: Found an estimated cost of 10 for instruction: %11 = call float @llvm.exp2.f32(float undef) 324; CHECK-NEXT: Cost Model: Found an estimated cost of 22 for instruction: %12 = call <2 x float> @llvm.exp2.v2f32(<2 x float> undef) 325; CHECK-NEXT: Cost Model: Found an estimated cost of 44 for instruction: %13 = call <4 x float> @llvm.exp2.v4f32(<4 x float> undef) 326; CHECK-NEXT: Cost Model: Found an estimated cost of 95 for instruction: %14 = call <8 x float> @llvm.exp2.v8f32(<8 x float> undef) 327; CHECK-NEXT: Cost Model: Found an estimated cost of 191 for instruction: %15 = call <16 x float> @llvm.exp2.v16f32(<16 x float> undef) 328; CHECK-NEXT: Cost Model: Invalid cost for instruction: %16 = call <vscale x 1 x float> @llvm.exp2.nxv1f32(<vscale x 1 x float> undef) 329; CHECK-NEXT: Cost Model: Invalid cost for instruction: %17 = call <vscale x 2 x float> @llvm.exp2.nxv2f32(<vscale x 2 x float> undef) 330; CHECK-NEXT: Cost Model: Invalid cost for instruction: %18 = call <vscale x 4 x float> @llvm.exp2.nxv4f32(<vscale x 4 x float> undef) 331; CHECK-NEXT: Cost Model: Invalid cost for instruction: %19 = call <vscale x 8 x float> @llvm.exp2.nxv8f32(<vscale x 8 x float> undef) 332; CHECK-NEXT: Cost Model: Invalid cost for instruction: %20 = call <vscale x 16 x float> @llvm.exp2.nxv16f32(<vscale x 16 x float> undef) 333; CHECK-NEXT: Cost Model: Found an estimated cost of 10 for instruction: %21 = call double @llvm.exp2.f64(double undef) 334; CHECK-NEXT: Cost Model: Found an estimated cost of 22 for instruction: %22 = call <2 x double> @llvm.exp2.v2f64(<2 x double> undef) 335; CHECK-NEXT: Cost Model: Found an estimated cost of 47 for instruction: %23 = call <4 x double> @llvm.exp2.v4f64(<4 x double> undef) 336; CHECK-NEXT: Cost Model: Found an estimated cost of 95 for instruction: %24 = call <8 x double> @llvm.exp2.v8f64(<8 x double> undef) 337; CHECK-NEXT: Cost Model: Found an estimated cost of 191 for instruction: %25 = call <16 x double> @llvm.exp2.v16f64(<16 x double> undef) 338; CHECK-NEXT: Cost Model: Invalid cost for instruction: %26 = call <vscale x 1 x double> @llvm.exp2.nxv1f64(<vscale x 1 x double> undef) 339; CHECK-NEXT: Cost Model: Invalid cost for instruction: %27 = call <vscale x 2 x double> @llvm.exp2.nxv2f64(<vscale x 2 x double> undef) 340; CHECK-NEXT: Cost Model: Invalid cost for instruction: %28 = call <vscale x 4 x double> @llvm.exp2.nxv4f64(<vscale x 4 x double> undef) 341; CHECK-NEXT: Cost Model: Invalid cost for instruction: %29 = call <vscale x 8 x double> @llvm.exp2.nxv8f64(<vscale x 8 x double> undef) 342; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret void 343; 344 call bfloat @llvm.exp2.bf16(bfloat undef) 345 call <2 x bfloat> @llvm.exp2.v2bf16(<2 x bfloat> undef) 346 call <4 x bfloat> @llvm.exp2.v4bf16(<4 x bfloat> undef) 347 call <8 x bfloat> @llvm.exp2.v8bf16(<8 x bfloat> undef) 348 call <16 x bfloat> @llvm.exp2.v16bf16(<16 x bfloat> undef) 349 call <vscale x 1 x bfloat> @llvm.exp2.nxv1bf16(<vscale x 1 x bfloat> undef) 350 call <vscale x 2 x bfloat> @llvm.exp2.nxv2bf16(<vscale x 2 x bfloat> undef) 351 call <vscale x 4 x bfloat> @llvm.exp2.nxv4bf16(<vscale x 4 x bfloat> undef) 352 call <vscale x 8 x bfloat> @llvm.exp2.nxv8bf16(<vscale x 8 x bfloat> undef) 353 call <vscale x 16 x bfloat> @llvm.exp2.nxv16bf16(<vscale x 16 x bfloat> undef) 354 call float @llvm.exp2.f32(float undef) 355 call <2 x float> @llvm.exp2.v2f32(<2 x float> undef) 356 call <4 x float> @llvm.exp2.v4f32(<4 x float> undef) 357 call <8 x float> @llvm.exp2.v8f32(<8 x float> undef) 358 call <16 x float> @llvm.exp2.v16f32(<16 x float> undef) 359 call <vscale x 1 x float> @llvm.exp2.nxv1f32(<vscale x 1 x float> undef) 360 call <vscale x 2 x float> @llvm.exp2.nxv2f32(<vscale x 2 x float> undef) 361 call <vscale x 4 x float> @llvm.exp2.nxv4f32(<vscale x 4 x float> undef) 362 call <vscale x 8 x float> @llvm.exp2.nxv8f32(<vscale x 8 x float> undef) 363 call <vscale x 16 x float> @llvm.exp2.nxv16f32(<vscale x 16 x float> undef) 364 call double @llvm.exp2.f64(double undef) 365 call <2 x double> @llvm.exp2.v2f64(<2 x double> undef) 366 call <4 x double> @llvm.exp2.v4f64(<4 x double> undef) 367 call <8 x double> @llvm.exp2.v8f64(<8 x double> undef) 368 call <16 x double> @llvm.exp2.v16f64(<16 x double> undef) 369 call <vscale x 1 x double> @llvm.exp2.nxv1f64(<vscale x 1 x double> undef) 370 call <vscale x 2 x double> @llvm.exp2.nxv2f64(<vscale x 2 x double> undef) 371 call <vscale x 4 x double> @llvm.exp2.nxv4f64(<vscale x 4 x double> undef) 372 call <vscale x 8 x double> @llvm.exp2.nxv8f64(<vscale x 8 x double> undef) 373 ret void 374} 375 376define void @exp2_f16() { 377; ZVFH-LABEL: 'exp2_f16' 378; ZVFH-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %1 = call half @llvm.exp2.f16(half undef) 379; ZVFH-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %2 = call <2 x half> @llvm.exp2.v2f16(<2 x half> undef) 380; ZVFH-NEXT: Cost Model: Found an estimated cost of 8 for instruction: %3 = call <4 x half> @llvm.exp2.v4f16(<4 x half> undef) 381; ZVFH-NEXT: Cost Model: Found an estimated cost of 16 for instruction: %4 = call <8 x half> @llvm.exp2.v8f16(<8 x half> undef) 382; ZVFH-NEXT: Cost Model: Found an estimated cost of 47 for instruction: %5 = call <16 x half> @llvm.exp2.v16f16(<16 x half> undef) 383; ZVFH-NEXT: Cost Model: Invalid cost for instruction: %6 = call <vscale x 1 x half> @llvm.exp2.nxv1f16(<vscale x 1 x half> undef) 384; ZVFH-NEXT: Cost Model: Invalid cost for instruction: %7 = call <vscale x 2 x half> @llvm.exp2.nxv2f16(<vscale x 2 x half> undef) 385; ZVFH-NEXT: Cost Model: Invalid cost for instruction: %8 = call <vscale x 4 x half> @llvm.exp2.nxv4f16(<vscale x 4 x half> undef) 386; ZVFH-NEXT: Cost Model: Invalid cost for instruction: %9 = call <vscale x 8 x half> @llvm.exp2.nxv8f16(<vscale x 8 x half> undef) 387; ZVFH-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret void 388; 389; ZVFHMIN-LABEL: 'exp2_f16' 390; ZVFHMIN-NEXT: Cost Model: Found an estimated cost of 10 for instruction: %1 = call half @llvm.exp2.f16(half undef) 391; ZVFHMIN-NEXT: Cost Model: Found an estimated cost of 22 for instruction: %2 = call <2 x half> @llvm.exp2.v2f16(<2 x half> undef) 392; ZVFHMIN-NEXT: Cost Model: Found an estimated cost of 44 for instruction: %3 = call <4 x half> @llvm.exp2.v4f16(<4 x half> undef) 393; ZVFHMIN-NEXT: Cost Model: Found an estimated cost of 88 for instruction: %4 = call <8 x half> @llvm.exp2.v8f16(<8 x half> undef) 394; ZVFHMIN-NEXT: Cost Model: Found an estimated cost of 191 for instruction: %5 = call <16 x half> @llvm.exp2.v16f16(<16 x half> undef) 395; ZVFHMIN-NEXT: Cost Model: Invalid cost for instruction: %6 = call <vscale x 1 x half> @llvm.exp2.nxv1f16(<vscale x 1 x half> undef) 396; ZVFHMIN-NEXT: Cost Model: Invalid cost for instruction: %7 = call <vscale x 2 x half> @llvm.exp2.nxv2f16(<vscale x 2 x half> undef) 397; ZVFHMIN-NEXT: Cost Model: Invalid cost for instruction: %8 = call <vscale x 4 x half> @llvm.exp2.nxv4f16(<vscale x 4 x half> undef) 398; ZVFHMIN-NEXT: Cost Model: Invalid cost for instruction: %9 = call <vscale x 8 x half> @llvm.exp2.nxv8f16(<vscale x 8 x half> undef) 399; ZVFHMIN-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret void 400; 401 call half @llvm.exp2.f16(half undef) 402 call <2 x half> @llvm.exp2.v2f16(<2 x half> undef) 403 call <4 x half> @llvm.exp2.v4f16(<4 x half> undef) 404 call <8 x half> @llvm.exp2.v8f16(<8 x half> undef) 405 call <16 x half> @llvm.exp2.v16f16(<16 x half> undef) 406 call <vscale x 1 x half> @llvm.exp2.nxv1f16(<vscale x 1 x half> undef) 407 call <vscale x 2 x half> @llvm.exp2.nxv2f16(<vscale x 2 x half> undef) 408 call <vscale x 4 x half> @llvm.exp2.nxv4f16(<vscale x 4 x half> undef) 409 call <vscale x 8 x half> @llvm.exp2.nxv8f16(<vscale x 8 x half> undef) 410 ret void 411} 412 413define void @log() { 414; CHECK-LABEL: 'log' 415; CHECK-NEXT: Cost Model: Found an estimated cost of 10 for instruction: %1 = call bfloat @llvm.log.bf16(bfloat undef) 416; CHECK-NEXT: Cost Model: Found an estimated cost of 22 for instruction: %2 = call <2 x bfloat> @llvm.log.v2bf16(<2 x bfloat> undef) 417; CHECK-NEXT: Cost Model: Found an estimated cost of 44 for instruction: %3 = call <4 x bfloat> @llvm.log.v4bf16(<4 x bfloat> undef) 418; CHECK-NEXT: Cost Model: Found an estimated cost of 88 for instruction: %4 = call <8 x bfloat> @llvm.log.v8bf16(<8 x bfloat> undef) 419; CHECK-NEXT: Cost Model: Found an estimated cost of 191 for instruction: %5 = call <16 x bfloat> @llvm.log.v16bf16(<16 x bfloat> undef) 420; CHECK-NEXT: Cost Model: Invalid cost for instruction: %6 = call <vscale x 1 x bfloat> @llvm.log.nxv1bf16(<vscale x 1 x bfloat> undef) 421; CHECK-NEXT: Cost Model: Invalid cost for instruction: %7 = call <vscale x 2 x bfloat> @llvm.log.nxv2bf16(<vscale x 2 x bfloat> undef) 422; CHECK-NEXT: Cost Model: Invalid cost for instruction: %8 = call <vscale x 4 x bfloat> @llvm.log.nxv4bf16(<vscale x 4 x bfloat> undef) 423; CHECK-NEXT: Cost Model: Invalid cost for instruction: %9 = call <vscale x 8 x bfloat> @llvm.log.nxv8bf16(<vscale x 8 x bfloat> undef) 424; CHECK-NEXT: Cost Model: Invalid cost for instruction: %10 = call <vscale x 16 x bfloat> @llvm.log.nxv16bf16(<vscale x 16 x bfloat> undef) 425; CHECK-NEXT: Cost Model: Found an estimated cost of 10 for instruction: %11 = call float @llvm.log.f32(float undef) 426; CHECK-NEXT: Cost Model: Found an estimated cost of 22 for instruction: %12 = call <2 x float> @llvm.log.v2f32(<2 x float> undef) 427; CHECK-NEXT: Cost Model: Found an estimated cost of 44 for instruction: %13 = call <4 x float> @llvm.log.v4f32(<4 x float> undef) 428; CHECK-NEXT: Cost Model: Found an estimated cost of 95 for instruction: %14 = call <8 x float> @llvm.log.v8f32(<8 x float> undef) 429; CHECK-NEXT: Cost Model: Found an estimated cost of 191 for instruction: %15 = call <16 x float> @llvm.log.v16f32(<16 x float> undef) 430; CHECK-NEXT: Cost Model: Invalid cost for instruction: %16 = call <vscale x 1 x float> @llvm.log.nxv1f32(<vscale x 1 x float> undef) 431; CHECK-NEXT: Cost Model: Invalid cost for instruction: %17 = call <vscale x 2 x float> @llvm.log.nxv2f32(<vscale x 2 x float> undef) 432; CHECK-NEXT: Cost Model: Invalid cost for instruction: %18 = call <vscale x 4 x float> @llvm.log.nxv4f32(<vscale x 4 x float> undef) 433; CHECK-NEXT: Cost Model: Invalid cost for instruction: %19 = call <vscale x 8 x float> @llvm.log.nxv8f32(<vscale x 8 x float> undef) 434; CHECK-NEXT: Cost Model: Invalid cost for instruction: %20 = call <vscale x 16 x float> @llvm.log.nxv16f32(<vscale x 16 x float> undef) 435; CHECK-NEXT: Cost Model: Found an estimated cost of 10 for instruction: %21 = call double @llvm.log.f64(double undef) 436; CHECK-NEXT: Cost Model: Found an estimated cost of 22 for instruction: %22 = call <2 x double> @llvm.log.v2f64(<2 x double> undef) 437; CHECK-NEXT: Cost Model: Found an estimated cost of 47 for instruction: %23 = call <4 x double> @llvm.log.v4f64(<4 x double> undef) 438; CHECK-NEXT: Cost Model: Found an estimated cost of 95 for instruction: %24 = call <8 x double> @llvm.log.v8f64(<8 x double> undef) 439; CHECK-NEXT: Cost Model: Found an estimated cost of 191 for instruction: %25 = call <16 x double> @llvm.log.v16f64(<16 x double> undef) 440; CHECK-NEXT: Cost Model: Invalid cost for instruction: %26 = call <vscale x 1 x double> @llvm.log.nxv1f64(<vscale x 1 x double> undef) 441; CHECK-NEXT: Cost Model: Invalid cost for instruction: %27 = call <vscale x 2 x double> @llvm.log.nxv2f64(<vscale x 2 x double> undef) 442; CHECK-NEXT: Cost Model: Invalid cost for instruction: %28 = call <vscale x 4 x double> @llvm.log.nxv4f64(<vscale x 4 x double> undef) 443; CHECK-NEXT: Cost Model: Invalid cost for instruction: %29 = call <vscale x 8 x double> @llvm.log.nxv8f64(<vscale x 8 x double> undef) 444; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret void 445; 446 call bfloat @llvm.log.bf16(bfloat undef) 447 call <2 x bfloat> @llvm.log.v2bf16(<2 x bfloat> undef) 448 call <4 x bfloat> @llvm.log.v4bf16(<4 x bfloat> undef) 449 call <8 x bfloat> @llvm.log.v8bf16(<8 x bfloat> undef) 450 call <16 x bfloat> @llvm.log.v16bf16(<16 x bfloat> undef) 451 call <vscale x 1 x bfloat> @llvm.log.nxv1bf16(<vscale x 1 x bfloat> undef) 452 call <vscale x 2 x bfloat> @llvm.log.nxv2bf16(<vscale x 2 x bfloat> undef) 453 call <vscale x 4 x bfloat> @llvm.log.nxv4bf16(<vscale x 4 x bfloat> undef) 454 call <vscale x 8 x bfloat> @llvm.log.nxv8bf16(<vscale x 8 x bfloat> undef) 455 call <vscale x 16 x bfloat> @llvm.log.nxv16bf16(<vscale x 16 x bfloat> undef) 456 call float @llvm.log.f32(float undef) 457 call <2 x float> @llvm.log.v2f32(<2 x float> undef) 458 call <4 x float> @llvm.log.v4f32(<4 x float> undef) 459 call <8 x float> @llvm.log.v8f32(<8 x float> undef) 460 call <16 x float> @llvm.log.v16f32(<16 x float> undef) 461 call <vscale x 1 x float> @llvm.log.nxv1f32(<vscale x 1 x float> undef) 462 call <vscale x 2 x float> @llvm.log.nxv2f32(<vscale x 2 x float> undef) 463 call <vscale x 4 x float> @llvm.log.nxv4f32(<vscale x 4 x float> undef) 464 call <vscale x 8 x float> @llvm.log.nxv8f32(<vscale x 8 x float> undef) 465 call <vscale x 16 x float> @llvm.log.nxv16f32(<vscale x 16 x float> undef) 466 call double @llvm.log.f64(double undef) 467 call <2 x double> @llvm.log.v2f64(<2 x double> undef) 468 call <4 x double> @llvm.log.v4f64(<4 x double> undef) 469 call <8 x double> @llvm.log.v8f64(<8 x double> undef) 470 call <16 x double> @llvm.log.v16f64(<16 x double> undef) 471 call <vscale x 1 x double> @llvm.log.nxv1f64(<vscale x 1 x double> undef) 472 call <vscale x 2 x double> @llvm.log.nxv2f64(<vscale x 2 x double> undef) 473 call <vscale x 4 x double> @llvm.log.nxv4f64(<vscale x 4 x double> undef) 474 call <vscale x 8 x double> @llvm.log.nxv8f64(<vscale x 8 x double> undef) 475 ret void 476} 477 478define void @log_f16() { 479; ZVFH-LABEL: 'log_f16' 480; ZVFH-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %1 = call half @llvm.log.f16(half undef) 481; ZVFH-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %2 = call <2 x half> @llvm.log.v2f16(<2 x half> undef) 482; ZVFH-NEXT: Cost Model: Found an estimated cost of 8 for instruction: %3 = call <4 x half> @llvm.log.v4f16(<4 x half> undef) 483; ZVFH-NEXT: Cost Model: Found an estimated cost of 16 for instruction: %4 = call <8 x half> @llvm.log.v8f16(<8 x half> undef) 484; ZVFH-NEXT: Cost Model: Found an estimated cost of 47 for instruction: %5 = call <16 x half> @llvm.log.v16f16(<16 x half> undef) 485; ZVFH-NEXT: Cost Model: Invalid cost for instruction: %6 = call <vscale x 1 x half> @llvm.log.nxv1f16(<vscale x 1 x half> undef) 486; ZVFH-NEXT: Cost Model: Invalid cost for instruction: %7 = call <vscale x 2 x half> @llvm.log.nxv2f16(<vscale x 2 x half> undef) 487; ZVFH-NEXT: Cost Model: Invalid cost for instruction: %8 = call <vscale x 4 x half> @llvm.log.nxv4f16(<vscale x 4 x half> undef) 488; ZVFH-NEXT: Cost Model: Invalid cost for instruction: %9 = call <vscale x 8 x half> @llvm.log.nxv8f16(<vscale x 8 x half> undef) 489; ZVFH-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret void 490; 491; ZVFHMIN-LABEL: 'log_f16' 492; ZVFHMIN-NEXT: Cost Model: Found an estimated cost of 10 for instruction: %1 = call half @llvm.log.f16(half undef) 493; ZVFHMIN-NEXT: Cost Model: Found an estimated cost of 22 for instruction: %2 = call <2 x half> @llvm.log.v2f16(<2 x half> undef) 494; ZVFHMIN-NEXT: Cost Model: Found an estimated cost of 44 for instruction: %3 = call <4 x half> @llvm.log.v4f16(<4 x half> undef) 495; ZVFHMIN-NEXT: Cost Model: Found an estimated cost of 88 for instruction: %4 = call <8 x half> @llvm.log.v8f16(<8 x half> undef) 496; ZVFHMIN-NEXT: Cost Model: Found an estimated cost of 191 for instruction: %5 = call <16 x half> @llvm.log.v16f16(<16 x half> undef) 497; ZVFHMIN-NEXT: Cost Model: Invalid cost for instruction: %6 = call <vscale x 1 x half> @llvm.log.nxv1f16(<vscale x 1 x half> undef) 498; ZVFHMIN-NEXT: Cost Model: Invalid cost for instruction: %7 = call <vscale x 2 x half> @llvm.log.nxv2f16(<vscale x 2 x half> undef) 499; ZVFHMIN-NEXT: Cost Model: Invalid cost for instruction: %8 = call <vscale x 4 x half> @llvm.log.nxv4f16(<vscale x 4 x half> undef) 500; ZVFHMIN-NEXT: Cost Model: Invalid cost for instruction: %9 = call <vscale x 8 x half> @llvm.log.nxv8f16(<vscale x 8 x half> undef) 501; ZVFHMIN-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret void 502; 503 call half @llvm.log.f16(half undef) 504 call <2 x half> @llvm.log.v2f16(<2 x half> undef) 505 call <4 x half> @llvm.log.v4f16(<4 x half> undef) 506 call <8 x half> @llvm.log.v8f16(<8 x half> undef) 507 call <16 x half> @llvm.log.v16f16(<16 x half> undef) 508 call <vscale x 1 x half> @llvm.log.nxv1f16(<vscale x 1 x half> undef) 509 call <vscale x 2 x half> @llvm.log.nxv2f16(<vscale x 2 x half> undef) 510 call <vscale x 4 x half> @llvm.log.nxv4f16(<vscale x 4 x half> undef) 511 call <vscale x 8 x half> @llvm.log.nxv8f16(<vscale x 8 x half> undef) 512 ret void 513} 514 515define void @log10() { 516; CHECK-LABEL: 'log10' 517; CHECK-NEXT: Cost Model: Found an estimated cost of 10 for instruction: %1 = call bfloat @llvm.log10.bf16(bfloat undef) 518; CHECK-NEXT: Cost Model: Found an estimated cost of 22 for instruction: %2 = call <2 x bfloat> @llvm.log10.v2bf16(<2 x bfloat> undef) 519; CHECK-NEXT: Cost Model: Found an estimated cost of 44 for instruction: %3 = call <4 x bfloat> @llvm.log10.v4bf16(<4 x bfloat> undef) 520; CHECK-NEXT: Cost Model: Found an estimated cost of 88 for instruction: %4 = call <8 x bfloat> @llvm.log10.v8bf16(<8 x bfloat> undef) 521; CHECK-NEXT: Cost Model: Found an estimated cost of 191 for instruction: %5 = call <16 x bfloat> @llvm.log10.v16bf16(<16 x bfloat> undef) 522; CHECK-NEXT: Cost Model: Invalid cost for instruction: %6 = call <vscale x 1 x bfloat> @llvm.log10.nxv1bf16(<vscale x 1 x bfloat> undef) 523; CHECK-NEXT: Cost Model: Invalid cost for instruction: %7 = call <vscale x 2 x bfloat> @llvm.log10.nxv2bf16(<vscale x 2 x bfloat> undef) 524; CHECK-NEXT: Cost Model: Invalid cost for instruction: %8 = call <vscale x 4 x bfloat> @llvm.log10.nxv4bf16(<vscale x 4 x bfloat> undef) 525; CHECK-NEXT: Cost Model: Invalid cost for instruction: %9 = call <vscale x 8 x bfloat> @llvm.log10.nxv8bf16(<vscale x 8 x bfloat> undef) 526; CHECK-NEXT: Cost Model: Invalid cost for instruction: %10 = call <vscale x 16 x bfloat> @llvm.log10.nxv16bf16(<vscale x 16 x bfloat> undef) 527; CHECK-NEXT: Cost Model: Found an estimated cost of 10 for instruction: %11 = call float @llvm.log10.f32(float undef) 528; CHECK-NEXT: Cost Model: Found an estimated cost of 22 for instruction: %12 = call <2 x float> @llvm.log10.v2f32(<2 x float> undef) 529; CHECK-NEXT: Cost Model: Found an estimated cost of 44 for instruction: %13 = call <4 x float> @llvm.log10.v4f32(<4 x float> undef) 530; CHECK-NEXT: Cost Model: Found an estimated cost of 95 for instruction: %14 = call <8 x float> @llvm.log10.v8f32(<8 x float> undef) 531; CHECK-NEXT: Cost Model: Found an estimated cost of 191 for instruction: %15 = call <16 x float> @llvm.log10.v16f32(<16 x float> undef) 532; CHECK-NEXT: Cost Model: Invalid cost for instruction: %16 = call <vscale x 1 x float> @llvm.log10.nxv1f32(<vscale x 1 x float> undef) 533; CHECK-NEXT: Cost Model: Invalid cost for instruction: %17 = call <vscale x 2 x float> @llvm.log10.nxv2f32(<vscale x 2 x float> undef) 534; CHECK-NEXT: Cost Model: Invalid cost for instruction: %18 = call <vscale x 4 x float> @llvm.log10.nxv4f32(<vscale x 4 x float> undef) 535; CHECK-NEXT: Cost Model: Invalid cost for instruction: %19 = call <vscale x 8 x float> @llvm.log10.nxv8f32(<vscale x 8 x float> undef) 536; CHECK-NEXT: Cost Model: Invalid cost for instruction: %20 = call <vscale x 16 x float> @llvm.log10.nxv16f32(<vscale x 16 x float> undef) 537; CHECK-NEXT: Cost Model: Found an estimated cost of 10 for instruction: %21 = call double @llvm.log10.f64(double undef) 538; CHECK-NEXT: Cost Model: Found an estimated cost of 22 for instruction: %22 = call <2 x double> @llvm.log10.v2f64(<2 x double> undef) 539; CHECK-NEXT: Cost Model: Found an estimated cost of 47 for instruction: %23 = call <4 x double> @llvm.log10.v4f64(<4 x double> undef) 540; CHECK-NEXT: Cost Model: Found an estimated cost of 95 for instruction: %24 = call <8 x double> @llvm.log10.v8f64(<8 x double> undef) 541; CHECK-NEXT: Cost Model: Found an estimated cost of 191 for instruction: %25 = call <16 x double> @llvm.log10.v16f64(<16 x double> undef) 542; CHECK-NEXT: Cost Model: Invalid cost for instruction: %26 = call <vscale x 1 x double> @llvm.log10.nxv1f64(<vscale x 1 x double> undef) 543; CHECK-NEXT: Cost Model: Invalid cost for instruction: %27 = call <vscale x 2 x double> @llvm.log10.nxv2f64(<vscale x 2 x double> undef) 544; CHECK-NEXT: Cost Model: Invalid cost for instruction: %28 = call <vscale x 4 x double> @llvm.log10.nxv4f64(<vscale x 4 x double> undef) 545; CHECK-NEXT: Cost Model: Invalid cost for instruction: %29 = call <vscale x 8 x double> @llvm.log10.nxv8f64(<vscale x 8 x double> undef) 546; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret void 547; 548 call bfloat @llvm.log10.bf16(bfloat undef) 549 call <2 x bfloat> @llvm.log10.v2bf16(<2 x bfloat> undef) 550 call <4 x bfloat> @llvm.log10.v4bf16(<4 x bfloat> undef) 551 call <8 x bfloat> @llvm.log10.v8bf16(<8 x bfloat> undef) 552 call <16 x bfloat> @llvm.log10.v16bf16(<16 x bfloat> undef) 553 call <vscale x 1 x bfloat> @llvm.log10.nxv1bf16(<vscale x 1 x bfloat> undef) 554 call <vscale x 2 x bfloat> @llvm.log10.nxv2bf16(<vscale x 2 x bfloat> undef) 555 call <vscale x 4 x bfloat> @llvm.log10.nxv4bf16(<vscale x 4 x bfloat> undef) 556 call <vscale x 8 x bfloat> @llvm.log10.nxv8bf16(<vscale x 8 x bfloat> undef) 557 call <vscale x 16 x bfloat> @llvm.log10.nxv16bf16(<vscale x 16 x bfloat> undef) 558 call float @llvm.log10.f32(float undef) 559 call <2 x float> @llvm.log10.v2f32(<2 x float> undef) 560 call <4 x float> @llvm.log10.v4f32(<4 x float> undef) 561 call <8 x float> @llvm.log10.v8f32(<8 x float> undef) 562 call <16 x float> @llvm.log10.v16f32(<16 x float> undef) 563 call <vscale x 1 x float> @llvm.log10.nxv1f32(<vscale x 1 x float> undef) 564 call <vscale x 2 x float> @llvm.log10.nxv2f32(<vscale x 2 x float> undef) 565 call <vscale x 4 x float> @llvm.log10.nxv4f32(<vscale x 4 x float> undef) 566 call <vscale x 8 x float> @llvm.log10.nxv8f32(<vscale x 8 x float> undef) 567 call <vscale x 16 x float> @llvm.log10.nxv16f32(<vscale x 16 x float> undef) 568 call double @llvm.log10.f64(double undef) 569 call <2 x double> @llvm.log10.v2f64(<2 x double> undef) 570 call <4 x double> @llvm.log10.v4f64(<4 x double> undef) 571 call <8 x double> @llvm.log10.v8f64(<8 x double> undef) 572 call <16 x double> @llvm.log10.v16f64(<16 x double> undef) 573 call <vscale x 1 x double> @llvm.log10.nxv1f64(<vscale x 1 x double> undef) 574 call <vscale x 2 x double> @llvm.log10.nxv2f64(<vscale x 2 x double> undef) 575 call <vscale x 4 x double> @llvm.log10.nxv4f64(<vscale x 4 x double> undef) 576 call <vscale x 8 x double> @llvm.log10.nxv8f64(<vscale x 8 x double> undef) 577 ret void 578} 579 580define void @log10_f16() { 581; ZVFH-LABEL: 'log10_f16' 582; ZVFH-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %1 = call half @llvm.log10.f16(half undef) 583; ZVFH-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %2 = call <2 x half> @llvm.log10.v2f16(<2 x half> undef) 584; ZVFH-NEXT: Cost Model: Found an estimated cost of 8 for instruction: %3 = call <4 x half> @llvm.log10.v4f16(<4 x half> undef) 585; ZVFH-NEXT: Cost Model: Found an estimated cost of 16 for instruction: %4 = call <8 x half> @llvm.log10.v8f16(<8 x half> undef) 586; ZVFH-NEXT: Cost Model: Found an estimated cost of 47 for instruction: %5 = call <16 x half> @llvm.log10.v16f16(<16 x half> undef) 587; ZVFH-NEXT: Cost Model: Invalid cost for instruction: %6 = call <vscale x 1 x half> @llvm.log10.nxv1f16(<vscale x 1 x half> undef) 588; ZVFH-NEXT: Cost Model: Invalid cost for instruction: %7 = call <vscale x 2 x half> @llvm.log10.nxv2f16(<vscale x 2 x half> undef) 589; ZVFH-NEXT: Cost Model: Invalid cost for instruction: %8 = call <vscale x 4 x half> @llvm.log10.nxv4f16(<vscale x 4 x half> undef) 590; ZVFH-NEXT: Cost Model: Invalid cost for instruction: %9 = call <vscale x 8 x half> @llvm.log10.nxv8f16(<vscale x 8 x half> undef) 591; ZVFH-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret void 592; 593; ZVFHMIN-LABEL: 'log10_f16' 594; ZVFHMIN-NEXT: Cost Model: Found an estimated cost of 10 for instruction: %1 = call half @llvm.log10.f16(half undef) 595; ZVFHMIN-NEXT: Cost Model: Found an estimated cost of 22 for instruction: %2 = call <2 x half> @llvm.log10.v2f16(<2 x half> undef) 596; ZVFHMIN-NEXT: Cost Model: Found an estimated cost of 44 for instruction: %3 = call <4 x half> @llvm.log10.v4f16(<4 x half> undef) 597; ZVFHMIN-NEXT: Cost Model: Found an estimated cost of 88 for instruction: %4 = call <8 x half> @llvm.log10.v8f16(<8 x half> undef) 598; ZVFHMIN-NEXT: Cost Model: Found an estimated cost of 191 for instruction: %5 = call <16 x half> @llvm.log10.v16f16(<16 x half> undef) 599; ZVFHMIN-NEXT: Cost Model: Invalid cost for instruction: %6 = call <vscale x 1 x half> @llvm.log10.nxv1f16(<vscale x 1 x half> undef) 600; ZVFHMIN-NEXT: Cost Model: Invalid cost for instruction: %7 = call <vscale x 2 x half> @llvm.log10.nxv2f16(<vscale x 2 x half> undef) 601; ZVFHMIN-NEXT: Cost Model: Invalid cost for instruction: %8 = call <vscale x 4 x half> @llvm.log10.nxv4f16(<vscale x 4 x half> undef) 602; ZVFHMIN-NEXT: Cost Model: Invalid cost for instruction: %9 = call <vscale x 8 x half> @llvm.log10.nxv8f16(<vscale x 8 x half> undef) 603; ZVFHMIN-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret void 604; 605 call half @llvm.log10.f16(half undef) 606 call <2 x half> @llvm.log10.v2f16(<2 x half> undef) 607 call <4 x half> @llvm.log10.v4f16(<4 x half> undef) 608 call <8 x half> @llvm.log10.v8f16(<8 x half> undef) 609 call <16 x half> @llvm.log10.v16f16(<16 x half> undef) 610 call <vscale x 1 x half> @llvm.log10.nxv1f16(<vscale x 1 x half> undef) 611 call <vscale x 2 x half> @llvm.log10.nxv2f16(<vscale x 2 x half> undef) 612 call <vscale x 4 x half> @llvm.log10.nxv4f16(<vscale x 4 x half> undef) 613 call <vscale x 8 x half> @llvm.log10.nxv8f16(<vscale x 8 x half> undef) 614 ret void 615} 616 617define void @log2() { 618; CHECK-LABEL: 'log2' 619; CHECK-NEXT: Cost Model: Found an estimated cost of 10 for instruction: %1 = call bfloat @llvm.log2.bf16(bfloat undef) 620; CHECK-NEXT: Cost Model: Found an estimated cost of 22 for instruction: %2 = call <2 x bfloat> @llvm.log2.v2bf16(<2 x bfloat> undef) 621; CHECK-NEXT: Cost Model: Found an estimated cost of 44 for instruction: %3 = call <4 x bfloat> @llvm.log2.v4bf16(<4 x bfloat> undef) 622; CHECK-NEXT: Cost Model: Found an estimated cost of 88 for instruction: %4 = call <8 x bfloat> @llvm.log2.v8bf16(<8 x bfloat> undef) 623; CHECK-NEXT: Cost Model: Found an estimated cost of 191 for instruction: %5 = call <16 x bfloat> @llvm.log2.v16bf16(<16 x bfloat> undef) 624; CHECK-NEXT: Cost Model: Invalid cost for instruction: %6 = call <vscale x 1 x bfloat> @llvm.log2.nxv1bf16(<vscale x 1 x bfloat> undef) 625; CHECK-NEXT: Cost Model: Invalid cost for instruction: %7 = call <vscale x 2 x bfloat> @llvm.log2.nxv2bf16(<vscale x 2 x bfloat> undef) 626; CHECK-NEXT: Cost Model: Invalid cost for instruction: %8 = call <vscale x 4 x bfloat> @llvm.log2.nxv4bf16(<vscale x 4 x bfloat> undef) 627; CHECK-NEXT: Cost Model: Invalid cost for instruction: %9 = call <vscale x 8 x bfloat> @llvm.log2.nxv8bf16(<vscale x 8 x bfloat> undef) 628; CHECK-NEXT: Cost Model: Invalid cost for instruction: %10 = call <vscale x 16 x bfloat> @llvm.log2.nxv16bf16(<vscale x 16 x bfloat> undef) 629; CHECK-NEXT: Cost Model: Found an estimated cost of 10 for instruction: %11 = call float @llvm.log2.f32(float undef) 630; CHECK-NEXT: Cost Model: Found an estimated cost of 22 for instruction: %12 = call <2 x float> @llvm.log2.v2f32(<2 x float> undef) 631; CHECK-NEXT: Cost Model: Found an estimated cost of 44 for instruction: %13 = call <4 x float> @llvm.log2.v4f32(<4 x float> undef) 632; CHECK-NEXT: Cost Model: Found an estimated cost of 95 for instruction: %14 = call <8 x float> @llvm.log2.v8f32(<8 x float> undef) 633; CHECK-NEXT: Cost Model: Found an estimated cost of 191 for instruction: %15 = call <16 x float> @llvm.log2.v16f32(<16 x float> undef) 634; CHECK-NEXT: Cost Model: Invalid cost for instruction: %16 = call <vscale x 1 x float> @llvm.log2.nxv1f32(<vscale x 1 x float> undef) 635; CHECK-NEXT: Cost Model: Invalid cost for instruction: %17 = call <vscale x 2 x float> @llvm.log2.nxv2f32(<vscale x 2 x float> undef) 636; CHECK-NEXT: Cost Model: Invalid cost for instruction: %18 = call <vscale x 4 x float> @llvm.log2.nxv4f32(<vscale x 4 x float> undef) 637; CHECK-NEXT: Cost Model: Invalid cost for instruction: %19 = call <vscale x 8 x float> @llvm.log2.nxv8f32(<vscale x 8 x float> undef) 638; CHECK-NEXT: Cost Model: Invalid cost for instruction: %20 = call <vscale x 16 x float> @llvm.log2.nxv16f32(<vscale x 16 x float> undef) 639; CHECK-NEXT: Cost Model: Found an estimated cost of 10 for instruction: %21 = call double @llvm.log2.f64(double undef) 640; CHECK-NEXT: Cost Model: Found an estimated cost of 22 for instruction: %22 = call <2 x double> @llvm.log2.v2f64(<2 x double> undef) 641; CHECK-NEXT: Cost Model: Found an estimated cost of 47 for instruction: %23 = call <4 x double> @llvm.log2.v4f64(<4 x double> undef) 642; CHECK-NEXT: Cost Model: Found an estimated cost of 95 for instruction: %24 = call <8 x double> @llvm.log2.v8f64(<8 x double> undef) 643; CHECK-NEXT: Cost Model: Found an estimated cost of 191 for instruction: %25 = call <16 x double> @llvm.log2.v16f64(<16 x double> undef) 644; CHECK-NEXT: Cost Model: Invalid cost for instruction: %26 = call <vscale x 1 x double> @llvm.log2.nxv1f64(<vscale x 1 x double> undef) 645; CHECK-NEXT: Cost Model: Invalid cost for instruction: %27 = call <vscale x 2 x double> @llvm.log2.nxv2f64(<vscale x 2 x double> undef) 646; CHECK-NEXT: Cost Model: Invalid cost for instruction: %28 = call <vscale x 4 x double> @llvm.log2.nxv4f64(<vscale x 4 x double> undef) 647; CHECK-NEXT: Cost Model: Invalid cost for instruction: %29 = call <vscale x 8 x double> @llvm.log2.nxv8f64(<vscale x 8 x double> undef) 648; CHECK-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret void 649; 650 call bfloat @llvm.log2.bf16(bfloat undef) 651 call <2 x bfloat> @llvm.log2.v2bf16(<2 x bfloat> undef) 652 call <4 x bfloat> @llvm.log2.v4bf16(<4 x bfloat> undef) 653 call <8 x bfloat> @llvm.log2.v8bf16(<8 x bfloat> undef) 654 call <16 x bfloat> @llvm.log2.v16bf16(<16 x bfloat> undef) 655 call <vscale x 1 x bfloat> @llvm.log2.nxv1bf16(<vscale x 1 x bfloat> undef) 656 call <vscale x 2 x bfloat> @llvm.log2.nxv2bf16(<vscale x 2 x bfloat> undef) 657 call <vscale x 4 x bfloat> @llvm.log2.nxv4bf16(<vscale x 4 x bfloat> undef) 658 call <vscale x 8 x bfloat> @llvm.log2.nxv8bf16(<vscale x 8 x bfloat> undef) 659 call <vscale x 16 x bfloat> @llvm.log2.nxv16bf16(<vscale x 16 x bfloat> undef) 660 call float @llvm.log2.f32(float undef) 661 call <2 x float> @llvm.log2.v2f32(<2 x float> undef) 662 call <4 x float> @llvm.log2.v4f32(<4 x float> undef) 663 call <8 x float> @llvm.log2.v8f32(<8 x float> undef) 664 call <16 x float> @llvm.log2.v16f32(<16 x float> undef) 665 call <vscale x 1 x float> @llvm.log2.nxv1f32(<vscale x 1 x float> undef) 666 call <vscale x 2 x float> @llvm.log2.nxv2f32(<vscale x 2 x float> undef) 667 call <vscale x 4 x float> @llvm.log2.nxv4f32(<vscale x 4 x float> undef) 668 call <vscale x 8 x float> @llvm.log2.nxv8f32(<vscale x 8 x float> undef) 669 call <vscale x 16 x float> @llvm.log2.nxv16f32(<vscale x 16 x float> undef) 670 call double @llvm.log2.f64(double undef) 671 call <2 x double> @llvm.log2.v2f64(<2 x double> undef) 672 call <4 x double> @llvm.log2.v4f64(<4 x double> undef) 673 call <8 x double> @llvm.log2.v8f64(<8 x double> undef) 674 call <16 x double> @llvm.log2.v16f64(<16 x double> undef) 675 call <vscale x 1 x double> @llvm.log2.nxv1f64(<vscale x 1 x double> undef) 676 call <vscale x 2 x double> @llvm.log2.nxv2f64(<vscale x 2 x double> undef) 677 call <vscale x 4 x double> @llvm.log2.nxv4f64(<vscale x 4 x double> undef) 678 call <vscale x 8 x double> @llvm.log2.nxv8f64(<vscale x 8 x double> undef) 679 ret void 680} 681 682define void @log2_f16() { 683; ZVFH-LABEL: 'log2_f16' 684; ZVFH-NEXT: Cost Model: Found an estimated cost of 1 for instruction: %1 = call half @llvm.log2.f16(half undef) 685; ZVFH-NEXT: Cost Model: Found an estimated cost of 4 for instruction: %2 = call <2 x half> @llvm.log2.v2f16(<2 x half> undef) 686; ZVFH-NEXT: Cost Model: Found an estimated cost of 8 for instruction: %3 = call <4 x half> @llvm.log2.v4f16(<4 x half> undef) 687; ZVFH-NEXT: Cost Model: Found an estimated cost of 16 for instruction: %4 = call <8 x half> @llvm.log2.v8f16(<8 x half> undef) 688; ZVFH-NEXT: Cost Model: Found an estimated cost of 47 for instruction: %5 = call <16 x half> @llvm.log2.v16f16(<16 x half> undef) 689; ZVFH-NEXT: Cost Model: Invalid cost for instruction: %6 = call <vscale x 1 x half> @llvm.log2.nxv1f16(<vscale x 1 x half> undef) 690; ZVFH-NEXT: Cost Model: Invalid cost for instruction: %7 = call <vscale x 2 x half> @llvm.log2.nxv2f16(<vscale x 2 x half> undef) 691; ZVFH-NEXT: Cost Model: Invalid cost for instruction: %8 = call <vscale x 4 x half> @llvm.log2.nxv4f16(<vscale x 4 x half> undef) 692; ZVFH-NEXT: Cost Model: Invalid cost for instruction: %9 = call <vscale x 8 x half> @llvm.log2.nxv8f16(<vscale x 8 x half> undef) 693; ZVFH-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret void 694; 695; ZVFHMIN-LABEL: 'log2_f16' 696; ZVFHMIN-NEXT: Cost Model: Found an estimated cost of 10 for instruction: %1 = call half @llvm.log2.f16(half undef) 697; ZVFHMIN-NEXT: Cost Model: Found an estimated cost of 22 for instruction: %2 = call <2 x half> @llvm.log2.v2f16(<2 x half> undef) 698; ZVFHMIN-NEXT: Cost Model: Found an estimated cost of 44 for instruction: %3 = call <4 x half> @llvm.log2.v4f16(<4 x half> undef) 699; ZVFHMIN-NEXT: Cost Model: Found an estimated cost of 88 for instruction: %4 = call <8 x half> @llvm.log2.v8f16(<8 x half> undef) 700; ZVFHMIN-NEXT: Cost Model: Found an estimated cost of 191 for instruction: %5 = call <16 x half> @llvm.log2.v16f16(<16 x half> undef) 701; ZVFHMIN-NEXT: Cost Model: Invalid cost for instruction: %6 = call <vscale x 1 x half> @llvm.log2.nxv1f16(<vscale x 1 x half> undef) 702; ZVFHMIN-NEXT: Cost Model: Invalid cost for instruction: %7 = call <vscale x 2 x half> @llvm.log2.nxv2f16(<vscale x 2 x half> undef) 703; ZVFHMIN-NEXT: Cost Model: Invalid cost for instruction: %8 = call <vscale x 4 x half> @llvm.log2.nxv4f16(<vscale x 4 x half> undef) 704; ZVFHMIN-NEXT: Cost Model: Invalid cost for instruction: %9 = call <vscale x 8 x half> @llvm.log2.nxv8f16(<vscale x 8 x half> undef) 705; ZVFHMIN-NEXT: Cost Model: Found an estimated cost of 0 for instruction: ret void 706; 707 call half @llvm.log2.f16(half undef) 708 call <2 x half> @llvm.log2.v2f16(<2 x half> undef) 709 call <4 x half> @llvm.log2.v4f16(<4 x half> undef) 710 call <8 x half> @llvm.log2.v8f16(<8 x half> undef) 711 call <16 x half> @llvm.log2.v16f16(<16 x half> undef) 712 call <vscale x 1 x half> @llvm.log2.nxv1f16(<vscale x 1 x half> undef) 713 call <vscale x 2 x half> @llvm.log2.nxv2f16(<vscale x 2 x half> undef) 714 call <vscale x 4 x half> @llvm.log2.nxv4f16(<vscale x 4 x half> undef) 715 call <vscale x 8 x half> @llvm.log2.nxv8f16(<vscale x 8 x half> undef) 716 ret void 717} 718 719