1 1.1 christos # sh testcase for fsrra 2 1.1 christos # mach: sh 3 1.1 christos # as(sh): -defsym sim_cpu=0 4 1.1 christos # xerror: test hasn't been run in a long time 5 1.1 christos 6 1.1 christos .include "testutils.inc" 7 1.1 christos 8 1.1 christos start 9 1.1 christos fsrra_single: 10 1.1 christos set_grs_a5a5 11 1.1 christos set_fprs_a5a5 12 1.1 christos # 1/sqrt(0.0) = +infinity. 13 1.1 christos fldi0 fr0 14 1.1 christos fsrra fr0 15 1.1 christos assert_fpreg_x 0x7f800000, fr0 16 1.1 christos 17 1.1 christos # 1/sqrt(1.0) = 1.0. 18 1.1 christos fldi1 fr0 19 1.1 christos fsrra fr0 20 1.1 christos assert_fpreg_i 1, fr0 21 1.1 christos 22 1.1 christos # 1/sqrt(4.0) = 1/2.0 23 1.1 christos fldi1 fr0 24 1.1 christos # Double it. 25 1.1 christos fadd fr0, fr0 26 1.1 christos # Double it again. 27 1.1 christos fadd fr0, fr0 28 1.1 christos fsrra fr0 29 1.1 christos fldi1 fr2 30 1.1 christos # Double it. 31 1.1 christos fadd fr2, fr2 32 1.1 christos fldi1 fr1 33 1.1 christos # Divide 34 1.1 christos fdiv fr2, fr1 35 1.1 christos fcmp/eq fr0, fr1 36 1.1 christos bt .L2 37 1.1 christos fail 38 1.1 christos .L2: 39 1.1 christos # Double-check (pun intended) 40 1.1 christos fadd fr0, fr0 41 1.1 christos assert_fpreg_i 1, fr0 42 1.1 christos fadd fr1, fr1 43 1.1 christos assert_fpreg_i 1, fr1 44 1.1 christos 45 1.1 christos # And make sure the rest of the regs are un-affected. 46 1.1 christos assert_fpreg_i 2, fr2 47 1.1 christos test_fpr_a5a5 fr3 48 1.1 christos test_fpr_a5a5 fr4 49 1.1 christos test_fpr_a5a5 fr5 50 1.1 christos test_fpr_a5a5 fr6 51 1.1 christos test_fpr_a5a5 fr7 52 1.1 christos test_fpr_a5a5 fr8 53 1.1 christos test_fpr_a5a5 fr9 54 1.1 christos test_fpr_a5a5 fr10 55 1.1 christos test_fpr_a5a5 fr11 56 1.1 christos test_fpr_a5a5 fr12 57 1.1 christos test_fpr_a5a5 fr13 58 1.1 christos test_fpr_a5a5 fr14 59 1.1 christos test_fpr_a5a5 fr15 60 1.1 christos test_grs_a5a5 61 1.1 christos 62 1.1 christos pass 63 1.1 christos exit 0 64