llvm.org GIT mirror llvm / cc54be0
[X86] Fix printing of blendvpd/blendvps/pblendvb to include the implicit %xmm0 argument. This makes codegen output more obvious about the %xmm0 usage. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@294131 91177308-0d34-0410-b5e6-96231b3b80d8 Craig Topper 3 years ago
23 changed file(s) with 304 addition(s) and 304 deletion(s). Raw diff Collapse all Expand all
71287128 def rr0 : SS48I
71297129 (ins VR128:$src1, VR128:$src2),
71307130 !strconcat(OpcodeStr,
7131 "\t{$src2, $dst|$dst, $src2}"),
7131 "\t{%xmm0, $src2, $dst|$dst, $src2, xmm0}"),
71327132 [(set VR128:$dst, (IntId VR128:$src1, VR128:$src2, XMM0))],
71337133 itins.rr>, Sched<[itins.Sched]>;
71347134
71357135 def rm0 : SS48I
71367136 (ins VR128:$src1, x86memop:$src2),
71377137 !strconcat(OpcodeStr,
7138 "\t{$src2, $dst|$dst, $src2}"),
7138 "\t{%xmm0, $src2, $dst|$dst, $src2, xmm0}"),
71397139 [(set VR128:$dst,
71407140 (IntId VR128:$src1,
71417141 (bitconvert (mem_frag addr:$src2)), XMM0))],
71567156 DEFAULT_ITINS_VARBLENDSCHED>;
71577157
71587158 // Aliases with the implicit xmm0 argument
7159 def : InstAlias<"blendvpd\t{%xmm0, $src2, $dst|$dst, $src2, xmm0}",
7160 (BLENDVPDrr0 VR128:$dst, VR128:$src2)>;
7161 def : InstAlias<"blendvpd\t{%xmm0, $src2, $dst|$dst, $src2, xmm0}",
7162 (BLENDVPDrm0 VR128:$dst, f128mem:$src2)>;
7163 def : InstAlias<"blendvps\t{%xmm0, $src2, $dst|$dst, $src2, xmm0}",
7164 (BLENDVPSrr0 VR128:$dst, VR128:$src2)>;
7165 def : InstAlias<"blendvps\t{%xmm0, $src2, $dst|$dst, $src2, xmm0}",
7166 (BLENDVPSrm0 VR128:$dst, f128mem:$src2)>;
7167 def : InstAlias<"pblendvb\t{%xmm0, $src2, $dst|$dst, $src2, xmm0}",
7168 (PBLENDVBrr0 VR128:$dst, VR128:$src2)>;
7169 def : InstAlias<"pblendvb\t{%xmm0, $src2, $dst|$dst, $src2, xmm0}",
7170 (PBLENDVBrm0 VR128:$dst, i128mem:$src2)>;
7159 def : InstAlias<"blendvpd\t{$src2, $dst|$dst, $src2}",
7160 (BLENDVPDrr0 VR128:$dst, VR128:$src2), 0>;
7161 def : InstAlias<"blendvpd\t{$src2, $dst|$dst, $src2}",
7162 (BLENDVPDrm0 VR128:$dst, f128mem:$src2), 0>;
7163 def : InstAlias<"blendvps\t{$src2, $dst|$dst, $src2}",
7164 (BLENDVPSrr0 VR128:$dst, VR128:$src2), 0>;
7165 def : InstAlias<"blendvps\t{$src2, $dst|$dst, $src2}",
7166 (BLENDVPSrm0 VR128:$dst, f128mem:$src2), 0>;
7167 def : InstAlias<"pblendvb\t{$src2, $dst|$dst, $src2}",
7168 (PBLENDVBrr0 VR128:$dst, VR128:$src2), 0>;
7169 def : InstAlias<"pblendvb\t{$src2, $dst|$dst, $src2}",
7170 (PBLENDVBrm0 VR128:$dst, i128mem:$src2), 0>;
71717171
71727172 let Predicates = [UseSSE41] in {
71737173 def : Pat<(v16i8 (vselect (v16i8 XMM0), (v16i8 VR128:$src1),
1010 ; CHECK-NEXT: cmpordps %xmm0, %xmm0
1111 ; CHECK-NEXT: insertps {{.*#+}} xmm0 = xmm0[0,1],zero,xmm0[1]
1212 ; CHECK-NEXT: pslld $31, %xmm0
13 ; CHECK-NEXT: blendvps %xmm2, %xmm1
13 ; CHECK-NEXT: blendvps %xmm0, %xmm2, %xmm1
1414 ; CHECK-NEXT: movlps %xmm1, (%rax)
1515 ; CHECK-NEXT: retq
1616 entry:
2525 ; CHECK: # BB#0: # %entry
2626 ; CHECK-NEXT: movapd %xmm0, %xmm2
2727 ; CHECK-NEXT: cmpordpd %xmm0, %xmm0
28 ; CHECK-NEXT: blendvpd %xmm2, %xmm1
28 ; CHECK-NEXT: blendvpd %xmm0, %xmm2, %xmm1
2929 ; CHECK-NEXT: movapd %xmm1, (%rax)
3030 ; CHECK-NEXT: retq
3131 entry:
44
55 ; Test that the order of operands is correct
66 ; CHECK: select_func
7 ; CHECK: pblendvb {{LCPI0_[0-9]*}}(%rip), %xmm1
7 ; CHECK: pblendvb %xmm0, {{LCPI0_[0-9]*}}(%rip), %xmm1
88 ; CHECK: ret
99
1010 define void @select_func(<8 x i16> %in) {
66 define <16 x i8> @shift(<16 x i8> %a, <16 x i8> %b) nounwind {
77 ; Make sure operands to pblend are in the right order.
88 ; CHECK-W-SSE4: psllw $4, [[REG1:%xmm.]]
9 ; CHECK-W-SSE4: pblendvb [[REG1]],{{ %xmm.}}
9 ; CHECK-W-SSE4: pblendvb %xmm0, [[REG1]],{{ %xmm.}}
1010 ; CHECK-W-SSE4: psllw $2
1111
1212 ; Make sure we're masking and pcmp'ing the VSELECT conditon vector.
132132 ; CHECK-NEXT: movdqa (%ecx), %xmm0
133133 ; CHECK-NEXT: pcmpgtd (%eax), %xmm0
134134 ; CHECK-NEXT: movaps {{.*#+}} xmm1 = [9,8,7,6]
135 ; CHECK-NEXT: blendvps {{\.LCPI.*}}, %xmm1
135 ; CHECK-NEXT: blendvps %xmm0, {{\.LCPI.*}}, %xmm1
136136 ; CHECK-NEXT: movaps %xmm1, %xmm0
137137 ; CHECK-NEXT: retl
138138 entry:
151151 ; CHECK-NEXT: movdqa (%ecx), %xmm0
152152 ; CHECK-NEXT: pcmpeqd (%eax), %xmm0
153153 ; CHECK-NEXT: movaps {{.*#+}} xmm1 = [9,8,7,6]
154 ; CHECK-NEXT: blendvps {{\.LCPI.*}}, %xmm1
154 ; CHECK-NEXT: blendvps %xmm0, {{\.LCPI.*}}, %xmm1
155155 ; CHECK-NEXT: movaps %xmm1, %xmm0
156156 ; CHECK-NEXT: retl
157157 entry:
88 ; CHECK: # BB#0:
99 ; CHECK-NEXT: pslld $31, %xmm0
1010 ; CHECK-NEXT: psrad $31, %xmm0
11 ; CHECK-NEXT: blendvps %xmm1, %xmm2
11 ; CHECK-NEXT: blendvps %xmm0, %xmm1, %xmm2
1212 ; CHECK-NEXT: paddd %xmm0, %xmm1
1313 ; CHECK-NEXT: movaps %xmm2, (%rdi)
1414 ; CHECK-NEXT: movdqa %xmm1, %xmm0
12021202 ; STRICT-NEXT: movapd %xmm0, %xmm2
12031203 ; STRICT-NEXT: movapd %xmm1, %xmm0
12041204 ; STRICT-NEXT: cmplepd %xmm2, %xmm0
1205 ; STRICT-NEXT: blendvpd %xmm2, %xmm1
1205 ; STRICT-NEXT: blendvpd %xmm0, %xmm2, %xmm1
12061206 ; STRICT-NEXT: movapd %xmm1, %xmm0
12071207 ; STRICT-NEXT: retq
12081208 ;
12201220 ; STRICT: # BB#0:
12211221 ; STRICT-NEXT: movapd %xmm0, %xmm2
12221222 ; STRICT-NEXT: cmplepd %xmm1, %xmm0
1223 ; STRICT-NEXT: blendvpd %xmm2, %xmm1
1223 ; STRICT-NEXT: blendvpd %xmm0, %xmm2, %xmm1
12241224 ; STRICT-NEXT: movapd %xmm1, %xmm0
12251225 ; STRICT-NEXT: retq
12261226 ;
12391239 ; STRICT-NEXT: movaps %xmm0, %xmm2
12401240 ; STRICT-NEXT: movaps %xmm1, %xmm0
12411241 ; STRICT-NEXT: cmpleps %xmm2, %xmm0
1242 ; STRICT-NEXT: blendvps %xmm2, %xmm1
1242 ; STRICT-NEXT: blendvps %xmm0, %xmm2, %xmm1
12431243 ; STRICT-NEXT: movaps %xmm1, %xmm0
12441244 ; STRICT-NEXT: retq
12451245 ;
12571257 ; STRICT: # BB#0:
12581258 ; STRICT-NEXT: movaps %xmm0, %xmm2
12591259 ; STRICT-NEXT: cmpleps %xmm1, %xmm0
1260 ; STRICT-NEXT: blendvps %xmm2, %xmm1
1260 ; STRICT-NEXT: blendvps %xmm0, %xmm2, %xmm1
12611261 ; STRICT-NEXT: movaps %xmm1, %xmm0
12621262 ; STRICT-NEXT: retq
12631263 ;
12781278 ; STRICT-NEXT: cmpleps %xmm2, %xmm0
12791279 ; STRICT-NEXT: insertps {{.*#+}} xmm0 = xmm0[0,1],zero,xmm0[1]
12801280 ; STRICT-NEXT: pslld $31, %xmm0
1281 ; STRICT-NEXT: blendvps %xmm2, %xmm1
1281 ; STRICT-NEXT: blendvps %xmm0, %xmm2, %xmm1
12821282 ; STRICT-NEXT: movaps %xmm1, %xmm0
12831283 ; STRICT-NEXT: retq
12841284 ;
12981298 ; STRICT-NEXT: cmpleps %xmm1, %xmm0
12991299 ; STRICT-NEXT: insertps {{.*#+}} xmm0 = xmm0[0,1],zero,xmm0[1]
13001300 ; STRICT-NEXT: pslld $31, %xmm0
1301 ; STRICT-NEXT: blendvps %xmm2, %xmm1
1301 ; STRICT-NEXT: blendvps %xmm0, %xmm2, %xmm1
13021302 ; STRICT-NEXT: movaps %xmm1, %xmm0
13031303 ; STRICT-NEXT: retq
13041304 ;
13171317 ; STRICT-NEXT: movaps %xmm0, %xmm2
13181318 ; STRICT-NEXT: movaps %xmm1, %xmm0
13191319 ; STRICT-NEXT: cmpleps %xmm2, %xmm0
1320 ; STRICT-NEXT: blendvps %xmm2, %xmm1
1320 ; STRICT-NEXT: blendvps %xmm0, %xmm2, %xmm1
13211321 ; STRICT-NEXT: movaps %xmm1, %xmm0
13221322 ; STRICT-NEXT: retq
13231323 ;
13351335 ; STRICT: # BB#0:
13361336 ; STRICT-NEXT: movaps %xmm0, %xmm2
13371337 ; STRICT-NEXT: cmpleps %xmm1, %xmm0
1338 ; STRICT-NEXT: blendvps %xmm2, %xmm1
1338 ; STRICT-NEXT: blendvps %xmm0, %xmm2, %xmm1
13391339 ; STRICT-NEXT: movaps %xmm1, %xmm0
13401340 ; STRICT-NEXT: retq
13411341 ;
5353 ; X32: # BB#0:
5454 ; X32-NEXT: movdqa %xmm0, %xmm3
5555 ; X32-NEXT: movaps %xmm2, %xmm0
56 ; X32-NEXT: pblendvb %xmm1, %xmm3
56 ; X32-NEXT: pblendvb %xmm0, %xmm1, %xmm3
5757 ; X32-NEXT: movdqa %xmm3, %xmm0
5858 ; X32-NEXT: retl
5959 ;
6161 ; X64: # BB#0:
6262 ; X64-NEXT: movdqa %xmm0, %xmm3
6363 ; X64-NEXT: movaps %xmm2, %xmm0
64 ; X64-NEXT: pblendvb %xmm1, %xmm3
64 ; X64-NEXT: pblendvb %xmm0, %xmm1, %xmm3
6565 ; X64-NEXT: movdqa %xmm3, %xmm0
6666 ; X64-NEXT: retq
6767 %arg0 = bitcast <2 x i64> %a0 to <16 x i8>
7878 ; X32: # BB#0:
7979 ; X32-NEXT: movapd %xmm0, %xmm3
8080 ; X32-NEXT: movaps %xmm2, %xmm0
81 ; X32-NEXT: blendvpd %xmm1, %xmm3
81 ; X32-NEXT: blendvpd %xmm0, %xmm1, %xmm3
8282 ; X32-NEXT: movapd %xmm3, %xmm0
8383 ; X32-NEXT: retl
8484 ;
8686 ; X64: # BB#0:
8787 ; X64-NEXT: movapd %xmm0, %xmm3
8888 ; X64-NEXT: movaps %xmm2, %xmm0
89 ; X64-NEXT: blendvpd %xmm1, %xmm3
89 ; X64-NEXT: blendvpd %xmm0, %xmm1, %xmm3
9090 ; X64-NEXT: movapd %xmm3, %xmm0
9191 ; X64-NEXT: retq
9292 %res = call <2 x double> @llvm.x86.sse41.blendvpd(<2 x double> %a0, <2 x double> %a1, <2 x double> %a2)
9999 ; X32: # BB#0:
100100 ; X32-NEXT: movaps %xmm0, %xmm3
101101 ; X32-NEXT: movaps %xmm2, %xmm0
102 ; X32-NEXT: blendvps %xmm1, %xmm3
102 ; X32-NEXT: blendvps %xmm0, %xmm1, %xmm3
103103 ; X32-NEXT: movaps %xmm3, %xmm0
104104 ; X32-NEXT: retl
105105 ;
107107 ; X64: # BB#0:
108108 ; X64-NEXT: movaps %xmm0, %xmm3
109109 ; X64-NEXT: movaps %xmm2, %xmm0
110 ; X64-NEXT: blendvps %xmm1, %xmm3
110 ; X64-NEXT: blendvps %xmm0, %xmm1, %xmm3
111111 ; X64-NEXT: movaps %xmm3, %xmm0
112112 ; X64-NEXT: retq
113113 %res = call <4 x float> @llvm.x86.sse41.blendvps(<4 x float> %a0, <4 x float> %a1, <4 x float> %a2)
77 ; SSE41: ## BB#0:
88 ; SSE41-NEXT: movapd %xmm0, %xmm3 ## encoding: [0x66,0x0f,0x28,0xd8]
99 ; SSE41-NEXT: movaps %xmm2, %xmm0 ## encoding: [0x0f,0x28,0xc2]
10 ; SSE41-NEXT: blendvpd %xmm1, %xmm3 ## encoding: [0x66,0x0f,0x38,0x15,0xd9]
10 ; SSE41-NEXT: blendvpd %xmm0, %xmm1, %xmm3 ## encoding: [0x66,0x0f,0x38,0x15,0xd9]
1111 ; SSE41-NEXT: movapd %xmm3, %xmm0 ## encoding: [0x66,0x0f,0x28,0xc3]
1212 ; SSE41-NEXT: retl ## encoding: [0xc3]
1313 ;
2626 ; SSE41: ## BB#0:
2727 ; SSE41-NEXT: movaps %xmm0, %xmm3 ## encoding: [0x0f,0x28,0xd8]
2828 ; SSE41-NEXT: movaps %xmm2, %xmm0 ## encoding: [0x0f,0x28,0xc2]
29 ; SSE41-NEXT: blendvps %xmm1, %xmm3 ## encoding: [0x66,0x0f,0x38,0x14,0xd9]
29 ; SSE41-NEXT: blendvps %xmm0, %xmm1, %xmm3 ## encoding: [0x66,0x0f,0x38,0x14,0xd9]
3030 ; SSE41-NEXT: movaps %xmm3, %xmm0 ## encoding: [0x0f,0x28,0xc3]
3131 ; SSE41-NEXT: retl ## encoding: [0xc3]
3232 ;
139139 ; SSE41: ## BB#0:
140140 ; SSE41-NEXT: movdqa %xmm0, %xmm3 ## encoding: [0x66,0x0f,0x6f,0xd8]
141141 ; SSE41-NEXT: movaps %xmm2, %xmm0 ## encoding: [0x0f,0x28,0xc2]
142 ; SSE41-NEXT: pblendvb %xmm1, %xmm3 ## encoding: [0x66,0x0f,0x38,0x10,0xd9]
142 ; SSE41-NEXT: pblendvb %xmm0, %xmm1, %xmm3 ## encoding: [0x66,0x0f,0x38,0x10,0xd9]
143143 ; SSE41-NEXT: movdqa %xmm3, %xmm0 ## encoding: [0x66,0x0f,0x6f,0xc3]
144144 ; SSE41-NEXT: retl ## encoding: [0xc3]
145145 ;
770770 ; X32: ## BB#0:
771771 ; X32-NEXT: psllw $15, %xmm0
772772 ; X32-NEXT: psraw $15, %xmm0
773 ; X32-NEXT: pblendvb %xmm1, %xmm2
773 ; X32-NEXT: pblendvb %xmm0, %xmm1, %xmm2
774774 ; X32-NEXT: movdqa %xmm2, %xmm0
775775 ; X32-NEXT: retl
776776 ;
778778 ; X64: ## BB#0:
779779 ; X64-NEXT: psllw $15, %xmm0
780780 ; X64-NEXT: psraw $15, %xmm0
781 ; X64-NEXT: pblendvb %xmm1, %xmm2
781 ; X64-NEXT: pblendvb %xmm0, %xmm1, %xmm2
782782 ; X64-NEXT: movdqa %xmm2, %xmm0
783783 ; X64-NEXT: retq
784784 %ret = select <8 x i1> %mask, <8 x i16> %x, <8 x i16> %y
147147
148148 define <2 x double> @stack_fold_blendvpd(<2 x double> %a0, <2 x double> %a1, <2 x double> %c) {
149149 ;CHECK-LABEL: stack_fold_blendvpd
150 ;CHECK: blendvpd {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
150 ;CHECK: blendvpd %xmm0, {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
151151 %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
152152 %2 = call <2 x double> @llvm.x86.sse41.blendvpd(<2 x double> %a1, <2 x double> %c, <2 x double> %a0)
153153 ret <2 x double> %2
156156
157157 define <4 x float> @stack_fold_blendvps(<4 x float> %a0, <4 x float> %a1, <4 x float> %c) {
158158 ;CHECK-LABEL: stack_fold_blendvps
159 ;CHECK: blendvps {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
159 ;CHECK: blendvps %xmm0, {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
160160 %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
161161 %2 = call <4 x float> @llvm.x86.sse41.blendvps(<4 x float> %a1, <4 x float> %c, <4 x float> %a0)
162162 ret <4 x float> %2
317317
318318 define <16 x i8> @stack_fold_pblendvb(<16 x i8> %a0, <16 x i8> %a1, <16 x i8> %c) {
319319 ;CHECK-LABEL: stack_fold_pblendvb
320 ;CHECK: pblendvb {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
320 ;CHECK: pblendvb %xmm0, {{-?[0-9]*}}(%rsp), {{%xmm[0-9][0-9]*}} {{.*#+}} 16-byte Folded Reload
321321 %1 = tail call <2 x i64> asm sideeffect "nop", "=x,~{xmm3},~{xmm4},~{xmm5},~{xmm6},~{xmm7},~{xmm8},~{xmm9},~{xmm10},~{xmm11},~{xmm12},~{xmm13},~{xmm14},~{xmm15},~{flags}"()
322322 %2 = call <16 x i8> @llvm.x86.sse41.pblendvb(<16 x i8> %a1, <16 x i8> %c, <16 x i8> %a0)
323323 ret <16 x i8> %2
4545 ; SSE41-NEXT: pand %xmm5, %xmm3
4646 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm4[1,1,3,3]
4747 ; SSE41-NEXT: por %xmm3, %xmm0
48 ; SSE41-NEXT: blendvpd %xmm2, %xmm1
48 ; SSE41-NEXT: blendvpd %xmm0, %xmm2, %xmm1
4949 ; SSE41-NEXT: movapd %xmm1, %xmm0
5050 ; SSE41-NEXT: retq
5151 ;
5353 ; SSE42: # BB#0:
5454 ; SSE42-NEXT: movdqa %xmm0, %xmm2
5555 ; SSE42-NEXT: pcmpgtq %xmm1, %xmm0
56 ; SSE42-NEXT: blendvpd %xmm2, %xmm1
56 ; SSE42-NEXT: blendvpd %xmm0, %xmm2, %xmm1
5757 ; SSE42-NEXT: movapd %xmm1, %xmm0
5858 ; SSE42-NEXT: retq
5959 ;
129129 ; SSE41-NEXT: pand %xmm7, %xmm4
130130 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm6[1,1,3,3]
131131 ; SSE41-NEXT: por %xmm4, %xmm0
132 ; SSE41-NEXT: blendvpd %xmm8, %xmm2
132 ; SSE41-NEXT: blendvpd %xmm0, %xmm8, %xmm2
133133 ; SSE41-NEXT: movdqa %xmm5, %xmm0
134 ; SSE41-NEXT: blendvpd %xmm1, %xmm3
134 ; SSE41-NEXT: blendvpd %xmm0, %xmm1, %xmm3
135135 ; SSE41-NEXT: movapd %xmm2, %xmm0
136136 ; SSE41-NEXT: movapd %xmm3, %xmm1
137137 ; SSE41-NEXT: retq
142142 ; SSE42-NEXT: movdqa %xmm1, %xmm5
143143 ; SSE42-NEXT: pcmpgtq %xmm3, %xmm5
144144 ; SSE42-NEXT: pcmpgtq %xmm2, %xmm0
145 ; SSE42-NEXT: blendvpd %xmm4, %xmm2
145 ; SSE42-NEXT: blendvpd %xmm0, %xmm4, %xmm2
146146 ; SSE42-NEXT: movdqa %xmm5, %xmm0
147 ; SSE42-NEXT: blendvpd %xmm1, %xmm3
147 ; SSE42-NEXT: blendvpd %xmm0, %xmm1, %xmm3
148148 ; SSE42-NEXT: movapd %xmm2, %xmm0
149149 ; SSE42-NEXT: movapd %xmm3, %xmm1
150150 ; SSE42-NEXT: retq
428428 ; SSE41-NEXT: por %xmm0, %xmm3
429429 ; SSE41-NEXT: pcmpeqd %xmm0, %xmm0
430430 ; SSE41-NEXT: pxor %xmm3, %xmm0
431 ; SSE41-NEXT: blendvpd %xmm2, %xmm1
431 ; SSE41-NEXT: blendvpd %xmm0, %xmm2, %xmm1
432432 ; SSE41-NEXT: movapd %xmm1, %xmm0
433433 ; SSE41-NEXT: retq
434434 ;
439439 ; SSE42-NEXT: pcmpgtq %xmm2, %xmm3
440440 ; SSE42-NEXT: pcmpeqd %xmm0, %xmm0
441441 ; SSE42-NEXT: pxor %xmm3, %xmm0
442 ; SSE42-NEXT: blendvpd %xmm2, %xmm1
442 ; SSE42-NEXT: blendvpd %xmm0, %xmm2, %xmm1
443443 ; SSE42-NEXT: movapd %xmm1, %xmm0
444444 ; SSE42-NEXT: retq
445445 ;
526526 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm7[1,1,3,3]
527527 ; SSE41-NEXT: por %xmm6, %xmm0
528528 ; SSE41-NEXT: pxor %xmm9, %xmm0
529 ; SSE41-NEXT: blendvpd %xmm8, %xmm2
529 ; SSE41-NEXT: blendvpd %xmm0, %xmm8, %xmm2
530530 ; SSE41-NEXT: movdqa %xmm5, %xmm0
531 ; SSE41-NEXT: blendvpd %xmm1, %xmm3
531 ; SSE41-NEXT: blendvpd %xmm0, %xmm1, %xmm3
532532 ; SSE41-NEXT: movapd %xmm2, %xmm0
533533 ; SSE41-NEXT: movapd %xmm3, %xmm1
534534 ; SSE41-NEXT: retq
543543 ; SSE42-NEXT: movdqa %xmm2, %xmm6
544544 ; SSE42-NEXT: pcmpgtq %xmm4, %xmm6
545545 ; SSE42-NEXT: pxor %xmm6, %xmm0
546 ; SSE42-NEXT: blendvpd %xmm4, %xmm2
546 ; SSE42-NEXT: blendvpd %xmm0, %xmm4, %xmm2
547547 ; SSE42-NEXT: movdqa %xmm5, %xmm0
548 ; SSE42-NEXT: blendvpd %xmm1, %xmm3
548 ; SSE42-NEXT: blendvpd %xmm0, %xmm1, %xmm3
549549 ; SSE42-NEXT: movapd %xmm2, %xmm0
550550 ; SSE42-NEXT: movapd %xmm3, %xmm1
551551 ; SSE42-NEXT: retq
843843 ; SSE41-NEXT: pand %xmm5, %xmm3
844844 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm4[1,1,3,3]
845845 ; SSE41-NEXT: por %xmm3, %xmm0
846 ; SSE41-NEXT: blendvpd %xmm2, %xmm1
846 ; SSE41-NEXT: blendvpd %xmm0, %xmm2, %xmm1
847847 ; SSE41-NEXT: movapd %xmm1, %xmm0
848848 ; SSE41-NEXT: retq
849849 ;
852852 ; SSE42-NEXT: movdqa %xmm0, %xmm2
853853 ; SSE42-NEXT: movdqa %xmm1, %xmm0
854854 ; SSE42-NEXT: pcmpgtq %xmm2, %xmm0
855 ; SSE42-NEXT: blendvpd %xmm2, %xmm1
855 ; SSE42-NEXT: blendvpd %xmm0, %xmm2, %xmm1
856856 ; SSE42-NEXT: movapd %xmm1, %xmm0
857857 ; SSE42-NEXT: retq
858858 ;
928928 ; SSE41-NEXT: pand %xmm7, %xmm4
929929 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm6[1,1,3,3]
930930 ; SSE41-NEXT: por %xmm4, %xmm0
931 ; SSE41-NEXT: blendvpd %xmm8, %xmm2
931 ; SSE41-NEXT: blendvpd %xmm0, %xmm8, %xmm2
932932 ; SSE41-NEXT: movdqa %xmm5, %xmm0
933 ; SSE41-NEXT: blendvpd %xmm1, %xmm3
933 ; SSE41-NEXT: blendvpd %xmm0, %xmm1, %xmm3
934934 ; SSE41-NEXT: movapd %xmm2, %xmm0
935935 ; SSE41-NEXT: movapd %xmm3, %xmm1
936936 ; SSE41-NEXT: retq
942942 ; SSE42-NEXT: pcmpgtq %xmm1, %xmm5
943943 ; SSE42-NEXT: movdqa %xmm2, %xmm0
944944 ; SSE42-NEXT: pcmpgtq %xmm4, %xmm0
945 ; SSE42-NEXT: blendvpd %xmm4, %xmm2
945 ; SSE42-NEXT: blendvpd %xmm0, %xmm4, %xmm2
946946 ; SSE42-NEXT: movdqa %xmm5, %xmm0
947 ; SSE42-NEXT: blendvpd %xmm1, %xmm3
947 ; SSE42-NEXT: blendvpd %xmm0, %xmm1, %xmm3
948948 ; SSE42-NEXT: movapd %xmm2, %xmm0
949949 ; SSE42-NEXT: movapd %xmm3, %xmm1
950950 ; SSE42-NEXT: retq
12221222 ; SSE41-NEXT: por %xmm0, %xmm3
12231223 ; SSE41-NEXT: pcmpeqd %xmm0, %xmm0
12241224 ; SSE41-NEXT: pxor %xmm3, %xmm0
1225 ; SSE41-NEXT: blendvpd %xmm2, %xmm1
1225 ; SSE41-NEXT: blendvpd %xmm0, %xmm2, %xmm1
12261226 ; SSE41-NEXT: movapd %xmm1, %xmm0
12271227 ; SSE41-NEXT: retq
12281228 ;
12321232 ; SSE42-NEXT: pcmpgtq %xmm1, %xmm0
12331233 ; SSE42-NEXT: pcmpeqd %xmm3, %xmm3
12341234 ; SSE42-NEXT: pxor %xmm3, %xmm0
1235 ; SSE42-NEXT: blendvpd %xmm2, %xmm1
1235 ; SSE42-NEXT: blendvpd %xmm0, %xmm2, %xmm1
12361236 ; SSE42-NEXT: movapd %xmm1, %xmm0
12371237 ; SSE42-NEXT: retq
12381238 ;
13191319 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm7[1,1,3,3]
13201320 ; SSE41-NEXT: por %xmm6, %xmm0
13211321 ; SSE41-NEXT: pxor %xmm9, %xmm0
1322 ; SSE41-NEXT: blendvpd %xmm8, %xmm2
1322 ; SSE41-NEXT: blendvpd %xmm0, %xmm8, %xmm2
13231323 ; SSE41-NEXT: movdqa %xmm5, %xmm0
1324 ; SSE41-NEXT: blendvpd %xmm1, %xmm3
1324 ; SSE41-NEXT: blendvpd %xmm0, %xmm1, %xmm3
13251325 ; SSE41-NEXT: movapd %xmm2, %xmm0
13261326 ; SSE41-NEXT: movapd %xmm3, %xmm1
13271327 ; SSE41-NEXT: retq
13351335 ; SSE42-NEXT: pxor %xmm6, %xmm5
13361336 ; SSE42-NEXT: pcmpgtq %xmm2, %xmm0
13371337 ; SSE42-NEXT: pxor %xmm6, %xmm0
1338 ; SSE42-NEXT: blendvpd %xmm4, %xmm2
1338 ; SSE42-NEXT: blendvpd %xmm0, %xmm4, %xmm2
13391339 ; SSE42-NEXT: movdqa %xmm5, %xmm0
1340 ; SSE42-NEXT: blendvpd %xmm1, %xmm3
1340 ; SSE42-NEXT: blendvpd %xmm0, %xmm1, %xmm3
13411341 ; SSE42-NEXT: movapd %xmm2, %xmm0
13421342 ; SSE42-NEXT: movapd %xmm3, %xmm1
13431343 ; SSE42-NEXT: retq
4545 ; SSE41-NEXT: pand %xmm5, %xmm3
4646 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm4[1,1,3,3]
4747 ; SSE41-NEXT: por %xmm3, %xmm0
48 ; SSE41-NEXT: blendvpd %xmm2, %xmm1
48 ; SSE41-NEXT: blendvpd %xmm0, %xmm2, %xmm1
4949 ; SSE41-NEXT: movapd %xmm1, %xmm0
5050 ; SSE41-NEXT: retq
5151 ;
5757 ; SSE42-NEXT: pxor %xmm0, %xmm3
5858 ; SSE42-NEXT: pxor %xmm2, %xmm0
5959 ; SSE42-NEXT: pcmpgtq %xmm3, %xmm0
60 ; SSE42-NEXT: blendvpd %xmm2, %xmm1
60 ; SSE42-NEXT: blendvpd %xmm0, %xmm2, %xmm1
6161 ; SSE42-NEXT: movapd %xmm1, %xmm0
6262 ; SSE42-NEXT: retq
6363 ;
136136 ; SSE41-NEXT: pand %xmm7, %xmm4
137137 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm6[1,1,3,3]
138138 ; SSE41-NEXT: por %xmm4, %xmm0
139 ; SSE41-NEXT: blendvpd %xmm8, %xmm2
139 ; SSE41-NEXT: blendvpd %xmm0, %xmm8, %xmm2
140140 ; SSE41-NEXT: movdqa %xmm5, %xmm0
141 ; SSE41-NEXT: blendvpd %xmm1, %xmm3
141 ; SSE41-NEXT: blendvpd %xmm0, %xmm1, %xmm3
142142 ; SSE41-NEXT: movapd %xmm2, %xmm0
143143 ; SSE41-NEXT: movapd %xmm3, %xmm1
144144 ; SSE41-NEXT: retq
156156 ; SSE42-NEXT: pxor %xmm0, %xmm6
157157 ; SSE42-NEXT: pxor %xmm4, %xmm0
158158 ; SSE42-NEXT: pcmpgtq %xmm6, %xmm0
159 ; SSE42-NEXT: blendvpd %xmm4, %xmm2
159 ; SSE42-NEXT: blendvpd %xmm0, %xmm4, %xmm2
160160 ; SSE42-NEXT: movdqa %xmm5, %xmm0
161 ; SSE42-NEXT: blendvpd %xmm1, %xmm3
161 ; SSE42-NEXT: blendvpd %xmm0, %xmm1, %xmm3
162162 ; SSE42-NEXT: movapd %xmm2, %xmm0
163163 ; SSE42-NEXT: movapd %xmm3, %xmm1
164164 ; SSE42-NEXT: retq
467467 ; SSE41-NEXT: por %xmm0, %xmm3
468468 ; SSE41-NEXT: pcmpeqd %xmm0, %xmm0
469469 ; SSE41-NEXT: pxor %xmm3, %xmm0
470 ; SSE41-NEXT: blendvpd %xmm2, %xmm1
470 ; SSE41-NEXT: blendvpd %xmm0, %xmm2, %xmm1
471471 ; SSE41-NEXT: movapd %xmm1, %xmm0
472472 ; SSE41-NEXT: retq
473473 ;
480480 ; SSE42-NEXT: pcmpgtq %xmm0, %xmm3
481481 ; SSE42-NEXT: pcmpeqd %xmm0, %xmm0
482482 ; SSE42-NEXT: pxor %xmm3, %xmm0
483 ; SSE42-NEXT: blendvpd %xmm2, %xmm1
483 ; SSE42-NEXT: blendvpd %xmm0, %xmm2, %xmm1
484484 ; SSE42-NEXT: movapd %xmm1, %xmm0
485485 ; SSE42-NEXT: retq
486486 ;
570570 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm7[1,1,3,3]
571571 ; SSE41-NEXT: por %xmm6, %xmm0
572572 ; SSE41-NEXT: pxor %xmm9, %xmm0
573 ; SSE41-NEXT: blendvpd %xmm8, %xmm2
573 ; SSE41-NEXT: blendvpd %xmm0, %xmm8, %xmm2
574574 ; SSE41-NEXT: movdqa %xmm5, %xmm0
575 ; SSE41-NEXT: blendvpd %xmm1, %xmm3
575 ; SSE41-NEXT: blendvpd %xmm0, %xmm1, %xmm3
576576 ; SSE41-NEXT: movapd %xmm2, %xmm0
577577 ; SSE41-NEXT: movapd %xmm3, %xmm1
578578 ; SSE41-NEXT: retq
593593 ; SSE42-NEXT: pxor %xmm2, %xmm0
594594 ; SSE42-NEXT: pcmpgtq %xmm7, %xmm0
595595 ; SSE42-NEXT: pxor %xmm6, %xmm0
596 ; SSE42-NEXT: blendvpd %xmm4, %xmm2
596 ; SSE42-NEXT: blendvpd %xmm0, %xmm4, %xmm2
597597 ; SSE42-NEXT: movdqa %xmm5, %xmm0
598 ; SSE42-NEXT: blendvpd %xmm1, %xmm3
598 ; SSE42-NEXT: blendvpd %xmm0, %xmm1, %xmm3
599599 ; SSE42-NEXT: movapd %xmm2, %xmm0
600600 ; SSE42-NEXT: movapd %xmm3, %xmm1
601601 ; SSE42-NEXT: retq
909909 ; SSE41-NEXT: pand %xmm5, %xmm3
910910 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm4[1,1,3,3]
911911 ; SSE41-NEXT: por %xmm3, %xmm0
912 ; SSE41-NEXT: blendvpd %xmm2, %xmm1
912 ; SSE41-NEXT: blendvpd %xmm0, %xmm2, %xmm1
913913 ; SSE41-NEXT: movapd %xmm1, %xmm0
914914 ; SSE41-NEXT: retq
915915 ;
921921 ; SSE42-NEXT: pxor %xmm0, %xmm3
922922 ; SSE42-NEXT: pxor %xmm1, %xmm0
923923 ; SSE42-NEXT: pcmpgtq %xmm3, %xmm0
924 ; SSE42-NEXT: blendvpd %xmm2, %xmm1
924 ; SSE42-NEXT: blendvpd %xmm0, %xmm2, %xmm1
925925 ; SSE42-NEXT: movapd %xmm1, %xmm0
926926 ; SSE42-NEXT: retq
927927 ;
10001000 ; SSE41-NEXT: pand %xmm7, %xmm4
10011001 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm6[1,1,3,3]
10021002 ; SSE41-NEXT: por %xmm4, %xmm0
1003 ; SSE41-NEXT: blendvpd %xmm8, %xmm2
1003 ; SSE41-NEXT: blendvpd %xmm0, %xmm8, %xmm2
10041004 ; SSE41-NEXT: movdqa %xmm5, %xmm0
1005 ; SSE41-NEXT: blendvpd %xmm1, %xmm3
1005 ; SSE41-NEXT: blendvpd %xmm0, %xmm1, %xmm3
10061006 ; SSE41-NEXT: movapd %xmm2, %xmm0
10071007 ; SSE41-NEXT: movapd %xmm3, %xmm1
10081008 ; SSE41-NEXT: retq
10201020 ; SSE42-NEXT: pxor %xmm0, %xmm6
10211021 ; SSE42-NEXT: pxor %xmm2, %xmm0
10221022 ; SSE42-NEXT: pcmpgtq %xmm6, %xmm0
1023 ; SSE42-NEXT: blendvpd %xmm4, %xmm2
1023 ; SSE42-NEXT: blendvpd %xmm0, %xmm4, %xmm2
10241024 ; SSE42-NEXT: movdqa %xmm5, %xmm0
1025 ; SSE42-NEXT: blendvpd %xmm1, %xmm3
1025 ; SSE42-NEXT: blendvpd %xmm0, %xmm1, %xmm3
10261026 ; SSE42-NEXT: movapd %xmm2, %xmm0
10271027 ; SSE42-NEXT: movapd %xmm3, %xmm1
10281028 ; SSE42-NEXT: retq
13291329 ; SSE41-NEXT: por %xmm0, %xmm3
13301330 ; SSE41-NEXT: pcmpeqd %xmm0, %xmm0
13311331 ; SSE41-NEXT: pxor %xmm3, %xmm0
1332 ; SSE41-NEXT: blendvpd %xmm2, %xmm1
1332 ; SSE41-NEXT: blendvpd %xmm0, %xmm2, %xmm1
13331333 ; SSE41-NEXT: movapd %xmm1, %xmm0
13341334 ; SSE41-NEXT: retq
13351335 ;
13431343 ; SSE42-NEXT: pcmpgtq %xmm0, %xmm3
13441344 ; SSE42-NEXT: pcmpeqd %xmm0, %xmm0
13451345 ; SSE42-NEXT: pxor %xmm3, %xmm0
1346 ; SSE42-NEXT: blendvpd %xmm2, %xmm1
1346 ; SSE42-NEXT: blendvpd %xmm0, %xmm2, %xmm1
13471347 ; SSE42-NEXT: movapd %xmm1, %xmm0
13481348 ; SSE42-NEXT: retq
13491349 ;
14331433 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm7[1,1,3,3]
14341434 ; SSE41-NEXT: por %xmm6, %xmm0
14351435 ; SSE41-NEXT: pxor %xmm9, %xmm0
1436 ; SSE41-NEXT: blendvpd %xmm8, %xmm2
1436 ; SSE41-NEXT: blendvpd %xmm0, %xmm8, %xmm2
14371437 ; SSE41-NEXT: movdqa %xmm5, %xmm0
1438 ; SSE41-NEXT: blendvpd %xmm1, %xmm3
1438 ; SSE41-NEXT: blendvpd %xmm0, %xmm1, %xmm3
14391439 ; SSE41-NEXT: movapd %xmm2, %xmm0
14401440 ; SSE41-NEXT: movapd %xmm3, %xmm1
14411441 ; SSE41-NEXT: retq
14561456 ; SSE42-NEXT: pxor %xmm4, %xmm0
14571457 ; SSE42-NEXT: pcmpgtq %xmm7, %xmm0
14581458 ; SSE42-NEXT: pxor %xmm6, %xmm0
1459 ; SSE42-NEXT: blendvpd %xmm4, %xmm2
1459 ; SSE42-NEXT: blendvpd %xmm0, %xmm4, %xmm2
14601460 ; SSE42-NEXT: movdqa %xmm5, %xmm0
1461 ; SSE42-NEXT: blendvpd %xmm1, %xmm3
1461 ; SSE42-NEXT: blendvpd %xmm0, %xmm1, %xmm3
14621462 ; SSE42-NEXT: movapd %xmm2, %xmm0
14631463 ; SSE42-NEXT: movapd %xmm3, %xmm1
14641464 ; SSE42-NEXT: retq
3838 ; X32-NEXT: psllw $4, %xmm3
3939 ; X32-NEXT: pand {{\.LCPI.*}}, %xmm3
4040 ; X32-NEXT: movdqa %xmm1, %xmm0
41 ; X32-NEXT: pblendvb %xmm3, %xmm2
41 ; X32-NEXT: pblendvb %xmm0, %xmm3, %xmm2
4242 ; X32-NEXT: movdqa %xmm2, %xmm3
4343 ; X32-NEXT: psllw $2, %xmm3
4444 ; X32-NEXT: pand {{\.LCPI.*}}, %xmm3
4545 ; X32-NEXT: paddb %xmm1, %xmm1
4646 ; X32-NEXT: movdqa %xmm1, %xmm0
47 ; X32-NEXT: pblendvb %xmm3, %xmm2
47 ; X32-NEXT: pblendvb %xmm0, %xmm3, %xmm2
4848 ; X32-NEXT: movdqa %xmm2, %xmm3
4949 ; X32-NEXT: paddb %xmm3, %xmm3
5050 ; X32-NEXT: paddb %xmm1, %xmm1
5151 ; X32-NEXT: movdqa %xmm1, %xmm0
52 ; X32-NEXT: pblendvb %xmm3, %xmm2
52 ; X32-NEXT: pblendvb %xmm0, %xmm3, %xmm2
5353 ; X32-NEXT: movdqa %xmm2, %xmm0
5454 ; X32-NEXT: retl
5555 ;
6161 ; X64-NEXT: psllw $4, %xmm3
6262 ; X64-NEXT: pand {{.*}}(%rip), %xmm3
6363 ; X64-NEXT: movdqa %xmm1, %xmm0
64 ; X64-NEXT: pblendvb %xmm3, %xmm2
64 ; X64-NEXT: pblendvb %xmm0, %xmm3, %xmm2
6565 ; X64-NEXT: movdqa %xmm2, %xmm3
6666 ; X64-NEXT: psllw $2, %xmm3
6767 ; X64-NEXT: pand {{.*}}(%rip), %xmm3
6868 ; X64-NEXT: paddb %xmm1, %xmm1
6969 ; X64-NEXT: movdqa %xmm1, %xmm0
70 ; X64-NEXT: pblendvb %xmm3, %xmm2
70 ; X64-NEXT: pblendvb %xmm0, %xmm3, %xmm2
7171 ; X64-NEXT: movdqa %xmm2, %xmm3
7272 ; X64-NEXT: paddb %xmm3, %xmm3
7373 ; X64-NEXT: paddb %xmm1, %xmm1
7474 ; X64-NEXT: movdqa %xmm1, %xmm0
75 ; X64-NEXT: pblendvb %xmm3, %xmm2
75 ; X64-NEXT: pblendvb %xmm0, %xmm3, %xmm2
7676 ; X64-NEXT: movdqa %xmm2, %xmm0
7777 ; X64-NEXT: retq
7878 entry:
273273 ; SSE41: # BB#0: # %entry
274274 ; SSE41-NEXT: movdqa %xmm0, %xmm2
275275 ; SSE41-NEXT: movaps {{.*#+}} xmm0 = [255,0,0,0,255,0,0,0,255,0,0,0,255,0,0,0]
276 ; SSE41-NEXT: pblendvb %xmm2, %xmm1
276 ; SSE41-NEXT: pblendvb %xmm0, %xmm2, %xmm1
277277 ; SSE41-NEXT: movdqa %xmm1, %xmm0
278278 ; SSE41-NEXT: retq
279279 ;
499499 ; SSE41-NEXT: movapd %xmm0, %xmm2
500500 ; SSE41-NEXT: movapd %xmm1, %xmm0
501501 ; SSE41-NEXT: cmplepd %xmm2, %xmm0
502 ; SSE41-NEXT: blendvpd %xmm2, %xmm1
502 ; SSE41-NEXT: blendvpd %xmm0, %xmm2, %xmm1
503503 ; SSE41-NEXT: movapd %xmm1, %xmm0
504504 ; SSE41-NEXT: retq
505505 ;
538538 ; SSE41-NEXT: movapd %xmm0, %xmm2
539539 ; SSE41-NEXT: movapd %xmm1, %xmm0
540540 ; SSE41-NEXT: cmpnlepd %xmm2, %xmm0
541 ; SSE41-NEXT: blendvpd %xmm2, %xmm1
541 ; SSE41-NEXT: blendvpd %xmm0, %xmm2, %xmm1
542542 ; SSE41-NEXT: movapd %xmm1, %xmm0
543543 ; SSE41-NEXT: retq
544544 ;
652652 ; SSE41: # BB#0: # %entry
653653 ; SSE41-NEXT: movdqa %xmm0, %xmm4
654654 ; SSE41-NEXT: movaps {{.*#+}} xmm0 = [0,0,255,0,255,255,255,0,0,0,255,0,255,255,255,0]
655 ; SSE41-NEXT: pblendvb %xmm4, %xmm2
656 ; SSE41-NEXT: pblendvb %xmm1, %xmm3
655 ; SSE41-NEXT: pblendvb %xmm0, %xmm4, %xmm2
656 ; SSE41-NEXT: pblendvb %xmm0, %xmm1, %xmm3
657657 ; SSE41-NEXT: movdqa %xmm2, %xmm0
658658 ; SSE41-NEXT: movdqa %xmm3, %xmm1
659659 ; SSE41-NEXT: retq
821821 ; SSE41-LABEL: blend_logic_v4i32:
822822 ; SSE41: # BB#0: # %entry
823823 ; SSE41-NEXT: psrad $31, %xmm0
824 ; SSE41-NEXT: pblendvb %xmm1, %xmm2
824 ; SSE41-NEXT: pblendvb %xmm0, %xmm1, %xmm2
825825 ; SSE41-NEXT: movdqa %xmm2, %xmm0
826826 ; SSE41-NEXT: retq
827827 ;
869869 ; SSE41: # BB#0: # %entry
870870 ; SSE41-NEXT: psrad $31, %xmm1
871871 ; SSE41-NEXT: psrad $31, %xmm0
872 ; SSE41-NEXT: pblendvb %xmm2, %xmm4
872 ; SSE41-NEXT: pblendvb %xmm0, %xmm2, %xmm4
873873 ; SSE41-NEXT: movdqa %xmm1, %xmm0
874 ; SSE41-NEXT: pblendvb %xmm3, %xmm5
874 ; SSE41-NEXT: pblendvb %xmm0, %xmm3, %xmm5
875875 ; SSE41-NEXT: movdqa %xmm4, %xmm0
876876 ; SSE41-NEXT: movdqa %xmm5, %xmm1
877877 ; SSE41-NEXT: retq
10271027 ; SSE41-NEXT: pxor %xmm3, %xmm3
10281028 ; SSE41-NEXT: psubd %xmm2, %xmm3
10291029 ; SSE41-NEXT: movdqa %xmm1, %xmm0
1030 ; SSE41-NEXT: blendvps %xmm2, %xmm3
1030 ; SSE41-NEXT: blendvps %xmm0, %xmm2, %xmm3
10311031 ; SSE41-NEXT: movaps %xmm3, %xmm0
10321032 ; SSE41-NEXT: retq
10331033 ;
335335 ; SSE41-NEXT: psllw $8, %xmm6
336336 ; SSE41-NEXT: movdqa %xmm3, %xmm5
337337 ; SSE41-NEXT: movdqa %xmm1, %xmm0
338 ; SSE41-NEXT: pblendvb %xmm6, %xmm5
338 ; SSE41-NEXT: pblendvb %xmm0, %xmm6, %xmm5
339339 ; SSE41-NEXT: movdqa %xmm5, %xmm1
340340 ; SSE41-NEXT: psllw $4, %xmm1
341341 ; SSE41-NEXT: movdqa %xmm4, %xmm0
342 ; SSE41-NEXT: pblendvb %xmm1, %xmm5
342 ; SSE41-NEXT: pblendvb %xmm0, %xmm1, %xmm5
343343 ; SSE41-NEXT: movdqa %xmm5, %xmm1
344344 ; SSE41-NEXT: psllw $2, %xmm1
345345 ; SSE41-NEXT: paddw %xmm4, %xmm4
346346 ; SSE41-NEXT: movdqa %xmm4, %xmm0
347 ; SSE41-NEXT: pblendvb %xmm1, %xmm5
347 ; SSE41-NEXT: pblendvb %xmm0, %xmm1, %xmm5
348348 ; SSE41-NEXT: movdqa %xmm5, %xmm1
349349 ; SSE41-NEXT: psllw $1, %xmm1
350350 ; SSE41-NEXT: paddw %xmm4, %xmm4
351351 ; SSE41-NEXT: movdqa %xmm4, %xmm0
352 ; SSE41-NEXT: pblendvb %xmm1, %xmm5
352 ; SSE41-NEXT: pblendvb %xmm0, %xmm1, %xmm5
353353 ; SSE41-NEXT: movdqa %xmm2, %xmm0
354354 ; SSE41-NEXT: psllw $12, %xmm0
355355 ; SSE41-NEXT: psllw $4, %xmm2
359359 ; SSE41-NEXT: movdqa %xmm3, %xmm4
360360 ; SSE41-NEXT: psrlw $8, %xmm4
361361 ; SSE41-NEXT: movdqa %xmm2, %xmm0
362 ; SSE41-NEXT: pblendvb %xmm4, %xmm3
362 ; SSE41-NEXT: pblendvb %xmm0, %xmm4, %xmm3
363363 ; SSE41-NEXT: movdqa %xmm3, %xmm2
364364 ; SSE41-NEXT: psrlw $4, %xmm2
365365 ; SSE41-NEXT: movdqa %xmm1, %xmm0
366 ; SSE41-NEXT: pblendvb %xmm2, %xmm3
366 ; SSE41-NEXT: pblendvb %xmm0, %xmm2, %xmm3
367367 ; SSE41-NEXT: movdqa %xmm3, %xmm2
368368 ; SSE41-NEXT: psrlw $2, %xmm2
369369 ; SSE41-NEXT: paddw %xmm1, %xmm1
370370 ; SSE41-NEXT: movdqa %xmm1, %xmm0
371 ; SSE41-NEXT: pblendvb %xmm2, %xmm3
371 ; SSE41-NEXT: pblendvb %xmm0, %xmm2, %xmm3
372372 ; SSE41-NEXT: movdqa %xmm3, %xmm2
373373 ; SSE41-NEXT: psrlw $1, %xmm2
374374 ; SSE41-NEXT: paddw %xmm1, %xmm1
375375 ; SSE41-NEXT: movdqa %xmm1, %xmm0
376 ; SSE41-NEXT: pblendvb %xmm2, %xmm3
376 ; SSE41-NEXT: pblendvb %xmm0, %xmm2, %xmm3
377377 ; SSE41-NEXT: por %xmm5, %xmm3
378378 ; SSE41-NEXT: movdqa %xmm3, %xmm0
379379 ; SSE41-NEXT: retq
584584 ; SSE41-NEXT: pand {{.*}}(%rip), %xmm5
585585 ; SSE41-NEXT: movdqa %xmm1, %xmm4
586586 ; SSE41-NEXT: movdqa %xmm3, %xmm0
587 ; SSE41-NEXT: pblendvb %xmm5, %xmm4
587 ; SSE41-NEXT: pblendvb %xmm0, %xmm5, %xmm4
588588 ; SSE41-NEXT: movdqa %xmm4, %xmm5
589589 ; SSE41-NEXT: psllw $2, %xmm5
590590 ; SSE41-NEXT: pand {{.*}}(%rip), %xmm5
591591 ; SSE41-NEXT: paddb %xmm3, %xmm3
592592 ; SSE41-NEXT: movdqa %xmm3, %xmm0
593 ; SSE41-NEXT: pblendvb %xmm5, %xmm4
593 ; SSE41-NEXT: pblendvb %xmm0, %xmm5, %xmm4
594594 ; SSE41-NEXT: movdqa %xmm4, %xmm5
595595 ; SSE41-NEXT: paddb %xmm5, %xmm5
596596 ; SSE41-NEXT: paddb %xmm3, %xmm3
597597 ; SSE41-NEXT: movdqa %xmm3, %xmm0
598 ; SSE41-NEXT: pblendvb %xmm5, %xmm4
598 ; SSE41-NEXT: pblendvb %xmm0, %xmm5, %xmm4
599599 ; SSE41-NEXT: psllw $5, %xmm2
600600 ; SSE41-NEXT: movdqa %xmm2, %xmm3
601601 ; SSE41-NEXT: paddb %xmm3, %xmm3
603603 ; SSE41-NEXT: psrlw $4, %xmm5
604604 ; SSE41-NEXT: pand {{.*}}(%rip), %xmm5
605605 ; SSE41-NEXT: movdqa %xmm2, %xmm0
606 ; SSE41-NEXT: pblendvb %xmm5, %xmm1
606 ; SSE41-NEXT: pblendvb %xmm0, %xmm5, %xmm1
607607 ; SSE41-NEXT: movdqa %xmm1, %xmm2
608608 ; SSE41-NEXT: psrlw $2, %xmm2
609609 ; SSE41-NEXT: pand {{.*}}(%rip), %xmm2
610610 ; SSE41-NEXT: movdqa %xmm3, %xmm0
611 ; SSE41-NEXT: pblendvb %xmm2, %xmm1
611 ; SSE41-NEXT: pblendvb %xmm0, %xmm2, %xmm1
612612 ; SSE41-NEXT: movdqa %xmm1, %xmm2
613613 ; SSE41-NEXT: psrlw $1, %xmm2
614614 ; SSE41-NEXT: pand {{.*}}(%rip), %xmm2
615615 ; SSE41-NEXT: paddb %xmm3, %xmm3
616616 ; SSE41-NEXT: movdqa %xmm3, %xmm0
617 ; SSE41-NEXT: pblendvb %xmm2, %xmm1
617 ; SSE41-NEXT: pblendvb %xmm0, %xmm2, %xmm1
618618 ; SSE41-NEXT: por %xmm4, %xmm1
619619 ; SSE41-NEXT: movdqa %xmm1, %xmm0
620620 ; SSE41-NEXT: retq
11071107 ; SSE41-NEXT: pand {{.*}}(%rip), %xmm3
11081108 ; SSE41-NEXT: movdqa {{.*#+}} xmm0 = [8192,24640,41088,57536,57600,41152,24704,8256]
11091109 ; SSE41-NEXT: movdqa %xmm1, %xmm2
1110 ; SSE41-NEXT: pblendvb %xmm3, %xmm2
1110 ; SSE41-NEXT: pblendvb %xmm0, %xmm3, %xmm2
11111111 ; SSE41-NEXT: movdqa %xmm2, %xmm3
11121112 ; SSE41-NEXT: psllw $2, %xmm3
11131113 ; SSE41-NEXT: pand {{.*}}(%rip), %xmm3
11141114 ; SSE41-NEXT: paddb %xmm0, %xmm0
1115 ; SSE41-NEXT: pblendvb %xmm3, %xmm2
1115 ; SSE41-NEXT: pblendvb %xmm0, %xmm3, %xmm2
11161116 ; SSE41-NEXT: movdqa %xmm2, %xmm3
11171117 ; SSE41-NEXT: paddb %xmm3, %xmm3
11181118 ; SSE41-NEXT: paddb %xmm0, %xmm0
1119 ; SSE41-NEXT: pblendvb %xmm3, %xmm2
1119 ; SSE41-NEXT: pblendvb %xmm0, %xmm3, %xmm2
11201120 ; SSE41-NEXT: movdqa %xmm1, %xmm3
11211121 ; SSE41-NEXT: psrlw $4, %xmm3
11221122 ; SSE41-NEXT: pand {{.*}}(%rip), %xmm3
11231123 ; SSE41-NEXT: movdqa {{.*#+}} xmm0 = [57600,41152,24704,8256,8192,24640,41088,57536]
1124 ; SSE41-NEXT: pblendvb %xmm3, %xmm1
1124 ; SSE41-NEXT: pblendvb %xmm0, %xmm3, %xmm1
11251125 ; SSE41-NEXT: movdqa %xmm1, %xmm3
11261126 ; SSE41-NEXT: psrlw $2, %xmm3
11271127 ; SSE41-NEXT: pand {{.*}}(%rip), %xmm3
11281128 ; SSE41-NEXT: paddb %xmm0, %xmm0
1129 ; SSE41-NEXT: pblendvb %xmm3, %xmm1
1129 ; SSE41-NEXT: pblendvb %xmm0, %xmm3, %xmm1
11301130 ; SSE41-NEXT: movdqa %xmm1, %xmm3
11311131 ; SSE41-NEXT: psrlw $1, %xmm3
11321132 ; SSE41-NEXT: pand {{.*}}(%rip), %xmm3
11331133 ; SSE41-NEXT: paddb %xmm0, %xmm0
1134 ; SSE41-NEXT: pblendvb %xmm3, %xmm1
1134 ; SSE41-NEXT: pblendvb %xmm0, %xmm3, %xmm1
11351135 ; SSE41-NEXT: por %xmm2, %xmm1
11361136 ; SSE41-NEXT: movdqa %xmm1, %xmm0
11371137 ; SSE41-NEXT: retq
277277 ; SSE41-NEXT: movdqa %xmm2, %xmm4
278278 ; SSE41-NEXT: psraw $8, %xmm4
279279 ; SSE41-NEXT: movdqa %xmm1, %xmm0
280 ; SSE41-NEXT: pblendvb %xmm4, %xmm2
280 ; SSE41-NEXT: pblendvb %xmm0, %xmm4, %xmm2
281281 ; SSE41-NEXT: movdqa %xmm2, %xmm1
282282 ; SSE41-NEXT: psraw $4, %xmm1
283283 ; SSE41-NEXT: movdqa %xmm3, %xmm0
284 ; SSE41-NEXT: pblendvb %xmm1, %xmm2
284 ; SSE41-NEXT: pblendvb %xmm0, %xmm1, %xmm2
285285 ; SSE41-NEXT: movdqa %xmm2, %xmm1
286286 ; SSE41-NEXT: psraw $2, %xmm1
287287 ; SSE41-NEXT: paddw %xmm3, %xmm3
288288 ; SSE41-NEXT: movdqa %xmm3, %xmm0
289 ; SSE41-NEXT: pblendvb %xmm1, %xmm2
289 ; SSE41-NEXT: pblendvb %xmm0, %xmm1, %xmm2
290290 ; SSE41-NEXT: movdqa %xmm2, %xmm1
291291 ; SSE41-NEXT: psraw $1, %xmm1
292292 ; SSE41-NEXT: paddw %xmm3, %xmm3
293293 ; SSE41-NEXT: movdqa %xmm3, %xmm0
294 ; SSE41-NEXT: pblendvb %xmm1, %xmm2
294 ; SSE41-NEXT: pblendvb %xmm0, %xmm1, %xmm2
295295 ; SSE41-NEXT: movdqa %xmm2, %xmm0
296296 ; SSE41-NEXT: retq
297297 ;
466466 ; SSE41-NEXT: punpckhbw {{.*#+}} xmm3 = xmm3[8],xmm2[8],xmm3[9],xmm2[9],xmm3[10],xmm2[10],xmm3[11],xmm2[11],xmm3[12],xmm2[12],xmm3[13],xmm2[13],xmm3[14],xmm2[14],xmm3[15],xmm2[15]
467467 ; SSE41-NEXT: movdqa %xmm3, %xmm4
468468 ; SSE41-NEXT: psraw $4, %xmm4
469 ; SSE41-NEXT: pblendvb %xmm4, %xmm3
469 ; SSE41-NEXT: pblendvb %xmm0, %xmm4, %xmm3
470470 ; SSE41-NEXT: movdqa %xmm3, %xmm4
471471 ; SSE41-NEXT: psraw $2, %xmm4
472472 ; SSE41-NEXT: paddw %xmm0, %xmm0
473 ; SSE41-NEXT: pblendvb %xmm4, %xmm3
473 ; SSE41-NEXT: pblendvb %xmm0, %xmm4, %xmm3
474474 ; SSE41-NEXT: movdqa %xmm3, %xmm4
475475 ; SSE41-NEXT: psraw $1, %xmm4
476476 ; SSE41-NEXT: paddw %xmm0, %xmm0
477 ; SSE41-NEXT: pblendvb %xmm4, %xmm3
477 ; SSE41-NEXT: pblendvb %xmm0, %xmm4, %xmm3
478478 ; SSE41-NEXT: psrlw $8, %xmm3
479479 ; SSE41-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3],xmm0[4],xmm1[4],xmm0[5],xmm1[5],xmm0[6],xmm1[6],xmm0[7],xmm1[7]
480480 ; SSE41-NEXT: punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1],xmm1[2],xmm2[2],xmm1[3],xmm2[3],xmm1[4],xmm2[4],xmm1[5],xmm2[5],xmm1[6],xmm2[6],xmm1[7],xmm2[7]
481481 ; SSE41-NEXT: movdqa %xmm1, %xmm2
482482 ; SSE41-NEXT: psraw $4, %xmm2
483 ; SSE41-NEXT: pblendvb %xmm2, %xmm1
483 ; SSE41-NEXT: pblendvb %xmm0, %xmm2, %xmm1
484484 ; SSE41-NEXT: movdqa %xmm1, %xmm2
485485 ; SSE41-NEXT: psraw $2, %xmm2
486486 ; SSE41-NEXT: paddw %xmm0, %xmm0
487 ; SSE41-NEXT: pblendvb %xmm2, %xmm1
487 ; SSE41-NEXT: pblendvb %xmm0, %xmm2, %xmm1
488488 ; SSE41-NEXT: movdqa %xmm1, %xmm2
489489 ; SSE41-NEXT: psraw $1, %xmm2
490490 ; SSE41-NEXT: paddw %xmm0, %xmm0
491 ; SSE41-NEXT: pblendvb %xmm2, %xmm1
491 ; SSE41-NEXT: pblendvb %xmm0, %xmm2, %xmm1
492492 ; SSE41-NEXT: psrlw $8, %xmm1
493493 ; SSE41-NEXT: packuswb %xmm3, %xmm1
494494 ; SSE41-NEXT: movdqa %xmm1, %xmm0
841841 ; SSE41-NEXT: punpckhbw {{.*#+}} xmm3 = xmm3[8],xmm2[8],xmm3[9],xmm2[9],xmm3[10],xmm2[10],xmm3[11],xmm2[11],xmm3[12],xmm2[12],xmm3[13],xmm2[13],xmm3[14],xmm2[14],xmm3[15],xmm2[15]
842842 ; SSE41-NEXT: movdqa %xmm3, %xmm4
843843 ; SSE41-NEXT: psraw $4, %xmm4
844 ; SSE41-NEXT: pblendvb %xmm4, %xmm3
844 ; SSE41-NEXT: pblendvb %xmm0, %xmm4, %xmm3
845845 ; SSE41-NEXT: movdqa %xmm3, %xmm4
846846 ; SSE41-NEXT: psraw $2, %xmm4
847847 ; SSE41-NEXT: paddw %xmm0, %xmm0
848 ; SSE41-NEXT: pblendvb %xmm4, %xmm3
848 ; SSE41-NEXT: pblendvb %xmm0, %xmm4, %xmm3
849849 ; SSE41-NEXT: movdqa %xmm3, %xmm4
850850 ; SSE41-NEXT: psraw $1, %xmm4
851851 ; SSE41-NEXT: paddw %xmm0, %xmm0
852 ; SSE41-NEXT: pblendvb %xmm4, %xmm3
852 ; SSE41-NEXT: pblendvb %xmm0, %xmm4, %xmm3
853853 ; SSE41-NEXT: psrlw $8, %xmm3
854854 ; SSE41-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3],xmm0[4],xmm1[4],xmm0[5],xmm1[5],xmm0[6],xmm1[6],xmm0[7],xmm1[7]
855855 ; SSE41-NEXT: punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1],xmm1[2],xmm2[2],xmm1[3],xmm2[3],xmm1[4],xmm2[4],xmm1[5],xmm2[5],xmm1[6],xmm2[6],xmm1[7],xmm2[7]
856856 ; SSE41-NEXT: movdqa %xmm1, %xmm2
857857 ; SSE41-NEXT: psraw $4, %xmm2
858 ; SSE41-NEXT: pblendvb %xmm2, %xmm1
858 ; SSE41-NEXT: pblendvb %xmm0, %xmm2, %xmm1
859859 ; SSE41-NEXT: movdqa %xmm1, %xmm2
860860 ; SSE41-NEXT: psraw $2, %xmm2
861861 ; SSE41-NEXT: paddw %xmm0, %xmm0
862 ; SSE41-NEXT: pblendvb %xmm2, %xmm1
862 ; SSE41-NEXT: pblendvb %xmm0, %xmm2, %xmm1
863863 ; SSE41-NEXT: movdqa %xmm1, %xmm2
864864 ; SSE41-NEXT: psraw $1, %xmm2
865865 ; SSE41-NEXT: paddw %xmm0, %xmm0
866 ; SSE41-NEXT: pblendvb %xmm2, %xmm1
866 ; SSE41-NEXT: pblendvb %xmm0, %xmm2, %xmm1
867867 ; SSE41-NEXT: psrlw $8, %xmm1
868868 ; SSE41-NEXT: packuswb %xmm3, %xmm1
869869 ; SSE41-NEXT: movdqa %xmm1, %xmm0
13711371 ; SSE41-NEXT: punpckhbw {{.*#+}} xmm2 = xmm2[8],xmm1[8],xmm2[9],xmm1[9],xmm2[10],xmm1[10],xmm2[11],xmm1[11],xmm2[12],xmm1[12],xmm2[13],xmm1[13],xmm2[14],xmm1[14],xmm2[15],xmm1[15]
13721372 ; SSE41-NEXT: movdqa %xmm2, %xmm4
13731373 ; SSE41-NEXT: psraw $4, %xmm4
1374 ; SSE41-NEXT: pblendvb %xmm4, %xmm2
1374 ; SSE41-NEXT: pblendvb %xmm0, %xmm4, %xmm2
13751375 ; SSE41-NEXT: movdqa %xmm2, %xmm4
13761376 ; SSE41-NEXT: psraw $2, %xmm4
13771377 ; SSE41-NEXT: paddw %xmm0, %xmm0
1378 ; SSE41-NEXT: pblendvb %xmm4, %xmm2
1378 ; SSE41-NEXT: pblendvb %xmm0, %xmm4, %xmm2
13791379 ; SSE41-NEXT: movdqa %xmm2, %xmm4
13801380 ; SSE41-NEXT: psraw $1, %xmm4
13811381 ; SSE41-NEXT: paddw %xmm0, %xmm0
1382 ; SSE41-NEXT: pblendvb %xmm4, %xmm2
1382 ; SSE41-NEXT: pblendvb %xmm0, %xmm4, %xmm2
13831383 ; SSE41-NEXT: psrlw $8, %xmm2
13841384 ; SSE41-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1],xmm0[2],xmm3[2],xmm0[3],xmm3[3],xmm0[4],xmm3[4],xmm0[5],xmm3[5],xmm0[6],xmm3[6],xmm0[7],xmm3[7]
13851385 ; SSE41-NEXT: punpcklbw {{.*#+}} xmm1 = xmm1[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]
13861386 ; SSE41-NEXT: movdqa %xmm1, %xmm3
13871387 ; SSE41-NEXT: psraw $4, %xmm3
1388 ; SSE41-NEXT: pblendvb %xmm3, %xmm1
1388 ; SSE41-NEXT: pblendvb %xmm0, %xmm3, %xmm1
13891389 ; SSE41-NEXT: movdqa %xmm1, %xmm3
13901390 ; SSE41-NEXT: psraw $2, %xmm3
13911391 ; SSE41-NEXT: paddw %xmm0, %xmm0
1392 ; SSE41-NEXT: pblendvb %xmm3, %xmm1
1392 ; SSE41-NEXT: pblendvb %xmm0, %xmm3, %xmm1
13931393 ; SSE41-NEXT: movdqa %xmm1, %xmm3
13941394 ; SSE41-NEXT: psraw $1, %xmm3
13951395 ; SSE41-NEXT: paddw %xmm0, %xmm0
1396 ; SSE41-NEXT: pblendvb %xmm3, %xmm1
1396 ; SSE41-NEXT: pblendvb %xmm0, %xmm3, %xmm1
13971397 ; SSE41-NEXT: psrlw $8, %xmm1
13981398 ; SSE41-NEXT: packuswb %xmm2, %xmm1
13991399 ; SSE41-NEXT: movdqa %xmm1, %xmm0
248248 ; SSE41-NEXT: movdqa %xmm2, %xmm4
249249 ; SSE41-NEXT: psrlw $8, %xmm4
250250 ; SSE41-NEXT: movdqa %xmm1, %xmm0
251 ; SSE41-NEXT: pblendvb %xmm4, %xmm2
251 ; SSE41-NEXT: pblendvb %xmm0, %xmm4, %xmm2
252252 ; SSE41-NEXT: movdqa %xmm2, %xmm1
253253 ; SSE41-NEXT: psrlw $4, %xmm1
254254 ; SSE41-NEXT: movdqa %xmm3, %xmm0
255 ; SSE41-NEXT: pblendvb %xmm1, %xmm2
255 ; SSE41-NEXT: pblendvb %xmm0, %xmm1, %xmm2
256256 ; SSE41-NEXT: movdqa %xmm2, %xmm1
257257 ; SSE41-NEXT: psrlw $2, %xmm1
258258 ; SSE41-NEXT: paddw %xmm3, %xmm3
259259 ; SSE41-NEXT: movdqa %xmm3, %xmm0
260 ; SSE41-NEXT: pblendvb %xmm1, %xmm2
260 ; SSE41-NEXT: pblendvb %xmm0, %xmm1, %xmm2
261261 ; SSE41-NEXT: movdqa %xmm2, %xmm1
262262 ; SSE41-NEXT: psrlw $1, %xmm1
263263 ; SSE41-NEXT: paddw %xmm3, %xmm3
264264 ; SSE41-NEXT: movdqa %xmm3, %xmm0
265 ; SSE41-NEXT: pblendvb %xmm1, %xmm2
265 ; SSE41-NEXT: pblendvb %xmm0, %xmm1, %xmm2
266266 ; SSE41-NEXT: movdqa %xmm2, %xmm0
267267 ; SSE41-NEXT: retq
268268 ;
410410 ; SSE41-NEXT: psrlw $4, %xmm3
411411 ; SSE41-NEXT: pand {{.*}}(%rip), %xmm3
412412 ; SSE41-NEXT: movdqa %xmm1, %xmm0
413 ; SSE41-NEXT: pblendvb %xmm3, %xmm2
413 ; SSE41-NEXT: pblendvb %xmm0, %xmm3, %xmm2
414414 ; SSE41-NEXT: movdqa %xmm2, %xmm3
415415 ; SSE41-NEXT: psrlw $2, %xmm3
416416 ; SSE41-NEXT: pand {{.*}}(%rip), %xmm3
417417 ; SSE41-NEXT: paddb %xmm1, %xmm1
418418 ; SSE41-NEXT: movdqa %xmm1, %xmm0
419 ; SSE41-NEXT: pblendvb %xmm3, %xmm2
419 ; SSE41-NEXT: pblendvb %xmm0, %xmm3, %xmm2
420420 ; SSE41-NEXT: movdqa %xmm2, %xmm3
421421 ; SSE41-NEXT: psrlw $1, %xmm3
422422 ; SSE41-NEXT: pand {{.*}}(%rip), %xmm3
423423 ; SSE41-NEXT: paddb %xmm1, %xmm1
424424 ; SSE41-NEXT: movdqa %xmm1, %xmm0
425 ; SSE41-NEXT: pblendvb %xmm3, %xmm2
425 ; SSE41-NEXT: pblendvb %xmm0, %xmm3, %xmm2
426426 ; SSE41-NEXT: movdqa %xmm2, %xmm0
427427 ; SSE41-NEXT: retq
428428 ;
683683 ; SSE41-NEXT: psrlw $4, %xmm4
684684 ; SSE41-NEXT: pand {{.*}}(%rip), %xmm4
685685 ; SSE41-NEXT: movdqa %xmm1, %xmm0
686 ; SSE41-NEXT: pblendvb %xmm4, %xmm2
686 ; SSE41-NEXT: pblendvb %xmm0, %xmm4, %xmm2
687687 ; SSE41-NEXT: movdqa %xmm2, %xmm1
688688 ; SSE41-NEXT: psrlw $2, %xmm1
689689 ; SSE41-NEXT: pand {{.*}}(%rip), %xmm1
690690 ; SSE41-NEXT: movdqa %xmm3, %xmm0
691 ; SSE41-NEXT: pblendvb %xmm1, %xmm2
691 ; SSE41-NEXT: pblendvb %xmm0, %xmm1, %xmm2
692692 ; SSE41-NEXT: movdqa %xmm2, %xmm1
693693 ; SSE41-NEXT: psrlw $1, %xmm1
694694 ; SSE41-NEXT: pand {{.*}}(%rip), %xmm1
695695 ; SSE41-NEXT: paddb %xmm3, %xmm3
696696 ; SSE41-NEXT: movdqa %xmm3, %xmm0
697 ; SSE41-NEXT: pblendvb %xmm1, %xmm2
697 ; SSE41-NEXT: pblendvb %xmm0, %xmm1, %xmm2
698698 ; SSE41-NEXT: movdqa %xmm2, %xmm0
699699 ; SSE41-NEXT: retq
700700 ;
11041104 ; SSE41-NEXT: psrlw $4, %xmm2
11051105 ; SSE41-NEXT: pand {{.*}}(%rip), %xmm2
11061106 ; SSE41-NEXT: movdqa {{.*#+}} xmm0 = [8192,24640,41088,57536,49376,32928,16480,32]
1107 ; SSE41-NEXT: pblendvb %xmm2, %xmm1
1107 ; SSE41-NEXT: pblendvb %xmm0, %xmm2, %xmm1
11081108 ; SSE41-NEXT: movdqa %xmm1, %xmm2
11091109 ; SSE41-NEXT: psrlw $2, %xmm2
11101110 ; SSE41-NEXT: pand {{.*}}(%rip), %xmm2
11111111 ; SSE41-NEXT: paddb %xmm0, %xmm0
1112 ; SSE41-NEXT: pblendvb %xmm2, %xmm1
1112 ; SSE41-NEXT: pblendvb %xmm0, %xmm2, %xmm1
11131113 ; SSE41-NEXT: movdqa %xmm1, %xmm2
11141114 ; SSE41-NEXT: psrlw $1, %xmm2
11151115 ; SSE41-NEXT: pand {{.*}}(%rip), %xmm2
11161116 ; SSE41-NEXT: paddb %xmm0, %xmm0
1117 ; SSE41-NEXT: pblendvb %xmm2, %xmm1
1117 ; SSE41-NEXT: pblendvb %xmm0, %xmm2, %xmm1
11181118 ; SSE41-NEXT: movdqa %xmm1, %xmm0
11191119 ; SSE41-NEXT: retq
11201120 ;
205205 ; SSE41-NEXT: movdqa %xmm2, %xmm4
206206 ; SSE41-NEXT: psllw $8, %xmm4
207207 ; SSE41-NEXT: movdqa %xmm1, %xmm0
208 ; SSE41-NEXT: pblendvb %xmm4, %xmm2
208 ; SSE41-NEXT: pblendvb %xmm0, %xmm4, %xmm2
209209 ; SSE41-NEXT: movdqa %xmm2, %xmm1
210210 ; SSE41-NEXT: psllw $4, %xmm1
211211 ; SSE41-NEXT: movdqa %xmm3, %xmm0
212 ; SSE41-NEXT: pblendvb %xmm1, %xmm2
212 ; SSE41-NEXT: pblendvb %xmm0, %xmm1, %xmm2
213213 ; SSE41-NEXT: movdqa %xmm2, %xmm1
214214 ; SSE41-NEXT: psllw $2, %xmm1
215215 ; SSE41-NEXT: paddw %xmm3, %xmm3
216216 ; SSE41-NEXT: movdqa %xmm3, %xmm0
217 ; SSE41-NEXT: pblendvb %xmm1, %xmm2
217 ; SSE41-NEXT: pblendvb %xmm0, %xmm1, %xmm2
218218 ; SSE41-NEXT: movdqa %xmm2, %xmm1
219219 ; SSE41-NEXT: psllw $1, %xmm1
220220 ; SSE41-NEXT: paddw %xmm3, %xmm3
221221 ; SSE41-NEXT: movdqa %xmm3, %xmm0
222 ; SSE41-NEXT: pblendvb %xmm1, %xmm2
222 ; SSE41-NEXT: pblendvb %xmm0, %xmm1, %xmm2
223223 ; SSE41-NEXT: movdqa %xmm2, %xmm0
224224 ; SSE41-NEXT: retq
225225 ;
364364 ; SSE41-NEXT: psllw $4, %xmm3
365365 ; SSE41-NEXT: pand {{.*}}(%rip), %xmm3
366366 ; SSE41-NEXT: movdqa %xmm1, %xmm0
367 ; SSE41-NEXT: pblendvb %xmm3, %xmm2
367 ; SSE41-NEXT: pblendvb %xmm0, %xmm3, %xmm2
368368 ; SSE41-NEXT: movdqa %xmm2, %xmm3
369369 ; SSE41-NEXT: psllw $2, %xmm3
370370 ; SSE41-NEXT: pand {{.*}}(%rip), %xmm3
371371 ; SSE41-NEXT: paddb %xmm1, %xmm1
372372 ; SSE41-NEXT: movdqa %xmm1, %xmm0
373 ; SSE41-NEXT: pblendvb %xmm3, %xmm2
373 ; SSE41-NEXT: pblendvb %xmm0, %xmm3, %xmm2
374374 ; SSE41-NEXT: movdqa %xmm2, %xmm3
375375 ; SSE41-NEXT: paddb %xmm3, %xmm3
376376 ; SSE41-NEXT: paddb %xmm1, %xmm1
377377 ; SSE41-NEXT: movdqa %xmm1, %xmm0
378 ; SSE41-NEXT: pblendvb %xmm3, %xmm2
378 ; SSE41-NEXT: pblendvb %xmm0, %xmm3, %xmm2
379379 ; SSE41-NEXT: movdqa %xmm2, %xmm0
380380 ; SSE41-NEXT: retq
381381 ;
631631 ; SSE41-NEXT: psllw $4, %xmm4
632632 ; SSE41-NEXT: pand {{.*}}(%rip), %xmm4
633633 ; SSE41-NEXT: movdqa %xmm1, %xmm0
634 ; SSE41-NEXT: pblendvb %xmm4, %xmm2
634 ; SSE41-NEXT: pblendvb %xmm0, %xmm4, %xmm2
635635 ; SSE41-NEXT: movdqa %xmm2, %xmm1
636636 ; SSE41-NEXT: psllw $2, %xmm1
637637 ; SSE41-NEXT: pand {{.*}}(%rip), %xmm1
638638 ; SSE41-NEXT: movdqa %xmm3, %xmm0
639 ; SSE41-NEXT: pblendvb %xmm1, %xmm2
639 ; SSE41-NEXT: pblendvb %xmm0, %xmm1, %xmm2
640640 ; SSE41-NEXT: movdqa %xmm2, %xmm1
641641 ; SSE41-NEXT: paddb %xmm1, %xmm1
642642 ; SSE41-NEXT: paddb %xmm3, %xmm3
643643 ; SSE41-NEXT: movdqa %xmm3, %xmm0
644 ; SSE41-NEXT: pblendvb %xmm1, %xmm2
644 ; SSE41-NEXT: pblendvb %xmm0, %xmm1, %xmm2
645645 ; SSE41-NEXT: movdqa %xmm2, %xmm0
646646 ; SSE41-NEXT: retq
647647 ;
960960 ; SSE41-NEXT: psllw $4, %xmm2
961961 ; SSE41-NEXT: pand {{.*}}(%rip), %xmm2
962962 ; SSE41-NEXT: movdqa {{.*#+}} xmm0 = [8192,24640,41088,57536,49376,32928,16480,32]
963 ; SSE41-NEXT: pblendvb %xmm2, %xmm1
963 ; SSE41-NEXT: pblendvb %xmm0, %xmm2, %xmm1
964964 ; SSE41-NEXT: movdqa %xmm1, %xmm2
965965 ; SSE41-NEXT: psllw $2, %xmm2
966966 ; SSE41-NEXT: pand {{.*}}(%rip), %xmm2
967967 ; SSE41-NEXT: paddb %xmm0, %xmm0
968 ; SSE41-NEXT: pblendvb %xmm2, %xmm1
968 ; SSE41-NEXT: pblendvb %xmm0, %xmm2, %xmm1
969969 ; SSE41-NEXT: movdqa %xmm1, %xmm2
970970 ; SSE41-NEXT: paddb %xmm2, %xmm2
971971 ; SSE41-NEXT: paddb %xmm0, %xmm0
972 ; SSE41-NEXT: pblendvb %xmm2, %xmm1
972 ; SSE41-NEXT: pblendvb %xmm0, %xmm2, %xmm1
973973 ; SSE41-NEXT: movdqa %xmm1, %xmm0
974974 ; SSE41-NEXT: retq
975975 ;
410410 ; SSE41: # BB#0:
411411 ; SSE41-NEXT: movdqa %xmm0, %xmm2
412412 ; SSE41-NEXT: movaps {{.*#+}} xmm0 = [255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0]
413 ; SSE41-NEXT: pblendvb %xmm2, %xmm1
413 ; SSE41-NEXT: pblendvb %xmm0, %xmm2, %xmm1
414414 ; SSE41-NEXT: movdqa %xmm1, %xmm0
415415 ; SSE41-NEXT: retq
416416 ;
450450 ; SSE41: # BB#0:
451451 ; SSE41-NEXT: movdqa %xmm0, %xmm2
452452 ; SSE41-NEXT: movaps {{.*#+}} xmm0 = [255,255,255,0,255,255,255,0,255,255,255,0,255,255,255,0]
453 ; SSE41-NEXT: pblendvb %xmm2, %xmm1
453 ; SSE41-NEXT: pblendvb %xmm0, %xmm2, %xmm1
454454 ; SSE41-NEXT: movdqa %xmm1, %xmm0
455455 ; SSE41-NEXT: retq
456456 ;
509509 ; SSE41: # BB#0:
510510 ; SSE41-NEXT: movdqa %xmm0, %xmm2
511511 ; SSE41-NEXT: movaps {{.*#+}} xmm0 = [255,255,255,255,0,255,255,0,255,255,255,255,0,255,255,0]
512 ; SSE41-NEXT: pblendvb %xmm2, %xmm1
512 ; SSE41-NEXT: pblendvb %xmm0, %xmm2, %xmm1
513513 ; SSE41-NEXT: movdqa %xmm1, %xmm0
514514 ; SSE41-NEXT: retq
515515 ;
550550 ; SSE41: # BB#0:
551551 ; SSE41-NEXT: movdqa %xmm0, %xmm2
552552 ; SSE41-NEXT: movaps {{.*#+}} xmm0 = [255,255,255,255,0,0,0,0,255,255,0,0,255,0,255,0]
553 ; SSE41-NEXT: pblendvb %xmm1, %xmm2
553 ; SSE41-NEXT: pblendvb %xmm0, %xmm1, %xmm2
554554 ; SSE41-NEXT: movdqa %xmm2, %xmm0
555555 ; SSE41-NEXT: retq
556556 ;
48384838 ; SSE4-NEXT: pcmpgtq %xmm1, %xmm11
48394839 ; SSE4-NEXT: movdqa %xmm4, %xmm0
48404840 ; SSE4-NEXT: pcmpgtq %xmm8, %xmm0
4841 ; SSE4-NEXT: blendvpd %xmm8, %xmm4
4841 ; SSE4-NEXT: blendvpd %xmm0, %xmm8, %xmm4
48424842 ; SSE4-NEXT: movdqa %xmm11, %xmm0
4843 ; SSE4-NEXT: blendvpd %xmm1, %xmm5
4843 ; SSE4-NEXT: blendvpd %xmm0, %xmm1, %xmm5
48444844 ; SSE4-NEXT: movdqa %xmm10, %xmm0
4845 ; SSE4-NEXT: blendvpd %xmm2, %xmm6
4845 ; SSE4-NEXT: blendvpd %xmm0, %xmm2, %xmm6
48464846 ; SSE4-NEXT: movdqa %xmm9, %xmm0
4847 ; SSE4-NEXT: blendvpd %xmm3, %xmm7
4847 ; SSE4-NEXT: blendvpd %xmm0, %xmm3, %xmm7
48484848 ; SSE4-NEXT: movapd %xmm4, %xmm0
48494849 ; SSE4-NEXT: movapd %xmm5, %xmm1
48504850 ; SSE4-NEXT: movapd %xmm6, %xmm2
49824982 ; SSE4-NEXT: pxor %xmm12, %xmm11
49834983 ; SSE4-NEXT: pcmpgtq %xmm4, %xmm0
49844984 ; SSE4-NEXT: pxor %xmm12, %xmm0
4985 ; SSE4-NEXT: blendvpd %xmm8, %xmm4
4985 ; SSE4-NEXT: blendvpd %xmm0, %xmm8, %xmm4
49864986 ; SSE4-NEXT: movdqa %xmm11, %xmm0
4987 ; SSE4-NEXT: blendvpd %xmm1, %xmm5
4987 ; SSE4-NEXT: blendvpd %xmm0, %xmm1, %xmm5
49884988 ; SSE4-NEXT: movdqa %xmm10, %xmm0
4989 ; SSE4-NEXT: blendvpd %xmm2, %xmm6
4989 ; SSE4-NEXT: blendvpd %xmm0, %xmm2, %xmm6
49904990 ; SSE4-NEXT: movdqa %xmm9, %xmm0
4991 ; SSE4-NEXT: blendvpd %xmm3, %xmm7
4991 ; SSE4-NEXT: blendvpd %xmm0, %xmm3, %xmm7
49924992 ; SSE4-NEXT: movapd %xmm4, %xmm0
49934993 ; SSE4-NEXT: movapd %xmm5, %xmm1
49944994 ; SSE4-NEXT: movapd %xmm6, %xmm2
51125112 ; SSE4-NEXT: movdqa %xmm1, %xmm11
51135113 ; SSE4-NEXT: pcmpgtq %xmm5, %xmm11
51145114 ; SSE4-NEXT: pcmpgtq %xmm4, %xmm0
5115 ; SSE4-NEXT: blendvpd %xmm8, %xmm4
5115 ; SSE4-NEXT: blendvpd %xmm0, %xmm8, %xmm4
51165116 ; SSE4-NEXT: movdqa %xmm11, %xmm0
5117 ; SSE4-NEXT: blendvpd %xmm1, %xmm5
5117 ; SSE4-NEXT: blendvpd %xmm0, %xmm1, %xmm5
51185118 ; SSE4-NEXT: movdqa %xmm10, %xmm0
5119 ; SSE4-NEXT: blendvpd %xmm2, %xmm6
5119 ; SSE4-NEXT: blendvpd %xmm0, %xmm2, %xmm6
51205120 ; SSE4-NEXT: movdqa %xmm9, %xmm0
5121 ; SSE4-NEXT: blendvpd %xmm3, %xmm7
5121 ; SSE4-NEXT: blendvpd %xmm0, %xmm3, %xmm7
51225122 ; SSE4-NEXT: movapd %xmm4, %xmm0
51235123 ; SSE4-NEXT: movapd %xmm5, %xmm1
51245124 ; SSE4-NEXT: movapd %xmm6, %xmm2
52585258 ; SSE4-NEXT: movdqa %xmm4, %xmm12
52595259 ; SSE4-NEXT: pcmpgtq %xmm8, %xmm12
52605260 ; SSE4-NEXT: pxor %xmm12, %xmm0
5261 ; SSE4-NEXT: blendvpd %xmm8, %xmm4
5261 ; SSE4-NEXT: blendvpd %xmm0, %xmm8, %xmm4
52625262 ; SSE4-NEXT: movdqa %xmm11, %xmm0
5263 ; SSE4-NEXT: blendvpd %xmm1, %xmm5
5263 ; SSE4-NEXT: blendvpd %xmm0, %xmm1, %xmm5
52645264 ; SSE4-NEXT: movdqa %xmm10, %xmm0
5265 ; SSE4-NEXT: blendvpd %xmm2, %xmm6
5265 ; SSE4-NEXT: blendvpd %xmm0, %xmm2, %xmm6
52665266 ; SSE4-NEXT: movdqa %xmm9, %xmm0
5267 ; SSE4-NEXT: blendvpd %xmm3, %xmm7
5267 ; SSE4-NEXT: blendvpd %xmm0, %xmm3, %xmm7
52685268 ; SSE4-NEXT: movapd %xmm4, %xmm0
52695269 ; SSE4-NEXT: movapd %xmm5, %xmm1
52705270 ; SSE4-NEXT: movapd %xmm6, %xmm2
54015401 ; SSE4-NEXT: pxor %xmm0, %xmm12
54025402 ; SSE4-NEXT: pxor %xmm4, %xmm0
54035403 ; SSE4-NEXT: pcmpgtq %xmm12, %xmm0
5404 ; SSE4-NEXT: blendvpd %xmm8, %xmm4
5404 ; SSE4-NEXT: blendvpd %xmm0, %xmm8, %xmm4
54055405 ; SSE4-NEXT: movdqa %xmm11, %xmm0
5406 ; SSE4-NEXT: blendvpd %xmm1, %xmm5
5406 ; SSE4-NEXT: blendvpd %xmm0, %xmm1, %xmm5
54075407 ; SSE4-NEXT: movdqa %xmm10, %xmm0
5408 ; SSE4-NEXT: blendvpd %xmm2, %xmm6
5408 ; SSE4-NEXT: blendvpd %xmm0, %xmm2, %xmm6
54095409 ; SSE4-NEXT: movdqa %xmm9, %xmm0
5410 ; SSE4-NEXT: blendvpd %xmm3, %xmm7
5410 ; SSE4-NEXT: blendvpd %xmm0, %xmm3, %xmm7
54115411 ; SSE4-NEXT: movapd %xmm4, %xmm0
54125412 ; SSE4-NEXT: movapd %xmm5, %xmm1
54135413 ; SSE4-NEXT: movapd %xmm6, %xmm2
55725572 ; SSE4-NEXT: pxor %xmm9, %xmm0
55735573 ; SSE4-NEXT: pcmpgtq %xmm13, %xmm0
55745574 ; SSE4-NEXT: pxor %xmm12, %xmm0
5575 ; SSE4-NEXT: blendvpd %xmm9, %xmm4
5575 ; SSE4-NEXT: blendvpd %xmm0, %xmm9, %xmm4
55765576 ; SSE4-NEXT: movdqa %xmm11, %xmm0
5577 ; SSE4-NEXT: blendvpd %xmm1, %xmm5
5577 ; SSE4-NEXT: blendvpd %xmm0, %xmm1, %xmm5
55785578 ; SSE4-NEXT: movdqa %xmm10, %xmm0
5579 ; SSE4-NEXT: blendvpd %xmm2, %xmm6
5579 ; SSE4-NEXT: blendvpd %xmm0, %xmm2, %xmm6
55805580 ; SSE4-NEXT: movdqa %xmm8, %xmm0
5581 ; SSE4-NEXT: blendvpd %xmm3, %xmm7
5581 ; SSE4-NEXT: blendvpd %xmm0, %xmm3, %xmm7
55825582 ; SSE4-NEXT: movapd %xmm4, %xmm0
55835583 ; SSE4-NEXT: movapd %xmm5, %xmm1
55845584 ; SSE4-NEXT: movapd %xmm6, %xmm2
57295729 ; SSE4-NEXT: pxor %xmm0, %xmm12
57305730 ; SSE4-NEXT: pxor %xmm8, %xmm0
57315731 ; SSE4-NEXT: pcmpgtq %xmm12, %xmm0
5732 ; SSE4-NEXT: blendvpd %xmm8, %xmm4
5732 ; SSE4-NEXT: blendvpd %xmm0, %xmm8, %xmm4
57335733 ; SSE4-NEXT: movdqa %xmm11, %xmm0
5734 ; SSE4-NEXT: blendvpd %xmm1, %xmm5
5734 ; SSE4-NEXT: blendvpd %xmm0, %xmm1, %xmm5
57355735 ; SSE4-NEXT: movdqa %xmm10, %xmm0
5736 ; SSE4-NEXT: blendvpd %xmm2, %xmm6
5736 ; SSE4-NEXT: blendvpd %xmm0, %xmm2, %xmm6
57375737 ; SSE4-NEXT: movdqa %xmm9, %xmm0
5738 ; SSE4-NEXT: blendvpd %xmm3, %xmm7
5738 ; SSE4-NEXT: blendvpd %xmm0, %xmm3, %xmm7
57395739 ; SSE4-NEXT: movapd %xmm4, %xmm0
57405740 ; SSE4-NEXT: movapd %xmm5, %xmm1
57415741 ; SSE4-NEXT: movapd %xmm6, %xmm2
59015901 ; SSE4-NEXT: pxor %xmm4, %xmm0
59025902 ; SSE4-NEXT: pcmpgtq %xmm13, %xmm0
59035903 ; SSE4-NEXT: pxor %xmm12, %xmm0
5904 ; SSE4-NEXT: blendvpd %xmm9, %xmm4
5904 ; SSE4-NEXT: blendvpd %xmm0, %xmm9, %xmm4
59055905 ; SSE4-NEXT: movdqa %xmm11, %xmm0
5906 ; SSE4-NEXT: blendvpd %xmm1, %xmm5
5906 ; SSE4-NEXT: blendvpd %xmm0, %xmm1, %xmm5
59075907 ; SSE4-NEXT: movdqa %xmm10, %xmm0
5908 ; SSE4-NEXT: blendvpd %xmm2, %xmm6
5908 ; SSE4-NEXT: blendvpd %xmm0, %xmm2, %xmm6
59095909 ; SSE4-NEXT: movdqa %xmm8, %xmm0
5910 ; SSE4-NEXT: blendvpd %xmm3, %xmm7
5910 ; SSE4-NEXT: blendvpd %xmm0, %xmm3, %xmm7
59115911 ; SSE4-NEXT: movapd %xmm4, %xmm0
59125912 ; SSE4-NEXT: movapd %xmm5, %xmm1
59135913 ; SSE4-NEXT: movapd %xmm6, %xmm2
75617561 ; SSE4-NEXT: pcmpgtq %xmm1, %xmm11
75627562 ; SSE4-NEXT: movdqa %xmm4, %xmm0
75637563 ; SSE4-NEXT: pcmpgtq %xmm8, %xmm0
7564 ; SSE4-NEXT: blendvpd %xmm4, %xmm8
7564 ; SSE4-NEXT: blendvpd %xmm0, %xmm4, %xmm8
75657565 ; SSE4-NEXT: movdqa %xmm11, %xmm0
7566 ; SSE4-NEXT: blendvpd %xmm5, %xmm1
7566 ; SSE4-NEXT: blendvpd %xmm0, %xmm5, %xmm1
75677567 ; SSE4-NEXT: movdqa %xmm10, %xmm0
7568 ; SSE4-NEXT: blendvpd %xmm6, %xmm2
7568 ; SSE4-NEXT: blendvpd %xmm0, %xmm6, %xmm2
75697569 ; SSE4-NEXT: movdqa %xmm9, %xmm0
7570 ; SSE4-NEXT: blendvpd %xmm7, %xmm3
7570 ; SSE4-NEXT: blendvpd %xmm0, %xmm7, %xmm3
75717571 ; SSE4-NEXT: movapd %xmm8, %xmm0
75727572 ; SSE4-NEXT: retq
75737573 ;
77027702 ; SSE4-NEXT: pxor %xmm12, %xmm11
77037703 ; SSE4-NEXT: pcmpgtq %xmm4, %xmm0
77047704 ; SSE4-NEXT: pxor %xmm12, %xmm0
7705 ; SSE4-NEXT: blendvpd %xmm4, %xmm8
7705 ; SSE4-NEXT: blendvpd %xmm0, %xmm4, %xmm8
77067706 ; SSE4-NEXT: movdqa %xmm11, %xmm0
7707 ; SSE4-NEXT: blendvpd %xmm5, %xmm1
7707 ; SSE4-NEXT: blendvpd %xmm0, %xmm5, %xmm1
77087708 ; SSE4-NEXT: movdqa %xmm10, %xmm0
7709 ; SSE4-NEXT: blendvpd %xmm6, %xmm2
7709 ; SSE4-NEXT: blendvpd %xmm0, %xmm6, %xmm2
77107710 ; SSE4-NEXT: movdqa %xmm9, %xmm0
7711 ; SSE4-NEXT: blendvpd %xmm7, %xmm3
7711 ; SSE4-NEXT: blendvpd %xmm0, %xmm7, %xmm3
77127712 ; SSE4-NEXT: movapd %xmm8, %xmm0
77137713 ; SSE4-NEXT: retq
77147714 ;
78337833 ; SSE4-NEXT: movdqa %xmm1, %xmm11
78347834 ; SSE4-NEXT: pcmpgtq %xmm5, %xmm11
78357835 ; SSE4-NEXT: pcmpgtq %xmm4, %xmm0
7836 ; SSE4-NEXT: blendvpd %xmm4, %xmm8
7836 ; SSE4-NEXT: blendvpd %xmm0, %xmm4, %xmm8
78377837 ; SSE4-NEXT: movdqa %xmm11, %xmm0
7838 ; SSE4-NEXT: blendvpd %xmm5, %xmm1
7838 ; SSE4-NEXT: blendvpd %xmm0, %xmm5, %xmm1
78397839 ; SSE4-NEXT: movdqa %xmm10, %xmm0
7840 ; SSE4-NEXT: blendvpd %xmm6, %xmm2
7840 ; SSE4-NEXT: blendvpd %xmm0, %xmm6, %xmm2
78417841 ; SSE4-NEXT: movdqa %xmm9, %xmm0
7842 ; SSE4-NEXT: blendvpd %xmm7, %xmm3
7842 ; SSE4-NEXT: blendvpd %xmm0, %xmm7, %xmm3
78437843 ; SSE4-NEXT: movapd %xmm8, %xmm0
78447844 ; SSE4-NEXT: retq
78457845 ;
79767976 ; SSE4-NEXT: movdqa %xmm4, %xmm12
79777977 ; SSE4-NEXT: pcmpgtq %xmm8, %xmm12
79787978 ; SSE4-NEXT: pxor %xmm12, %xmm0
7979 ; SSE4-NEXT: blendvpd %xmm4, %xmm8
7979 ; SSE4-NEXT: blendvpd %xmm0, %xmm4, %xmm8
79807980 ; SSE4-NEXT: movdqa %xmm11, %xmm0
7981 ; SSE4-NEXT: blendvpd %xmm5, %xmm1
7981 ; SSE4-NEXT: blendvpd %xmm0, %xmm5, %xmm1
79827982 ; SSE4-NEXT: movdqa %xmm10, %xmm0
7983 ; SSE4-NEXT: blendvpd %xmm6, %xmm2
7983 ; SSE4-NEXT: blendvpd %xmm0, %xmm6, %xmm2
79847984 ; SSE4-NEXT: movdqa %xmm9, %xmm0
7985 ; SSE4-NEXT: blendvpd %xmm7, %xmm3
7985 ; SSE4-NEXT: blendvpd %xmm0, %xmm7, %xmm3
79867986 ; SSE4-NEXT: movapd %xmm8, %xmm0
79877987 ; SSE4-NEXT: retq
79887988 ;
81208120 ; SSE4-NEXT: pxor %xmm0, %xmm12
81218121 ; SSE4-NEXT: pxor %xmm4, %xmm0
81228122 ; SSE4-NEXT: pcmpgtq %xmm12, %xmm0
8123 ; SSE4-NEXT: blendvpd %xmm4, %xmm8
8123 ; SSE4-NEXT: blendvpd %xmm0, %xmm4, %xmm8
81248124 ; SSE4-NEXT: movdqa %xmm11, %xmm0
8125 ; SSE4-NEXT: blendvpd %xmm5, %xmm1
8125 ; SSE4-NEXT: blendvpd %xmm0, %xmm5, %xmm1
81268126 ; SSE4-NEXT: movdqa %xmm10, %xmm0
8127 ; SSE4-NEXT: blendvpd %xmm6, %xmm2
8127 ; SSE4-NEXT: blendvpd %xmm0, %xmm6, %xmm2
81288128 ; SSE4-NEXT: movdqa %xmm9, %xmm0
8129 ; SSE4-NEXT: blendvpd %xmm7, %xmm3
8129 ; SSE4-NEXT: blendvpd %xmm0, %xmm7, %xmm3
81308130 ; SSE4-NEXT: movapd %xmm8, %xmm0
81318131 ; SSE4-NEXT: retq
81328132 ;
82888288 ; SSE4-NEXT: pxor %xmm8, %xmm0
82898289 ; SSE4-NEXT: pcmpgtq %xmm13, %xmm0
82908290 ; SSE4-NEXT: pxor %xmm12, %xmm0
8291 ; SSE4-NEXT: blendvpd %xmm4, %xmm8
8291 ; SSE4-NEXT: blendvpd %xmm0, %xmm4, %xmm8
82928292 ; SSE4-NEXT: movdqa %xmm11, %xmm0
8293 ; SSE4-NEXT: blendvpd %xmm5, %xmm1
8293 ; SSE4-NEXT: blendvpd %xmm0, %xmm5, %xmm1
82948294 ; SSE4-NEXT: movdqa %xmm10, %xmm0
8295 ; SSE4-NEXT: blendvpd %xmm6, %xmm2
8295 ; SSE4-NEXT: blendvpd %xmm0, %xmm6, %xmm2
82968296 ; SSE4-NEXT: movdqa %xmm9, %xmm0
8297 ; SSE4-NEXT: blendvpd %xmm7, %xmm3
8297 ; SSE4-NEXT: blendvpd %xmm0, %xmm7, %xmm3
82988298 ; SSE4-NEXT: movapd %xmm8, %xmm0
82998299 ; SSE4-NEXT: retq
83008300 ;
84468446 ; SSE4-NEXT: pxor %xmm0, %xmm12
84478447 ; SSE4-NEXT: pxor %xmm8, %xmm0
84488448 ; SSE4-NEXT: pcmpgtq %xmm12, %xmm0
8449 ; SSE4-NEXT: blendvpd %xmm4, %xmm8
8449 ; SSE4-NEXT: blendvpd %xmm0, %xmm4, %xmm8
84508450 ; SSE4-NEXT: movdqa %xmm11, %xmm0
8451 ; SSE4-NEXT: blendvpd %xmm5, %xmm1
8451 ; SSE4-NEXT: blendvpd %xmm0, %xmm5, %xmm1
84528452 ; SSE4-NEXT: movdqa %xmm10, %xmm0
8453 ; SSE4-NEXT: blendvpd %xmm6, %xmm2
8453 ; SSE4-NEXT: blendvpd %xmm0, %xmm6, %xmm2
84548454 ; SSE4-NEXT: movdqa %xmm9, %xmm0
8455 ; SSE4-NEXT: blendvpd %xmm7, %xmm3
8455 ; SSE4-NEXT: blendvpd %xmm0, %xmm7, %xmm3
84568456 ; SSE4-NEXT: movapd %xmm8, %xmm0
84578457 ; SSE4-NEXT: retq
84588458 ;
86158615 ; SSE4-NEXT: pxor %xmm4, %xmm0
86168616 ; SSE4-NEXT: pcmpgtq %xmm13, %xmm0
86178617 ; SSE4-NEXT: pxor %xmm12, %xmm0
8618 ; SSE4-NEXT: blendvpd %xmm4, %xmm8
8618 ; SSE4-NEXT: blendvpd %xmm0, %xmm4, %xmm8
86198619 ; SSE4-NEXT: movdqa %xmm11, %xmm0
8620 ; SSE4-NEXT: blendvpd %xmm5, %xmm1
8620 ; SSE4-NEXT: blendvpd %xmm0, %xmm5, %xmm1
86218621 ; SSE4-NEXT: movdqa %xmm10, %xmm0
8622 ; SSE4-NEXT: blendvpd %xmm6, %xmm2
8622 ; SSE4-NEXT: blendvpd %xmm0, %xmm6, %xmm2
86238623 ; SSE4-NEXT: movdqa %xmm9, %xmm0
8624 ; SSE4-NEXT: blendvpd %xmm7, %xmm3
8624 ; SSE4-NEXT: blendvpd %xmm0, %xmm7, %xmm3
86258625 ; SSE4-NEXT: movapd %xmm8, %xmm0
86268626 ; SSE4-NEXT: retq
86278627 ;
87238723 ; SSE4-NEXT: pcmpgtq %xmm1, %xmm5
87248724 ; SSE4-NEXT: movdqa %xmm2, %xmm0
87258725 ; SSE4-NEXT: pcmpgtq %xmm4, %xmm0
8726 ; SSE4-NEXT: blendvpd %xmm4, %xmm2
8726 ; SSE4-NEXT: blendvpd %xmm0, %xmm4, %xmm2
87278727 ; SSE4-NEXT: movdqa %xmm5, %xmm0
8728 ; SSE4-NEXT: blendvpd %xmm1, %xmm3
8728 ; SSE4-NEXT: blendvpd %xmm0, %xmm1, %xmm3
87298729 ; SSE4-NEXT: movapd %xmm2, %xmm0
87308730 ; SSE4-NEXT: movapd %xmm3, %xmm1
87318731 ; SSE4-NEXT: retq
88068806 ; SSE4-NEXT: pxor %xmm6, %xmm5
88078807 ; SSE4-NEXT: pcmpgtq %xmm2, %xmm0
88088808 ; SSE4-NEXT: pxor %xmm6, %xmm0
8809 ; SSE4-NEXT: blendvpd %xmm4, %xmm2
8809 ; SSE4-NEXT: blendvpd %xmm0, %xmm4, %xmm2
88108810 ; SSE4-NEXT: movdqa %xmm5, %xmm0
8811 ; SSE4-NEXT: blendvpd %xmm1, %xmm3
8811 ; SSE4-NEXT: blendvpd %xmm0, %xmm1, %xmm3
88128812 ; SSE4-NEXT: movapd %xmm2, %xmm0
88138813 ; SSE4-NEXT: movapd %xmm3, %xmm1
88148814 ; SSE4-NEXT: retq
88858885 ; SSE4-NEXT: movdqa %xmm1, %xmm5
88868886 ; SSE4-NEXT: pcmpgtq %xmm3, %xmm5
88878887 ; SSE4-NEXT: pcmpgtq %xmm2, %xmm0
8888 ; SSE4-NEXT: blendvpd %xmm4, %xmm2
8888 ; SSE4-NEXT: blendvpd %xmm0, %xmm4, %xmm2
88898889 ; SSE4-NEXT: movdqa %xmm5, %xmm0
8890 ; SSE4-NEXT: blendvpd %xmm1, %xmm3
8890 ; SSE4-NEXT: blendvpd %xmm0, %xmm1, %xmm3
88918891 ; SSE4-NEXT: movapd %xmm2, %xmm0
88928892 ; SSE4-NEXT: movapd %xmm3, %xmm1
88938893 ; SSE4-NEXT: retq
89698969 ; SSE4-NEXT: movdqa %xmm2, %xmm6
89708970 ; SSE4-NEXT: pcmpgtq %xmm4, %xmm6
89718971 ; SSE4-NEXT: pxor %xmm6, %xmm0
8972 ; SSE4-NEXT: blendvpd %xmm4, %xmm2
8972 ; SSE4-NEXT: blendvpd %xmm0, %xmm4, %xmm2
89738973 ; SSE4-NEXT: movdqa %xmm5, %xmm0
8974 ; SSE4-NEXT: blendvpd %xmm1, %xmm3
8974 ; SSE4-NEXT: blendvpd %xmm0, %xmm1, %xmm3
89758975 ; SSE4-NEXT: movapd %xmm2, %xmm0
89768976 ; SSE4-NEXT: movapd %xmm3, %xmm1
89778977 ; SSE4-NEXT: retq
90559055 ; SSE4-NEXT: pxor %xmm0, %xmm6
90569056 ; SSE4-NEXT: pxor %xmm2, %xmm0
90579057 ; SSE4-NEXT: pcmpgtq %xmm6, %xmm0
9058 ; SSE4-NEXT: blendvpd %xmm4, %xmm2
9058 ; SSE4-NEXT: blendvpd %xmm0, %xmm4, %xmm2
90599059 ; SSE4-NEXT: movdqa %xmm5, %xmm0
9060 ; SSE4-NEXT: blendvpd %xmm1, %xmm3
9060 ; SSE4-NEXT: blendvpd %xmm0, %xmm1, %xmm3
90619061 ; SSE4-NEXT: movapd %xmm2, %xmm0
90629062 ; SSE4-NEXT: movapd %xmm3, %xmm1
90639063 ; SSE4-NEXT: retq
91539153 ; SSE4-NEXT: pxor %xmm4, %xmm0
91549154 ; SSE4-NEXT: pcmpgtq %xmm7, %xmm0
91559155 ; SSE4-NEXT: pxor %xmm6, %xmm0
9156 ; SSE4-NEXT: blendvpd %xmm4, %xmm2
9156 ; SSE4-NEXT: blendvpd %xmm0, %xmm4, %xmm2
91579157 ; SSE4-NEXT: movdqa %xmm5, %xmm0
9158 ; SSE4-NEXT: blendvpd %xmm1, %xmm3
9158 ; SSE4-NEXT: blendvpd %xmm0, %xmm1, %xmm3
91599159 ; SSE4-NEXT: movapd %xmm2, %xmm0
91609160 ; SSE4-NEXT: movapd %xmm3, %xmm1
91619161 ; SSE4-NEXT: retq
92479247 ; SSE4-NEXT: pxor %xmm0, %xmm6
92489248 ; SSE4-NEXT: pxor %xmm4, %xmm0
92499249 ; SSE4-NEXT: pcmpgtq %xmm6, %xmm0
9250 ; SSE4-NEXT: blendvpd %xmm4, %xmm2
9250 ; SSE4-NEXT: blendvpd %xmm0, %xmm4, %xmm2
92519251 ; SSE4-NEXT: movdqa %xmm5, %xmm0
9252 ; SSE4-NEXT: blendvpd %xmm1, %xmm3
9252 ; SSE4-NEXT: blendvpd %xmm0, %xmm1, %xmm3
92539253 ; SSE4-NEXT: movapd %xmm2, %xmm0
92549254 ; SSE4-NEXT: movapd %xmm3, %xmm1
92559255 ; SSE4-NEXT: retq
93459345 ; SSE4-NEXT: pxor %xmm2, %xmm0
93469346 ; SSE4-NEXT: pcmpgtq %xmm7, %xmm0
93479347 ; SSE4-NEXT: pxor %xmm6, %xmm0
9348 ; SSE4-NEXT: blendvpd %xmm4, %xmm2
9348 ; SSE4-NEXT: blendvpd %xmm0, %xmm4, %xmm2
93499349 ; SSE4-NEXT: movdqa %xmm5, %xmm0
9350 ; SSE4-NEXT: blendvpd %xmm1, %xmm3
9350 ; SSE4-NEXT: blendvpd %xmm0, %xmm1, %xmm3
93519351 ; SSE4-NEXT: movapd %xmm2, %xmm0
93529352 ; SSE4-NEXT: movapd %xmm3, %xmm1
93539353 ; SSE4-NEXT: retq
94359435 ; SSE4-NEXT: pcmpgtq %xmm1, %xmm5
94369436 ; SSE4-NEXT: movdqa %xmm2, %xmm0
94379437 ; SSE4-NEXT: pcmpgtq %xmm4, %xmm0
9438 ; SSE4-NEXT: blendvpd %xmm2, %xmm4
9438 ; SSE4-NEXT: blendvpd %xmm0, %xmm2, %xmm4
94399439 ; SSE4-NEXT: movdqa %xmm5, %xmm0
9440 ; SSE4-NEXT: blendvpd %xmm3, %xmm1
9440 ; SSE4-NEXT: blendvpd %xmm0, %xmm3, %xmm1
94419441 ; SSE4-NEXT: movapd %xmm4, %xmm0
94429442 ; SSE4-NEXT: retq
94439443 ;
95179517 ; SSE4-NEXT: pxor %xmm6, %xmm5
95189518 ; SSE4-NEXT: pcmpgtq %xmm2, %xmm0
95199519 ; SSE4-NEXT: pxor %xmm6, %xmm0
9520 ; SSE4-NEXT: blendvpd %xmm2, %xmm4
9520 ; SSE4-NEXT: blendvpd %xmm0, %xmm2, %xmm4
95219521 ; SSE4-NEXT: movdqa %xmm5, %xmm0
9522 ; SSE4-NEXT: blendvpd %xmm3, %xmm1
9522 ; SSE4-NEXT: blendvpd %xmm0, %xmm3, %xmm1
95239523 ; SSE4-NEXT: movapd %xmm4, %xmm0
95249524 ; SSE4-NEXT: retq
95259525 ;
95979597 ; SSE4-NEXT: movdqa %xmm1, %xmm5
95989598 ; SSE4-NEXT: pcmpgtq %xmm3, %xmm5
95999599 ; SSE4-NEXT: pcmpgtq %xmm2, %xmm0
9600 ; SSE4-NEXT: blendvpd %xmm2, %xmm4
9600 ; SSE4-NEXT: blendvpd %xmm0, %xmm2, %xmm4
96019601 ; SSE4-NEXT: movdqa %xmm5, %xmm0
9602 ; SSE4-NEXT: blendvpd %xmm3, %xmm1
9602 ; SSE4-NEXT: blendvpd %xmm0, %xmm3, %xmm1
96039603 ; SSE4-NEXT: movapd %xmm4, %xmm0
96049604 ; SSE4-NEXT: retq
96059605 ;
96809680 ; SSE4-NEXT: movdqa %xmm2, %xmm6
96819681 ; SSE4-NEXT: pcmpgtq %xmm4, %xmm6
96829682 ; SSE4-NEXT: pxor %xmm6, %xmm0
9683 ; SSE4-NEXT: blendvpd %xmm2, %xmm4
9683 ; SSE4-NEXT: blendvpd %xmm0, %xmm2, %xmm4
96849684 ; SSE4-NEXT: movdqa %xmm5, %xmm0
9685 ; SSE4-NEXT: blendvpd %xmm3, %xmm1
9685 ; SSE4-NEXT: blendvpd %xmm0, %xmm3, %xmm1
96869686 ; SSE4-NEXT: movapd %xmm4, %xmm0
96879687 ; SSE4-NEXT: retq
96889688 ;
97679767 ; SSE4-NEXT: pxor %xmm0, %xmm6
97689768 ; SSE4-NEXT: pxor %xmm2, %xmm0
97699769 ; SSE4-NEXT: pcmpgtq %xmm6, %xmm0
9770 ; SSE4-NEXT: blendvpd %xmm2, %xmm4
9770 ; SSE4-NEXT: blendvpd %xmm0, %xmm2, %xmm4
97719771 ; SSE4-NEXT: movdqa %xmm5, %xmm0
9772 ; SSE4-NEXT: blendvpd %xmm3, %xmm1
9772 ; SSE4-NEXT: blendvpd %xmm0, %xmm3, %xmm1
97739773 ; SSE4-NEXT: movapd %xmm4, %xmm0
97749774 ; SSE4-NEXT: retq
97759775 ;
98649864 ; SSE4-NEXT: pxor %xmm4, %xmm0
98659865 ; SSE4-NEXT: pcmpgtq %xmm7, %xmm0
98669866 ; SSE4-NEXT: pxor %xmm6, %xmm0
9867 ; SSE4-NEXT: blendvpd %xmm2, %xmm4
9867 ; SSE4-NEXT: blendvpd %xmm0, %xmm2, %xmm4
98689868 ; SSE4-NEXT: movdqa %xmm5, %xmm0
9869 ; SSE4-NEXT: blendvpd %xmm3, %xmm1
9869 ; SSE4-NEXT: blendvpd %xmm0, %xmm3, %xmm1
98709870 ; SSE4-NEXT: movapd %xmm4, %xmm0
98719871 ; SSE4-NEXT: retq
98729872 ;
99599959 ; SSE4-NEXT: pxor %xmm0, %xmm6
99609960 ; SSE4-NEXT: pxor %xmm4, %xmm0
99619961 ; SSE4-NEXT: pcmpgtq %xmm6, %xmm0
9962 ; SSE4-NEXT: blendvpd %xmm2, %xmm4
9962 ; SSE4-NEXT: blendvpd %xmm0, %xmm2, %xmm4
99639963 ; SSE4-NEXT: movdqa %xmm5, %xmm0
9964 ; SSE4-NEXT: blendvpd %xmm3, %xmm1
9964 ; SSE4-NEXT: blendvpd %xmm0, %xmm3, %xmm1
99659965 ; SSE4-NEXT: movapd %xmm4, %xmm0
99669966 ; SSE4-NEXT: retq
99679967 ;
1005610056 ; SSE4-NEXT: pxor %xmm2, %xmm0
1005710057 ; SSE4-NEXT: pcmpgtq %xmm7, %xmm0
1005810058 ; SSE4-NEXT: pxor %xmm6, %xmm0
10059 ; SSE4-NEXT: blendvpd %xmm2, %xmm4
10059 ; SSE4-NEXT: blendvpd %xmm0, %xmm2, %xmm4
1006010060 ; SSE4-NEXT: movdqa %xmm5, %xmm0
10061 ; SSE4-NEXT: blendvpd %xmm3, %xmm1
10061 ; SSE4-NEXT: blendvpd %xmm0, %xmm3, %xmm1
1006210062 ; SSE4-NEXT: movapd %xmm4, %xmm0
1006310063 ; SSE4-NEXT: retq
1006410064 ;
1012610126 ; SSE4-NEXT: movdqa %xmm0, %xmm2
1012710127 ; SSE4-NEXT: movdqa %xmm1, %xmm0
1012810128 ; SSE4-NEXT: pcmpgtq %xmm2, %xmm0
10129 ; SSE4-NEXT: blendvpd %xmm2, %xmm1
10129 ; SSE4-NEXT: blendvpd %xmm0, %xmm2, %xmm1
1013010130 ; SSE4-NEXT: movapd %xmm1, %xmm0
1013110131 ; SSE4-NEXT: retq
1013210132 ;
1018110181 ; SSE4-NEXT: pcmpgtq %xmm1, %xmm0
1018210182 ; SSE4-NEXT: pcmpeqd %xmm3, %xmm3
1018310183 ; SSE4-NEXT: pxor %xmm3, %xmm0
10184 ; SSE4-NEXT: blendvpd %xmm2, %xmm1
10184 ; SSE4-NEXT: blendvpd %xmm0, %xmm2, %xmm1
1018510185 ; SSE4-NEXT: movapd %xmm1, %xmm0
1018610186 ; SSE4-NEXT: retq
1018710187 ;
1023510235 ; SSE4: # BB#0: # %entry
1023610236 ; SSE4-NEXT: movdqa %xmm0, %xmm2
1023710237 ; SSE4-NEXT: pcmpgtq %xmm1, %xmm0
10238 ; SSE4-NEXT: blendvpd %xmm2, %xmm1
10238 ; SSE4-NEXT: blendvpd %xmm0, %xmm2, %xmm1
1023910239 ; SSE4-NEXT: movapd %xmm1, %xmm0
1024010240 ; SSE4-NEXT: retq
1024110241 ;
1029110291 ; SSE4-NEXT: pcmpgtq %xmm2, %xmm3
1029210292 ; SSE4-NEXT: pcmpeqd %xmm0, %xmm0
1029310293 ; SSE4-NEXT: pxor %xmm3, %xmm0
10294 ; SSE4-NEXT: blendvpd %xmm2, %xmm1
10294 ; SSE4-NEXT: blendvpd %xmm0, %xmm2, %xmm1
1029510295 ; SSE4-NEXT: movapd %xmm1, %xmm0
1029610296 ; SSE4-NEXT: retq
1029710297 ;
1034910349 ; SSE4-NEXT: pxor %xmm0, %xmm3
1035010350 ; SSE4-NEXT: pxor %xmm1, %xmm0
1035110351 ; SSE4-NEXT: pcmpgtq %xmm3, %xmm0
10352 ; SSE4-NEXT: blendvpd %xmm2, %xmm1
10352 ; SSE4-NEXT: blendvpd %xmm0, %xmm2, %xmm1
1035310353 ; SSE4-NEXT: movapd %xmm1, %xmm0
1035410354 ; SSE4-NEXT: retq
1035510355 ;
1041410414 ; SSE4-NEXT: pcmpgtq %xmm0, %xmm3
1041510415 ; SSE4-NEXT: pcmpeqd %xmm0, %xmm0
1041610416 ; SSE4-NEXT: pxor %xmm3, %xmm0
10417 ; SSE4-NEXT: blendvpd %xmm2, %xmm1
10417 ; SSE4-NEXT: blendvpd %xmm0, %xmm2, %xmm1
1041810418 ; SSE4-NEXT: movapd %xmm1, %xmm0
1041910419 ; SSE4-NEXT: retq
1042010420 ;
1047810478 ; SSE4-NEXT: pxor %xmm0, %xmm3
1047910479 ; SSE4-NEXT: pxor %xmm2, %xmm0
1048010480 ; SSE4-NEXT: pcmpgtq %xmm3, %xmm0
10481 ; SSE4-NEXT: blendvpd %xmm2, %xmm1
10481 ; SSE4-NEXT: blendvpd %xmm0, %xmm2, %xmm1
1048210482 ; SSE4-NEXT: movapd %xmm1, %xmm0
1048310483 ; SSE4-NEXT: retq
1048410484 ;
1054210542 ; SSE4-NEXT: pcmpgtq %xmm0, %xmm3
1054310543 ; SSE4-NEXT: pcmpeqd %xmm0, %xmm0
1054410544 ; SSE4-NEXT: pxor %xmm3, %xmm0
10545 ; SSE4-NEXT: blendvpd %xmm2, %xmm1
10545 ; SSE4-NEXT: blendvpd %xmm0, %xmm2, %xmm1
1054610546 ; SSE4-NEXT: movapd %xmm1, %xmm0
1054710547 ; SSE4-NEXT: retq
1054810548 ;
1060410604 ; SSE4-NEXT: movdqa %xmm0, %xmm2
1060510605 ; SSE4-NEXT: movdqa %xmm1, %xmm0
1060610606 ; SSE4-NEXT: pcmpgtq %xmm2, %xmm0
10607 ; SSE4-NEXT: blendvpd %xmm1, %xmm2
10607 ; SSE4-NEXT: blendvpd %xmm0, %xmm1, %xmm2
1060810608 ; SSE4-NEXT: movapd %xmm2, %xmm0
1060910609 ; SSE4-NEXT: retq
1061010610 ;
1065910659 ; SSE4-NEXT: pcmpgtq %xmm1, %xmm0
1066010660 ; SSE4-NEXT: pcmpeqd %xmm3, %xmm3
1066110661 ; SSE4-NEXT: pxor %xmm3, %xmm0
10662 ; SSE4-NEXT: blendvpd %xmm1, %xmm2
10662 ; SSE4-NEXT: blendvpd %xmm0, %xmm1, %xmm2
1066310663 ; SSE4-NEXT: movapd %xmm2, %xmm0
1066410664 ; SSE4-NEXT: retq
1066510665 ;
1071410714 ; SSE4: # BB#0: # %entry
1071510715 ; SSE4-NEXT: movdqa %xmm0, %xmm2
1071610716 ; SSE4-NEXT: pcmpgtq %xmm1, %xmm0
10717 ; SSE4-NEXT: blendvpd %xmm1, %xmm2
10717 ; SSE4-NEXT: blendvpd %xmm0, %xmm1, %xmm2
1071810718 ; SSE4-NEXT: movapd %xmm2, %xmm0
1071910719 ; SSE4-NEXT: retq
1072010720 ;
1077010770 ; SSE4-NEXT: pcmpgtq %xmm2, %xmm3
1077110771 ; SSE4-NEXT: pcmpeqd %xmm0, %xmm0
1077210772 ; SSE4-NEXT: pxor %xmm3, %xmm0
10773 ; SSE4-NEXT: blendvpd %xmm1, %xmm2
10773 ; SSE4-NEXT: blendvpd %xmm0, %xmm1, %xmm2
1077410774 ; SSE4-NEXT: movapd %xmm2, %xmm0
1077510775 ; SSE4-NEXT: retq
1077610776 ;
1082910829 ; SSE4-NEXT: pxor %xmm0, %xmm3
1083010830 ; SSE4-NEXT: pxor %xmm1, %xmm0
1083110831 ; SSE4-NEXT: pcmpgtq %xmm3, %xmm0
10832 ; SSE4-NEXT: blendvpd %xmm1, %xmm2
10832 ; SSE4-NEXT: blendvpd %xmm0, %xmm1, %xmm2
1083310833 ; SSE4-NEXT: movapd %xmm2, %xmm0
1083410834 ; SSE4-NEXT: retq
1083510835 ;
1089410894 ; SSE4-NEXT: pcmpgtq %xmm0, %xmm3
1089510895 ; SSE4-NEXT: pcmpeqd %xmm0, %xmm0
1089610896 ; SSE4-NEXT: pxor %xmm3, %xmm0
10897 ; SSE4-NEXT: blendvpd %xmm1, %xmm2
10897 ; SSE4-NEXT: blendvpd %xmm0, %xmm1, %xmm2
1089810898 ; SSE4-NEXT: movapd %xmm2, %xmm0
1089910899 ; SSE4-NEXT: retq
1090010900 ;
1095910959 ; SSE4-NEXT: pxor %xmm0, %xmm3
1096010960 ; SSE4-NEXT: pxor %xmm2, %xmm0
1096110961 ; SSE4-NEXT: pcmpgtq %xmm3, %xmm0
10962 ; SSE4-NEXT: blendvpd %xmm1, %xmm2
10962 ; SSE4-NEXT: blendvpd %xmm0, %xmm1, %xmm2
1096310963 ; SSE4-NEXT: movapd %xmm2, %xmm0
1096410964 ; SSE4-NEXT: retq
1096510965 ;
1102311023 ; SSE4-NEXT: pcmpgtq %xmm0, %xmm3
1102411024 ; SSE4-NEXT: pcmpeqd %xmm0, %xmm0
1102511025 ; SSE4-NEXT: pxor %xmm3, %xmm0
11026 ; SSE4-NEXT: blendvpd %xmm1, %xmm2
11026 ; SSE4-NEXT: blendvpd %xmm0, %xmm1, %xmm2
1102711027 ; SSE4-NEXT: movapd %xmm2, %xmm0
1102811028 ; SSE4-NEXT: retq
1102911029 ;
1052510525 // CHECK: invlpga %ecx, %eax
1052610526 invlpga %ecx, %eax
1052710527
10528 // CHECK: blendvps (%eax), %xmm1 # encoding: [0x66,0x0f,0x38,0x14,0x08]
10528 // CHECK: blendvps %xmm0, (%eax), %xmm1 # encoding: [0x66,0x0f,0x38,0x14,0x08]
1052910529 blendvps (%eax), %xmm1
10530 // CHECK: blendvps %xmm2, %xmm1 # encoding: [0x66,0x0f,0x38,0x14,0xca]
10530 // CHECK: blendvps %xmm0, %xmm2, %xmm1 # encoding: [0x66,0x0f,0x38,0x14,0xca]
1053110531 blendvps %xmm2, %xmm1
1053210532
1053310533 // These instructions can take an unsigned 8-bit mask as well as a signed 8-bit
1056210562 insertps $-64, %xmm2, %xmm1
1056310563
1056410564 // PR13253 handle implicit optional third argument that must always be xmm0
10565 // CHECK: pblendvb %xmm2, %xmm1
10565 // CHECK: pblendvb %xmm0, %xmm2, %xmm1
1056610566 pblendvb %xmm2, %xmm1
10567 // CHECK: pblendvb %xmm2, %xmm1
10567 // CHECK: pblendvb %xmm0, %xmm2, %xmm1
1056810568 pblendvb %xmm0, %xmm2, %xmm1
10569 // CHECK: pblendvb (%eax), %xmm1
10569 // CHECK: pblendvb %xmm0, (%eax), %xmm1
1057010570 pblendvb (%eax), %xmm1
10571 // CHECK: pblendvb (%eax), %xmm1
10571 // CHECK: pblendvb %xmm0, (%eax), %xmm1
1057210572 pblendvb %xmm0, (%eax), %xmm1
10573 // CHECK: blendvpd %xmm2, %xmm1
10573 // CHECK: blendvpd %xmm0, %xmm2, %xmm1
1057410574 blendvpd %xmm2, %xmm1
10575 // CHECK: blendvpd %xmm2, %xmm1
10575 // CHECK: blendvpd %xmm0, %xmm2, %xmm1
1057610576 blendvpd %xmm0, %xmm2, %xmm1
10577 // CHECK: blendvpd (%eax), %xmm1
10577 // CHECK: blendvpd %xmm0, (%eax), %xmm1
1057810578 blendvpd (%eax), %xmm1
10579 // CHECK: blendvpd (%eax), %xmm1
10579 // CHECK: blendvpd %xmm0, (%eax), %xmm1
1058010580 blendvpd %xmm0, (%eax), %xmm1
10581 // CHECK: blendvps %xmm2, %xmm1
10581 // CHECK: blendvps %xmm0, %xmm2, %xmm1
1058210582 blendvps %xmm2, %xmm1
10583 // CHECK: blendvps %xmm2, %xmm1
10583 // CHECK: blendvps %xmm0, %xmm2, %xmm1
1058410584 blendvps %xmm0, %xmm2, %xmm1
10585 // CHECK: blendvps (%eax), %xmm1
10585 // CHECK: blendvps %xmm0, (%eax), %xmm1
1058610586 blendvps (%eax), %xmm1
10587 // CHECK: blendvps (%eax), %xmm1
10587 // CHECK: blendvps %xmm0, (%eax), %xmm1
1058810588 blendvps %xmm0, (%eax), %xmm1
1058910589
1059010590