@@ -138,22 +138,21 @@ define <2 x i64> @test_compress_v2i64(<2 x i64> %vec, <2 x i1> %mask, <2 x i64>
138138; AVX2-NEXT: vmovaps %xmm2, -{{[0-9]+}}(%rsp)
139139; AVX2-NEXT: vpextrq $1, %xmm1, %rax
140140; AVX2-NEXT: vmovq %xmm1, %rcx
141+ ; AVX2-NEXT: andl $1, %ecx
141142; AVX2-NEXT: movl %ecx, %edx
142- ; AVX2-NEXT: subl %eax , %edx
143- ; AVX2-NEXT: andl $1 , %edx
143+ ; AVX2-NEXT: subq %rax , %rcx
144+ ; AVX2-NEXT: movl %ecx , %eax
144145; AVX2-NEXT: andl $1, %eax
145- ; AVX2-NEXT: andl $1, %ecx
146- ; AVX2-NEXT: addq %rcx, %rax
147146; AVX2-NEXT: vpextrq $1, %xmm0, %rsi
148- ; AVX2-NEXT: cmpq $2, %rax
149- ; AVX2-NEXT: cmovbq -24(%rsp,%rdx ,8), %rsi
147+ ; AVX2-NEXT: cmpq $2, %rcx
148+ ; AVX2-NEXT: cmovbq -24(%rsp,%rax ,8), %rsi
150149; AVX2-NEXT: vmovq %xmm0, -{{[0-9]+}}(%rsp)
151- ; AVX2-NEXT: movl %ecx, %ecx
152- ; AVX2-NEXT: vpextrq $1, %xmm0, -24(%rsp,% rcx,8)
153- ; AVX2-NEXT: cmpq $1, %rax
154- ; AVX2-NEXT: movl $1 , %ecx
155- ; AVX2-NEXT: cmovbq %rax , %rcx
156- ; AVX2-NEXT: movq %rsi, -24(%rsp,%rcx ,8)
150+ ; AVX2-NEXT: vpextrq $1, %xmm0, -24(%rsp,%rdx,8)
151+ ; AVX2-NEXT: cmpq $1, %rcx
152+ ; AVX2-NEXT: movl $1, %eax
153+ ; AVX2-NEXT: cmovbq %rcx , %rax
154+ ; AVX2-NEXT: movl %eax , %eax
155+ ; AVX2-NEXT: movq %rsi, -24(%rsp,%rax ,8)
157156; AVX2-NEXT: vmovaps -{{[0-9]+}}(%rsp), %xmm0
158157; AVX2-NEXT: retq
159158;
@@ -188,18 +187,16 @@ define <2 x double> @test_compress_v2f64(<2 x double> %vec, <2 x i1> %mask, <2 x
188187; AVX2-NEXT: vpxor %xmm3, %xmm3, %xmm3
189188; AVX2-NEXT: vpcmpgtq %xmm1, %xmm3, %xmm1
190189; AVX2-NEXT: vmovaps %xmm2, -{{[0-9]+}}(%rsp)
191- ; AVX2-NEXT: vpextrq $1, %xmm1, %rax
192- ; AVX2-NEXT: vmovq %xmm1, %rcx
193- ; AVX2-NEXT: movl %ecx, %edx
194- ; AVX2-NEXT: subl %eax, %edx
195- ; AVX2-NEXT: andl $1, %edx
190+ ; AVX2-NEXT: vpextrq $1, %xmm1, %rcx
191+ ; AVX2-NEXT: vmovq %xmm1, %rax
192+ ; AVX2-NEXT: andl $1, %eax
193+ ; AVX2-NEXT: movl %eax, %edx
194+ ; AVX2-NEXT: subq %rcx, %rax
195+ ; AVX2-NEXT: movl %eax, %ecx
196+ ; AVX2-NEXT: andl $1, %ecx
196197; AVX2-NEXT: vmovsd {{.*#+}} xmm1 = mem[0],zero
197198; AVX2-NEXT: vmovlpd %xmm0, -{{[0-9]+}}(%rsp)
198- ; AVX2-NEXT: andl $1, %ecx
199- ; AVX2-NEXT: movl %ecx, %edx
200199; AVX2-NEXT: vmovhpd %xmm0, -24(%rsp,%rdx,8)
201- ; AVX2-NEXT: andl $1, %eax
202- ; AVX2-NEXT: addq %rcx, %rax
203200; AVX2-NEXT: cmpq $2, %rax
204201; AVX2-NEXT: jb .LBB3_2
205202; AVX2-NEXT: # %bb.1:
@@ -208,7 +205,8 @@ define <2 x double> @test_compress_v2f64(<2 x double> %vec, <2 x i1> %mask, <2 x
208205; AVX2-NEXT: cmpq $1, %rax
209206; AVX2-NEXT: movl $1, %ecx
210207; AVX2-NEXT: cmovbq %rax, %rcx
211- ; AVX2-NEXT: vmovsd %xmm1, -24(%rsp,%rcx,8)
208+ ; AVX2-NEXT: movl %ecx, %eax
209+ ; AVX2-NEXT: vmovsd %xmm1, -24(%rsp,%rax,8)
212210; AVX2-NEXT: vmovaps -{{[0-9]+}}(%rsp), %xmm0
213211; AVX2-NEXT: retq
214212;
0 commit comments