Lines Matching +full:32 +full:- +full:bits

21 |	round --- round result according to precision/mode
33 | d0{31:29} contains the g,r,s bits (extended)
36 | a0 is preserved and the g-r-s bits in d0 are cleared.
37 | The result is not typed - the tag field is invalid. The
41 | inexact (i.e. if any of the g-r-s bits were set).
51 | ;the appropriate g-r-s bits.
53 bne rnd_cont |lower bits to zero for size
117 asll #1,%d0 |shift g-bit to c-bit
124 | ext_grs --- extract guard, round and sticky bits
129 | The ext_grs extract the guard/round/sticky bits according to the
144 moveml %d2/%d3,-(%a7) |make some temp registers
148 bfextu LOCAL_HI(%a0){#24:#2},%d3 |sgl prec. g-r are 2 bits right
150 lsll %d2,%d3 |shift g-r bits to MSB of d3
151 movel LOCAL_HI(%a0),%d2 |get word 2 for s-bit test
153 bnes st_stky |bits to the right of g-r
160 bfextu LOCAL_LO(%a0){#21:#2},%d3 |dbl-prec. g-r are 2 bits right
162 lsll %d2,%d3 |shift g-r bits to the MSB of d3
163 movel LOCAL_LO(%a0),%d2 |get lower mantissa for s-bit test
164 andil #0x000001ff,%d2 |s bit is the or-ing of all
165 bnes st_stky |other bits to the right of g-r
179 .set ad_1_sgl,0x00000100 | constant to add 1 to l-bit in sgl prec
180 .set ad_1_dbl,0x00000800 | constant to add 1 to l-bit in dbl prec
183 |Jump table for adding 1 to the l-bit indexed by rnd prec
196 roxrw LOCAL_HI(%a0) |shift v-bit back in
197 roxrw LOCAL_HI+2(%a0) |shift v-bit back in
202 andiw #0xfe00,LOCAL_HI+2(%a0) |clear the l-bit
204 andil #0xffffff00,LOCAL_HI(%a0) |truncate bits beyond sgl limit
212 addql #1,LOCAL_LO(%a0) |add 1 to l-bit
216 roxrw LOCAL_HI(%a0) |mant is 0 so restore v-bit
217 roxrw LOCAL_HI+2(%a0) |mant is 0 so restore v-bit
235 roxrw LOCAL_HI(%a0) |mant is 0 so restore v-bit
236 roxrw LOCAL_HI+2(%a0) |mant is 0 so restore v-bit
243 andiw #0xf000,LOCAL_LO+2(%a0) |clear the l-bit
246 andil #0xfffff800,LOCAL_LO(%a0) |truncate bits beyond dbl limit
252 | Truncate all other bits
280 | would go less than 0. In that case the number becomes a denorm - the
311 moveml %d2/%d3/%d5/%d6,-(%a7)
315 bfffo %d1{#0:#32},%d3 |get the distance to the first 1
317 beqs ms_clr |branch if no bits were set
328 movel #32,%d5
329 subl %d0,%d5 |make op a denorm by shifting bits
332 orl %d6,%d1 |shift the ls mant bits into the ms mant
341 bfffo %d2{#0:#32},%d3 |check if any bits set in ls mant
343 addw #32,%d3
350 movew #0,LOCAL_EX(%a0) |no mantissa bits set. Set exp = 0.
358 movel %d7,-(%a7)
359 bfffo LOCAL_HI(%a0){#0:#32},%d7 |find first 1 in ms mant to d7)
362 movel %d6,-(%a7)
372 moveql #32,%d6
374 lsrl %d6,%d1 |shift off all bits but those that will
376 orl %d1,%d0 |shift the ls mant bits into the ms mant
382 | We get here if ms mant was = 0, and we assume ls mant has bits
388 subw #32,%d0 |account for ms mant being all zeros
389 bfffo %d1{#0:#32},%d7 |find first 1 in ls mant to d7)
398 | denorm --- denormalize an intermediate result
420 btstb #6,LOCAL_EX(%a0) |check for exponents between $7fff-$4000
442 subw LOCAL_EX(%a0),%d0 |diff = threshold - exp
443 cmpw #67,%d0 |if diff > 67 (mant + grs bits)
444 bpls chk_stky |then branch (all bits would be
455 subw LOCAL_EX(%a0),%d0 |diff = threshold - exp
456 cmpw #67,%d0 |if diff > 67 (mant + grs bits)
457 bpls chk_stky |then branch (all bits would be
466 tstl LOCAL_HI(%a0) |check for any bits set
468 tstl LOCAL_LO(%a0) |check for any bits set
485 | dnrm_lp --- normalize exponent/mantissa to specified threshold
503 movel %d2,-(%sp) |save d2 for temp use
515 subw LOCAL_EX(%a0),%d1 |d1 = threshold - uns exponent
517 cmpw #32,%d1
518 blts case_1 |0 = d1 < 32
520 blts case_2 |32 <= d1 < 64
530 | case (0<d1<32)
533 movel %d2,-(%sp)
535 movel #32,%d0
536 subw %d1,%d0 |d0 = 32 - d1
537 bfextu LOCAL_EX(%a0){%d0:#32},%d2
539 bfextu LOCAL_HI(%a0){%d0:#32},%d1 |d1 = new LOCAL_LO
540 bfextu FP_SCR2+LOCAL_LO(%a6){%d0:#32},%d0 |d0 = new G,R,S
559 | case (32<=d1<64)
562 movel %d2,-(%sp)
564 subw #32,%d1 |d1 now between 0 and 32
565 movel #32,%d0
566 subw %d1,%d0 |d0 = 32 - d1
567 bfextu LOCAL_EX(%a0){%d0:#32},%d2
569 bfextu LOCAL_HI(%a0){%d0:#32},%d1 |d1 = new G,R,S
572 bftst FP_SCR2+LOCAL_LO(%a6){%d0:#32}