Lower v8i16 multiply into this code:
authorChris Lattner <sabre@nondot.org>
Tue, 18 Apr 2006 03:43:48 +0000 (03:43 +0000)
committerChris Lattner <sabre@nondot.org>
Tue, 18 Apr 2006 03:43:48 +0000 (03:43 +0000)
commit72dd9bdcc57a71d7e9a6f3e68ca1a35ad437a980
treef22545fb4942394d99c667dfc2f182b848739396
parente7c768ea24027938b52abd6ee94755b6d17f3da3
Lower v8i16 multiply into this code:

        li r5, lo16(LCPI1_0)
        lis r6, ha16(LCPI1_0)
        lvx v4, r6, r5
        vmulouh v5, v3, v2
        vmuleuh v2, v3, v2
        vperm v2, v2, v5, v4

where v4 is:
LCPI1_0:                                        ;  <16 x ubyte>
        .byte   2
        .byte   3
        .byte   18
        .byte   19
        .byte   6
        .byte   7
        .byte   22
        .byte   23
        .byte   10
        .byte   11
        .byte   26
        .byte   27
        .byte   14
        .byte   15
        .byte   30
        .byte   31

This is 5.07x faster on the G5 (measured) than lowering to scalar code +
loads/stores.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27789 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Target/PowerPC/PPCISelLowering.cpp