1*4b169a6bSchristos# sh testcase for prnd 2*4b169a6bSchristos# mach: shdsp 3*4b169a6bSchristos# as(shdsp): -defsym sim_cpu=1 -dsp 4*4b169a6bSchristos 5*4b169a6bSchristos # FIXME: opcode table ambiguity in ignored bits 4-7. 6*4b169a6bSchristos 7*4b169a6bSchristos .include "testutils.inc" 8*4b169a6bSchristos 9*4b169a6bSchristos start 10*4b169a6bSchristos set_grs_a5a5 11*4b169a6bSchristos lds r0, a0 12*4b169a6bSchristos pcopy a0, a1 13*4b169a6bSchristos lds r0, x0 14*4b169a6bSchristos lds r0, x1 15*4b169a6bSchristos lds r0, y0 16*4b169a6bSchristos lds r0, y1 17*4b169a6bSchristos pcopy x0, m0 18*4b169a6bSchristos pcopy y1, m1 19*4b169a6bSchristos 20*4b169a6bSchristos # prnd(0xa5a5a5a5) = 0xa5a60000 21*4b169a6bSchristos prnd x0, x0 22*4b169a6bSchristos prnd y0, y0 23*4b169a6bSchristos assert_sreg 0xa5a60000, x0 24*4b169a6bSchristos assert_sreg 0xa5a60000, y0 25*4b169a6bSchristos 26*4b169a6bSchristos # prnd(1) = 1 27*4b169a6bSchristos mov #1, r0 28*4b169a6bSchristos shll16 r0 29*4b169a6bSchristos lds r0, x0 30*4b169a6bSchristos pcopy x0, y0 31*4b169a6bSchristos prnd x0, x0 32*4b169a6bSchristos prnd y0, y0 33*4b169a6bSchristos assert_sreg 0x10000, x0 34*4b169a6bSchristos assert_sreg 0x10000, y0 35*4b169a6bSchristos 36*4b169a6bSchristos # prnd(1.4999999) = 1 37*4b169a6bSchristos mov #1, r0 38*4b169a6bSchristos shll8 r0 39*4b169a6bSchristos or #0x7f, r0 40*4b169a6bSchristos shll8 r0 41*4b169a6bSchristos or #0xff, r0 42*4b169a6bSchristos lds r0, x0 43*4b169a6bSchristos pcopy x0, y0 44*4b169a6bSchristos prnd x0, x0 45*4b169a6bSchristos prnd y0, y0 46*4b169a6bSchristos assert_sreg 0x10000, x0 47*4b169a6bSchristos assert_sreg 0x10000, y0 48*4b169a6bSchristos 49*4b169a6bSchristos # prnd(1.5) = 2 50*4b169a6bSchristos mov #1, r0 51*4b169a6bSchristos shll8 r0 52*4b169a6bSchristos or #0x80, r0 53*4b169a6bSchristos shll8 r0 54*4b169a6bSchristos lds r0, x0 55*4b169a6bSchristos pcopy x0, y0 56*4b169a6bSchristos prnd x0, x0 57*4b169a6bSchristos prnd y0, y0 58*4b169a6bSchristos assert_sreg 0x20000, x0 59*4b169a6bSchristos assert_sreg 0x20000, y0 60*4b169a6bSchristos 61*4b169a6bSchristos # dct prnd 62*4b169a6bSchristos set_dcfalse 63*4b169a6bSchristos dct prnd x0, x1 64*4b169a6bSchristos dct prnd y0, y1 65*4b169a6bSchristos assert_sreg2 0xa5a5a5a5, x1 66*4b169a6bSchristos assert_sreg2 0xa5a5a5a5, y1 67*4b169a6bSchristos set_dctrue 68*4b169a6bSchristos dct prnd x0, x1 69*4b169a6bSchristos dct prnd y0, y1 70*4b169a6bSchristos assert_sreg2 0x20000, x1 71*4b169a6bSchristos assert_sreg2 0x20000, y1 72*4b169a6bSchristos 73*4b169a6bSchristos # dcf prnd 74*4b169a6bSchristos set_dctrue 75*4b169a6bSchristos dcf prnd x0, m0 76*4b169a6bSchristos dcf prnd y0, m1 77*4b169a6bSchristos assert_sreg2 0xa5a5a5a5, m0 78*4b169a6bSchristos assert_sreg2 0xa5a5a5a5, m1 79*4b169a6bSchristos set_dcfalse 80*4b169a6bSchristos dcf prnd x0, m0 81*4b169a6bSchristos dcf prnd y0, m1 82*4b169a6bSchristos assert_sreg2 0x20000, m0 83*4b169a6bSchristos assert_sreg2 0x20000, m1 84*4b169a6bSchristos 85*4b169a6bSchristos set_greg 0xa5a5a5a5, r0 86*4b169a6bSchristos test_grs_a5a5 87*4b169a6bSchristos assert_sreg 0xa5a5a5a5, a0 88*4b169a6bSchristos assert_sreg2 0xa5a5a5a5, a1 89*4b169a6bSchristos pass 90*4b169a6bSchristos exit 0 91