diff options
Diffstat (limited to 'llvm/test/CodeGen/X86/vec_smulo.ll')
| -rw-r--r-- | llvm/test/CodeGen/X86/vec_smulo.ll | 46 |
1 files changed, 22 insertions, 24 deletions
diff --git a/llvm/test/CodeGen/X86/vec_smulo.ll b/llvm/test/CodeGen/X86/vec_smulo.ll index 8b716b7f1ec..ab97c51df41 100644 --- a/llvm/test/CodeGen/X86/vec_smulo.ll +++ b/llvm/test/CodeGen/X86/vec_smulo.ll @@ -2706,44 +2706,42 @@ define <2 x i32> @smulo_v2i128(<2 x i128> %a0, <2 x i128> %a1, <2 x i128>* %p2) ; AVX512-NEXT: pushq %r13 ; AVX512-NEXT: pushq %r12 ; AVX512-NEXT: pushq %rbx -; AVX512-NEXT: subq $40, %rsp -; AVX512-NEXT: movq %r9, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill -; AVX512-NEXT: movq %r8, %r15 -; AVX512-NEXT: movq %rdx, %rax -; AVX512-NEXT: movq %rsi, %r12 -; AVX512-NEXT: movq %rdi, %rbx -; AVX512-NEXT: movq {{[0-9]+}}(%rsp), %r14 -; AVX512-NEXT: movq {{[0-9]+}}(%rsp), %rdx -; AVX512-NEXT: movq {{[0-9]+}}(%rsp), %r9 +; AVX512-NEXT: subq $24, %rsp +; AVX512-NEXT: movq %r8, %rax +; AVX512-NEXT: movq %rcx, %r14 +; AVX512-NEXT: movq %rdx, %rbx +; AVX512-NEXT: movq {{[0-9]+}}(%rsp), %r15 +; AVX512-NEXT: movq {{[0-9]+}}(%rsp), %r12 ; AVX512-NEXT: movq $0, {{[0-9]+}}(%rsp) ; AVX512-NEXT: leaq {{[0-9]+}}(%rsp), %r8 -; AVX512-NEXT: movq %rax, %rdi -; AVX512-NEXT: movq %rcx, %rsi +; AVX512-NEXT: movq %rax, %rdx ; AVX512-NEXT: movq %r9, %rcx ; AVX512-NEXT: callq __muloti4 ; AVX512-NEXT: movq %rax, %r13 ; AVX512-NEXT: movq %rdx, %rbp -; AVX512-NEXT: cmpq $0, {{[0-9]+}}(%rsp) -; AVX512-NEXT: setne %al -; AVX512-NEXT: movb %al, {{[0-9]+}}(%rsp) ; AVX512-NEXT: movq $0, {{[0-9]+}}(%rsp) ; AVX512-NEXT: leaq {{[0-9]+}}(%rsp), %r8 ; AVX512-NEXT: movq %rbx, %rdi -; AVX512-NEXT: movq %r12, %rsi -; AVX512-NEXT: movq %r15, %rdx -; AVX512-NEXT: movq {{[-0-9]+}}(%r{{[sb]}}p), %rcx # 8-byte Reload +; AVX512-NEXT: movq %r14, %rsi +; AVX512-NEXT: movq {{[0-9]+}}(%rsp), %rdx +; AVX512-NEXT: movq %r12, %rcx ; AVX512-NEXT: callq __muloti4 ; AVX512-NEXT: cmpq $0, {{[0-9]+}}(%rsp) ; AVX512-NEXT: setne %cl -; AVX512-NEXT: movb %cl, {{[0-9]+}}(%rsp) -; AVX512-NEXT: kmovw {{[0-9]+}}(%rsp), %k1 -; AVX512-NEXT: movq %rbp, 24(%r14) -; AVX512-NEXT: movq %r13, 16(%r14) -; AVX512-NEXT: movq %rdx, 8(%r14) -; AVX512-NEXT: movq %rax, (%r14) +; AVX512-NEXT: kmovd %ecx, %k0 +; AVX512-NEXT: kshiftlw $1, %k0, %k0 +; AVX512-NEXT: cmpq $0, {{[0-9]+}}(%rsp) +; AVX512-NEXT: setne %cl +; AVX512-NEXT: andl $1, %ecx +; AVX512-NEXT: kmovw %ecx, %k1 +; AVX512-NEXT: korw %k0, %k1, %k1 +; AVX512-NEXT: movq %rdx, 24(%r15) +; AVX512-NEXT: movq %rax, 16(%r15) +; AVX512-NEXT: movq %rbp, 8(%r15) +; AVX512-NEXT: movq %r13, (%r15) ; AVX512-NEXT: vpcmpeqd %xmm0, %xmm0, %xmm0 ; AVX512-NEXT: vmovdqa64 %xmm0, %xmm0 {%k1} {z} -; AVX512-NEXT: addq $40, %rsp +; AVX512-NEXT: addq $24, %rsp ; AVX512-NEXT: popq %rbx ; AVX512-NEXT: popq %r12 ; AVX512-NEXT: popq %r13 |

