OpenCores
no use no use 1/1 no use no use
NetBSD to OpenRISC project, optimized divide code for the OpenRISC
by Unknown on Feb 3, 2005
Not available!
NetBSD has kernel lib called libkern. It implements critical code like divide, So i had to implement divide. The implementation can be viewed/downloaded from: view: http://212.199.169.246/trac/file/netbsd/branches/nirm/src/sys/lib/libkern/arch/openrisc/divsi3.S download: http://212.199.169.246/trac/file/netbsd/branches/nirm/src/sys/lib/libkern/arch/openrisc/divsi3.S?rev=32&format=raw (All the sources can be browsed at http://212.199.169.246/trac, trac system is wiki/milestone/bug ticket system integrated with SubVersion version control system, svn access http://212.199.169.246/svn ) This is some of the code of L_udivide: L_udivide: l.sfeqi r4, 0 /* check if divisor 0 */ l.bf L_overflow l.sfeqi r4, 1 /* check if divisor 1 */ l.bf L_divide_l1 l.sfeqi r3, 0 /* check if dividend 0 */ l.bf L_divide_l2 l.sfeqi r3, 1 /* check if dividend 1 */ l.bf L_divide_l3 l.sfeq r3, r4 /* check if dividend = divisor */ l.bf L_divide_l4 l.addi r11, r3, 0 l.addi r15, r4, 0 L_divide_l0: L_divide_b31: l.srli r12, r11, 31 /* Set remainder LSB from divisor MSB */ l.slli r11, r11, 1 /* Left shit dividend */ l.sfltu r12, r15 /* Is remainder less then divisor */ l.bf L_divide_b30 /* If so skip to next bit */ l.srli r13, r11, 31 /* Delay slot get MSB of quotient */ l.sub r12, r12, r15 /* Substruct divisor from remainder */ l.addi r11, r11, 1 /* Set remainder LSB to 1 */ L_divide_b30: l.slli r12, r12, 1 /* Left shit remainder */ l.slli r11, r11, 1 /* Left shit quotient */ l.add r12, r12, r13 /* Set remainder LSB from quotient MSB */ l.sfltu r12, r15 /* Is remainder less then divisor */ l.bf L_divide_b29 /* If so skip to next bit */ l.srli r13, r11, 31 /* Delay slot get MSB of remainder */ l.sub r12, r12, r15 /* Substruct divisor from remainder */ l.addi r11, r11, 1 /* Set remainder LSB to 1 */ L_divide_b29:
no use no use 1/1 no use no use
© copyright 1999-2026 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.