Zig 0.17.0-dev (Split by item)

This is an example of documentation generated by ZigDoc, an alternative to Zig's built-in Auto Doc feature. See also examples in other modes/formats. The project being documented here (as the example) is the Zig library itself.

__hexagon_sqrtf

hexagon.__hexagon_sqrtf
fn __hexagon_sqrtf() callconv(.naked) noreturn

File

lib/compiler_rt/hexagon.zig:90

Code

fn __hexagon_sqrtf() callconv(.naked) noreturn {
    asm volatile (
        \\ {
        \\     r3,p0 = sfinvsqrta(r0)
        \\     r5 = sffixupr(r0)
        \\     r4 = ##0x3f000000
        \\     r1:0 = combine(#0,#0)
        \\   }
        \\   {
        \\     r0 += sfmpy(r3,r5):lib
        \\     r1 += sfmpy(r3,r4):lib
        \\     r2 = r4
        \\     r3 = r5
        \\   }
        \\   {
        \\     r2 -= sfmpy(r0,r1):lib
        \\     p1 = sfclass(r5,#1)
        \\
        \\   }
        \\   {
        \\     r0 += sfmpy(r0,r2):lib
        \\     r1 += sfmpy(r1,r2):lib
        \\     r2 = r4
        \\     r3 = r5
        \\   }
        \\   {
        \\     r2 -= sfmpy(r0,r1):lib
        \\     r3 -= sfmpy(r0,r0):lib
        \\   }
        \\   {
        \\     r0 += sfmpy(r1,r3):lib
        \\     r1 += sfmpy(r1,r2):lib
        \\     r2 = r4
        \\     r3 = r5
        \\   }
        \\   {
        \\
        \\     r3 -= sfmpy(r0,r0):lib
        \\     if (p1) r0 = or(r0,r5)
        \\   }
        \\   {
        \\     r0 += sfmpy(r1,r3,p0):scale
        \\     jumpr r31
        \\   }
    );
}