Lines Matching +full:pre +full:- +full:multiply
1 //===----------------------Hexagon builtin routine ------------------------===//
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
7 //===----------------------------------------------------------------------===//
10 #define END(TAG) .size TAG,.-TAG
12 // Double Precision Multiply
91 // 0x0100_0000_0000_0000 has EXP of EXPA+EXPB-BIAS
119 ATMP = insert(A,#MANTBITS,#EXPBITS-3)
120 BTMP = insert(B,#MANTBITS,#EXPBITS-3)
139 CTMP = insert(C,#MANTBITS,#EXPBITS-3)
146 P_TMP = cmp.gt(CH,#-1)
187 EXPA = add(EXPA,#-BIAS+(ADJUST))
188 PROD_NEG = !cmp.gt(TMP,#-1)
194 P_TMP = !cmp.gt(TMP,#-1)
224 if (P_TMP) EXPC = add(EXPC,#-64)
228 // If diff > 63, pre-shift-right by 64...
241 if (P_TMP) CTMP = combine(TMP,TMP) // sign extension of pre-shift-right-64
248 TMP = #-2
274 LEFTSHIFT = add(clb(PP_HH),#-2)
281 EXPA = add(EXPA,#-62) // And adjust exponent of result
287 LEFTSHIFT = add(clb(PP_HH),#-2)
300 TMP = #BIAS+BIAS-2
313 EXPA = add(EXPA,#-BIAS-60)
322 // We had full cancellation. Return +/- zero (-0 when round-down)
352 EXPA = add(EXPA,#-BIAS-60)
396 EXPB = add(clb(ATMP),#-2) // Amount to left shift to normalize
398 p3 = cmp.gt(CTMPH,#-1)
425 p1 = bitsclr(ATMPL,#(1<<FUDGE2)-1)
432 TMP = #-BIAS-(MANTBITS+FUDGE2)
470 CTMP = combine(##0x7fefffff,#-1)
546 // if A and B might multiply to something bigger, decrease A exp and increase B exp
553 TMP = add(clb(BTMP),#-EXPBITS)
560 AH -= asl(TMP,#HI_MANTBITS)
585 // A*B is +/- inf, C is finite. Return A
612 A = #-1
644 p0 = cmp.eq(B,C) // yes, scalar equals. +0++0 or -0+-0
680 // If we have a zero, and we know AB is normal*normal, we can just call normal multiply
689 allocframe(#STACKSPACE) // oops, deallocated above, re-allocate frame