// HORNER       Table of Squares
        .data                     // Declare storage
        .align  8                 // Desired alignment
C:      real8   0.125,0.25,0.5,1.0   // Coefficients
X:      real8   0.0625            // Argument
P:      .skip   8                 // Function value
        .text                     // Section for code
        .align  32                // Desired alignment
        .global main              // These three lines
        .proc   main              //  mark the mandatory
main:                             //   'main' program entry
                                  // Now we really begin...
first:  addl    r14 = @gprel(C),gp    // r14 -> coefficients
        addl    r15 = @gprel(X),gp    // r15 -> argument
        addl    r16 = @gprel(P),gp;;  // r16 -> value
        ldfd    f6 = [r15]        // Get argument
        ldfd    f7 = [r14],8;;    // Initial coefficient
        ldfd    f8 = [r14],8;;    // Next coefficient
        fma     f7 = f7,f6,f8     // First partial sum
        ldfd    f8 = [r14],8;;    // Next coefficient
        fma     f7 = f7,f6,f8     // Next partial sum
        ldfd    f8 = [r14];;      // Last coefficient
        fma     f7 = f7,f6,f8;;   // Final result
        stfd    [r16] = f7        // Put in memory form
done:   mov     ret0 = r0         // Signal all is normal
        br.ret.sptk.many b0;;     // Back to command line
        .endp   main              // Mark end of procedure