Skip to content
  • Nate Begeman's avatar
    Teach the SelectionDAG ISel how to turn ConstantPacked values into · 41b1cdc7
    Nate Begeman authored
    constant nodes with vector types.  Also teach the asm printer how to print
    ConstantPacked constant pool entries.  This allows us to generate altivec
    code such as the following, which adds a vector constantto a packed float.
    
    LCPI1_0:  <4 x float> < float 0.0e+0, float 0.0e+0, float 0.0e+0, float 1.0e+0 >
            .space  4
            .space  4
            .space  4
            .long   1065353216      ; float 1
            .text
            .align  4
            .globl  _foo
    _foo:
            lis r2, ha16(LCPI1_0)
            la r2, lo16(LCPI1_0)(r2)
            li r4, 0
            lvx v0, r4, r2
            lvx v1, r4, r3
            vaddfp v0, v1, v0
            stvx v0, r4, r3
            blr
    
    For the llvm code:
    
    void %foo(<4 x float> * %a) {
    entry:
      %tmp1 = load <4 x float> * %a;
      %tmp2 = add <4 x float> %tmp1, < float 0.0, float 0.0, float 0.0, float 1.0 >
      store <4 x float> %tmp2, <4 x float> *%a
      ret void
    }
    
    llvm-svn: 24616
    41b1cdc7
Loading