1218822Sdim# sh testcase for fdiv 285815Sobrien# mach: sh 385815Sobrien# as(sh): -defsym sim_cpu=0 485815Sobrien 585815Sobrien .include "testutils.inc" 685815Sobrien 785815Sobrien start 885815Sobrienfdiv_single: 985815Sobrien # Single test 1085815Sobrien set_grs_a5a5 1185815Sobrien set_fprs_a5a5 1285815Sobrien single_prec 1385815Sobrien # 1.0 / 0.0 should be INF 1485815Sobrien # (and not crash the sim). 1585815Sobrien fldi0 fr0 1685815Sobrien fldi1 fr1 1785815Sobrien fdiv fr0, fr1 1885815Sobrien assert_fpreg_x 0x7f800000, fr1 1985815Sobrien 2085815Sobrien # 0.0 / 1.0 == 0.0. 2185815Sobrien fldi0 fr0 2285815Sobrien fldi1 fr1 2385815Sobrien fdiv fr1, fr0 2485815Sobrien assert_fpreg_x 0, fr0 2585815Sobrien 2685815Sobrien # 2.0 / 1.0 == 2.0. 2785815Sobrien fldi1 fr1 2885815Sobrien fldi1 fr2 2985815Sobrien fadd fr2, fr2 3085815Sobrien fdiv fr1, fr2 3185815Sobrien assert_fpreg_i 2, fr2 3285815Sobrien 3385815Sobrien # (1.0 / 2.0) + (1.0 / 2.0) == 1.0. 3485815Sobrien fldi1 fr1 3585815Sobrien fldi1 fr2 3685815Sobrien fadd fr2, fr2 37218822Sdim fdiv fr2, fr1 3885815Sobrien # fr1 should contain 0.5. 3985815Sobrien fadd fr1, fr1 4085815Sobrien assert_fpreg_i 1, fr1 4185815Sobrien test_grs_a5a5 4285815Sobrien assert_fpreg_i 2, fr2 4385815Sobrien test_fpr_a5a5 fr3 4485815Sobrien test_fpr_a5a5 fr4 4585815Sobrien test_fpr_a5a5 fr5 4685815Sobrien test_fpr_a5a5 fr6 4785815Sobrien test_fpr_a5a5 fr7 4885815Sobrien test_fpr_a5a5 fr8 49218822Sdim test_fpr_a5a5 fr9 50218822Sdim test_fpr_a5a5 fr10 5185815Sobrien test_fpr_a5a5 fr11 5285815Sobrien test_fpr_a5a5 fr12 5385815Sobrien test_fpr_a5a5 fr13 5485815Sobrien test_fpr_a5a5 fr14 5585815Sobrien test_fpr_a5a5 fr15 5685815Sobrien 5785815Sobrienfdiv_double: 5885815Sobrien # Double test 5985815Sobrien set_grs_a5a5 6085815Sobrien set_fprs_a5a5 6185815Sobrien # (1.0 / 2.0) + (1.0 / 2.0) == 1.0. 6285815Sobrien fldi1 fr1 6385815Sobrien fldi1 fr2 6485815Sobrien # This add must be in single precision. The rest must be in double. 6585815Sobrien fadd fr2, fr2 6685815Sobrien double_prec 6785815Sobrien _s2d fr1, dr0 6885815Sobrien _s2d fr2, dr2 6985815Sobrien fdiv dr2, dr0 7085815Sobrien # dr0 should contain 0.5. 7185815Sobrien # double it, expect 1.0. 7285815Sobrien fadd dr0, dr0 7385815Sobrien assert_dpreg_i 1, dr0 7485815Sobrien assert_dpreg_i 2, dr2 7585815Sobrien test_grs_a5a5 7685815Sobrien test_fpr_a5a5 fr4 7785815Sobrien test_fpr_a5a5 fr5 7885815Sobrien test_fpr_a5a5 fr6 7985815Sobrien test_fpr_a5a5 fr7 8085815Sobrien test_fpr_a5a5 fr8 8185815Sobrien test_fpr_a5a5 fr9 8285815Sobrien test_fpr_a5a5 fr10 8385815Sobrien test_fpr_a5a5 fr11 8485815Sobrien test_fpr_a5a5 fr12 8585815Sobrien test_fpr_a5a5 fr13 8685815Sobrien test_fpr_a5a5 fr14 8785815Sobrien test_fpr_a5a5 fr15 8885815Sobrien 8985815Sobrien pass 9085815Sobrien exit 0 9185815Sobrien 9285815Sobrien