@@ -3028,40 +3028,109 @@ define void @PR43024() {
30283028}
30293029
30303030define  void  @PR45604 (<32  x i16 >* %dst , <8  x i16 >* %src ) {
3031- ; SSE-LABEL: PR45604: 
3032- ; SSE:       # %bb.0: 
3033- ; SSE-NEXT:    movdqa (%rsi), %xmm1 
3034- ; SSE-NEXT:    movd %xmm1, %eax 
3035- ; SSE-NEXT:    movzwl %ax, %eax 
3036- ; SSE-NEXT:    movd %eax, %xmm0 
3037- ; SSE-NEXT:    movl $11, %eax 
3038- ; SSE-NEXT:    pinsrw $2, %eax, %xmm0 
3039- ; SSE-NEXT:    pextrw $1, %xmm1, %ecx 
3040- ; SSE-NEXT:    pinsrw $4, %ecx, %xmm0 
3041- ; SSE-NEXT:    pinsrw $6, %eax, %xmm0 
3042- ; SSE-NEXT:    pextrw $2, %xmm1, %ecx 
3043- ; SSE-NEXT:    movd %ecx, %xmm2 
3044- ; SSE-NEXT:    pinsrw $2, %eax, %xmm2 
3045- ; SSE-NEXT:    pextrw $3, %xmm1, %ecx 
3046- ; SSE-NEXT:    pinsrw $4, %ecx, %xmm2 
3047- ; SSE-NEXT:    pinsrw $6, %eax, %xmm2 
3048- ; SSE-NEXT:    pextrw $4, %xmm1, %ecx 
3049- ; SSE-NEXT:    movd %ecx, %xmm3 
3050- ; SSE-NEXT:    pinsrw $2, %eax, %xmm3 
3051- ; SSE-NEXT:    pextrw $5, %xmm1, %ecx 
3052- ; SSE-NEXT:    pinsrw $4, %ecx, %xmm3 
3053- ; SSE-NEXT:    pinsrw $6, %eax, %xmm3 
3054- ; SSE-NEXT:    pextrw $6, %xmm1, %ecx 
3055- ; SSE-NEXT:    movd %ecx, %xmm4 
3056- ; SSE-NEXT:    pinsrw $2, %eax, %xmm4 
3057- ; SSE-NEXT:    pextrw $7, %xmm1, %ecx 
3058- ; SSE-NEXT:    pinsrw $4, %ecx, %xmm4 
3059- ; SSE-NEXT:    pinsrw $6, %eax, %xmm4 
3060- ; SSE-NEXT:    movdqa %xmm4, 48(%rdi) 
3061- ; SSE-NEXT:    movdqa %xmm3, 32(%rdi) 
3062- ; SSE-NEXT:    movdqa %xmm2, 16(%rdi) 
3063- ; SSE-NEXT:    movdqa %xmm0, (%rdi) 
3064- ; SSE-NEXT:    retq 
3031+ ; SSE2-LABEL: PR45604: 
3032+ ; SSE2:       # %bb.0: 
3033+ ; SSE2-NEXT:    movdqa (%rsi), %xmm1 
3034+ ; SSE2-NEXT:    movd %xmm1, %eax 
3035+ ; SSE2-NEXT:    movzwl %ax, %eax 
3036+ ; SSE2-NEXT:    movd %eax, %xmm0 
3037+ ; SSE2-NEXT:    movl $11, %eax 
3038+ ; SSE2-NEXT:    pinsrw $2, %eax, %xmm0 
3039+ ; SSE2-NEXT:    pextrw $1, %xmm1, %ecx 
3040+ ; SSE2-NEXT:    pinsrw $4, %ecx, %xmm0 
3041+ ; SSE2-NEXT:    pinsrw $6, %eax, %xmm0 
3042+ ; SSE2-NEXT:    pextrw $2, %xmm1, %ecx 
3043+ ; SSE2-NEXT:    movd %ecx, %xmm2 
3044+ ; SSE2-NEXT:    pinsrw $2, %eax, %xmm2 
3045+ ; SSE2-NEXT:    pextrw $3, %xmm1, %ecx 
3046+ ; SSE2-NEXT:    pinsrw $4, %ecx, %xmm2 
3047+ ; SSE2-NEXT:    pinsrw $6, %eax, %xmm2 
3048+ ; SSE2-NEXT:    pextrw $4, %xmm1, %ecx 
3049+ ; SSE2-NEXT:    movd %ecx, %xmm3 
3050+ ; SSE2-NEXT:    pinsrw $2, %eax, %xmm3 
3051+ ; SSE2-NEXT:    pextrw $5, %xmm1, %ecx 
3052+ ; SSE2-NEXT:    pinsrw $4, %ecx, %xmm3 
3053+ ; SSE2-NEXT:    pinsrw $6, %eax, %xmm3 
3054+ ; SSE2-NEXT:    pextrw $6, %xmm1, %ecx 
3055+ ; SSE2-NEXT:    movd %ecx, %xmm4 
3056+ ; SSE2-NEXT:    pinsrw $2, %eax, %xmm4 
3057+ ; SSE2-NEXT:    pextrw $7, %xmm1, %ecx 
3058+ ; SSE2-NEXT:    pinsrw $4, %ecx, %xmm4 
3059+ ; SSE2-NEXT:    pinsrw $6, %eax, %xmm4 
3060+ ; SSE2-NEXT:    movdqa %xmm4, 48(%rdi) 
3061+ ; SSE2-NEXT:    movdqa %xmm3, 32(%rdi) 
3062+ ; SSE2-NEXT:    movdqa %xmm2, 16(%rdi) 
3063+ ; SSE2-NEXT:    movdqa %xmm0, (%rdi) 
3064+ ; SSE2-NEXT:    retq 
3065+ ; 
3066+ ; SSSE3-LABEL: PR45604: 
3067+ ; SSSE3:       # %bb.0: 
3068+ ; SSSE3-NEXT:    movdqa (%rsi), %xmm1 
3069+ ; SSSE3-NEXT:    movd %xmm1, %eax 
3070+ ; SSSE3-NEXT:    movzwl %ax, %eax 
3071+ ; SSSE3-NEXT:    movd %eax, %xmm0 
3072+ ; SSSE3-NEXT:    movl $11, %eax 
3073+ ; SSSE3-NEXT:    pinsrw $2, %eax, %xmm0 
3074+ ; SSSE3-NEXT:    pextrw $1, %xmm1, %ecx 
3075+ ; SSSE3-NEXT:    pinsrw $4, %ecx, %xmm0 
3076+ ; SSSE3-NEXT:    pinsrw $6, %eax, %xmm0 
3077+ ; SSSE3-NEXT:    pextrw $2, %xmm1, %ecx 
3078+ ; SSSE3-NEXT:    movd %ecx, %xmm2 
3079+ ; SSSE3-NEXT:    pinsrw $2, %eax, %xmm2 
3080+ ; SSSE3-NEXT:    pextrw $3, %xmm1, %ecx 
3081+ ; SSSE3-NEXT:    pinsrw $4, %ecx, %xmm2 
3082+ ; SSSE3-NEXT:    pinsrw $6, %eax, %xmm2 
3083+ ; SSSE3-NEXT:    pextrw $4, %xmm1, %ecx 
3084+ ; SSSE3-NEXT:    movd %ecx, %xmm3 
3085+ ; SSSE3-NEXT:    pinsrw $2, %eax, %xmm3 
3086+ ; SSSE3-NEXT:    pextrw $5, %xmm1, %ecx 
3087+ ; SSSE3-NEXT:    pinsrw $4, %ecx, %xmm3 
3088+ ; SSSE3-NEXT:    pinsrw $6, %eax, %xmm3 
3089+ ; SSSE3-NEXT:    pextrw $6, %xmm1, %ecx 
3090+ ; SSSE3-NEXT:    movd %ecx, %xmm4 
3091+ ; SSSE3-NEXT:    pinsrw $2, %eax, %xmm4 
3092+ ; SSSE3-NEXT:    pextrw $7, %xmm1, %ecx 
3093+ ; SSSE3-NEXT:    pinsrw $4, %ecx, %xmm4 
3094+ ; SSSE3-NEXT:    pinsrw $6, %eax, %xmm4 
3095+ ; SSSE3-NEXT:    movdqa %xmm4, 48(%rdi) 
3096+ ; SSSE3-NEXT:    movdqa %xmm3, 32(%rdi) 
3097+ ; SSSE3-NEXT:    movdqa %xmm2, 16(%rdi) 
3098+ ; SSSE3-NEXT:    movdqa %xmm0, (%rdi) 
3099+ ; SSSE3-NEXT:    retq 
3100+ ; 
3101+ ; SSE41-LABEL: PR45604: 
3102+ ; SSE41:       # %bb.0: 
3103+ ; SSE41-NEXT:    movdqa (%rsi), %xmm1 
3104+ ; SSE41-NEXT:    pextrw $2, %xmm1, %eax 
3105+ ; SSE41-NEXT:    movd %eax, %xmm0 
3106+ ; SSE41-NEXT:    movl $11, %eax 
3107+ ; SSE41-NEXT:    pinsrw $2, %eax, %xmm0 
3108+ ; SSE41-NEXT:    pextrw $3, %xmm1, %ecx 
3109+ ; SSE41-NEXT:    pinsrw $4, %ecx, %xmm0 
3110+ ; SSE41-NEXT:    pinsrw $6, %eax, %xmm0 
3111+ ; SSE41-NEXT:    pextrw $4, %xmm1, %ecx 
3112+ ; SSE41-NEXT:    movd %ecx, %xmm2 
3113+ ; SSE41-NEXT:    pinsrw $2, %eax, %xmm2 
3114+ ; SSE41-NEXT:    pextrw $5, %xmm1, %ecx 
3115+ ; SSE41-NEXT:    pinsrw $4, %ecx, %xmm2 
3116+ ; SSE41-NEXT:    pinsrw $6, %eax, %xmm2 
3117+ ; SSE41-NEXT:    pextrw $6, %xmm1, %ecx 
3118+ ; SSE41-NEXT:    movd %ecx, %xmm3 
3119+ ; SSE41-NEXT:    pinsrw $2, %eax, %xmm3 
3120+ ; SSE41-NEXT:    pextrw $7, %xmm1, %ecx 
3121+ ; SSE41-NEXT:    pinsrw $4, %ecx, %xmm3 
3122+ ; SSE41-NEXT:    pinsrw $6, %eax, %xmm3 
3123+ ; SSE41-NEXT:    pxor %xmm4, %xmm4 
3124+ ; SSE41-NEXT:    pblendw {{.*#+}} xmm4 = xmm1[0],xmm4[1,2,3,4,5,6,7] 
3125+ ; SSE41-NEXT:    pinsrw $2, %eax, %xmm4 
3126+ ; SSE41-NEXT:    pextrw $1, %xmm1, %ecx 
3127+ ; SSE41-NEXT:    pinsrw $4, %ecx, %xmm4 
3128+ ; SSE41-NEXT:    pinsrw $6, %eax, %xmm4 
3129+ ; SSE41-NEXT:    movdqa %xmm4, (%rdi) 
3130+ ; SSE41-NEXT:    movdqa %xmm3, 48(%rdi) 
3131+ ; SSE41-NEXT:    movdqa %xmm2, 32(%rdi) 
3132+ ; SSE41-NEXT:    movdqa %xmm0, 16(%rdi) 
3133+ ; SSE41-NEXT:    retq 
30653134; 
30663135; AVX1-LABEL: PR45604: 
30673136; AVX1:       # %bb.0: 
0 commit comments