brintos

brintos / llvm-project-archived public Read only

0
0
Text · 6.2 KiB · 9e93674 Raw
296 lines · bash
1#!/bin/bash2 3# ULP error check script.4#5# Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.6# See https://llvm.org/LICENSE.txt for license information.7# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception8 9#set -x10set -eu11 12# cd to bin directory.13cd "${0%/*}"14 15rmodes='n u d z'16#rmodes=n17flags="${ULPFLAGS:--q}"18emu="$@"19 20FAIL=021PASS=022 23t() {24	[ $r = "n" ] && Lt=$L || Lt=$Ldir25	$emu ./ulp -r $r -e $Lt $flags "$@" && PASS=$((PASS+1)) || FAIL=$((FAIL+1))26}27 28check() {29	$emu ./ulp -f -q "$@" >/dev/null30}31 32Ldir=0.533for r in $rmodes34do35L=0.0136t exp  0 0xffff000000000000 1000037t exp  0x1p-6     0x1p6     4000038t exp -0x1p-6    -0x1p6     4000039t exp  633.3      733.3     1000040t exp -633.3     -777.3     1000041 42L=0.0143t exp2  0 0xffff000000000000 1000044t exp2  0x1p-6     0x1p6     4000045t exp2 -0x1p-6    -0x1p6     4000046t exp2  633.3      733.3     1000047t exp2 -633.3     -777.3     1000048 49L=0.0250t log  0 0xffff000000000000 1000051t log  0x1p-4    0x1p4      4000052t log  0         inf        4000053 54L=0.0555t log2  0 0xffff000000000000 1000056t log2  0x1p-4    0x1p4      4000057t log2  0         inf        4000058 59L=0.0560t pow  0.5  2.0  x  0  inf 2000061t pow -0.5 -2.0  x  0  inf 2000062t pow  0.5  2.0  x -0 -inf 2000063t pow -0.5 -2.0  x -0 -inf 2000064t pow  0.5  2.0  x  0x1p-10  0x1p10  4000065t pow  0.5  2.0  x -0x1p-10 -0x1p10  4000066t pow  0    inf  x    0.5      2.0   8000067t pow  0    inf  x   -0.5     -2.0   8000068t pow  0x1.fp-1   0x1.08p0  x  0x1p8 0x1p17  8000069t pow  0x1.fp-1   0x1.08p0  x -0x1p8 -0x1p17 8000070t pow  0         0x1p-1000  x  0 1.0 5000071t pow  0x1p1000        inf  x  0 1.0 5000072t pow  0x1.ffffffffffff0p-1  0x1.0000000000008p0 x 0x1p60 0x1p68 5000073t pow  0x1.ffffffffff000p-1  0x1p0 x 0x1p50 0x1p52 5000074t pow -0x1.ffffffffff000p-1 -0x1p0 x 0x1p50 0x1p52 5000075 76L=0.0177t expf  0    0xffff0000    1000078t expf  0x1p-14   0x1p8    5000079t expf -0x1p-14  -0x1p8    5000080 81L=0.0182t exp2f  0    0xffff0000   1000083t exp2f  0x1p-14   0x1p8   5000084t exp2f -0x1p-14  -0x1p8   5000085 86L=0.3287t logf  0    0xffff0000    1000088t logf  0x1p-4    0x1p4    5000089t logf  0         inf      5000090 91L=0.2692t log2f  0    0xffff0000   1000093t log2f  0x1p-4    0x1p4   5000094t log2f  0         inf     5000095 96#L=0.0697#t sinf  0    0xffff0000    1000098#t sinf  0x1p-14  0x1p54    5000099#t sinf -0x1p-14 -0x1p54    50000100#101#L=0.06102#t cosf  0    0xffff0000    10000103#t cosf  0x1p-14  0x1p54    50000104#t cosf -0x1p-14 -0x1p54    50000105#106#L=0.06107#t sincosf_sinf  0    0xffff0000    10000108#t sincosf_sinf  0x1p-14  0x1p54    50000109#t sincosf_sinf -0x1p-14 -0x1p54    50000110#111#L=0.06112#t sincosf_cosf  0    0xffff0000    10000113#t sincosf_cosf  0x1p-14  0x1p54    50000114#t sincosf_cosf -0x1p-14 -0x1p54    50000115 116L=0.4117t powf  0x1p-1   0x1p1  x  0x1p-7 0x1p7   50000118t powf  0x1p-1   0x1p1  x -0x1p-7 -0x1p7  50000119t powf  0x1p-70 0x1p70  x  0x1p-1 0x1p1   50000120t powf  0x1p-70 0x1p70  x  -0x1p-1 -0x1p1 50000121t powf  0x1.ep-1 0x1.1p0 x  0x1p8 0x1p14  50000122t powf  0x1.ep-1 0x1.1p0 x -0x1p8 -0x1p14 50000123done124 125# vector functions126Ldir=0.5127r='n'128flags="${ULPFLAGS:--q} -f"129runs=130check __s_exp 1 && runs=1131runv=132check __v_exp 1 && runv=1133runvn=134check __vn_exp 1 && runvn=1135 136range_exp='137  0 0xffff000000000000 10000138  0x1p-6     0x1p6     400000139 -0x1p-6    -0x1p6     400000140  633.3      733.3     10000141 -633.3     -777.3     10000142'143 144range_log='145  0 0xffff000000000000 10000146  0x1p-4     0x1p4     400000147  0          inf       400000148'149 150range_pow='151 0x1p-1   0x1p1  x  0x1p-10 0x1p10   50000152 0x1p-1   0x1p1  x -0x1p-10 -0x1p10  50000153 0x1p-500 0x1p500  x  0x1p-1 0x1p1   50000154 0x1p-500 0x1p500  x  -0x1p-1 -0x1p1 50000155 0x1.ep-1 0x1.1p0 x  0x1p8 0x1p16    50000156 0x1.ep-1 0x1.1p0 x -0x1p8 -0x1p16   50000157'158 159range_sin='160  0 0xffff000000000000 10000161  0x1p-4     0x1p4     400000162 -0x1p-23    0x1p23    400000163'164range_cos="$range_sin"165 166range_expf='167  0    0xffff0000    10000168  0x1p-14   0x1p8    500000169 -0x1p-14  -0x1p8    500000170'171 172range_expf_1u="$range_expf"173range_exp2f="$range_expf"174range_exp2f_1u="$range_expf"175 176range_logf='177 0    0xffff0000    10000178 0x1p-4    0x1p4    500000179'180 181range_sinf='182 0    0xffff0000    10000183 0x1p-4    0x1p4    300000184-0x1p-9   -0x1p9    300000185'186range_cosf="$range_sinf"187 188range_powf='189 0x1p-1   0x1p1  x  0x1p-7 0x1p7   50000190 0x1p-1   0x1p1  x -0x1p-7 -0x1p7  50000191 0x1p-70 0x1p70  x  0x1p-1 0x1p1   50000192 0x1p-70 0x1p70  x  -0x1p-1 -0x1p1 50000193 0x1.ep-1 0x1.1p0 x  0x1p8 0x1p14  50000194 0x1.ep-1 0x1.1p0 x -0x1p8 -0x1p14 50000195'196 197# error limits198L_exp=1.9199L_log=1.2200L_pow=0.05201L_sin=3.0202L_cos=3.0203L_expf=1.49204L_expf_1u=0.4205L_exp2f=1.49206L_exp2f_1u=0.4207L_logf=2.9208L_sinf=1.4209L_cosf=1.4210L_powf=2.1211 212while read G F R213do214	[ "$R" = 1 ] || continue215	case "$G" in \#*) continue ;; esac216	eval range="\${range_$G}"217	eval L="\${L_$G}"218	while read X219	do220		[ -n "$X" ] || continue221		case "$X" in \#*) continue ;; esac222		t $F $X223	done << EOF224$range225EOF226done << EOF227# group symbol run228exp  __s_exp       $runs229exp  __v_exp       $runv230exp  __vn_exp      $runvn231exp  _ZGVnN2v_exp  $runvn232 233log  __s_log       $runs234log  __v_log       $runv235log  __vn_log      $runvn236log  _ZGVnN2v_log  $runvn237 238pow __s_pow       $runs239pow __v_pow       $runv240pow __vn_pow      $runvn241pow _ZGVnN2vv_pow $runvn242 243sin __s_sin       $runs244sin __v_sin       $runv245sin __vn_sin      $runvn246sin _ZGVnN2v_sin  $runvn247 248cos __s_cos       $runs249cos __v_cos       $runv250cos __vn_cos      $runvn251cos _ZGVnN2v_cos  $runvn252 253expf __s_expf      $runs254expf __v_expf      $runv255expf __vn_expf     $runvn256expf _ZGVnN4v_expf $runvn257 258expf_1u __s_expf_1u   $runs259expf_1u __v_expf_1u   $runv260expf_1u __vn_expf_1u  $runvn261 262exp2f __s_exp2f      $runs263exp2f __v_exp2f      $runv264exp2f __vn_exp2f     $runvn265exp2f _ZGVnN4v_exp2f $runvn266 267exp2f_1u __s_exp2f_1u  $runs268exp2f_1u __v_exp2f_1u  $runv269exp2f_1u __vn_exp2f_1u $runvn270 271logf __s_logf      $runs272logf __v_logf      $runv273logf __vn_logf     $runvn274logf _ZGVnN4v_logf $runvn275 276sinf __s_sinf      $runs277sinf __v_sinf      $runv278sinf __vn_sinf     $runvn279sinf _ZGVnN4v_sinf $runvn280 281cosf __s_cosf      $runs282cosf __v_cosf      $runv283cosf __vn_cosf     $runvn284cosf _ZGVnN4v_cosf $runvn285 286powf __s_powf       $runs287powf __v_powf       $runv288powf __vn_powf      $runvn289powf _ZGVnN4vv_powf $runvn290EOF291 292[ 0 -eq $FAIL ] || {293	echo "FAILED $FAIL PASSED $PASS"294	exit 1295}296