------- Comment #6 from steven at gcc dot gnu dot org  2010-07-18 17:29 -------
Smaller hand-changed assembly without new bundle (left aborts, right does not):

        .global f1#                             .global f1#
        .type   f1#, @function                  .type   f1#, @function
        .proc f1#                               .proc f1#
f1:                                     f1:
        .prologue                               .prologue
        .body                                   .body
        .mmi                                    .mmi
        mov r15 = r12                           mov r15 = r12
        nop 0                                   nop 0
        mov r14 = r12                           mov r14 = r12
        ;;                                      ;;
        .mmi                                    .mmi
        st8 [r15] = r32, 8                      st8 [r15] = r32, 8
        ;;                                      ;;
        st8 [r15] = r33, -4                     st8 [r15] = r33, -4
        nop 0                                   nop 0
        .mii                          |         ;;
                                      >         .mmb
                                      >         st4 [r15] = r34
                                      >         ;;
        ld8 r8 = [r14], 8                       ld8 r8 = [r14], 8
        nop 0                         <
        ;;                                      ;;
        nop 0                                   nop 0
        .mmb                                    .mmb
        ld8 r9 = [r14]                          ld8 r9 = [r14]
        st4 [r15] = r34               |         nop 0
        br.ret.sptk.many b0                     br.ret.sptk.many b0
        .endp f1#                               .endp f1#

The only thing that seems to matter, is that "st4 [r15] = r34" comes before
"ld8 r9 = [r14]".


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43494

Reply via email to