1# sh testcase for fipr $fvm, $fvn 2# mach: sh 3# as(sh): -defsym sim_cpu=0 4 5 .include "testutils.inc" 6 7 start 8initv0: 9 set_grs_a5a5 10 set_fprs_a5a5 11 # Load 1 into fr0. 12 fldi1 fr0 13 # Load 2 into fr1. 14 fldi1 fr1 15 fadd fr1, fr1 16 # Load 4 into fr2. 17 fldi1 fr2 18 fadd fr2, fr2 19 fadd fr2, fr2 20 # Load 8 into fr3. 21 fmov fr2, fr3 22 fadd fr2, fr3 23 24initv8: 25 fldi1 fr8 26 fldi0 fr9 27 fldi1 fr10 28 fldi0 fr11 29 30 fipr fv0, fv8 31test1: 32 # Result will be in fr11. 33 assert_fpreg_i 1, fr0 34 assert_fpreg_i 2, fr1 35 assert_fpreg_i 4, fr2 36 assert_fpreg_i 8, fr3 37 assert_fpreg_x 0xa5a5a5a5, fr4 38 assert_fpreg_x 0xa5a5a5a5, fr5 39 assert_fpreg_x 0xa5a5a5a5, fr6 40 assert_fpreg_x 0xa5a5a5a5, fr7 41 assert_fpreg_i 1, fr8 42 assert_fpreg_i 0, fr9 43 assert_fpreg_i 1, fr10 44 assert_fpreg_i 5, fr11 45 assert_fpreg_x 0xa5a5a5a5, fr12 46 assert_fpreg_x 0xa5a5a5a5, fr13 47 assert_fpreg_x 0xa5a5a5a5, fr14 48 assert_fpreg_x 0xa5a5a5a5, fr15 49 50 test_grs_a5a5 51test_infp: 52 # Test positive infinity 53 fldi0 fr11 54 mov.l infp, r0 55 lds r0, fpul 56 fsts fpul, fr0 57 fipr fv0, fv8 58 # fr11 should be plus infinity 59 assert_fpreg_x 0x7f800000, fr11 60test_infm: 61 # Test negitive infinity 62 fldi0 fr11 63 mov.l infm, r0 64 lds r0, fpul 65 fsts fpul, fr0 66 fipr fv0, fv8 67 # fr11 should be plus infinity 68 assert_fpreg_x 0xff800000, fr11 69test_qnanp: 70 # Test positive qnan 71 fldi0 fr11 72 mov.l qnanp, r0 73 lds r0, fpul 74 fsts fpul, fr0 75 fipr fv0, fv8 76 # fr11 should be plus qnan (or greater) 77 flds fr11, fpul 78 sts fpul, r1 79 cmp/ge r0, r1 80 bt .L0 81 fail 82.L0: 83test_snanp: 84 # Test positive snan 85 fldi0 fr11 86 mov.l snanp, r0 87 lds r0, fpul 88 fsts fpul, fr0 89 fipr fv0, fv8 90 # fr11 should be plus snan (or greater) 91 flds fr11, fpul 92 sts fpul, r1 93 cmp/ge r0, r1 94 bt .L1 95 fail 96.L1: 97.if 0 98 # Handling of nan and inf not implemented yet. 99test_qnanm: 100 # Test negantive qnan 101 fldi0 fr11 102 mov.l qnanm, r0 103 lds r0, fpul 104 fsts fpul, fr0 105 fipr fv0, fv8 106 # fr11 should be minus qnan (or less) 107 flds fr11, fpul 108 sts fpul, r1 109 cmp/ge r1, r0 110 bt .L2 111 fail 112.L2: 113test_snanm: 114 # Test negative snan 115 fldi0 fr11 116 mov.l snanm, r0 117 lds r0, fpul 118 fsts fpul, fr0 119 fipr fv0, fv8 120 # fr11 should be minus snan (or less) 121 flds fr11, fpul 122 sts fpul, r1 123 cmp/ge r1, r0 124 bt .L3 125 fail 126.L3: 127.endif 128 pass 129 exit 0 130 131 .align 2 132qnanp: .long 0x7f800001 133qnanm: .long 0xff800001 134snanp: .long 0x7fc00000 135snanm: .long 0xffc00000 136infp: .long 0x7f800000 137infm: .long 0xff800000 138