[llvm] d119ecb - [X86][NFC] Pre-commit test for RA hints for APX NDD instructions

Shengchen Kan via llvm-commits llvm-commits at lists.llvm.org
Tue Jan 23 22:45:04 PST 2024


Author: Shengchen Kan
Date: 2024-01-24T14:44:34+08:00
New Revision: d119ecb958ebc0a82e7bca01a21115ced8e0b13d

URL: https://github.com/llvm/llvm-project/commit/d119ecb958ebc0a82e7bca01a21115ced8e0b13d
DIFF: https://github.com/llvm/llvm-project/commit/d119ecb958ebc0a82e7bca01a21115ced8e0b13d.diff

LOG: [X86][NFC] Pre-commit test for RA hints for APX NDD instructions

Added: 
    

Modified: 
    llvm/test/CodeGen/X86/apx/mul-i1024.ll

Removed: 
    


################################################################################
diff  --git a/llvm/test/CodeGen/X86/apx/mul-i1024.ll b/llvm/test/CodeGen/X86/apx/mul-i1024.ll
index 3bffd02cbbab91..2eaa161225e4a2 100644
--- a/llvm/test/CodeGen/X86/apx/mul-i1024.ll
+++ b/llvm/test/CodeGen/X86/apx/mul-i1024.ll
@@ -1,1036 +1,1895 @@
 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
-; RUN: llc < %s -mtriple=x86_64-unknown -mattr=+egpr | FileCheck %s --check-prefix=APX
+; RUN: llc < %s -mtriple=x86_64-unknown -mattr=+egpr | FileCheck %s --check-prefix=EGPR
+; RUN: llc < %s -mtriple=x86_64-unknown -mattr=+egpr,+ndd | FileCheck %s --check-prefix=EGPR-NDD
 
 define void @test_1024(ptr %a, ptr %b, ptr %out) nounwind {
-; APX-LABEL: test_1024:
-; APX:       # %bb.0:
-; APX-NEXT:    pushq %rbp
-; APX-NEXT:    pushq %r15
-; APX-NEXT:    pushq %r14
-; APX-NEXT:    pushq %r13
-; APX-NEXT:    pushq %r12
-; APX-NEXT:    pushq %rbx
-; APX-NEXT:    subq $104, %rsp
-; APX-NEXT:    movq %rdx, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
-; APX-NEXT:    movq %rdi, %r24
-; APX-NEXT:    movq (%rdi), %r13
-; APX-NEXT:    movq 8(%rdi), %r18
-; APX-NEXT:    movq 24(%rdi), %r29
-; APX-NEXT:    movq 16(%rdi), %r17
-; APX-NEXT:    movq 40(%rdi), %rdi
-; APX-NEXT:    movq 32(%r24), %r10
-; APX-NEXT:    movq 56(%r24), %r15
-; APX-NEXT:    movq 48(%r24), %r12
-; APX-NEXT:    movq %rsi, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
-; APX-NEXT:    movq 24(%rsi), %r23
-; APX-NEXT:    movq 16(%rsi), %r11
-; APX-NEXT:    movq (%rsi), %r27
-; APX-NEXT:    movq 8(%rsi), %r14
-; APX-NEXT:    movq %r12, %rax
-; APX-NEXT:    mulq %r27
-; APX-NEXT:    movq %rdx, %r8
-; APX-NEXT:    movq %rax, %r19
-; APX-NEXT:    movq %r15, %rax
-; APX-NEXT:    mulq %r27
-; APX-NEXT:    movq %rdx, %r9
-; APX-NEXT:    movq %rax, %r16
-; APX-NEXT:    addq %r8, %r16
-; APX-NEXT:    adcq $0, %r9
-; APX-NEXT:    movq %r12, %rax
-; APX-NEXT:    mulq %r14
-; APX-NEXT:    movq %rdx, %r20
-; APX-NEXT:    movq %rax, %r8
-; APX-NEXT:    addq %r16, %r8
-; APX-NEXT:    adcq %r9, %r20
-; APX-NEXT:    setb %al
-; APX-NEXT:    movzbl %al, %ecx
-; APX-NEXT:    movq %r15, %rax
-; APX-NEXT:    mulq %r14
-; APX-NEXT:    movq %rdx, %r9
-; APX-NEXT:    movq %rax, %r16
-; APX-NEXT:    addq %r20, %r16
-; APX-NEXT:    adcq %rcx, %r9
-; APX-NEXT:    movq %r10, %rax
-; APX-NEXT:    mulq %r27
-; APX-NEXT:    movq %rdx, %r20
-; APX-NEXT:    movq %rax, %r25
-; APX-NEXT:    movq %rdi, %rax
-; APX-NEXT:    mulq %r27
-; APX-NEXT:    movq %rdx, %r21
-; APX-NEXT:    movq %rax, %r22
-; APX-NEXT:    addq %r20, %r22
-; APX-NEXT:    adcq $0, %r21
-; APX-NEXT:    movq %r10, %rax
-; APX-NEXT:    mulq %r14
-; APX-NEXT:    movq %rdx, %r20
-; APX-NEXT:    movq %rax, %r28
-; APX-NEXT:    addq %r22, %r28
-; APX-NEXT:    adcq %r21, %r20
-; APX-NEXT:    setb %al
-; APX-NEXT:    movzbl %al, %ecx
-; APX-NEXT:    movq %rdi, %rax
-; APX-NEXT:    mulq %r14
-; APX-NEXT:    movq %rdx, %r21
-; APX-NEXT:    movq %rax, %r22
-; APX-NEXT:    addq %r20, %r22
-; APX-NEXT:    adcq %rcx, %r21
-; APX-NEXT:    addq %r19, %r22
-; APX-NEXT:    adcq %r8, %r21
-; APX-NEXT:    adcq $0, %r16
-; APX-NEXT:    adcq $0, %r9
-; APX-NEXT:    movq %r10, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
-; APX-NEXT:    movq %r10, %rax
-; APX-NEXT:    mulq %r11
-; APX-NEXT:    movq %rdx, %r8
-; APX-NEXT:    movq %rax, %r30
-; APX-NEXT:    movq %rdi, %rax
-; APX-NEXT:    movq %rdi, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
-; APX-NEXT:    mulq %r11
-; APX-NEXT:    movq %rdx, %r19
-; APX-NEXT:    movq %rax, %r20
-; APX-NEXT:    addq %r8, %r20
-; APX-NEXT:    adcq $0, %r19
-; APX-NEXT:    movq %r10, %rax
-; APX-NEXT:    mulq %r23
-; APX-NEXT:    movq %rdx, %rbx
-; APX-NEXT:    movq %rax, %r31
-; APX-NEXT:    addq %r20, %r31
-; APX-NEXT:    adcq %r19, %rbx
-; APX-NEXT:    setb %al
-; APX-NEXT:    movzbl %al, %ecx
-; APX-NEXT:    movq %rdi, %rax
-; APX-NEXT:    mulq %r23
-; APX-NEXT:    movq %rdx, %r26
-; APX-NEXT:    movq %rax, %r8
-; APX-NEXT:    addq %rbx, %r8
-; APX-NEXT:    adcq %rcx, %r26
-; APX-NEXT:    addq %r22, %r30
-; APX-NEXT:    adcq %r21, %r31
-; APX-NEXT:    adcq $0, %r8
-; APX-NEXT:    adcq $0, %r26
-; APX-NEXT:    addq %r16, %r8
-; APX-NEXT:    adcq %r9, %r26
-; APX-NEXT:    setb %al
-; APX-NEXT:    movzbl %al, %ecx
-; APX-NEXT:    movq %r12, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
-; APX-NEXT:    movq %r12, %rax
-; APX-NEXT:    mulq %r11
-; APX-NEXT:    movq %rdx, %r9
-; APX-NEXT:    movq %rax, %rsi
-; APX-NEXT:    movq %r15, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
-; APX-NEXT:    movq %r15, %rax
-; APX-NEXT:    mulq %r11
-; APX-NEXT:    movq %rdx, %r16
-; APX-NEXT:    movq %rax, %r21
-; APX-NEXT:    addq %r9, %r21
-; APX-NEXT:    adcq $0, %r16
-; APX-NEXT:    movq %r12, %rax
-; APX-NEXT:    mulq %r23
-; APX-NEXT:    movq %rdx, %r9
-; APX-NEXT:    movq %rax, %rdi
-; APX-NEXT:    addq %r21, %rdi
-; APX-NEXT:    adcq %r16, %r9
-; APX-NEXT:    setb %al
-; APX-NEXT:    movzbl %al, %r10d
-; APX-NEXT:    movq %r15, %rax
-; APX-NEXT:    mulq %r23
-; APX-NEXT:    movq %rdx, %r21
-; APX-NEXT:    movq %rax, %r22
-; APX-NEXT:    addq %r9, %r22
-; APX-NEXT:    adcq %r10, %r21
-; APX-NEXT:    addq %r8, %rsi
-; APX-NEXT:    movq %rsi, %r19
-; APX-NEXT:    adcq %r26, %rdi
-; APX-NEXT:    adcq %rcx, %r22
-; APX-NEXT:    adcq $0, %r21
-; APX-NEXT:    movq %r17, %rax
-; APX-NEXT:    mulq %r27
-; APX-NEXT:    movq %rdx, %r8
-; APX-NEXT:    movq %rax, %rbx
-; APX-NEXT:    movq %r29, %rax
-; APX-NEXT:    mulq %r27
-; APX-NEXT:    movq %rdx, %r9
-; APX-NEXT:    movq %rax, %r16
-; APX-NEXT:    addq %r8, %r16
-; APX-NEXT:    adcq $0, %r9
-; APX-NEXT:    movq %r17, %rax
-; APX-NEXT:    mulq %r14
-; APX-NEXT:    movq %rdx, %r8
-; APX-NEXT:    movq %rax, %r26
-; APX-NEXT:    addq %r16, %r26
-; APX-NEXT:    adcq %r9, %r8
-; APX-NEXT:    setb %al
-; APX-NEXT:    movzbl %al, %ecx
-; APX-NEXT:    movq %r29, %rax
-; APX-NEXT:    mulq %r14
-; APX-NEXT:    movq %r14, %rsi
-; APX-NEXT:    movq %rdx, %r9
-; APX-NEXT:    movq %rax, %r16
-; APX-NEXT:    addq %r8, %r16
-; APX-NEXT:    adcq %rcx, %r9
-; APX-NEXT:    movq %r13, %rax
-; APX-NEXT:    mulq %r27
-; APX-NEXT:    movq %rdx, %r8
-; APX-NEXT:    movq %rax, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
-; APX-NEXT:    movq %r18, %rax
-; APX-NEXT:    mulq %r27
-; APX-NEXT:    movq %rdx, %r14
-; APX-NEXT:    movq %rax, %r15
-; APX-NEXT:    addq %r8, %r15
-; APX-NEXT:    adcq $0, %r14
-; APX-NEXT:    movq %r13, %rax
-; APX-NEXT:    movq %rsi, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
-; APX-NEXT:    mulq %rsi
-; APX-NEXT:    movq %rdx, %r12
-; APX-NEXT:    addq %r15, %rax
-; APX-NEXT:    movq %rax, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
-; APX-NEXT:    adcq %r14, %r12
-; APX-NEXT:    setb %cl
-; APX-NEXT:    movq %r18, %rax
-; APX-NEXT:    mulq %rsi
-; APX-NEXT:    movq %rdx, %r8
-; APX-NEXT:    movq %rax, %r15
-; APX-NEXT:    addq %r12, %r15
-; APX-NEXT:    movzbl %cl, %eax
-; APX-NEXT:    adcq %rax, %r8
-; APX-NEXT:    addq %rbx, %r15
-; APX-NEXT:    adcq %r26, %r8
-; APX-NEXT:    adcq $0, %r16
-; APX-NEXT:    adcq $0, %r9
-; APX-NEXT:    movq %r13, %rax
-; APX-NEXT:    mulq %r11
-; APX-NEXT:    movq %rdx, %r26
-; APX-NEXT:    movq %rax, %rsi
-; APX-NEXT:    movq %r18, %rax
-; APX-NEXT:    mulq %r11
-; APX-NEXT:    movq %rdx, %rbx
-; APX-NEXT:    movq %rax, %r14
-; APX-NEXT:    addq %r26, %r14
-; APX-NEXT:    adcq $0, %rbx
-; APX-NEXT:    movq %r13, %rax
-; APX-NEXT:    mulq %r23
-; APX-NEXT:    movq %rdx, %r12
-; APX-NEXT:    addq %r14, %rax
-; APX-NEXT:    movq %rax, %r10
-; APX-NEXT:    adcq %rbx, %r12
-; APX-NEXT:    setb %cl
-; APX-NEXT:    movq %r18, %rax
-; APX-NEXT:    mulq %r23
-; APX-NEXT:    movq %rdx, %r14
-; APX-NEXT:    movq %rax, %r26
-; APX-NEXT:    addq %r12, %r26
-; APX-NEXT:    movzbl %cl, %eax
-; APX-NEXT:    adcq %rax, %r14
-; APX-NEXT:    addq %r15, %rsi
-; APX-NEXT:    movq %rsi, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
-; APX-NEXT:    adcq %r8, %r10
-; APX-NEXT:    movq %r10, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
-; APX-NEXT:    adcq $0, %r26
-; APX-NEXT:    adcq $0, %r14
-; APX-NEXT:    addq %r16, %r26
-; APX-NEXT:    adcq %r9, %r14
-; APX-NEXT:    setb %cl
-; APX-NEXT:    movq %r17, %rax
-; APX-NEXT:    movq %r11, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
-; APX-NEXT:    mulq %r11
-; APX-NEXT:    movq %rdx, %r8
-; APX-NEXT:    movq %rax, %rbx
-; APX-NEXT:    movq %r29, %rax
-; APX-NEXT:    mulq %r11
-; APX-NEXT:    movq %rdx, %r9
-; APX-NEXT:    movq %rax, %r16
-; APX-NEXT:    addq %r8, %r16
-; APX-NEXT:    adcq $0, %r9
-; APX-NEXT:    movq %r17, %rax
-; APX-NEXT:    mulq %r23
-; APX-NEXT:    movq %rdx, %r8
-; APX-NEXT:    movq %rax, %r15
-; APX-NEXT:    addq %r16, %r15
-; APX-NEXT:    adcq %r9, %r8
-; APX-NEXT:    setb %r9b
-; APX-NEXT:    movq %r29, %rax
-; APX-NEXT:    mulq %r23
-; APX-NEXT:    movq %rdx, %r12
-; APX-NEXT:    movq %rax, %rbp
-; APX-NEXT:    addq %r8, %rbp
-; APX-NEXT:    movzbl %r9b, %eax
-; APX-NEXT:    adcq %rax, %r12
-; APX-NEXT:    addq %r26, %rbx
-; APX-NEXT:    adcq %r14, %r15
-; APX-NEXT:    movzbl %cl, %eax
-; APX-NEXT:    adcq %rax, %rbp
-; APX-NEXT:    adcq $0, %r12
-; APX-NEXT:    addq %r25, %rbx
-; APX-NEXT:    movq {{[-0-9]+}}(%r{{[sb]}}p), %rsi # 8-byte Reload
-; APX-NEXT:    movq 32(%rsi), %r25
-; APX-NEXT:    adcq %r28, %r15
-; APX-NEXT:    adcq %r30, %rbp
-; APX-NEXT:    adcq %r31, %r12
-; APX-NEXT:    adcq $0, %r19
-; APX-NEXT:    movq %r19, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
-; APX-NEXT:    adcq $0, %rdi
-; APX-NEXT:    adcq $0, %r22
-; APX-NEXT:    adcq $0, %r21
-; APX-NEXT:    movq %r17, %rax
-; APX-NEXT:    mulq %r25
-; APX-NEXT:    movq %rdx, %r8
-; APX-NEXT:    movq %rax, %r28
-; APX-NEXT:    movq %r29, %rax
-; APX-NEXT:    mulq %r25
-; APX-NEXT:    movq %rdx, %r9
-; APX-NEXT:    movq %rax, %r16
-; APX-NEXT:    addq %r8, %r16
-; APX-NEXT:    adcq $0, %r9
-; APX-NEXT:    movq 40(%rsi), %rcx
-; APX-NEXT:    movq %r17, %rax
-; APX-NEXT:    mulq %rcx
-; APX-NEXT:    movq %rdx, %r8
-; APX-NEXT:    movq %rax, %r26
-; APX-NEXT:    addq %r16, %r26
-; APX-NEXT:    adcq %r9, %r8
-; APX-NEXT:    setb %r10b
-; APX-NEXT:    movq %r29, %rax
-; APX-NEXT:    mulq %rcx
-; APX-NEXT:    movq %rdx, %r9
-; APX-NEXT:    movq %rax, %r16
-; APX-NEXT:    addq %r8, %r16
-; APX-NEXT:    movzbl %r10b, %eax
-; APX-NEXT:    adcq %rax, %r9
-; APX-NEXT:    movq %r13, %rax
-; APX-NEXT:    mulq %r25
-; APX-NEXT:    movq %rdx, %r8
-; APX-NEXT:    movq %rax, %r19
-; APX-NEXT:    movq %r18, %rax
-; APX-NEXT:    mulq %r25
-; APX-NEXT:    movq %rdx, %r30
-; APX-NEXT:    movq %rax, %r31
-; APX-NEXT:    addq %r8, %r31
-; APX-NEXT:    adcq $0, %r30
-; APX-NEXT:    movq %r13, %rax
-; APX-NEXT:    mulq %rcx
-; APX-NEXT:    movq %rdx, %r8
-; APX-NEXT:    movq %rax, %r20
-; APX-NEXT:    addq %r31, %r20
-; APX-NEXT:    adcq %r30, %r8
-; APX-NEXT:    setb %r10b
-; APX-NEXT:    movq %r18, %rax
-; APX-NEXT:    mulq %rcx
-; APX-NEXT:    movq %rdx, %r30
-; APX-NEXT:    movq %rax, %r31
-; APX-NEXT:    addq %r8, %r31
-; APX-NEXT:    movzbl %r10b, %eax
-; APX-NEXT:    adcq %rax, %r30
-; APX-NEXT:    addq %r28, %r31
-; APX-NEXT:    adcq %r26, %r30
-; APX-NEXT:    adcq $0, %r16
-; APX-NEXT:    adcq $0, %r9
-; APX-NEXT:    movq 48(%rsi), %r28
-; APX-NEXT:    movq %r13, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
-; APX-NEXT:    movq %r13, %rax
-; APX-NEXT:    mulq %r28
-; APX-NEXT:    movq %rdx, %r8
-; APX-NEXT:    movq %rax, %r11
-; APX-NEXT:    movq %r18, %rax
-; APX-NEXT:    movq %r18, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
-; APX-NEXT:    mulq %r28
-; APX-NEXT:    movq %rdx, %r26
-; APX-NEXT:    movq %rax, %r14
-; APX-NEXT:    addq %r8, %r14
-; APX-NEXT:    adcq $0, %r26
-; APX-NEXT:    movq 56(%rsi), %r10
-; APX-NEXT:    movq %r13, %rax
-; APX-NEXT:    mulq %r10
-; APX-NEXT:    movq %rdx, %r13
-; APX-NEXT:    addq %r14, %rax
-; APX-NEXT:    movq %rax, %r14
-; APX-NEXT:    adcq %r26, %r13
-; APX-NEXT:    setb %sil
-; APX-NEXT:    movq %r18, %rax
-; APX-NEXT:    mulq %r10
-; APX-NEXT:    movq %rdx, %r26
-; APX-NEXT:    movq %rax, %r8
-; APX-NEXT:    addq %r13, %r8
-; APX-NEXT:    movzbl %sil, %eax
-; APX-NEXT:    adcq %rax, %r26
-; APX-NEXT:    addq %r31, %r11
-; APX-NEXT:    adcq %r30, %r14
-; APX-NEXT:    adcq $0, %r8
-; APX-NEXT:    adcq $0, %r26
-; APX-NEXT:    addq %r16, %r8
-; APX-NEXT:    adcq %r9, %r26
-; APX-NEXT:    setb %r18b
-; APX-NEXT:    movq %r17, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
-; APX-NEXT:    movq %r17, %rax
-; APX-NEXT:    mulq %r28
-; APX-NEXT:    movq %rdx, %r9
-; APX-NEXT:    movq %rax, %r30
-; APX-NEXT:    movq %r29, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
-; APX-NEXT:    movq %r29, %rax
-; APX-NEXT:    mulq %r28
-; APX-NEXT:    movq %rdx, %r16
-; APX-NEXT:    movq %rax, %r31
-; APX-NEXT:    addq %r9, %r31
-; APX-NEXT:    adcq $0, %r16
-; APX-NEXT:    movq %r17, %rax
-; APX-NEXT:    mulq %r10
-; APX-NEXT:    movq %rdx, %r9
-; APX-NEXT:    movq %rax, %r17
-; APX-NEXT:    addq %r31, %r17
-; APX-NEXT:    adcq %r16, %r9
-; APX-NEXT:    setb %r16b
-; APX-NEXT:    movq %r29, %rax
-; APX-NEXT:    mulq %r10
-; APX-NEXT:    movq %rdx, %r13
-; APX-NEXT:    movq %rax, %r31
-; APX-NEXT:    addq %r9, %r31
-; APX-NEXT:    movzbl %r16b, %eax
-; APX-NEXT:    adcq %rax, %r13
-; APX-NEXT:    addq %r8, %r30
-; APX-NEXT:    adcq %r26, %r17
-; APX-NEXT:    movzbl %r18b, %eax
-; APX-NEXT:    adcq %rax, %r31
-; APX-NEXT:    adcq $0, %r13
-; APX-NEXT:    addq %rbx, %r19
-; APX-NEXT:    movq %r19, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
-; APX-NEXT:    adcq %r15, %r20
-; APX-NEXT:    movq %r20, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
-; APX-NEXT:    adcq %rbp, %r11
-; APX-NEXT:    movq %r11, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
-; APX-NEXT:    adcq %r12, %r14
-; APX-NEXT:    movq %r14, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
-; APX-NEXT:    adcq $0, %r30
-; APX-NEXT:    adcq $0, %r17
-; APX-NEXT:    adcq $0, %r31
-; APX-NEXT:    adcq $0, %r13
-; APX-NEXT:    addq {{[-0-9]+}}(%r{{[sb]}}p), %r30 # 8-byte Folded Reload
-; APX-NEXT:    adcq %rdi, %r17
-; APX-NEXT:    adcq %r22, %r31
-; APX-NEXT:    adcq %r21, %r13
-; APX-NEXT:    setb %r15b
-; APX-NEXT:    movq {{[-0-9]+}}(%r{{[sb]}}p), %rsi # 8-byte Reload
-; APX-NEXT:    movq %rsi, %rax
-; APX-NEXT:    mulq %r25
-; APX-NEXT:    movq %rdx, %r8
-; APX-NEXT:    movq %rax, %r19
-; APX-NEXT:    movq {{[-0-9]+}}(%r{{[sb]}}p), %r21 # 8-byte Reload
-; APX-NEXT:    movq %r21, %rax
-; APX-NEXT:    mulq %r25
-; APX-NEXT:    movq %rdx, %r9
-; APX-NEXT:    movq %rax, %r16
-; APX-NEXT:    addq %r8, %r16
-; APX-NEXT:    adcq $0, %r9
-; APX-NEXT:    movq %rsi, %rax
-; APX-NEXT:    movq %rsi, %r29
-; APX-NEXT:    mulq %rcx
-; APX-NEXT:    movq %rdx, %r8
-; APX-NEXT:    movq %rax, %r20
-; APX-NEXT:    addq %r16, %r20
-; APX-NEXT:    adcq %r9, %r8
-; APX-NEXT:    setb %r18b
-; APX-NEXT:    movq %r21, %rax
-; APX-NEXT:    movq %r21, %r14
-; APX-NEXT:    mulq %rcx
-; APX-NEXT:    movq %rdx, %r9
-; APX-NEXT:    movq %rax, %r16
-; APX-NEXT:    addq %r8, %r16
-; APX-NEXT:    movzbl %r18b, %eax
-; APX-NEXT:    adcq %rax, %r9
-; APX-NEXT:    movq {{[-0-9]+}}(%r{{[sb]}}p), %rbx # 8-byte Reload
-; APX-NEXT:    movq %rbx, %rax
-; APX-NEXT:    mulq %r25
-; APX-NEXT:    movq %rdx, %r8
-; APX-NEXT:    movq %rax, %rdi
-; APX-NEXT:    movq {{[-0-9]+}}(%r{{[sb]}}p), %rsi # 8-byte Reload
-; APX-NEXT:    movq %rsi, %rax
-; APX-NEXT:    mulq %r25
-; APX-NEXT:    movq %rdx, %r21
-; APX-NEXT:    movq %rax, %r22
-; APX-NEXT:    addq %r8, %r22
-; APX-NEXT:    adcq $0, %r21
-; APX-NEXT:    movq %rbx, %rax
-; APX-NEXT:    mulq %rcx
-; APX-NEXT:    movq %rdx, %r8
-; APX-NEXT:    addq %r22, %rax
-; APX-NEXT:    movq %rax, %r11
-; APX-NEXT:    adcq %r21, %r8
-; APX-NEXT:    setb %r18b
-; APX-NEXT:    movq %rsi, %rax
-; APX-NEXT:    movq %rsi, %r21
-; APX-NEXT:    mulq %rcx
-; APX-NEXT:    movq %rdx, %r22
-; APX-NEXT:    movq %rax, %r26
-; APX-NEXT:    addq %r8, %r26
-; APX-NEXT:    movzbl %r18b, %eax
-; APX-NEXT:    adcq %rax, %r22
-; APX-NEXT:    addq %r19, %r26
-; APX-NEXT:    adcq %r20, %r22
-; APX-NEXT:    adcq $0, %r16
-; APX-NEXT:    adcq $0, %r9
-; APX-NEXT:    movq %rbx, %rax
-; APX-NEXT:    mulq %r28
-; APX-NEXT:    movq %rdx, %r8
-; APX-NEXT:    movq %rax, %rsi
-; APX-NEXT:    movq %r21, %rax
-; APX-NEXT:    mulq %r28
-; APX-NEXT:    movq %rdx, %r19
-; APX-NEXT:    movq %rax, %r20
-; APX-NEXT:    addq %r8, %r20
-; APX-NEXT:    adcq $0, %r19
-; APX-NEXT:    movq %rbx, %rax
-; APX-NEXT:    mulq %r10
-; APX-NEXT:    movq %rdx, %rbx
-; APX-NEXT:    addq %r20, %rax
-; APX-NEXT:    movq %rax, %r20
-; APX-NEXT:    adcq %r19, %rbx
-; APX-NEXT:    setb %r18b
-; APX-NEXT:    movq %r21, %rax
-; APX-NEXT:    mulq %r10
-; APX-NEXT:    movq %rdx, %r21
-; APX-NEXT:    movq %rax, %r8
-; APX-NEXT:    addq %rbx, %r8
-; APX-NEXT:    movzbl %r18b, %eax
-; APX-NEXT:    adcq %rax, %r21
-; APX-NEXT:    addq %r26, %rsi
-; APX-NEXT:    adcq %r22, %r20
-; APX-NEXT:    adcq $0, %r8
-; APX-NEXT:    adcq $0, %r21
-; APX-NEXT:    addq %r16, %r8
-; APX-NEXT:    adcq %r9, %r21
-; APX-NEXT:    setb %r18b
-; APX-NEXT:    movq %r29, %rax
-; APX-NEXT:    mulq %r28
-; APX-NEXT:    movq %rdx, %r9
-; APX-NEXT:    movq %rax, %r22
-; APX-NEXT:    movq %r14, %rax
-; APX-NEXT:    mulq %r28
-; APX-NEXT:    movq %rdx, %r16
-; APX-NEXT:    movq %rax, %r19
-; APX-NEXT:    addq %r9, %r19
-; APX-NEXT:    adcq $0, %r16
-; APX-NEXT:    movq %r29, %rax
-; APX-NEXT:    mulq %r10
-; APX-NEXT:    movq %rdx, %r9
-; APX-NEXT:    addq %r19, %rax
-; APX-NEXT:    movq %rax, %r19
-; APX-NEXT:    adcq %r16, %r9
-; APX-NEXT:    setb %r16b
-; APX-NEXT:    movq %r14, %rax
-; APX-NEXT:    mulq %r10
-; APX-NEXT:    movq %rdx, %rbp
-; APX-NEXT:    movq %rax, %r12
-; APX-NEXT:    addq %r9, %r12
-; APX-NEXT:    movzbl %r16b, %eax
-; APX-NEXT:    adcq %rax, %rbp
-; APX-NEXT:    addq %r8, %r22
-; APX-NEXT:    adcq %r21, %r19
-; APX-NEXT:    movzbl %r18b, %eax
-; APX-NEXT:    adcq %rax, %r12
-; APX-NEXT:    adcq $0, %rbp
-; APX-NEXT:    addq %r30, %rdi
-; APX-NEXT:    movq %rdi, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
-; APX-NEXT:    adcq %r17, %r11
-; APX-NEXT:    movq %r11, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
-; APX-NEXT:    adcq %r31, %rsi
-; APX-NEXT:    movq %rsi, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
-; APX-NEXT:    adcq %r13, %r20
-; APX-NEXT:    movq %r20, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
-; APX-NEXT:    movzbl %r15b, %eax
-; APX-NEXT:    adcq %rax, %r22
-; APX-NEXT:    movq %r22, (%rsp) # 8-byte Spill
-; APX-NEXT:    adcq $0, %r19
-; APX-NEXT:    movq %r19, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
-; APX-NEXT:    adcq $0, %r12
-; APX-NEXT:    adcq $0, %rbp
-; APX-NEXT:    movq 64(%r24), %r21
-; APX-NEXT:    movq {{[-0-9]+}}(%r{{[sb]}}p), %rdi # 8-byte Reload
-; APX-NEXT:    movq %rdi, %rax
-; APX-NEXT:    mulq %r21
-; APX-NEXT:    movq %rdx, %r8
-; APX-NEXT:    movq %rax, %r22
-; APX-NEXT:    movq %r23, %rax
-; APX-NEXT:    mulq %r21
-; APX-NEXT:    movq %rdx, %r9
-; APX-NEXT:    movq %rax, %r16
-; APX-NEXT:    addq %r8, %r16
-; APX-NEXT:    adcq $0, %r9
-; APX-NEXT:    movq 72(%r24), %r30
-; APX-NEXT:    movq %rdi, %rax
-; APX-NEXT:    mulq %r30
-; APX-NEXT:    movq %rdx, %r8
-; APX-NEXT:    movq %rax, %r26
-; APX-NEXT:    addq %r16, %r26
-; APX-NEXT:    adcq %r9, %r8
-; APX-NEXT:    setb %r18b
-; APX-NEXT:    movq %r23, %rax
-; APX-NEXT:    mulq %r30
-; APX-NEXT:    movq %rdx, %r9
-; APX-NEXT:    movq %rax, %r16
-; APX-NEXT:    addq %r8, %r16
-; APX-NEXT:    movzbl %r18b, %eax
-; APX-NEXT:    adcq %rax, %r9
-; APX-NEXT:    movq %r27, %rax
-; APX-NEXT:    mulq %r21
-; APX-NEXT:    movq %rdx, %r8
-; APX-NEXT:    movq %rax, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
-; APX-NEXT:    movq {{[-0-9]+}}(%r{{[sb]}}p), %r11 # 8-byte Reload
-; APX-NEXT:    movq %r11, %rax
-; APX-NEXT:    mulq %r21
-; APX-NEXT:    movq %rdx, %r31
-; APX-NEXT:    movq %rax, %rbx
-; APX-NEXT:    addq %r8, %rbx
-; APX-NEXT:    adcq $0, %r31
-; APX-NEXT:    movq %r27, %rax
-; APX-NEXT:    mulq %r30
-; APX-NEXT:    movq %rdx, %r8
-; APX-NEXT:    addq %rbx, %rax
-; APX-NEXT:    movq %rax, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
-; APX-NEXT:    adcq %r31, %r8
-; APX-NEXT:    setb %r18b
-; APX-NEXT:    movq %r11, %rax
-; APX-NEXT:    mulq %r30
-; APX-NEXT:    movq %rdx, %r31
-; APX-NEXT:    movq %rax, %rbx
-; APX-NEXT:    addq %r8, %rbx
-; APX-NEXT:    movzbl %r18b, %eax
-; APX-NEXT:    adcq %rax, %r31
-; APX-NEXT:    addq %r22, %rbx
-; APX-NEXT:    adcq %r26, %r31
-; APX-NEXT:    adcq $0, %r16
-; APX-NEXT:    adcq $0, %r9
-; APX-NEXT:    movq 80(%r24), %r13
-; APX-NEXT:    movq %r27, %rax
-; APX-NEXT:    mulq %r13
-; APX-NEXT:    movq %rdx, %r8
-; APX-NEXT:    movq %rax, %rsi
-; APX-NEXT:    movq %r11, %rax
-; APX-NEXT:    mulq %r13
-; APX-NEXT:    movq %rdx, %r26
-; APX-NEXT:    movq %rax, %r14
-; APX-NEXT:    addq %r8, %r14
-; APX-NEXT:    adcq $0, %r26
-; APX-NEXT:    movq 88(%r24), %r18
-; APX-NEXT:    movq %r27, %rax
-; APX-NEXT:    mulq %r18
-; APX-NEXT:    movq %rdx, %r15
-; APX-NEXT:    movq %rax, %r22
-; APX-NEXT:    addq %r14, %r22
-; APX-NEXT:    adcq %r26, %r15
-; APX-NEXT:    setb %r14b
-; APX-NEXT:    movq %r11, %rax
-; APX-NEXT:    mulq %r18
-; APX-NEXT:    movq %rdx, %r26
-; APX-NEXT:    movq %rax, %r8
-; APX-NEXT:    addq %r15, %r8
-; APX-NEXT:    movzbl %r14b, %eax
-; APX-NEXT:    adcq %rax, %r26
-; APX-NEXT:    addq %rbx, %rsi
-; APX-NEXT:    movq %rsi, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
-; APX-NEXT:    adcq %r31, %r22
-; APX-NEXT:    adcq $0, %r8
-; APX-NEXT:    adcq $0, %r26
-; APX-NEXT:    addq %r16, %r8
-; APX-NEXT:    adcq %r9, %r26
-; APX-NEXT:    setb %r31b
-; APX-NEXT:    movq %rdi, %rax
-; APX-NEXT:    mulq %r13
-; APX-NEXT:    movq %rdx, %r9
-; APX-NEXT:    movq %rax, %rsi
-; APX-NEXT:    movq %r23, %rax
-; APX-NEXT:    mulq %r13
-; APX-NEXT:    movq %rdx, %r16
-; APX-NEXT:    movq %rax, %r14
-; APX-NEXT:    addq %r9, %r14
-; APX-NEXT:    adcq $0, %r16
-; APX-NEXT:    movq %rdi, %rax
-; APX-NEXT:    mulq %r18
-; APX-NEXT:    movq %rdx, %r9
-; APX-NEXT:    movq %rax, %rbx
-; APX-NEXT:    addq %r14, %rbx
-; APX-NEXT:    adcq %r16, %r9
-; APX-NEXT:    setb %r16b
-; APX-NEXT:    movq %r23, %rax
-; APX-NEXT:    mulq %r18
-; APX-NEXT:    movq %rdx, %r14
-; APX-NEXT:    movq %rax, %r15
-; APX-NEXT:    addq %r9, %r15
-; APX-NEXT:    movzbl %r16b, %eax
-; APX-NEXT:    adcq %rax, %r14
-; APX-NEXT:    addq %r8, %rsi
-; APX-NEXT:    adcq %r26, %rbx
-; APX-NEXT:    movzbl %r31b, %eax
-; APX-NEXT:    adcq %rax, %r15
-; APX-NEXT:    adcq $0, %r14
-; APX-NEXT:    imulq %r25, %r18
-; APX-NEXT:    movq %r25, %rax
-; APX-NEXT:    mulq %r13
-; APX-NEXT:    movq %rax, %r8
-; APX-NEXT:    addq %r18, %rdx
-; APX-NEXT:    imulq %rcx, %r13
-; APX-NEXT:    addq %rdx, %r13
-; APX-NEXT:    movq %r28, %r9
-; APX-NEXT:    imulq %r30, %r9
-; APX-NEXT:    movq %r28, %rax
-; APX-NEXT:    mulq %r21
-; APX-NEXT:    movq %rax, %r26
-; APX-NEXT:    addq %r9, %rdx
-; APX-NEXT:    imulq %r21, %r10
-; APX-NEXT:    addq %rdx, %r10
-; APX-NEXT:    addq %r8, %r26
-; APX-NEXT:    adcq %r13, %r10
-; APX-NEXT:    movq %r21, %rax
-; APX-NEXT:    mulq %r25
-; APX-NEXT:    movq %rdx, %r8
-; APX-NEXT:    movq %rax, %r9
-; APX-NEXT:    movq %r30, %rax
-; APX-NEXT:    mulq %r25
-; APX-NEXT:    movq %rdx, %r25
-; APX-NEXT:    movq %rax, %r28
-; APX-NEXT:    addq %r8, %r28
-; APX-NEXT:    adcq $0, %r25
-; APX-NEXT:    movq %r21, %rax
-; APX-NEXT:    mulq %rcx
-; APX-NEXT:    movq %rdx, %r8
-; APX-NEXT:    movq %rax, %r16
-; APX-NEXT:    addq %r28, %r16
-; APX-NEXT:    adcq %r25, %r8
-; APX-NEXT:    setb %r18b
-; APX-NEXT:    movq %r30, %rax
-; APX-NEXT:    mulq %rcx
-; APX-NEXT:    movq %rdx, %r21
-; APX-NEXT:    movq %rax, %r28
-; APX-NEXT:    addq %r8, %r28
-; APX-NEXT:    movzbl %r18b, %eax
-; APX-NEXT:    adcq %rax, %r21
-; APX-NEXT:    addq %r26, %r28
-; APX-NEXT:    adcq %r10, %r21
-; APX-NEXT:    movq 112(%r24), %rcx
-; APX-NEXT:    movq %r27, %rax
-; APX-NEXT:    mulq %rcx
-; APX-NEXT:    movq %rax, %r8
-; APX-NEXT:    imulq %r11, %rcx
-; APX-NEXT:    addq %rdx, %rcx
-; APX-NEXT:    movq 120(%r24), %rax
-; APX-NEXT:    imulq %r27, %rax
-; APX-NEXT:    addq %rax, %rcx
-; APX-NEXT:    movq 96(%r24), %r25
-; APX-NEXT:    movq 104(%r24), %r26
-; APX-NEXT:    movq %rdi, %rax
-; APX-NEXT:    imulq %r26, %rdi
-; APX-NEXT:    mulq %r25
-; APX-NEXT:    movq %rax, %r29
-; APX-NEXT:    addq %rdi, %rdx
-; APX-NEXT:    imulq %r25, %r23
-; APX-NEXT:    addq %rdx, %r23
-; APX-NEXT:    addq %r8, %r29
-; APX-NEXT:    adcq %rcx, %r23
-; APX-NEXT:    movq %r25, %rax
-; APX-NEXT:    mulq %r27
-; APX-NEXT:    movq %rdx, %r8
-; APX-NEXT:    movq %rax, %r20
-; APX-NEXT:    movq %r26, %rax
-; APX-NEXT:    mulq %r27
-; APX-NEXT:    movq %rdx, %r27
-; APX-NEXT:    movq %rax, %r30
-; APX-NEXT:    addq %r8, %r30
-; APX-NEXT:    adcq $0, %r27
-; APX-NEXT:    movq %r25, %rax
-; APX-NEXT:    mulq %r11
-; APX-NEXT:    movq %rdx, %r8
-; APX-NEXT:    movq %rax, %r25
-; APX-NEXT:    addq %r30, %r25
-; APX-NEXT:    adcq %r27, %r8
-; APX-NEXT:    setb %cl
-; APX-NEXT:    movq %r26, %rax
-; APX-NEXT:    mulq %r11
-; APX-NEXT:    movq %rdx, %r24
-; APX-NEXT:    movq %rax, %r27
-; APX-NEXT:    addq %r8, %r27
-; APX-NEXT:    movzbl %cl, %eax
-; APX-NEXT:    adcq %rax, %r24
-; APX-NEXT:    addq %r29, %r27
-; APX-NEXT:    adcq %r23, %r24
-; APX-NEXT:    addq %r9, %r20
-; APX-NEXT:    adcq %r16, %r25
-; APX-NEXT:    adcq %r28, %r27
-; APX-NEXT:    adcq %r21, %r24
-; APX-NEXT:    addq %rsi, %r20
-; APX-NEXT:    adcq %rbx, %r25
-; APX-NEXT:    adcq %r15, %r27
-; APX-NEXT:    adcq %r14, %r24
-; APX-NEXT:    movq {{[-0-9]+}}(%r{{[sb]}}p), %r11 # 8-byte Reload
-; APX-NEXT:    movq 80(%r11), %rbx
-; APX-NEXT:    movq %rbx, %rax
-; APX-NEXT:    movq {{[-0-9]+}}(%r{{[sb]}}p), %r19 # 8-byte Reload
-; APX-NEXT:    mulq %r19
-; APX-NEXT:    movq %rax, %r21
-; APX-NEXT:    movq %rdx, %r8
-; APX-NEXT:    movq 88(%r11), %r28
-; APX-NEXT:    movq %r28, %rax
-; APX-NEXT:    mulq %r19
-; APX-NEXT:    movq %rdx, %r9
-; APX-NEXT:    movq %rax, %r16
-; APX-NEXT:    addq %r8, %r16
-; APX-NEXT:    adcq $0, %r9
-; APX-NEXT:    movq %rbx, %rax
-; APX-NEXT:    movq {{[-0-9]+}}(%r{{[sb]}}p), %r17 # 8-byte Reload
-; APX-NEXT:    mulq %r17
-; APX-NEXT:    movq %rdx, %r8
-; APX-NEXT:    movq %rax, %r26
-; APX-NEXT:    addq %r16, %r26
-; APX-NEXT:    adcq %r9, %r8
-; APX-NEXT:    setb %cl
-; APX-NEXT:    movq %r28, %rax
-; APX-NEXT:    mulq %r17
-; APX-NEXT:    movq %rdx, %r9
-; APX-NEXT:    movq %rax, %r16
-; APX-NEXT:    addq %r8, %r16
-; APX-NEXT:    movzbl %cl, %eax
-; APX-NEXT:    adcq %rax, %r9
-; APX-NEXT:    movq 64(%r11), %r15
-; APX-NEXT:    movq %r15, %rax
-; APX-NEXT:    mulq %r19
-; APX-NEXT:    movq %rax, %r23
-; APX-NEXT:    movq %rdx, %r8
-; APX-NEXT:    movq 72(%r11), %r14
-; APX-NEXT:    movq %r14, %rax
-; APX-NEXT:    mulq %r19
-; APX-NEXT:    movq %rdx, %r30
-; APX-NEXT:    movq %rax, %r31
-; APX-NEXT:    addq %r8, %r31
-; APX-NEXT:    adcq $0, %r30
-; APX-NEXT:    movq %r15, %rax
-; APX-NEXT:    mulq %r17
-; APX-NEXT:    movq %rdx, %r8
-; APX-NEXT:    movq %rax, %r29
-; APX-NEXT:    addq %r31, %r29
-; APX-NEXT:    adcq %r30, %r8
-; APX-NEXT:    setb %cl
-; APX-NEXT:    movq %r14, %rax
-; APX-NEXT:    mulq %r17
-; APX-NEXT:    movq %rdx, %r31
-; APX-NEXT:    movq %rax, %r13
-; APX-NEXT:    addq %r8, %r13
-; APX-NEXT:    movzbl %cl, %eax
-; APX-NEXT:    adcq %rax, %r31
-; APX-NEXT:    addq %r21, %r13
-; APX-NEXT:    adcq %r26, %r31
-; APX-NEXT:    adcq $0, %r16
-; APX-NEXT:    adcq $0, %r9
-; APX-NEXT:    movq %r15, %rax
-; APX-NEXT:    movq {{[-0-9]+}}(%r{{[sb]}}p), %rdi # 8-byte Reload
-; APX-NEXT:    mulq %rdi
-; APX-NEXT:    movq %rdx, %r8
-; APX-NEXT:    movq %rax, %r30
-; APX-NEXT:    movq %r14, %rax
-; APX-NEXT:    mulq %rdi
-; APX-NEXT:    movq %rdx, %r26
-; APX-NEXT:    movq %rax, %rcx
-; APX-NEXT:    addq %r8, %rcx
-; APX-NEXT:    adcq $0, %r26
-; APX-NEXT:    movq %r15, %rax
-; APX-NEXT:    movq {{[-0-9]+}}(%r{{[sb]}}p), %r18 # 8-byte Reload
-; APX-NEXT:    mulq %r18
-; APX-NEXT:    movq %rdx, %r10
-; APX-NEXT:    movq %rax, %r21
-; APX-NEXT:    addq %rcx, %r21
-; APX-NEXT:    adcq %r26, %r10
-; APX-NEXT:    setb %cl
-; APX-NEXT:    movq %r14, %rax
-; APX-NEXT:    mulq %r18
-; APX-NEXT:    movq %rdx, %r26
-; APX-NEXT:    movq %rax, %r8
-; APX-NEXT:    addq %r10, %r8
-; APX-NEXT:    movzbl %cl, %eax
-; APX-NEXT:    adcq %rax, %r26
-; APX-NEXT:    addq %r13, %r30
-; APX-NEXT:    adcq %r31, %r21
-; APX-NEXT:    adcq $0, %r8
-; APX-NEXT:    adcq $0, %r26
-; APX-NEXT:    addq %r16, %r8
-; APX-NEXT:    adcq %r9, %r26
-; APX-NEXT:    setb %sil
-; APX-NEXT:    movq %rbx, %rax
-; APX-NEXT:    mulq %rdi
-; APX-NEXT:    movq %rdx, %rcx
-; APX-NEXT:    movq %rax, %r31
-; APX-NEXT:    movq %r28, %rax
-; APX-NEXT:    mulq %rdi
-; APX-NEXT:    movq %rdx, %r9
-; APX-NEXT:    movq %rax, %r10
-; APX-NEXT:    addq %rcx, %r10
-; APX-NEXT:    adcq $0, %r9
-; APX-NEXT:    movq %rbx, %rax
-; APX-NEXT:    mulq %r18
-; APX-NEXT:    movq %rdx, %rcx
-; APX-NEXT:    movq %rax, %r13
-; APX-NEXT:    addq %r10, %r13
-; APX-NEXT:    adcq %r9, %rcx
-; APX-NEXT:    setb %r10b
-; APX-NEXT:    movq %r28, %rax
-; APX-NEXT:    mulq %r18
-; APX-NEXT:    movq %rdx, %r16
-; APX-NEXT:    movq %rax, %r9
-; APX-NEXT:    addq %rcx, %r9
-; APX-NEXT:    movzbl %r10b, %eax
-; APX-NEXT:    adcq %rax, %r16
-; APX-NEXT:    addq %r8, %r31
-; APX-NEXT:    adcq %r26, %r13
-; APX-NEXT:    movzbl %sil, %eax
-; APX-NEXT:    adcq %rax, %r9
-; APX-NEXT:    adcq $0, %r16
-; APX-NEXT:    movq 96(%r11), %rcx
-; APX-NEXT:    imulq %rcx, %r18
-; APX-NEXT:    movq %rcx, %rax
-; APX-NEXT:    mulq %rdi
-; APX-NEXT:    movq %rax, %r8
-; APX-NEXT:    addq %r18, %rdx
-; APX-NEXT:    movq 104(%r11), %r26
-; APX-NEXT:    movq %rdi, %rax
-; APX-NEXT:    imulq %r26, %rax
-; APX-NEXT:    addq %rdx, %rax
-; APX-NEXT:    movq %rax, %r10
-; APX-NEXT:    movq 112(%r11), %rax
-; APX-NEXT:    movq %rax, %rsi
-; APX-NEXT:    imulq %r17, %rsi
-; APX-NEXT:    mulq %r19
-; APX-NEXT:    movq %rax, %rdi
-; APX-NEXT:    addq %rsi, %rdx
-; APX-NEXT:    movq 120(%r11), %r18
-; APX-NEXT:    imulq %r19, %r18
-; APX-NEXT:    addq %rdx, %r18
-; APX-NEXT:    addq %r8, %rdi
-; APX-NEXT:    adcq %r10, %r18
-; APX-NEXT:    movq %r19, %rax
-; APX-NEXT:    mulq %rcx
-; APX-NEXT:    movq %rdx, %r8
-; APX-NEXT:    movq %rax, %rsi
-; APX-NEXT:    movq %r17, %rax
-; APX-NEXT:    mulq %rcx
-; APX-NEXT:    movq %rdx, %rcx
-; APX-NEXT:    movq %rax, %r10
-; APX-NEXT:    addq %r8, %r10
-; APX-NEXT:    adcq $0, %rcx
-; APX-NEXT:    movq %r19, %rax
-; APX-NEXT:    mulq %r26
-; APX-NEXT:    movq %rdx, %r8
-; APX-NEXT:    movq %rax, %r11
-; APX-NEXT:    addq %r10, %r11
-; APX-NEXT:    adcq %rcx, %r8
-; APX-NEXT:    setb %cl
-; APX-NEXT:    movq %r17, %rax
-; APX-NEXT:    mulq %r26
-; APX-NEXT:    movq %rdx, %r10
-; APX-NEXT:    movq %rax, %r17
-; APX-NEXT:    addq %r8, %r17
-; APX-NEXT:    movzbl %cl, %eax
-; APX-NEXT:    adcq %rax, %r10
-; APX-NEXT:    addq %rdi, %r17
-; APX-NEXT:    adcq %r18, %r10
-; APX-NEXT:    movq {{[-0-9]+}}(%r{{[sb]}}p), %rdi # 8-byte Reload
-; APX-NEXT:    imulq %r15, %rdi
-; APX-NEXT:    movq %r15, %rax
-; APX-NEXT:    movq {{[-0-9]+}}(%r{{[sb]}}p), %r8 # 8-byte Reload
-; APX-NEXT:    mulq %r8
-; APX-NEXT:    movq %rax, %rcx
-; APX-NEXT:    addq %rdi, %rdx
-; APX-NEXT:    movq %r8, %rax
-; APX-NEXT:    imulq %r14, %rax
-; APX-NEXT:    addq %rdx, %rax
-; APX-NEXT:    movq %rax, %r18
-; APX-NEXT:    movq %rbx, %rdi
-; APX-NEXT:    movq {{[-0-9]+}}(%r{{[sb]}}p), %r19 # 8-byte Reload
-; APX-NEXT:    imulq %r19, %rdi
-; APX-NEXT:    movq %rbx, %rax
-; APX-NEXT:    movq {{[-0-9]+}}(%r{{[sb]}}p), %r8 # 8-byte Reload
-; APX-NEXT:    mulq %r8
-; APX-NEXT:    movq %rax, %r26
-; APX-NEXT:    addq %rdi, %rdx
-; APX-NEXT:    imulq %r8, %r28
-; APX-NEXT:    addq %rdx, %r28
-; APX-NEXT:    addq %rcx, %r26
-; APX-NEXT:    adcq %r18, %r28
-; APX-NEXT:    movq %r8, %rax
-; APX-NEXT:    movq %r8, %rdi
-; APX-NEXT:    mulq %r15
-; APX-NEXT:    movq %rdx, %rcx
-; APX-NEXT:    movq %rax, %r8
-; APX-NEXT:    movq %r19, %rax
-; APX-NEXT:    mulq %r15
-; APX-NEXT:    movq %rdx, %rbx
-; APX-NEXT:    movq %rax, %r15
-; APX-NEXT:    addq %rcx, %r15
-; APX-NEXT:    adcq $0, %rbx
-; APX-NEXT:    movq %rdi, %rax
-; APX-NEXT:    mulq %r14
-; APX-NEXT:    movq %rdx, %rcx
-; APX-NEXT:    movq %rax, %r18
-; APX-NEXT:    addq %r15, %r18
-; APX-NEXT:    adcq %rbx, %rcx
-; APX-NEXT:    setb %dil
-; APX-NEXT:    movq %r19, %rax
-; APX-NEXT:    mulq %r14
-; APX-NEXT:    addq %rcx, %rax
-; APX-NEXT:    movzbl %dil, %ecx
-; APX-NEXT:    adcq %rcx, %rdx
-; APX-NEXT:    addq %r26, %rax
-; APX-NEXT:    adcq %r28, %rdx
-; APX-NEXT:    addq %rsi, %r8
-; APX-NEXT:    adcq %r11, %r18
-; APX-NEXT:    adcq %r17, %rax
-; APX-NEXT:    adcq %r10, %rdx
-; APX-NEXT:    addq %r31, %r8
-; APX-NEXT:    adcq %r13, %r18
-; APX-NEXT:    adcq %r9, %rax
-; APX-NEXT:    adcq %r16, %rdx
-; APX-NEXT:    addq {{[-0-9]+}}(%r{{[sb]}}p), %r23 # 8-byte Folded Reload
-; APX-NEXT:    adcq {{[-0-9]+}}(%r{{[sb]}}p), %r29 # 8-byte Folded Reload
-; APX-NEXT:    adcq {{[-0-9]+}}(%r{{[sb]}}p), %r30 # 8-byte Folded Reload
-; APX-NEXT:    adcq %r22, %r21
-; APX-NEXT:    adcq %r20, %r8
-; APX-NEXT:    adcq %r25, %r18
-; APX-NEXT:    adcq %r27, %rax
-; APX-NEXT:    adcq %r24, %rdx
-; APX-NEXT:    addq {{[-0-9]+}}(%r{{[sb]}}p), %r23 # 8-byte Folded Reload
-; APX-NEXT:    adcq {{[-0-9]+}}(%r{{[sb]}}p), %r29 # 8-byte Folded Reload
-; APX-NEXT:    adcq {{[-0-9]+}}(%r{{[sb]}}p), %r30 # 8-byte Folded Reload
-; APX-NEXT:    adcq {{[-0-9]+}}(%r{{[sb]}}p), %r21 # 8-byte Folded Reload
-; APX-NEXT:    adcq (%rsp), %r8 # 8-byte Folded Reload
-; APX-NEXT:    adcq {{[-0-9]+}}(%r{{[sb]}}p), %r18 # 8-byte Folded Reload
-; APX-NEXT:    adcq %r12, %rax
-; APX-NEXT:    adcq %rbp, %rdx
-; APX-NEXT:    movq {{[-0-9]+}}(%r{{[sb]}}p), %rcx # 8-byte Reload
-; APX-NEXT:    movq {{[-0-9]+}}(%r{{[sb]}}p), %rsi # 8-byte Reload
-; APX-NEXT:    movq %rsi, (%rcx)
-; APX-NEXT:    movq {{[-0-9]+}}(%r{{[sb]}}p), %rsi # 8-byte Reload
-; APX-NEXT:    movq %rsi, 8(%rcx)
-; APX-NEXT:    movq {{[-0-9]+}}(%r{{[sb]}}p), %rsi # 8-byte Reload
-; APX-NEXT:    movq %rsi, 16(%rcx)
-; APX-NEXT:    movq {{[-0-9]+}}(%r{{[sb]}}p), %rsi # 8-byte Reload
-; APX-NEXT:    movq %rsi, 24(%rcx)
-; APX-NEXT:    movq {{[-0-9]+}}(%r{{[sb]}}p), %rsi # 8-byte Reload
-; APX-NEXT:    movq %rsi, 32(%rcx)
-; APX-NEXT:    movq {{[-0-9]+}}(%r{{[sb]}}p), %rsi # 8-byte Reload
-; APX-NEXT:    movq %rsi, 40(%rcx)
-; APX-NEXT:    movq {{[-0-9]+}}(%r{{[sb]}}p), %rsi # 8-byte Reload
-; APX-NEXT:    movq %rsi, 48(%rcx)
-; APX-NEXT:    movq {{[-0-9]+}}(%r{{[sb]}}p), %rsi # 8-byte Reload
-; APX-NEXT:    movq %rsi, 56(%rcx)
-; APX-NEXT:    movq %r23, 64(%rcx)
-; APX-NEXT:    movq %r29, 72(%rcx)
-; APX-NEXT:    movq %r30, 80(%rcx)
-; APX-NEXT:    movq %r21, 88(%rcx)
-; APX-NEXT:    movq %r8, 96(%rcx)
-; APX-NEXT:    movq %r18, 104(%rcx)
-; APX-NEXT:    movq %rax, 112(%rcx)
-; APX-NEXT:    movq %rdx, 120(%rcx)
-; APX-NEXT:    addq $104, %rsp
-; APX-NEXT:    popq %rbx
-; APX-NEXT:    popq %r12
-; APX-NEXT:    popq %r13
-; APX-NEXT:    popq %r14
-; APX-NEXT:    popq %r15
-; APX-NEXT:    popq %rbp
-; APX-NEXT:    retq
+; EGPR-LABEL: test_1024:
+; EGPR:       # %bb.0:
+; EGPR-NEXT:    pushq %rbp
+; EGPR-NEXT:    pushq %r15
+; EGPR-NEXT:    pushq %r14
+; EGPR-NEXT:    pushq %r13
+; EGPR-NEXT:    pushq %r12
+; EGPR-NEXT:    pushq %rbx
+; EGPR-NEXT:    subq $104, %rsp
+; EGPR-NEXT:    movq %rdx, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
+; EGPR-NEXT:    movq %rdi, %r24
+; EGPR-NEXT:    movq (%rdi), %r13
+; EGPR-NEXT:    movq 8(%rdi), %r18
+; EGPR-NEXT:    movq 24(%rdi), %r29
+; EGPR-NEXT:    movq 16(%rdi), %r17
+; EGPR-NEXT:    movq 40(%rdi), %rdi
+; EGPR-NEXT:    movq 32(%r24), %r10
+; EGPR-NEXT:    movq 56(%r24), %r15
+; EGPR-NEXT:    movq 48(%r24), %r12
+; EGPR-NEXT:    movq %rsi, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
+; EGPR-NEXT:    movq 24(%rsi), %r23
+; EGPR-NEXT:    movq 16(%rsi), %r11
+; EGPR-NEXT:    movq (%rsi), %r27
+; EGPR-NEXT:    movq 8(%rsi), %r14
+; EGPR-NEXT:    movq %r12, %rax
+; EGPR-NEXT:    mulq %r27
+; EGPR-NEXT:    movq %rdx, %r8
+; EGPR-NEXT:    movq %rax, %r19
+; EGPR-NEXT:    movq %r15, %rax
+; EGPR-NEXT:    mulq %r27
+; EGPR-NEXT:    movq %rdx, %r9
+; EGPR-NEXT:    movq %rax, %r16
+; EGPR-NEXT:    addq %r8, %r16
+; EGPR-NEXT:    adcq $0, %r9
+; EGPR-NEXT:    movq %r12, %rax
+; EGPR-NEXT:    mulq %r14
+; EGPR-NEXT:    movq %rdx, %r20
+; EGPR-NEXT:    movq %rax, %r8
+; EGPR-NEXT:    addq %r16, %r8
+; EGPR-NEXT:    adcq %r9, %r20
+; EGPR-NEXT:    setb %al
+; EGPR-NEXT:    movzbl %al, %ecx
+; EGPR-NEXT:    movq %r15, %rax
+; EGPR-NEXT:    mulq %r14
+; EGPR-NEXT:    movq %rdx, %r9
+; EGPR-NEXT:    movq %rax, %r16
+; EGPR-NEXT:    addq %r20, %r16
+; EGPR-NEXT:    adcq %rcx, %r9
+; EGPR-NEXT:    movq %r10, %rax
+; EGPR-NEXT:    mulq %r27
+; EGPR-NEXT:    movq %rdx, %r20
+; EGPR-NEXT:    movq %rax, %r25
+; EGPR-NEXT:    movq %rdi, %rax
+; EGPR-NEXT:    mulq %r27
+; EGPR-NEXT:    movq %rdx, %r21
+; EGPR-NEXT:    movq %rax, %r22
+; EGPR-NEXT:    addq %r20, %r22
+; EGPR-NEXT:    adcq $0, %r21
+; EGPR-NEXT:    movq %r10, %rax
+; EGPR-NEXT:    mulq %r14
+; EGPR-NEXT:    movq %rdx, %r20
+; EGPR-NEXT:    movq %rax, %r28
+; EGPR-NEXT:    addq %r22, %r28
+; EGPR-NEXT:    adcq %r21, %r20
+; EGPR-NEXT:    setb %al
+; EGPR-NEXT:    movzbl %al, %ecx
+; EGPR-NEXT:    movq %rdi, %rax
+; EGPR-NEXT:    mulq %r14
+; EGPR-NEXT:    movq %rdx, %r21
+; EGPR-NEXT:    movq %rax, %r22
+; EGPR-NEXT:    addq %r20, %r22
+; EGPR-NEXT:    adcq %rcx, %r21
+; EGPR-NEXT:    addq %r19, %r22
+; EGPR-NEXT:    adcq %r8, %r21
+; EGPR-NEXT:    adcq $0, %r16
+; EGPR-NEXT:    adcq $0, %r9
+; EGPR-NEXT:    movq %r10, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
+; EGPR-NEXT:    movq %r10, %rax
+; EGPR-NEXT:    mulq %r11
+; EGPR-NEXT:    movq %rdx, %r8
+; EGPR-NEXT:    movq %rax, %r30
+; EGPR-NEXT:    movq %rdi, %rax
+; EGPR-NEXT:    movq %rdi, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
+; EGPR-NEXT:    mulq %r11
+; EGPR-NEXT:    movq %rdx, %r19
+; EGPR-NEXT:    movq %rax, %r20
+; EGPR-NEXT:    addq %r8, %r20
+; EGPR-NEXT:    adcq $0, %r19
+; EGPR-NEXT:    movq %r10, %rax
+; EGPR-NEXT:    mulq %r23
+; EGPR-NEXT:    movq %rdx, %rbx
+; EGPR-NEXT:    movq %rax, %r31
+; EGPR-NEXT:    addq %r20, %r31
+; EGPR-NEXT:    adcq %r19, %rbx
+; EGPR-NEXT:    setb %al
+; EGPR-NEXT:    movzbl %al, %ecx
+; EGPR-NEXT:    movq %rdi, %rax
+; EGPR-NEXT:    mulq %r23
+; EGPR-NEXT:    movq %rdx, %r26
+; EGPR-NEXT:    movq %rax, %r8
+; EGPR-NEXT:    addq %rbx, %r8
+; EGPR-NEXT:    adcq %rcx, %r26
+; EGPR-NEXT:    addq %r22, %r30
+; EGPR-NEXT:    adcq %r21, %r31
+; EGPR-NEXT:    adcq $0, %r8
+; EGPR-NEXT:    adcq $0, %r26
+; EGPR-NEXT:    addq %r16, %r8
+; EGPR-NEXT:    adcq %r9, %r26
+; EGPR-NEXT:    setb %al
+; EGPR-NEXT:    movzbl %al, %ecx
+; EGPR-NEXT:    movq %r12, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
+; EGPR-NEXT:    movq %r12, %rax
+; EGPR-NEXT:    mulq %r11
+; EGPR-NEXT:    movq %rdx, %r9
+; EGPR-NEXT:    movq %rax, %rsi
+; EGPR-NEXT:    movq %r15, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
+; EGPR-NEXT:    movq %r15, %rax
+; EGPR-NEXT:    mulq %r11
+; EGPR-NEXT:    movq %rdx, %r16
+; EGPR-NEXT:    movq %rax, %r21
+; EGPR-NEXT:    addq %r9, %r21
+; EGPR-NEXT:    adcq $0, %r16
+; EGPR-NEXT:    movq %r12, %rax
+; EGPR-NEXT:    mulq %r23
+; EGPR-NEXT:    movq %rdx, %r9
+; EGPR-NEXT:    movq %rax, %rdi
+; EGPR-NEXT:    addq %r21, %rdi
+; EGPR-NEXT:    adcq %r16, %r9
+; EGPR-NEXT:    setb %al
+; EGPR-NEXT:    movzbl %al, %r10d
+; EGPR-NEXT:    movq %r15, %rax
+; EGPR-NEXT:    mulq %r23
+; EGPR-NEXT:    movq %rdx, %r21
+; EGPR-NEXT:    movq %rax, %r22
+; EGPR-NEXT:    addq %r9, %r22
+; EGPR-NEXT:    adcq %r10, %r21
+; EGPR-NEXT:    addq %r8, %rsi
+; EGPR-NEXT:    movq %rsi, %r19
+; EGPR-NEXT:    adcq %r26, %rdi
+; EGPR-NEXT:    adcq %rcx, %r22
+; EGPR-NEXT:    adcq $0, %r21
+; EGPR-NEXT:    movq %r17, %rax
+; EGPR-NEXT:    mulq %r27
+; EGPR-NEXT:    movq %rdx, %r8
+; EGPR-NEXT:    movq %rax, %rbx
+; EGPR-NEXT:    movq %r29, %rax
+; EGPR-NEXT:    mulq %r27
+; EGPR-NEXT:    movq %rdx, %r9
+; EGPR-NEXT:    movq %rax, %r16
+; EGPR-NEXT:    addq %r8, %r16
+; EGPR-NEXT:    adcq $0, %r9
+; EGPR-NEXT:    movq %r17, %rax
+; EGPR-NEXT:    mulq %r14
+; EGPR-NEXT:    movq %rdx, %r8
+; EGPR-NEXT:    movq %rax, %r26
+; EGPR-NEXT:    addq %r16, %r26
+; EGPR-NEXT:    adcq %r9, %r8
+; EGPR-NEXT:    setb %al
+; EGPR-NEXT:    movzbl %al, %ecx
+; EGPR-NEXT:    movq %r29, %rax
+; EGPR-NEXT:    mulq %r14
+; EGPR-NEXT:    movq %r14, %rsi
+; EGPR-NEXT:    movq %rdx, %r9
+; EGPR-NEXT:    movq %rax, %r16
+; EGPR-NEXT:    addq %r8, %r16
+; EGPR-NEXT:    adcq %rcx, %r9
+; EGPR-NEXT:    movq %r13, %rax
+; EGPR-NEXT:    mulq %r27
+; EGPR-NEXT:    movq %rdx, %r8
+; EGPR-NEXT:    movq %rax, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
+; EGPR-NEXT:    movq %r18, %rax
+; EGPR-NEXT:    mulq %r27
+; EGPR-NEXT:    movq %rdx, %r14
+; EGPR-NEXT:    movq %rax, %r15
+; EGPR-NEXT:    addq %r8, %r15
+; EGPR-NEXT:    adcq $0, %r14
+; EGPR-NEXT:    movq %r13, %rax
+; EGPR-NEXT:    movq %rsi, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
+; EGPR-NEXT:    mulq %rsi
+; EGPR-NEXT:    movq %rdx, %r12
+; EGPR-NEXT:    addq %r15, %rax
+; EGPR-NEXT:    movq %rax, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
+; EGPR-NEXT:    adcq %r14, %r12
+; EGPR-NEXT:    setb %cl
+; EGPR-NEXT:    movq %r18, %rax
+; EGPR-NEXT:    mulq %rsi
+; EGPR-NEXT:    movq %rdx, %r8
+; EGPR-NEXT:    movq %rax, %r15
+; EGPR-NEXT:    addq %r12, %r15
+; EGPR-NEXT:    movzbl %cl, %eax
+; EGPR-NEXT:    adcq %rax, %r8
+; EGPR-NEXT:    addq %rbx, %r15
+; EGPR-NEXT:    adcq %r26, %r8
+; EGPR-NEXT:    adcq $0, %r16
+; EGPR-NEXT:    adcq $0, %r9
+; EGPR-NEXT:    movq %r13, %rax
+; EGPR-NEXT:    mulq %r11
+; EGPR-NEXT:    movq %rdx, %r26
+; EGPR-NEXT:    movq %rax, %rsi
+; EGPR-NEXT:    movq %r18, %rax
+; EGPR-NEXT:    mulq %r11
+; EGPR-NEXT:    movq %rdx, %rbx
+; EGPR-NEXT:    movq %rax, %r14
+; EGPR-NEXT:    addq %r26, %r14
+; EGPR-NEXT:    adcq $0, %rbx
+; EGPR-NEXT:    movq %r13, %rax
+; EGPR-NEXT:    mulq %r23
+; EGPR-NEXT:    movq %rdx, %r12
+; EGPR-NEXT:    addq %r14, %rax
+; EGPR-NEXT:    movq %rax, %r10
+; EGPR-NEXT:    adcq %rbx, %r12
+; EGPR-NEXT:    setb %cl
+; EGPR-NEXT:    movq %r18, %rax
+; EGPR-NEXT:    mulq %r23
+; EGPR-NEXT:    movq %rdx, %r14
+; EGPR-NEXT:    movq %rax, %r26
+; EGPR-NEXT:    addq %r12, %r26
+; EGPR-NEXT:    movzbl %cl, %eax
+; EGPR-NEXT:    adcq %rax, %r14
+; EGPR-NEXT:    addq %r15, %rsi
+; EGPR-NEXT:    movq %rsi, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
+; EGPR-NEXT:    adcq %r8, %r10
+; EGPR-NEXT:    movq %r10, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
+; EGPR-NEXT:    adcq $0, %r26
+; EGPR-NEXT:    adcq $0, %r14
+; EGPR-NEXT:    addq %r16, %r26
+; EGPR-NEXT:    adcq %r9, %r14
+; EGPR-NEXT:    setb %cl
+; EGPR-NEXT:    movq %r17, %rax
+; EGPR-NEXT:    movq %r11, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
+; EGPR-NEXT:    mulq %r11
+; EGPR-NEXT:    movq %rdx, %r8
+; EGPR-NEXT:    movq %rax, %rbx
+; EGPR-NEXT:    movq %r29, %rax
+; EGPR-NEXT:    mulq %r11
+; EGPR-NEXT:    movq %rdx, %r9
+; EGPR-NEXT:    movq %rax, %r16
+; EGPR-NEXT:    addq %r8, %r16
+; EGPR-NEXT:    adcq $0, %r9
+; EGPR-NEXT:    movq %r17, %rax
+; EGPR-NEXT:    mulq %r23
+; EGPR-NEXT:    movq %rdx, %r8
+; EGPR-NEXT:    movq %rax, %r15
+; EGPR-NEXT:    addq %r16, %r15
+; EGPR-NEXT:    adcq %r9, %r8
+; EGPR-NEXT:    setb %r9b
+; EGPR-NEXT:    movq %r29, %rax
+; EGPR-NEXT:    mulq %r23
+; EGPR-NEXT:    movq %rdx, %r12
+; EGPR-NEXT:    movq %rax, %rbp
+; EGPR-NEXT:    addq %r8, %rbp
+; EGPR-NEXT:    movzbl %r9b, %eax
+; EGPR-NEXT:    adcq %rax, %r12
+; EGPR-NEXT:    addq %r26, %rbx
+; EGPR-NEXT:    adcq %r14, %r15
+; EGPR-NEXT:    movzbl %cl, %eax
+; EGPR-NEXT:    adcq %rax, %rbp
+; EGPR-NEXT:    adcq $0, %r12
+; EGPR-NEXT:    addq %r25, %rbx
+; EGPR-NEXT:    movq {{[-0-9]+}}(%r{{[sb]}}p), %rsi # 8-byte Reload
+; EGPR-NEXT:    movq 32(%rsi), %r25
+; EGPR-NEXT:    adcq %r28, %r15
+; EGPR-NEXT:    adcq %r30, %rbp
+; EGPR-NEXT:    adcq %r31, %r12
+; EGPR-NEXT:    adcq $0, %r19
+; EGPR-NEXT:    movq %r19, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
+; EGPR-NEXT:    adcq $0, %rdi
+; EGPR-NEXT:    adcq $0, %r22
+; EGPR-NEXT:    adcq $0, %r21
+; EGPR-NEXT:    movq %r17, %rax
+; EGPR-NEXT:    mulq %r25
+; EGPR-NEXT:    movq %rdx, %r8
+; EGPR-NEXT:    movq %rax, %r28
+; EGPR-NEXT:    movq %r29, %rax
+; EGPR-NEXT:    mulq %r25
+; EGPR-NEXT:    movq %rdx, %r9
+; EGPR-NEXT:    movq %rax, %r16
+; EGPR-NEXT:    addq %r8, %r16
+; EGPR-NEXT:    adcq $0, %r9
+; EGPR-NEXT:    movq 40(%rsi), %rcx
+; EGPR-NEXT:    movq %r17, %rax
+; EGPR-NEXT:    mulq %rcx
+; EGPR-NEXT:    movq %rdx, %r8
+; EGPR-NEXT:    movq %rax, %r26
+; EGPR-NEXT:    addq %r16, %r26
+; EGPR-NEXT:    adcq %r9, %r8
+; EGPR-NEXT:    setb %r10b
+; EGPR-NEXT:    movq %r29, %rax
+; EGPR-NEXT:    mulq %rcx
+; EGPR-NEXT:    movq %rdx, %r9
+; EGPR-NEXT:    movq %rax, %r16
+; EGPR-NEXT:    addq %r8, %r16
+; EGPR-NEXT:    movzbl %r10b, %eax
+; EGPR-NEXT:    adcq %rax, %r9
+; EGPR-NEXT:    movq %r13, %rax
+; EGPR-NEXT:    mulq %r25
+; EGPR-NEXT:    movq %rdx, %r8
+; EGPR-NEXT:    movq %rax, %r19
+; EGPR-NEXT:    movq %r18, %rax
+; EGPR-NEXT:    mulq %r25
+; EGPR-NEXT:    movq %rdx, %r30
+; EGPR-NEXT:    movq %rax, %r31
+; EGPR-NEXT:    addq %r8, %r31
+; EGPR-NEXT:    adcq $0, %r30
+; EGPR-NEXT:    movq %r13, %rax
+; EGPR-NEXT:    mulq %rcx
+; EGPR-NEXT:    movq %rdx, %r8
+; EGPR-NEXT:    movq %rax, %r20
+; EGPR-NEXT:    addq %r31, %r20
+; EGPR-NEXT:    adcq %r30, %r8
+; EGPR-NEXT:    setb %r10b
+; EGPR-NEXT:    movq %r18, %rax
+; EGPR-NEXT:    mulq %rcx
+; EGPR-NEXT:    movq %rdx, %r30
+; EGPR-NEXT:    movq %rax, %r31
+; EGPR-NEXT:    addq %r8, %r31
+; EGPR-NEXT:    movzbl %r10b, %eax
+; EGPR-NEXT:    adcq %rax, %r30
+; EGPR-NEXT:    addq %r28, %r31
+; EGPR-NEXT:    adcq %r26, %r30
+; EGPR-NEXT:    adcq $0, %r16
+; EGPR-NEXT:    adcq $0, %r9
+; EGPR-NEXT:    movq 48(%rsi), %r28
+; EGPR-NEXT:    movq %r13, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
+; EGPR-NEXT:    movq %r13, %rax
+; EGPR-NEXT:    mulq %r28
+; EGPR-NEXT:    movq %rdx, %r8
+; EGPR-NEXT:    movq %rax, %r11
+; EGPR-NEXT:    movq %r18, %rax
+; EGPR-NEXT:    movq %r18, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
+; EGPR-NEXT:    mulq %r28
+; EGPR-NEXT:    movq %rdx, %r26
+; EGPR-NEXT:    movq %rax, %r14
+; EGPR-NEXT:    addq %r8, %r14
+; EGPR-NEXT:    adcq $0, %r26
+; EGPR-NEXT:    movq 56(%rsi), %r10
+; EGPR-NEXT:    movq %r13, %rax
+; EGPR-NEXT:    mulq %r10
+; EGPR-NEXT:    movq %rdx, %r13
+; EGPR-NEXT:    addq %r14, %rax
+; EGPR-NEXT:    movq %rax, %r14
+; EGPR-NEXT:    adcq %r26, %r13
+; EGPR-NEXT:    setb %sil
+; EGPR-NEXT:    movq %r18, %rax
+; EGPR-NEXT:    mulq %r10
+; EGPR-NEXT:    movq %rdx, %r26
+; EGPR-NEXT:    movq %rax, %r8
+; EGPR-NEXT:    addq %r13, %r8
+; EGPR-NEXT:    movzbl %sil, %eax
+; EGPR-NEXT:    adcq %rax, %r26
+; EGPR-NEXT:    addq %r31, %r11
+; EGPR-NEXT:    adcq %r30, %r14
+; EGPR-NEXT:    adcq $0, %r8
+; EGPR-NEXT:    adcq $0, %r26
+; EGPR-NEXT:    addq %r16, %r8
+; EGPR-NEXT:    adcq %r9, %r26
+; EGPR-NEXT:    setb %r18b
+; EGPR-NEXT:    movq %r17, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
+; EGPR-NEXT:    movq %r17, %rax
+; EGPR-NEXT:    mulq %r28
+; EGPR-NEXT:    movq %rdx, %r9
+; EGPR-NEXT:    movq %rax, %r30
+; EGPR-NEXT:    movq %r29, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
+; EGPR-NEXT:    movq %r29, %rax
+; EGPR-NEXT:    mulq %r28
+; EGPR-NEXT:    movq %rdx, %r16
+; EGPR-NEXT:    movq %rax, %r31
+; EGPR-NEXT:    addq %r9, %r31
+; EGPR-NEXT:    adcq $0, %r16
+; EGPR-NEXT:    movq %r17, %rax
+; EGPR-NEXT:    mulq %r10
+; EGPR-NEXT:    movq %rdx, %r9
+; EGPR-NEXT:    movq %rax, %r17
+; EGPR-NEXT:    addq %r31, %r17
+; EGPR-NEXT:    adcq %r16, %r9
+; EGPR-NEXT:    setb %r16b
+; EGPR-NEXT:    movq %r29, %rax
+; EGPR-NEXT:    mulq %r10
+; EGPR-NEXT:    movq %rdx, %r13
+; EGPR-NEXT:    movq %rax, %r31
+; EGPR-NEXT:    addq %r9, %r31
+; EGPR-NEXT:    movzbl %r16b, %eax
+; EGPR-NEXT:    adcq %rax, %r13
+; EGPR-NEXT:    addq %r8, %r30
+; EGPR-NEXT:    adcq %r26, %r17
+; EGPR-NEXT:    movzbl %r18b, %eax
+; EGPR-NEXT:    adcq %rax, %r31
+; EGPR-NEXT:    adcq $0, %r13
+; EGPR-NEXT:    addq %rbx, %r19
+; EGPR-NEXT:    movq %r19, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
+; EGPR-NEXT:    adcq %r15, %r20
+; EGPR-NEXT:    movq %r20, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
+; EGPR-NEXT:    adcq %rbp, %r11
+; EGPR-NEXT:    movq %r11, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
+; EGPR-NEXT:    adcq %r12, %r14
+; EGPR-NEXT:    movq %r14, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
+; EGPR-NEXT:    adcq $0, %r30
+; EGPR-NEXT:    adcq $0, %r17
+; EGPR-NEXT:    adcq $0, %r31
+; EGPR-NEXT:    adcq $0, %r13
+; EGPR-NEXT:    addq {{[-0-9]+}}(%r{{[sb]}}p), %r30 # 8-byte Folded Reload
+; EGPR-NEXT:    adcq %rdi, %r17
+; EGPR-NEXT:    adcq %r22, %r31
+; EGPR-NEXT:    adcq %r21, %r13
+; EGPR-NEXT:    setb %r15b
+; EGPR-NEXT:    movq {{[-0-9]+}}(%r{{[sb]}}p), %rsi # 8-byte Reload
+; EGPR-NEXT:    movq %rsi, %rax
+; EGPR-NEXT:    mulq %r25
+; EGPR-NEXT:    movq %rdx, %r8
+; EGPR-NEXT:    movq %rax, %r19
+; EGPR-NEXT:    movq {{[-0-9]+}}(%r{{[sb]}}p), %r21 # 8-byte Reload
+; EGPR-NEXT:    movq %r21, %rax
+; EGPR-NEXT:    mulq %r25
+; EGPR-NEXT:    movq %rdx, %r9
+; EGPR-NEXT:    movq %rax, %r16
+; EGPR-NEXT:    addq %r8, %r16
+; EGPR-NEXT:    adcq $0, %r9
+; EGPR-NEXT:    movq %rsi, %rax
+; EGPR-NEXT:    movq %rsi, %r29
+; EGPR-NEXT:    mulq %rcx
+; EGPR-NEXT:    movq %rdx, %r8
+; EGPR-NEXT:    movq %rax, %r20
+; EGPR-NEXT:    addq %r16, %r20
+; EGPR-NEXT:    adcq %r9, %r8
+; EGPR-NEXT:    setb %r18b
+; EGPR-NEXT:    movq %r21, %rax
+; EGPR-NEXT:    movq %r21, %r14
+; EGPR-NEXT:    mulq %rcx
+; EGPR-NEXT:    movq %rdx, %r9
+; EGPR-NEXT:    movq %rax, %r16
+; EGPR-NEXT:    addq %r8, %r16
+; EGPR-NEXT:    movzbl %r18b, %eax
+; EGPR-NEXT:    adcq %rax, %r9
+; EGPR-NEXT:    movq {{[-0-9]+}}(%r{{[sb]}}p), %rbx # 8-byte Reload
+; EGPR-NEXT:    movq %rbx, %rax
+; EGPR-NEXT:    mulq %r25
+; EGPR-NEXT:    movq %rdx, %r8
+; EGPR-NEXT:    movq %rax, %rdi
+; EGPR-NEXT:    movq {{[-0-9]+}}(%r{{[sb]}}p), %rsi # 8-byte Reload
+; EGPR-NEXT:    movq %rsi, %rax
+; EGPR-NEXT:    mulq %r25
+; EGPR-NEXT:    movq %rdx, %r21
+; EGPR-NEXT:    movq %rax, %r22
+; EGPR-NEXT:    addq %r8, %r22
+; EGPR-NEXT:    adcq $0, %r21
+; EGPR-NEXT:    movq %rbx, %rax
+; EGPR-NEXT:    mulq %rcx
+; EGPR-NEXT:    movq %rdx, %r8
+; EGPR-NEXT:    addq %r22, %rax
+; EGPR-NEXT:    movq %rax, %r11
+; EGPR-NEXT:    adcq %r21, %r8
+; EGPR-NEXT:    setb %r18b
+; EGPR-NEXT:    movq %rsi, %rax
+; EGPR-NEXT:    movq %rsi, %r21
+; EGPR-NEXT:    mulq %rcx
+; EGPR-NEXT:    movq %rdx, %r22
+; EGPR-NEXT:    movq %rax, %r26
+; EGPR-NEXT:    addq %r8, %r26
+; EGPR-NEXT:    movzbl %r18b, %eax
+; EGPR-NEXT:    adcq %rax, %r22
+; EGPR-NEXT:    addq %r19, %r26
+; EGPR-NEXT:    adcq %r20, %r22
+; EGPR-NEXT:    adcq $0, %r16
+; EGPR-NEXT:    adcq $0, %r9
+; EGPR-NEXT:    movq %rbx, %rax
+; EGPR-NEXT:    mulq %r28
+; EGPR-NEXT:    movq %rdx, %r8
+; EGPR-NEXT:    movq %rax, %rsi
+; EGPR-NEXT:    movq %r21, %rax
+; EGPR-NEXT:    mulq %r28
+; EGPR-NEXT:    movq %rdx, %r19
+; EGPR-NEXT:    movq %rax, %r20
+; EGPR-NEXT:    addq %r8, %r20
+; EGPR-NEXT:    adcq $0, %r19
+; EGPR-NEXT:    movq %rbx, %rax
+; EGPR-NEXT:    mulq %r10
+; EGPR-NEXT:    movq %rdx, %rbx
+; EGPR-NEXT:    addq %r20, %rax
+; EGPR-NEXT:    movq %rax, %r20
+; EGPR-NEXT:    adcq %r19, %rbx
+; EGPR-NEXT:    setb %r18b
+; EGPR-NEXT:    movq %r21, %rax
+; EGPR-NEXT:    mulq %r10
+; EGPR-NEXT:    movq %rdx, %r21
+; EGPR-NEXT:    movq %rax, %r8
+; EGPR-NEXT:    addq %rbx, %r8
+; EGPR-NEXT:    movzbl %r18b, %eax
+; EGPR-NEXT:    adcq %rax, %r21
+; EGPR-NEXT:    addq %r26, %rsi
+; EGPR-NEXT:    adcq %r22, %r20
+; EGPR-NEXT:    adcq $0, %r8
+; EGPR-NEXT:    adcq $0, %r21
+; EGPR-NEXT:    addq %r16, %r8
+; EGPR-NEXT:    adcq %r9, %r21
+; EGPR-NEXT:    setb %r18b
+; EGPR-NEXT:    movq %r29, %rax
+; EGPR-NEXT:    mulq %r28
+; EGPR-NEXT:    movq %rdx, %r9
+; EGPR-NEXT:    movq %rax, %r22
+; EGPR-NEXT:    movq %r14, %rax
+; EGPR-NEXT:    mulq %r28
+; EGPR-NEXT:    movq %rdx, %r16
+; EGPR-NEXT:    movq %rax, %r19
+; EGPR-NEXT:    addq %r9, %r19
+; EGPR-NEXT:    adcq $0, %r16
+; EGPR-NEXT:    movq %r29, %rax
+; EGPR-NEXT:    mulq %r10
+; EGPR-NEXT:    movq %rdx, %r9
+; EGPR-NEXT:    addq %r19, %rax
+; EGPR-NEXT:    movq %rax, %r19
+; EGPR-NEXT:    adcq %r16, %r9
+; EGPR-NEXT:    setb %r16b
+; EGPR-NEXT:    movq %r14, %rax
+; EGPR-NEXT:    mulq %r10
+; EGPR-NEXT:    movq %rdx, %rbp
+; EGPR-NEXT:    movq %rax, %r12
+; EGPR-NEXT:    addq %r9, %r12
+; EGPR-NEXT:    movzbl %r16b, %eax
+; EGPR-NEXT:    adcq %rax, %rbp
+; EGPR-NEXT:    addq %r8, %r22
+; EGPR-NEXT:    adcq %r21, %r19
+; EGPR-NEXT:    movzbl %r18b, %eax
+; EGPR-NEXT:    adcq %rax, %r12
+; EGPR-NEXT:    adcq $0, %rbp
+; EGPR-NEXT:    addq %r30, %rdi
+; EGPR-NEXT:    movq %rdi, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
+; EGPR-NEXT:    adcq %r17, %r11
+; EGPR-NEXT:    movq %r11, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
+; EGPR-NEXT:    adcq %r31, %rsi
+; EGPR-NEXT:    movq %rsi, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
+; EGPR-NEXT:    adcq %r13, %r20
+; EGPR-NEXT:    movq %r20, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
+; EGPR-NEXT:    movzbl %r15b, %eax
+; EGPR-NEXT:    adcq %rax, %r22
+; EGPR-NEXT:    movq %r22, (%rsp) # 8-byte Spill
+; EGPR-NEXT:    adcq $0, %r19
+; EGPR-NEXT:    movq %r19, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
+; EGPR-NEXT:    adcq $0, %r12
+; EGPR-NEXT:    adcq $0, %rbp
+; EGPR-NEXT:    movq 64(%r24), %r21
+; EGPR-NEXT:    movq {{[-0-9]+}}(%r{{[sb]}}p), %rdi # 8-byte Reload
+; EGPR-NEXT:    movq %rdi, %rax
+; EGPR-NEXT:    mulq %r21
+; EGPR-NEXT:    movq %rdx, %r8
+; EGPR-NEXT:    movq %rax, %r22
+; EGPR-NEXT:    movq %r23, %rax
+; EGPR-NEXT:    mulq %r21
+; EGPR-NEXT:    movq %rdx, %r9
+; EGPR-NEXT:    movq %rax, %r16
+; EGPR-NEXT:    addq %r8, %r16
+; EGPR-NEXT:    adcq $0, %r9
+; EGPR-NEXT:    movq 72(%r24), %r30
+; EGPR-NEXT:    movq %rdi, %rax
+; EGPR-NEXT:    mulq %r30
+; EGPR-NEXT:    movq %rdx, %r8
+; EGPR-NEXT:    movq %rax, %r26
+; EGPR-NEXT:    addq %r16, %r26
+; EGPR-NEXT:    adcq %r9, %r8
+; EGPR-NEXT:    setb %r18b
+; EGPR-NEXT:    movq %r23, %rax
+; EGPR-NEXT:    mulq %r30
+; EGPR-NEXT:    movq %rdx, %r9
+; EGPR-NEXT:    movq %rax, %r16
+; EGPR-NEXT:    addq %r8, %r16
+; EGPR-NEXT:    movzbl %r18b, %eax
+; EGPR-NEXT:    adcq %rax, %r9
+; EGPR-NEXT:    movq %r27, %rax
+; EGPR-NEXT:    mulq %r21
+; EGPR-NEXT:    movq %rdx, %r8
+; EGPR-NEXT:    movq %rax, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
+; EGPR-NEXT:    movq {{[-0-9]+}}(%r{{[sb]}}p), %r11 # 8-byte Reload
+; EGPR-NEXT:    movq %r11, %rax
+; EGPR-NEXT:    mulq %r21
+; EGPR-NEXT:    movq %rdx, %r31
+; EGPR-NEXT:    movq %rax, %rbx
+; EGPR-NEXT:    addq %r8, %rbx
+; EGPR-NEXT:    adcq $0, %r31
+; EGPR-NEXT:    movq %r27, %rax
+; EGPR-NEXT:    mulq %r30
+; EGPR-NEXT:    movq %rdx, %r8
+; EGPR-NEXT:    addq %rbx, %rax
+; EGPR-NEXT:    movq %rax, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
+; EGPR-NEXT:    adcq %r31, %r8
+; EGPR-NEXT:    setb %r18b
+; EGPR-NEXT:    movq %r11, %rax
+; EGPR-NEXT:    mulq %r30
+; EGPR-NEXT:    movq %rdx, %r31
+; EGPR-NEXT:    movq %rax, %rbx
+; EGPR-NEXT:    addq %r8, %rbx
+; EGPR-NEXT:    movzbl %r18b, %eax
+; EGPR-NEXT:    adcq %rax, %r31
+; EGPR-NEXT:    addq %r22, %rbx
+; EGPR-NEXT:    adcq %r26, %r31
+; EGPR-NEXT:    adcq $0, %r16
+; EGPR-NEXT:    adcq $0, %r9
+; EGPR-NEXT:    movq 80(%r24), %r13
+; EGPR-NEXT:    movq %r27, %rax
+; EGPR-NEXT:    mulq %r13
+; EGPR-NEXT:    movq %rdx, %r8
+; EGPR-NEXT:    movq %rax, %rsi
+; EGPR-NEXT:    movq %r11, %rax
+; EGPR-NEXT:    mulq %r13
+; EGPR-NEXT:    movq %rdx, %r26
+; EGPR-NEXT:    movq %rax, %r14
+; EGPR-NEXT:    addq %r8, %r14
+; EGPR-NEXT:    adcq $0, %r26
+; EGPR-NEXT:    movq 88(%r24), %r18
+; EGPR-NEXT:    movq %r27, %rax
+; EGPR-NEXT:    mulq %r18
+; EGPR-NEXT:    movq %rdx, %r15
+; EGPR-NEXT:    movq %rax, %r22
+; EGPR-NEXT:    addq %r14, %r22
+; EGPR-NEXT:    adcq %r26, %r15
+; EGPR-NEXT:    setb %r14b
+; EGPR-NEXT:    movq %r11, %rax
+; EGPR-NEXT:    mulq %r18
+; EGPR-NEXT:    movq %rdx, %r26
+; EGPR-NEXT:    movq %rax, %r8
+; EGPR-NEXT:    addq %r15, %r8
+; EGPR-NEXT:    movzbl %r14b, %eax
+; EGPR-NEXT:    adcq %rax, %r26
+; EGPR-NEXT:    addq %rbx, %rsi
+; EGPR-NEXT:    movq %rsi, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
+; EGPR-NEXT:    adcq %r31, %r22
+; EGPR-NEXT:    adcq $0, %r8
+; EGPR-NEXT:    adcq $0, %r26
+; EGPR-NEXT:    addq %r16, %r8
+; EGPR-NEXT:    adcq %r9, %r26
+; EGPR-NEXT:    setb %r31b
+; EGPR-NEXT:    movq %rdi, %rax
+; EGPR-NEXT:    mulq %r13
+; EGPR-NEXT:    movq %rdx, %r9
+; EGPR-NEXT:    movq %rax, %rsi
+; EGPR-NEXT:    movq %r23, %rax
+; EGPR-NEXT:    mulq %r13
+; EGPR-NEXT:    movq %rdx, %r16
+; EGPR-NEXT:    movq %rax, %r14
+; EGPR-NEXT:    addq %r9, %r14
+; EGPR-NEXT:    adcq $0, %r16
+; EGPR-NEXT:    movq %rdi, %rax
+; EGPR-NEXT:    mulq %r18
+; EGPR-NEXT:    movq %rdx, %r9
+; EGPR-NEXT:    movq %rax, %rbx
+; EGPR-NEXT:    addq %r14, %rbx
+; EGPR-NEXT:    adcq %r16, %r9
+; EGPR-NEXT:    setb %r16b
+; EGPR-NEXT:    movq %r23, %rax
+; EGPR-NEXT:    mulq %r18
+; EGPR-NEXT:    movq %rdx, %r14
+; EGPR-NEXT:    movq %rax, %r15
+; EGPR-NEXT:    addq %r9, %r15
+; EGPR-NEXT:    movzbl %r16b, %eax
+; EGPR-NEXT:    adcq %rax, %r14
+; EGPR-NEXT:    addq %r8, %rsi
+; EGPR-NEXT:    adcq %r26, %rbx
+; EGPR-NEXT:    movzbl %r31b, %eax
+; EGPR-NEXT:    adcq %rax, %r15
+; EGPR-NEXT:    adcq $0, %r14
+; EGPR-NEXT:    imulq %r25, %r18
+; EGPR-NEXT:    movq %r25, %rax
+; EGPR-NEXT:    mulq %r13
+; EGPR-NEXT:    movq %rax, %r8
+; EGPR-NEXT:    addq %r18, %rdx
+; EGPR-NEXT:    imulq %rcx, %r13
+; EGPR-NEXT:    addq %rdx, %r13
+; EGPR-NEXT:    movq %r28, %r9
+; EGPR-NEXT:    imulq %r30, %r9
+; EGPR-NEXT:    movq %r28, %rax
+; EGPR-NEXT:    mulq %r21
+; EGPR-NEXT:    movq %rax, %r26
+; EGPR-NEXT:    addq %r9, %rdx
+; EGPR-NEXT:    imulq %r21, %r10
+; EGPR-NEXT:    addq %rdx, %r10
+; EGPR-NEXT:    addq %r8, %r26
+; EGPR-NEXT:    adcq %r13, %r10
+; EGPR-NEXT:    movq %r21, %rax
+; EGPR-NEXT:    mulq %r25
+; EGPR-NEXT:    movq %rdx, %r8
+; EGPR-NEXT:    movq %rax, %r9
+; EGPR-NEXT:    movq %r30, %rax
+; EGPR-NEXT:    mulq %r25
+; EGPR-NEXT:    movq %rdx, %r25
+; EGPR-NEXT:    movq %rax, %r28
+; EGPR-NEXT:    addq %r8, %r28
+; EGPR-NEXT:    adcq $0, %r25
+; EGPR-NEXT:    movq %r21, %rax
+; EGPR-NEXT:    mulq %rcx
+; EGPR-NEXT:    movq %rdx, %r8
+; EGPR-NEXT:    movq %rax, %r16
+; EGPR-NEXT:    addq %r28, %r16
+; EGPR-NEXT:    adcq %r25, %r8
+; EGPR-NEXT:    setb %r18b
+; EGPR-NEXT:    movq %r30, %rax
+; EGPR-NEXT:    mulq %rcx
+; EGPR-NEXT:    movq %rdx, %r21
+; EGPR-NEXT:    movq %rax, %r28
+; EGPR-NEXT:    addq %r8, %r28
+; EGPR-NEXT:    movzbl %r18b, %eax
+; EGPR-NEXT:    adcq %rax, %r21
+; EGPR-NEXT:    addq %r26, %r28
+; EGPR-NEXT:    adcq %r10, %r21
+; EGPR-NEXT:    movq 112(%r24), %rcx
+; EGPR-NEXT:    movq %r27, %rax
+; EGPR-NEXT:    mulq %rcx
+; EGPR-NEXT:    movq %rax, %r8
+; EGPR-NEXT:    imulq %r11, %rcx
+; EGPR-NEXT:    addq %rdx, %rcx
+; EGPR-NEXT:    movq 120(%r24), %rax
+; EGPR-NEXT:    imulq %r27, %rax
+; EGPR-NEXT:    addq %rax, %rcx
+; EGPR-NEXT:    movq 96(%r24), %r25
+; EGPR-NEXT:    movq 104(%r24), %r26
+; EGPR-NEXT:    movq %rdi, %rax
+; EGPR-NEXT:    imulq %r26, %rdi
+; EGPR-NEXT:    mulq %r25
+; EGPR-NEXT:    movq %rax, %r29
+; EGPR-NEXT:    addq %rdi, %rdx
+; EGPR-NEXT:    imulq %r25, %r23
+; EGPR-NEXT:    addq %rdx, %r23
+; EGPR-NEXT:    addq %r8, %r29
+; EGPR-NEXT:    adcq %rcx, %r23
+; EGPR-NEXT:    movq %r25, %rax
+; EGPR-NEXT:    mulq %r27
+; EGPR-NEXT:    movq %rdx, %r8
+; EGPR-NEXT:    movq %rax, %r20
+; EGPR-NEXT:    movq %r26, %rax
+; EGPR-NEXT:    mulq %r27
+; EGPR-NEXT:    movq %rdx, %r27
+; EGPR-NEXT:    movq %rax, %r30
+; EGPR-NEXT:    addq %r8, %r30
+; EGPR-NEXT:    adcq $0, %r27
+; EGPR-NEXT:    movq %r25, %rax
+; EGPR-NEXT:    mulq %r11
+; EGPR-NEXT:    movq %rdx, %r8
+; EGPR-NEXT:    movq %rax, %r25
+; EGPR-NEXT:    addq %r30, %r25
+; EGPR-NEXT:    adcq %r27, %r8
+; EGPR-NEXT:    setb %cl
+; EGPR-NEXT:    movq %r26, %rax
+; EGPR-NEXT:    mulq %r11
+; EGPR-NEXT:    movq %rdx, %r24
+; EGPR-NEXT:    movq %rax, %r27
+; EGPR-NEXT:    addq %r8, %r27
+; EGPR-NEXT:    movzbl %cl, %eax
+; EGPR-NEXT:    adcq %rax, %r24
+; EGPR-NEXT:    addq %r29, %r27
+; EGPR-NEXT:    adcq %r23, %r24
+; EGPR-NEXT:    addq %r9, %r20
+; EGPR-NEXT:    adcq %r16, %r25
+; EGPR-NEXT:    adcq %r28, %r27
+; EGPR-NEXT:    adcq %r21, %r24
+; EGPR-NEXT:    addq %rsi, %r20
+; EGPR-NEXT:    adcq %rbx, %r25
+; EGPR-NEXT:    adcq %r15, %r27
+; EGPR-NEXT:    adcq %r14, %r24
+; EGPR-NEXT:    movq {{[-0-9]+}}(%r{{[sb]}}p), %r11 # 8-byte Reload
+; EGPR-NEXT:    movq 80(%r11), %rbx
+; EGPR-NEXT:    movq %rbx, %rax
+; EGPR-NEXT:    movq {{[-0-9]+}}(%r{{[sb]}}p), %r19 # 8-byte Reload
+; EGPR-NEXT:    mulq %r19
+; EGPR-NEXT:    movq %rax, %r21
+; EGPR-NEXT:    movq %rdx, %r8
+; EGPR-NEXT:    movq 88(%r11), %r28
+; EGPR-NEXT:    movq %r28, %rax
+; EGPR-NEXT:    mulq %r19
+; EGPR-NEXT:    movq %rdx, %r9
+; EGPR-NEXT:    movq %rax, %r16
+; EGPR-NEXT:    addq %r8, %r16
+; EGPR-NEXT:    adcq $0, %r9
+; EGPR-NEXT:    movq %rbx, %rax
+; EGPR-NEXT:    movq {{[-0-9]+}}(%r{{[sb]}}p), %r17 # 8-byte Reload
+; EGPR-NEXT:    mulq %r17
+; EGPR-NEXT:    movq %rdx, %r8
+; EGPR-NEXT:    movq %rax, %r26
+; EGPR-NEXT:    addq %r16, %r26
+; EGPR-NEXT:    adcq %r9, %r8
+; EGPR-NEXT:    setb %cl
+; EGPR-NEXT:    movq %r28, %rax
+; EGPR-NEXT:    mulq %r17
+; EGPR-NEXT:    movq %rdx, %r9
+; EGPR-NEXT:    movq %rax, %r16
+; EGPR-NEXT:    addq %r8, %r16
+; EGPR-NEXT:    movzbl %cl, %eax
+; EGPR-NEXT:    adcq %rax, %r9
+; EGPR-NEXT:    movq 64(%r11), %r15
+; EGPR-NEXT:    movq %r15, %rax
+; EGPR-NEXT:    mulq %r19
+; EGPR-NEXT:    movq %rax, %r23
+; EGPR-NEXT:    movq %rdx, %r8
+; EGPR-NEXT:    movq 72(%r11), %r14
+; EGPR-NEXT:    movq %r14, %rax
+; EGPR-NEXT:    mulq %r19
+; EGPR-NEXT:    movq %rdx, %r30
+; EGPR-NEXT:    movq %rax, %r31
+; EGPR-NEXT:    addq %r8, %r31
+; EGPR-NEXT:    adcq $0, %r30
+; EGPR-NEXT:    movq %r15, %rax
+; EGPR-NEXT:    mulq %r17
+; EGPR-NEXT:    movq %rdx, %r8
+; EGPR-NEXT:    movq %rax, %r29
+; EGPR-NEXT:    addq %r31, %r29
+; EGPR-NEXT:    adcq %r30, %r8
+; EGPR-NEXT:    setb %cl
+; EGPR-NEXT:    movq %r14, %rax
+; EGPR-NEXT:    mulq %r17
+; EGPR-NEXT:    movq %rdx, %r31
+; EGPR-NEXT:    movq %rax, %r13
+; EGPR-NEXT:    addq %r8, %r13
+; EGPR-NEXT:    movzbl %cl, %eax
+; EGPR-NEXT:    adcq %rax, %r31
+; EGPR-NEXT:    addq %r21, %r13
+; EGPR-NEXT:    adcq %r26, %r31
+; EGPR-NEXT:    adcq $0, %r16
+; EGPR-NEXT:    adcq $0, %r9
+; EGPR-NEXT:    movq %r15, %rax
+; EGPR-NEXT:    movq {{[-0-9]+}}(%r{{[sb]}}p), %rdi # 8-byte Reload
+; EGPR-NEXT:    mulq %rdi
+; EGPR-NEXT:    movq %rdx, %r8
+; EGPR-NEXT:    movq %rax, %r30
+; EGPR-NEXT:    movq %r14, %rax
+; EGPR-NEXT:    mulq %rdi
+; EGPR-NEXT:    movq %rdx, %r26
+; EGPR-NEXT:    movq %rax, %rcx
+; EGPR-NEXT:    addq %r8, %rcx
+; EGPR-NEXT:    adcq $0, %r26
+; EGPR-NEXT:    movq %r15, %rax
+; EGPR-NEXT:    movq {{[-0-9]+}}(%r{{[sb]}}p), %r18 # 8-byte Reload
+; EGPR-NEXT:    mulq %r18
+; EGPR-NEXT:    movq %rdx, %r10
+; EGPR-NEXT:    movq %rax, %r21
+; EGPR-NEXT:    addq %rcx, %r21
+; EGPR-NEXT:    adcq %r26, %r10
+; EGPR-NEXT:    setb %cl
+; EGPR-NEXT:    movq %r14, %rax
+; EGPR-NEXT:    mulq %r18
+; EGPR-NEXT:    movq %rdx, %r26
+; EGPR-NEXT:    movq %rax, %r8
+; EGPR-NEXT:    addq %r10, %r8
+; EGPR-NEXT:    movzbl %cl, %eax
+; EGPR-NEXT:    adcq %rax, %r26
+; EGPR-NEXT:    addq %r13, %r30
+; EGPR-NEXT:    adcq %r31, %r21
+; EGPR-NEXT:    adcq $0, %r8
+; EGPR-NEXT:    adcq $0, %r26
+; EGPR-NEXT:    addq %r16, %r8
+; EGPR-NEXT:    adcq %r9, %r26
+; EGPR-NEXT:    setb %sil
+; EGPR-NEXT:    movq %rbx, %rax
+; EGPR-NEXT:    mulq %rdi
+; EGPR-NEXT:    movq %rdx, %rcx
+; EGPR-NEXT:    movq %rax, %r31
+; EGPR-NEXT:    movq %r28, %rax
+; EGPR-NEXT:    mulq %rdi
+; EGPR-NEXT:    movq %rdx, %r9
+; EGPR-NEXT:    movq %rax, %r10
+; EGPR-NEXT:    addq %rcx, %r10
+; EGPR-NEXT:    adcq $0, %r9
+; EGPR-NEXT:    movq %rbx, %rax
+; EGPR-NEXT:    mulq %r18
+; EGPR-NEXT:    movq %rdx, %rcx
+; EGPR-NEXT:    movq %rax, %r13
+; EGPR-NEXT:    addq %r10, %r13
+; EGPR-NEXT:    adcq %r9, %rcx
+; EGPR-NEXT:    setb %r10b
+; EGPR-NEXT:    movq %r28, %rax
+; EGPR-NEXT:    mulq %r18
+; EGPR-NEXT:    movq %rdx, %r16
+; EGPR-NEXT:    movq %rax, %r9
+; EGPR-NEXT:    addq %rcx, %r9
+; EGPR-NEXT:    movzbl %r10b, %eax
+; EGPR-NEXT:    adcq %rax, %r16
+; EGPR-NEXT:    addq %r8, %r31
+; EGPR-NEXT:    adcq %r26, %r13
+; EGPR-NEXT:    movzbl %sil, %eax
+; EGPR-NEXT:    adcq %rax, %r9
+; EGPR-NEXT:    adcq $0, %r16
+; EGPR-NEXT:    movq 96(%r11), %rcx
+; EGPR-NEXT:    imulq %rcx, %r18
+; EGPR-NEXT:    movq %rcx, %rax
+; EGPR-NEXT:    mulq %rdi
+; EGPR-NEXT:    movq %rax, %r8
+; EGPR-NEXT:    addq %r18, %rdx
+; EGPR-NEXT:    movq 104(%r11), %r26
+; EGPR-NEXT:    movq %rdi, %rax
+; EGPR-NEXT:    imulq %r26, %rax
+; EGPR-NEXT:    addq %rdx, %rax
+; EGPR-NEXT:    movq %rax, %r10
+; EGPR-NEXT:    movq 112(%r11), %rax
+; EGPR-NEXT:    movq %rax, %rsi
+; EGPR-NEXT:    imulq %r17, %rsi
+; EGPR-NEXT:    mulq %r19
+; EGPR-NEXT:    movq %rax, %rdi
+; EGPR-NEXT:    addq %rsi, %rdx
+; EGPR-NEXT:    movq 120(%r11), %r18
+; EGPR-NEXT:    imulq %r19, %r18
+; EGPR-NEXT:    addq %rdx, %r18
+; EGPR-NEXT:    addq %r8, %rdi
+; EGPR-NEXT:    adcq %r10, %r18
+; EGPR-NEXT:    movq %r19, %rax
+; EGPR-NEXT:    mulq %rcx
+; EGPR-NEXT:    movq %rdx, %r8
+; EGPR-NEXT:    movq %rax, %rsi
+; EGPR-NEXT:    movq %r17, %rax
+; EGPR-NEXT:    mulq %rcx
+; EGPR-NEXT:    movq %rdx, %rcx
+; EGPR-NEXT:    movq %rax, %r10
+; EGPR-NEXT:    addq %r8, %r10
+; EGPR-NEXT:    adcq $0, %rcx
+; EGPR-NEXT:    movq %r19, %rax
+; EGPR-NEXT:    mulq %r26
+; EGPR-NEXT:    movq %rdx, %r8
+; EGPR-NEXT:    movq %rax, %r11
+; EGPR-NEXT:    addq %r10, %r11
+; EGPR-NEXT:    adcq %rcx, %r8
+; EGPR-NEXT:    setb %cl
+; EGPR-NEXT:    movq %r17, %rax
+; EGPR-NEXT:    mulq %r26
+; EGPR-NEXT:    movq %rdx, %r10
+; EGPR-NEXT:    movq %rax, %r17
+; EGPR-NEXT:    addq %r8, %r17
+; EGPR-NEXT:    movzbl %cl, %eax
+; EGPR-NEXT:    adcq %rax, %r10
+; EGPR-NEXT:    addq %rdi, %r17
+; EGPR-NEXT:    adcq %r18, %r10
+; EGPR-NEXT:    movq {{[-0-9]+}}(%r{{[sb]}}p), %rdi # 8-byte Reload
+; EGPR-NEXT:    imulq %r15, %rdi
+; EGPR-NEXT:    movq %r15, %rax
+; EGPR-NEXT:    movq {{[-0-9]+}}(%r{{[sb]}}p), %r8 # 8-byte Reload
+; EGPR-NEXT:    mulq %r8
+; EGPR-NEXT:    movq %rax, %rcx
+; EGPR-NEXT:    addq %rdi, %rdx
+; EGPR-NEXT:    movq %r8, %rax
+; EGPR-NEXT:    imulq %r14, %rax
+; EGPR-NEXT:    addq %rdx, %rax
+; EGPR-NEXT:    movq %rax, %r18
+; EGPR-NEXT:    movq %rbx, %rdi
+; EGPR-NEXT:    movq {{[-0-9]+}}(%r{{[sb]}}p), %r19 # 8-byte Reload
+; EGPR-NEXT:    imulq %r19, %rdi
+; EGPR-NEXT:    movq %rbx, %rax
+; EGPR-NEXT:    movq {{[-0-9]+}}(%r{{[sb]}}p), %r8 # 8-byte Reload
+; EGPR-NEXT:    mulq %r8
+; EGPR-NEXT:    movq %rax, %r26
+; EGPR-NEXT:    addq %rdi, %rdx
+; EGPR-NEXT:    imulq %r8, %r28
+; EGPR-NEXT:    addq %rdx, %r28
+; EGPR-NEXT:    addq %rcx, %r26
+; EGPR-NEXT:    adcq %r18, %r28
+; EGPR-NEXT:    movq %r8, %rax
+; EGPR-NEXT:    movq %r8, %rdi
+; EGPR-NEXT:    mulq %r15
+; EGPR-NEXT:    movq %rdx, %rcx
+; EGPR-NEXT:    movq %rax, %r8
+; EGPR-NEXT:    movq %r19, %rax
+; EGPR-NEXT:    mulq %r15
+; EGPR-NEXT:    movq %rdx, %rbx
+; EGPR-NEXT:    movq %rax, %r15
+; EGPR-NEXT:    addq %rcx, %r15
+; EGPR-NEXT:    adcq $0, %rbx
+; EGPR-NEXT:    movq %rdi, %rax
+; EGPR-NEXT:    mulq %r14
+; EGPR-NEXT:    movq %rdx, %rcx
+; EGPR-NEXT:    movq %rax, %r18
+; EGPR-NEXT:    addq %r15, %r18
+; EGPR-NEXT:    adcq %rbx, %rcx
+; EGPR-NEXT:    setb %dil
+; EGPR-NEXT:    movq %r19, %rax
+; EGPR-NEXT:    mulq %r14
+; EGPR-NEXT:    addq %rcx, %rax
+; EGPR-NEXT:    movzbl %dil, %ecx
+; EGPR-NEXT:    adcq %rcx, %rdx
+; EGPR-NEXT:    addq %r26, %rax
+; EGPR-NEXT:    adcq %r28, %rdx
+; EGPR-NEXT:    addq %rsi, %r8
+; EGPR-NEXT:    adcq %r11, %r18
+; EGPR-NEXT:    adcq %r17, %rax
+; EGPR-NEXT:    adcq %r10, %rdx
+; EGPR-NEXT:    addq %r31, %r8
+; EGPR-NEXT:    adcq %r13, %r18
+; EGPR-NEXT:    adcq %r9, %rax
+; EGPR-NEXT:    adcq %r16, %rdx
+; EGPR-NEXT:    addq {{[-0-9]+}}(%r{{[sb]}}p), %r23 # 8-byte Folded Reload
+; EGPR-NEXT:    adcq {{[-0-9]+}}(%r{{[sb]}}p), %r29 # 8-byte Folded Reload
+; EGPR-NEXT:    adcq {{[-0-9]+}}(%r{{[sb]}}p), %r30 # 8-byte Folded Reload
+; EGPR-NEXT:    adcq %r22, %r21
+; EGPR-NEXT:    adcq %r20, %r8
+; EGPR-NEXT:    adcq %r25, %r18
+; EGPR-NEXT:    adcq %r27, %rax
+; EGPR-NEXT:    adcq %r24, %rdx
+; EGPR-NEXT:    addq {{[-0-9]+}}(%r{{[sb]}}p), %r23 # 8-byte Folded Reload
+; EGPR-NEXT:    adcq {{[-0-9]+}}(%r{{[sb]}}p), %r29 # 8-byte Folded Reload
+; EGPR-NEXT:    adcq {{[-0-9]+}}(%r{{[sb]}}p), %r30 # 8-byte Folded Reload
+; EGPR-NEXT:    adcq {{[-0-9]+}}(%r{{[sb]}}p), %r21 # 8-byte Folded Reload
+; EGPR-NEXT:    adcq (%rsp), %r8 # 8-byte Folded Reload
+; EGPR-NEXT:    adcq {{[-0-9]+}}(%r{{[sb]}}p), %r18 # 8-byte Folded Reload
+; EGPR-NEXT:    adcq %r12, %rax
+; EGPR-NEXT:    adcq %rbp, %rdx
+; EGPR-NEXT:    movq {{[-0-9]+}}(%r{{[sb]}}p), %rcx # 8-byte Reload
+; EGPR-NEXT:    movq {{[-0-9]+}}(%r{{[sb]}}p), %rsi # 8-byte Reload
+; EGPR-NEXT:    movq %rsi, (%rcx)
+; EGPR-NEXT:    movq {{[-0-9]+}}(%r{{[sb]}}p), %rsi # 8-byte Reload
+; EGPR-NEXT:    movq %rsi, 8(%rcx)
+; EGPR-NEXT:    movq {{[-0-9]+}}(%r{{[sb]}}p), %rsi # 8-byte Reload
+; EGPR-NEXT:    movq %rsi, 16(%rcx)
+; EGPR-NEXT:    movq {{[-0-9]+}}(%r{{[sb]}}p), %rsi # 8-byte Reload
+; EGPR-NEXT:    movq %rsi, 24(%rcx)
+; EGPR-NEXT:    movq {{[-0-9]+}}(%r{{[sb]}}p), %rsi # 8-byte Reload
+; EGPR-NEXT:    movq %rsi, 32(%rcx)
+; EGPR-NEXT:    movq {{[-0-9]+}}(%r{{[sb]}}p), %rsi # 8-byte Reload
+; EGPR-NEXT:    movq %rsi, 40(%rcx)
+; EGPR-NEXT:    movq {{[-0-9]+}}(%r{{[sb]}}p), %rsi # 8-byte Reload
+; EGPR-NEXT:    movq %rsi, 48(%rcx)
+; EGPR-NEXT:    movq {{[-0-9]+}}(%r{{[sb]}}p), %rsi # 8-byte Reload
+; EGPR-NEXT:    movq %rsi, 56(%rcx)
+; EGPR-NEXT:    movq %r23, 64(%rcx)
+; EGPR-NEXT:    movq %r29, 72(%rcx)
+; EGPR-NEXT:    movq %r30, 80(%rcx)
+; EGPR-NEXT:    movq %r21, 88(%rcx)
+; EGPR-NEXT:    movq %r8, 96(%rcx)
+; EGPR-NEXT:    movq %r18, 104(%rcx)
+; EGPR-NEXT:    movq %rax, 112(%rcx)
+; EGPR-NEXT:    movq %rdx, 120(%rcx)
+; EGPR-NEXT:    addq $104, %rsp
+; EGPR-NEXT:    popq %rbx
+; EGPR-NEXT:    popq %r12
+; EGPR-NEXT:    popq %r13
+; EGPR-NEXT:    popq %r14
+; EGPR-NEXT:    popq %r15
+; EGPR-NEXT:    popq %rbp
+; EGPR-NEXT:    retq
+;
+; EGPR-NDD-LABEL: test_1024:
+; EGPR-NDD:       # %bb.0:
+; EGPR-NDD-NEXT:    pushq %rbp
+; EGPR-NDD-NEXT:    pushq %r15
+; EGPR-NDD-NEXT:    pushq %r14
+; EGPR-NDD-NEXT:    pushq %r13
+; EGPR-NDD-NEXT:    pushq %r12
+; EGPR-NDD-NEXT:    pushq %rbx
+; EGPR-NDD-NEXT:    subq $104, %rsp
+; EGPR-NDD-NEXT:    movq %rdx, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
+; EGPR-NDD-NEXT:    movq %rdi, %r20
+; EGPR-NDD-NEXT:    movq (%rdi), %r16
+; EGPR-NDD-NEXT:    movq 8(%rdi), %r14
+; EGPR-NDD-NEXT:    movq 24(%rdi), %r9
+; EGPR-NDD-NEXT:    movq 16(%rdi), %r10
+; EGPR-NDD-NEXT:    movq 40(%rdi), %rdi
+; EGPR-NDD-NEXT:    movq 32(%r20), %r11
+; EGPR-NDD-NEXT:    movq 56(%r20), %r17
+; EGPR-NDD-NEXT:    movq 48(%r20), %r15
+; EGPR-NDD-NEXT:    movq 24(%rsi), %r18
+; EGPR-NDD-NEXT:    movq 16(%rsi), %r24
+; EGPR-NDD-NEXT:    movq (%rsi), %r22
+; EGPR-NDD-NEXT:    movq 8(%rsi), %r21
+; EGPR-NDD-NEXT:    movq %rsi, %r23
+; EGPR-NDD-NEXT:    movq %r15, %rax
+; EGPR-NDD-NEXT:    mulq %r22
+; EGPR-NDD-NEXT:    movq %rdx, %r25
+; EGPR-NDD-NEXT:    movq %rax, %r19
+; EGPR-NDD-NEXT:    movq %r17, %rax
+; EGPR-NDD-NEXT:    mulq %r22
+; EGPR-NDD-NEXT:    addq %r25, %rax, %rcx
+; EGPR-NDD-NEXT:    adcq $0, %rdx, %rsi
+; EGPR-NDD-NEXT:    movq %r15, %rax
+; EGPR-NDD-NEXT:    mulq %r21
+; EGPR-NDD-NEXT:    addq %rcx, %rax, %r8
+; EGPR-NDD-NEXT:    adcq %rdx, %rsi, %rcx
+; EGPR-NDD-NEXT:    setb %al
+; EGPR-NDD-NEXT:    movzbl %al, %esi
+; EGPR-NDD-NEXT:    movq %r17, %rax
+; EGPR-NDD-NEXT:    mulq %r21
+; EGPR-NDD-NEXT:    addq %rcx, %rax, %r27
+; EGPR-NDD-NEXT:    adcq %rdx, %rsi
+; EGPR-NDD-NEXT:    movq %r11, %rax
+; EGPR-NDD-NEXT:    mulq %r22
+; EGPR-NDD-NEXT:    movq %rdx, %r26
+; EGPR-NDD-NEXT:    movq %rax, %r25
+; EGPR-NDD-NEXT:    movq %rdi, %rax
+; EGPR-NDD-NEXT:    mulq %r22
+; EGPR-NDD-NEXT:    addq %r26, %rax, %rcx
+; EGPR-NDD-NEXT:    adcq $0, %rdx, %r26
+; EGPR-NDD-NEXT:    movq %r11, %rax
+; EGPR-NDD-NEXT:    mulq %r21
+; EGPR-NDD-NEXT:    addq %rax, %rcx
+; EGPR-NDD-NEXT:    adcq %rdx, %r26
+; EGPR-NDD-NEXT:    setb %al
+; EGPR-NDD-NEXT:    movzbl %al, %r28d
+; EGPR-NDD-NEXT:    movq %rdi, %rax
+; EGPR-NDD-NEXT:    mulq %r21
+; EGPR-NDD-NEXT:    addq %r26, %rax
+; EGPR-NDD-NEXT:    adcq %r28, %rdx
+; EGPR-NDD-NEXT:    addq %rax, %r19, %r28
+; EGPR-NDD-NEXT:    adcq %rdx, %r8
+; EGPR-NDD-NEXT:    adcq $0, %r27
+; EGPR-NDD-NEXT:    adcq $0, %rsi, %r29
+; EGPR-NDD-NEXT:    movq %r11, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
+; EGPR-NDD-NEXT:    movq %r11, %rax
+; EGPR-NDD-NEXT:    mulq %r24
+; EGPR-NDD-NEXT:    movq %rdx, %r19
+; EGPR-NDD-NEXT:    movq %rax, %r26
+; EGPR-NDD-NEXT:    movq %rdi, %rax
+; EGPR-NDD-NEXT:    movq %rdi, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
+; EGPR-NDD-NEXT:    mulq %r24
+; EGPR-NDD-NEXT:    addq %r19, %rax, %rsi
+; EGPR-NDD-NEXT:    adcq $0, %rdx, %r19
+; EGPR-NDD-NEXT:    movq %r11, %rax
+; EGPR-NDD-NEXT:    mulq %r18
+; EGPR-NDD-NEXT:    addq %rsi, %rax, %r30
+; EGPR-NDD-NEXT:    adcq %rdx, %r19, %rsi
+; EGPR-NDD-NEXT:    setb %al
+; EGPR-NDD-NEXT:    movzbl %al, %r19d
+; EGPR-NDD-NEXT:    movq %rdi, %rax
+; EGPR-NDD-NEXT:    mulq %r18
+; EGPR-NDD-NEXT:    addq %rsi, %rax
+; EGPR-NDD-NEXT:    adcq %r19, %rdx
+; EGPR-NDD-NEXT:    addq %r28, %r26, %rsi
+; EGPR-NDD-NEXT:    adcq %r8, %r30, %r28
+; EGPR-NDD-NEXT:    adcq $0, %rax
+; EGPR-NDD-NEXT:    adcq $0, %rdx
+; EGPR-NDD-NEXT:    addq %rax, %r27, %r8
+; EGPR-NDD-NEXT:    adcq %rdx, %r29, %r27
+; EGPR-NDD-NEXT:    setb %al
+; EGPR-NDD-NEXT:    movzbl %al, %r31d
+; EGPR-NDD-NEXT:    movq %r15, %rax
+; EGPR-NDD-NEXT:    mulq %r24
+; EGPR-NDD-NEXT:    movq %rdx, %r19
+; EGPR-NDD-NEXT:    movq %rax, %r26
+; EGPR-NDD-NEXT:    movq %r17, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
+; EGPR-NDD-NEXT:    movq %r17, %rax
+; EGPR-NDD-NEXT:    mulq %r24
+; EGPR-NDD-NEXT:    addq %rax, %r19
+; EGPR-NDD-NEXT:    adcq $0, %rdx, %r29
+; EGPR-NDD-NEXT:    movq %r15, %rax
+; EGPR-NDD-NEXT:    mulq %r18
+; EGPR-NDD-NEXT:    addq %rax, %r19
+; EGPR-NDD-NEXT:    adcq %rdx, %r29
+; EGPR-NDD-NEXT:    setb %al
+; EGPR-NDD-NEXT:    movzbl %al, %r30d
+; EGPR-NDD-NEXT:    movq %r17, %rax
+; EGPR-NDD-NEXT:    mulq %r18
+; EGPR-NDD-NEXT:    addq %r29, %rax
+; EGPR-NDD-NEXT:    adcq %r30, %rdx
+; EGPR-NDD-NEXT:    addq %r8, %r26, %r29
+; EGPR-NDD-NEXT:    adcq %r27, %r19, %r30
+; EGPR-NDD-NEXT:    adcq %rax, %r31
+; EGPR-NDD-NEXT:    adcq $0, %rdx, %rdi
+; EGPR-NDD-NEXT:    movq %r10, %rax
+; EGPR-NDD-NEXT:    mulq %r22
+; EGPR-NDD-NEXT:    movq %rdx, %r19
+; EGPR-NDD-NEXT:    movq %rax, %r26
+; EGPR-NDD-NEXT:    movq %r9, %rax
+; EGPR-NDD-NEXT:    mulq %r22
+; EGPR-NDD-NEXT:    addq %r19, %rax, %r8
+; EGPR-NDD-NEXT:    adcq $0, %rdx, %r19
+; EGPR-NDD-NEXT:    movq %r10, %rax
+; EGPR-NDD-NEXT:    mulq %r21
+; EGPR-NDD-NEXT:    addq %rax, %r8
+; EGPR-NDD-NEXT:    adcq %rdx, %r19
+; EGPR-NDD-NEXT:    setb %al
+; EGPR-NDD-NEXT:    movzbl %al, %r27d
+; EGPR-NDD-NEXT:    movq %r9, %rax
+; EGPR-NDD-NEXT:    mulq %r21
+; EGPR-NDD-NEXT:    addq %rax, %r19
+; EGPR-NDD-NEXT:    adcq %r27, %rdx, %rbx
+; EGPR-NDD-NEXT:    movq %r16, %rax
+; EGPR-NDD-NEXT:    mulq %r22
+; EGPR-NDD-NEXT:    movq %rdx, %r27
+; EGPR-NDD-NEXT:    movq %rax, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
+; EGPR-NDD-NEXT:    movq %r14, %rax
+; EGPR-NDD-NEXT:    mulq %r22
+; EGPR-NDD-NEXT:    addq %rax, %r27
+; EGPR-NDD-NEXT:    adcq $0, %rdx, %r12
+; EGPR-NDD-NEXT:    movq %r16, %rax
+; EGPR-NDD-NEXT:    mulq %r21
+; EGPR-NDD-NEXT:    addq %r27, %rax
+; EGPR-NDD-NEXT:    movq %rax, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
+; EGPR-NDD-NEXT:    adcq %rdx, %r12, %r27
+; EGPR-NDD-NEXT:    setb %bpl
+; EGPR-NDD-NEXT:    movq %r14, %rax
+; EGPR-NDD-NEXT:    mulq %r21
+; EGPR-NDD-NEXT:    addq %r27, %rax
+; EGPR-NDD-NEXT:    movzbl %bpl, %r27d
+; EGPR-NDD-NEXT:    adcq %r27, %rdx
+; EGPR-NDD-NEXT:    addq %rax, %r26, %r12
+; EGPR-NDD-NEXT:    adcq %rdx, %r8
+; EGPR-NDD-NEXT:    adcq $0, %r19
+; EGPR-NDD-NEXT:    adcq $0, %rbx
+; EGPR-NDD-NEXT:    movq %r16, %rax
+; EGPR-NDD-NEXT:    mulq %r24
+; EGPR-NDD-NEXT:    movq %rdx, %r26
+; EGPR-NDD-NEXT:    movq %rax, %r27
+; EGPR-NDD-NEXT:    movq %r14, %rax
+; EGPR-NDD-NEXT:    mulq %r24
+; EGPR-NDD-NEXT:    addq %rax, %r26
+; EGPR-NDD-NEXT:    adcq $0, %rdx, %r13
+; EGPR-NDD-NEXT:    movq %r16, %rax
+; EGPR-NDD-NEXT:    mulq %r18
+; EGPR-NDD-NEXT:    addq %rax, %r26
+; EGPR-NDD-NEXT:    adcq %rdx, %r13
+; EGPR-NDD-NEXT:    setb %bpl
+; EGPR-NDD-NEXT:    movq %r14, %rax
+; EGPR-NDD-NEXT:    mulq %r18
+; EGPR-NDD-NEXT:    addq %r13, %rax
+; EGPR-NDD-NEXT:    movzbl %bpl, %r13d
+; EGPR-NDD-NEXT:    adcq %r13, %rdx
+; EGPR-NDD-NEXT:    addq %r12, %r27, %r11
+; EGPR-NDD-NEXT:    movq %r11, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
+; EGPR-NDD-NEXT:    adcq %r26, %r8
+; EGPR-NDD-NEXT:    movq %r8, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
+; EGPR-NDD-NEXT:    adcq $0, %rax
+; EGPR-NDD-NEXT:    adcq $0, %rdx
+; EGPR-NDD-NEXT:    addq %rax, %r19, %r8
+; EGPR-NDD-NEXT:    adcq %rdx, %rbx, %r19
+; EGPR-NDD-NEXT:    setb %bl
+; EGPR-NDD-NEXT:    movq %r10, %r17
+; EGPR-NDD-NEXT:    movq %r10, %rax
+; EGPR-NDD-NEXT:    mulq %r24
+; EGPR-NDD-NEXT:    movq %rdx, %r26
+; EGPR-NDD-NEXT:    movq %rax, %r27
+; EGPR-NDD-NEXT:    movq %r9, %rax
+; EGPR-NDD-NEXT:    mulq %r24
+; EGPR-NDD-NEXT:    addq %rax, %r26
+; EGPR-NDD-NEXT:    adcq $0, %rdx, %r12
+; EGPR-NDD-NEXT:    movq %r10, %rax
+; EGPR-NDD-NEXT:    movq %r18, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
+; EGPR-NDD-NEXT:    mulq %r18
+; EGPR-NDD-NEXT:    addq %rax, %r26
+; EGPR-NDD-NEXT:    adcq %rdx, %r12
+; EGPR-NDD-NEXT:    setb %bpl
+; EGPR-NDD-NEXT:    movq %r9, %rax
+; EGPR-NDD-NEXT:    mulq %r18
+; EGPR-NDD-NEXT:    addq %r12, %rax
+; EGPR-NDD-NEXT:    movzbl %bpl, %r12d
+; EGPR-NDD-NEXT:    adcq %r12, %rdx
+; EGPR-NDD-NEXT:    addq %r27, %r8
+; EGPR-NDD-NEXT:    adcq %r26, %r19
+; EGPR-NDD-NEXT:    movzbl %bl, %r26d
+; EGPR-NDD-NEXT:    adcq %r26, %rax
+; EGPR-NDD-NEXT:    adcq $0, %rdx
+; EGPR-NDD-NEXT:    addq %r8, %r25, %r12
+; EGPR-NDD-NEXT:    movq 32(%r23), %r26
+; EGPR-NDD-NEXT:    adcq %r19, %rcx, %r13
+; EGPR-NDD-NEXT:    adcq %rax, %rsi, %rbp
+; EGPR-NDD-NEXT:    adcq %rdx, %r28, %rbx
+; EGPR-NDD-NEXT:    adcq $0, %r29, %rax
+; EGPR-NDD-NEXT:    movq %rax, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
+; EGPR-NDD-NEXT:    adcq $0, %r30
+; EGPR-NDD-NEXT:    adcq $0, %r31
+; EGPR-NDD-NEXT:    adcq $0, %rdi, %rax
+; EGPR-NDD-NEXT:    movq %rax, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
+; EGPR-NDD-NEXT:    movq %r10, %rax
+; EGPR-NDD-NEXT:    mulq %r26
+; EGPR-NDD-NEXT:    movq %rdx, %r25
+; EGPR-NDD-NEXT:    movq %rax, %r27
+; EGPR-NDD-NEXT:    movq %r9, %r19
+; EGPR-NDD-NEXT:    movq %r9, %rax
+; EGPR-NDD-NEXT:    mulq %r26
+; EGPR-NDD-NEXT:    addq %r25, %rax, %rcx
+; EGPR-NDD-NEXT:    adcq $0, %rdx, %r8
+; EGPR-NDD-NEXT:    movq 40(%r23), %r18
+; EGPR-NDD-NEXT:    movq %r23, %r11
+; EGPR-NDD-NEXT:    movq %r10, %rax
+; EGPR-NDD-NEXT:    mulq %r18
+; EGPR-NDD-NEXT:    addq %rcx, %rax, %rdi
+; EGPR-NDD-NEXT:    adcq %rdx, %r8
+; EGPR-NDD-NEXT:    setb %r25b
+; EGPR-NDD-NEXT:    movq %r9, %rax
+; EGPR-NDD-NEXT:    mulq %r18
+; EGPR-NDD-NEXT:    addq %r8, %rax, %r29
+; EGPR-NDD-NEXT:    movzbl %r25b, %eax
+; EGPR-NDD-NEXT:    adcq %rax, %rdx, %rsi
+; EGPR-NDD-NEXT:    movq %r16, %rax
+; EGPR-NDD-NEXT:    mulq %r26
+; EGPR-NDD-NEXT:    movq %rdx, %r28
+; EGPR-NDD-NEXT:    movq %rax, %r25
+; EGPR-NDD-NEXT:    movq %r14, %rax
+; EGPR-NDD-NEXT:    mulq %r26
+; EGPR-NDD-NEXT:    addq %r28, %rax, %r8
+; EGPR-NDD-NEXT:    adcq $0, %rdx, %r28
+; EGPR-NDD-NEXT:    movq %r16, %rax
+; EGPR-NDD-NEXT:    movq %r16, %r10
+; EGPR-NDD-NEXT:    mulq %r18
+; EGPR-NDD-NEXT:    addq %r8, %rax, %r23
+; EGPR-NDD-NEXT:    adcq %rdx, %r28
+; EGPR-NDD-NEXT:    setb %cl
+; EGPR-NDD-NEXT:    movq %r14, %rax
+; EGPR-NDD-NEXT:    movq %r14, %r16
+; EGPR-NDD-NEXT:    mulq %r18
+; EGPR-NDD-NEXT:    addq %r28, %rax
+; EGPR-NDD-NEXT:    movzbl %cl, %ecx
+; EGPR-NDD-NEXT:    adcq %rdx, %rcx
+; EGPR-NDD-NEXT:    addq %rax, %r27
+; EGPR-NDD-NEXT:    adcq %rcx, %rdi
+; EGPR-NDD-NEXT:    adcq $0, %r29, %r8
+; EGPR-NDD-NEXT:    adcq $0, %rsi, %r9
+; EGPR-NDD-NEXT:    movq %r11, %r14
+; EGPR-NDD-NEXT:    movq %r11, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
+; EGPR-NDD-NEXT:    movq 48(%r11), %r11
+; EGPR-NDD-NEXT:    movq %r10, %rsi
+; EGPR-NDD-NEXT:    movq %r10, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
+; EGPR-NDD-NEXT:    movq %r10, %rax
+; EGPR-NDD-NEXT:    mulq %r11
+; EGPR-NDD-NEXT:    movq %rdx, %r28
+; EGPR-NDD-NEXT:    movq %rax, %r29
+; EGPR-NDD-NEXT:    movq %r16, %rax
+; EGPR-NDD-NEXT:    movq %r16, %r10
+; EGPR-NDD-NEXT:    movq %r16, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
+; EGPR-NDD-NEXT:    mulq %r11
+; EGPR-NDD-NEXT:    addq %rax, %r28
+; EGPR-NDD-NEXT:    adcq $0, %rdx, %rcx
+; EGPR-NDD-NEXT:    movq 56(%r14), %r16
+; EGPR-NDD-NEXT:    movq %rsi, %rax
+; EGPR-NDD-NEXT:    mulq %r16
+; EGPR-NDD-NEXT:    addq %rax, %r28
+; EGPR-NDD-NEXT:    adcq %rdx, %rcx
+; EGPR-NDD-NEXT:    setb %sil
+; EGPR-NDD-NEXT:    movq %r10, %rax
+; EGPR-NDD-NEXT:    mulq %r16
+; EGPR-NDD-NEXT:    addq %rcx, %rax
+; EGPR-NDD-NEXT:    movzbl %sil, %ecx
+; EGPR-NDD-NEXT:    adcq %rdx, %rcx
+; EGPR-NDD-NEXT:    addq %r27, %r29, %r10
+; EGPR-NDD-NEXT:    adcq %r28, %rdi
+; EGPR-NDD-NEXT:    adcq $0, %rax
+; EGPR-NDD-NEXT:    adcq $0, %rcx
+; EGPR-NDD-NEXT:    addq %rax, %r8
+; EGPR-NDD-NEXT:    adcq %rcx, %r9, %rsi
+; EGPR-NDD-NEXT:    setb %r9b
+; EGPR-NDD-NEXT:    movq %r17, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
+; EGPR-NDD-NEXT:    movq %r17, %rax
+; EGPR-NDD-NEXT:    mulq %r11
+; EGPR-NDD-NEXT:    movq %rdx, %r28
+; EGPR-NDD-NEXT:    movq %rax, %r29
+; EGPR-NDD-NEXT:    movq %r19, %rax
+; EGPR-NDD-NEXT:    mulq %r11
+; EGPR-NDD-NEXT:    addq %r28, %rax, %r27
+; EGPR-NDD-NEXT:    adcq $0, %rdx, %r28
+; EGPR-NDD-NEXT:    movq %r17, %rax
+; EGPR-NDD-NEXT:    mulq %r16
+; EGPR-NDD-NEXT:    addq %rax, %r27
+; EGPR-NDD-NEXT:    adcq %rdx, %r28
+; EGPR-NDD-NEXT:    setb %cl
+; EGPR-NDD-NEXT:    movq %r19, %rax
+; EGPR-NDD-NEXT:    movq %r19, %r17
+; EGPR-NDD-NEXT:    mulq %r16
+; EGPR-NDD-NEXT:    addq %r28, %rax
+; EGPR-NDD-NEXT:    movzbl %cl, %ecx
+; EGPR-NDD-NEXT:    adcq %rdx, %rcx
+; EGPR-NDD-NEXT:    addq %r8, %r29, %rdx
+; EGPR-NDD-NEXT:    adcq %r27, %rsi
+; EGPR-NDD-NEXT:    movzbl %r9b, %r8d
+; EGPR-NDD-NEXT:    adcq %r8, %rax
+; EGPR-NDD-NEXT:    adcq $0, %rcx
+; EGPR-NDD-NEXT:    addq %r12, %r25, %r8
+; EGPR-NDD-NEXT:    movq %r8, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
+; EGPR-NDD-NEXT:    adcq %r13, %r23, %r8
+; EGPR-NDD-NEXT:    movq %r8, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
+; EGPR-NDD-NEXT:    adcq %rbp, %r10, %r8
+; EGPR-NDD-NEXT:    movq %r8, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
+; EGPR-NDD-NEXT:    adcq %rbx, %rdi
+; EGPR-NDD-NEXT:    movq %rdi, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
+; EGPR-NDD-NEXT:    adcq $0, %rdx
+; EGPR-NDD-NEXT:    adcq $0, %rsi
+; EGPR-NDD-NEXT:    adcq $0, %rax
+; EGPR-NDD-NEXT:    adcq $0, %rcx, %rdi
+; EGPR-NDD-NEXT:    addq %rdx, {{[-0-9]+}}(%r{{[sb]}}p), %rcx # 8-byte Folded Reload
+; EGPR-NDD-NEXT:    adcq %rsi, %r30, %r19
+; EGPR-NDD-NEXT:    adcq %rax, %r31, %r30
+; EGPR-NDD-NEXT:    adcq %rdi, {{[-0-9]+}}(%r{{[sb]}}p), %r31 # 8-byte Folded Reload
+; EGPR-NDD-NEXT:    setb %bpl
+; EGPR-NDD-NEXT:    movq %r15, %rax
+; EGPR-NDD-NEXT:    mulq %r26
+; EGPR-NDD-NEXT:    movq %rdx, %r25
+; EGPR-NDD-NEXT:    movq %rax, %r28
+; EGPR-NDD-NEXT:    movq {{[-0-9]+}}(%r{{[sb]}}p), %r9 # 8-byte Reload
+; EGPR-NDD-NEXT:    movq %r9, %rax
+; EGPR-NDD-NEXT:    mulq %r26
+; EGPR-NDD-NEXT:    addq %r25, %rax, %rsi
+; EGPR-NDD-NEXT:    adcq $0, %rdx, %rdi
+; EGPR-NDD-NEXT:    movq %r15, %rax
+; EGPR-NDD-NEXT:    movq %r15, %r13
+; EGPR-NDD-NEXT:    mulq %r18
+; EGPR-NDD-NEXT:    addq %rax, %rsi
+; EGPR-NDD-NEXT:    adcq %rdx, %rdi
+; EGPR-NDD-NEXT:    setb %r8b
+; EGPR-NDD-NEXT:    movq %r9, %rax
+; EGPR-NDD-NEXT:    movq %r9, %r23
+; EGPR-NDD-NEXT:    mulq %r18
+; EGPR-NDD-NEXT:    addq %rax, %rdi
+; EGPR-NDD-NEXT:    movzbl %r8b, %eax
+; EGPR-NDD-NEXT:    adcq %rax, %rdx, %r8
+; EGPR-NDD-NEXT:    movq {{[-0-9]+}}(%r{{[sb]}}p), %r14 # 8-byte Reload
+; EGPR-NDD-NEXT:    movq %r14, %rax
+; EGPR-NDD-NEXT:    mulq %r26
+; EGPR-NDD-NEXT:    movq %rdx, %r29
+; EGPR-NDD-NEXT:    movq %rax, %r25
+; EGPR-NDD-NEXT:    movq {{[-0-9]+}}(%r{{[sb]}}p), %r15 # 8-byte Reload
+; EGPR-NDD-NEXT:    movq %r15, %rax
+; EGPR-NDD-NEXT:    mulq %r26
+; EGPR-NDD-NEXT:    addq %r29, %rax, %r9
+; EGPR-NDD-NEXT:    adcq $0, %rdx, %r10
+; EGPR-NDD-NEXT:    movq %r14, %rax
+; EGPR-NDD-NEXT:    mulq %r18
+; EGPR-NDD-NEXT:    addq %r9, %rax, %rbx
+; EGPR-NDD-NEXT:    adcq %rdx, %r10, %r9
+; EGPR-NDD-NEXT:    setb %r10b
+; EGPR-NDD-NEXT:    movq %r15, %rax
+; EGPR-NDD-NEXT:    mulq %r18
+; EGPR-NDD-NEXT:    addq %r9, %rax
+; EGPR-NDD-NEXT:    movzbl %r10b, %r9d
+; EGPR-NDD-NEXT:    adcq %r9, %rdx
+; EGPR-NDD-NEXT:    addq %rax, %r28, %r9
+; EGPR-NDD-NEXT:    adcq %rdx, %rsi
+; EGPR-NDD-NEXT:    adcq $0, %rdi
+; EGPR-NDD-NEXT:    adcq $0, %r8
+; EGPR-NDD-NEXT:    movq %r14, %rax
+; EGPR-NDD-NEXT:    mulq %r11
+; EGPR-NDD-NEXT:    movq %rdx, %r28
+; EGPR-NDD-NEXT:    movq %rax, %r29
+; EGPR-NDD-NEXT:    movq %r15, %rax
+; EGPR-NDD-NEXT:    mulq %r11
+; EGPR-NDD-NEXT:    addq %r28, %rax, %r10
+; EGPR-NDD-NEXT:    adcq $0, %rdx, %r27
+; EGPR-NDD-NEXT:    movq %r14, %rax
+; EGPR-NDD-NEXT:    mulq %r16
+; EGPR-NDD-NEXT:    addq %rax, %r10
+; EGPR-NDD-NEXT:    adcq %rdx, %r27
+; EGPR-NDD-NEXT:    setb %r28b
+; EGPR-NDD-NEXT:    movq %r15, %rax
+; EGPR-NDD-NEXT:    mulq %r16
+; EGPR-NDD-NEXT:    addq %r27, %rax
+; EGPR-NDD-NEXT:    movzbl %r28b, %r27d
+; EGPR-NDD-NEXT:    adcq %r27, %rdx
+; EGPR-NDD-NEXT:    addq %r29, %r9
+; EGPR-NDD-NEXT:    adcq %r10, %rsi
+; EGPR-NDD-NEXT:    adcq $0, %rax
+; EGPR-NDD-NEXT:    adcq $0, %rdx
+; EGPR-NDD-NEXT:    addq %rax, %rdi
+; EGPR-NDD-NEXT:    adcq %rdx, %r8
+; EGPR-NDD-NEXT:    setb %r10b
+; EGPR-NDD-NEXT:    movq %r13, %rax
+; EGPR-NDD-NEXT:    mulq %r11
+; EGPR-NDD-NEXT:    movq %rdx, %r28
+; EGPR-NDD-NEXT:    movq %rax, %r29
+; EGPR-NDD-NEXT:    movq %r23, %r14
+; EGPR-NDD-NEXT:    movq %r23, %rax
+; EGPR-NDD-NEXT:    mulq %r11
+; EGPR-NDD-NEXT:    addq %r28, %rax, %r27
+; EGPR-NDD-NEXT:    adcq $0, %rdx, %r28
+; EGPR-NDD-NEXT:    movq %r13, %rax
+; EGPR-NDD-NEXT:    mulq %r16
+; EGPR-NDD-NEXT:    addq %rax, %r27
+; EGPR-NDD-NEXT:    adcq %rdx, %r28
+; EGPR-NDD-NEXT:    setb %r15b
+; EGPR-NDD-NEXT:    movq %r23, %rax
+; EGPR-NDD-NEXT:    mulq %r16
+; EGPR-NDD-NEXT:    addq %r28, %rax
+; EGPR-NDD-NEXT:    movzbl %r15b, %r28d
+; EGPR-NDD-NEXT:    adcq %r28, %rdx
+; EGPR-NDD-NEXT:    addq %r29, %rdi
+; EGPR-NDD-NEXT:    adcq %r27, %r8
+; EGPR-NDD-NEXT:    movzbl %r10b, %r10d
+; EGPR-NDD-NEXT:    adcq %r10, %rax
+; EGPR-NDD-NEXT:    adcq $0, %rdx
+; EGPR-NDD-NEXT:    addq %r25, %rcx
+; EGPR-NDD-NEXT:    movq %rcx, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
+; EGPR-NDD-NEXT:    adcq %r19, %rbx, %rcx
+; EGPR-NDD-NEXT:    movq %rcx, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
+; EGPR-NDD-NEXT:    adcq %r30, %r9, %rcx
+; EGPR-NDD-NEXT:    movq %rcx, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
+; EGPR-NDD-NEXT:    adcq %r31, %rsi, %rcx
+; EGPR-NDD-NEXT:    movq %rcx, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
+; EGPR-NDD-NEXT:    movzbl %bpl, %ecx
+; EGPR-NDD-NEXT:    adcq %rdi, %rcx
+; EGPR-NDD-NEXT:    movq %rcx, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
+; EGPR-NDD-NEXT:    adcq $0, %r8, %rcx
+; EGPR-NDD-NEXT:    movq %rcx, (%rsp) # 8-byte Spill
+; EGPR-NDD-NEXT:    adcq $0, %rax
+; EGPR-NDD-NEXT:    movq %rax, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
+; EGPR-NDD-NEXT:    adcq $0, %rdx, %rax
+; EGPR-NDD-NEXT:    movq %rax, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
+; EGPR-NDD-NEXT:    movq 64(%r20), %r28
+; EGPR-NDD-NEXT:    movq %r24, %rax
+; EGPR-NDD-NEXT:    mulq %r28
+; EGPR-NDD-NEXT:    movq %rdx, %r25
+; EGPR-NDD-NEXT:    movq %rax, %r30
+; EGPR-NDD-NEXT:    movq {{[-0-9]+}}(%r{{[sb]}}p), %r23 # 8-byte Reload
+; EGPR-NDD-NEXT:    movq %r23, %rax
+; EGPR-NDD-NEXT:    mulq %r28
+; EGPR-NDD-NEXT:    addq %r25, %rax, %rcx
+; EGPR-NDD-NEXT:    adcq $0, %rdx, %rsi
+; EGPR-NDD-NEXT:    movq 72(%r20), %r29
+; EGPR-NDD-NEXT:    movq %r24, %rax
+; EGPR-NDD-NEXT:    mulq %r29
+; EGPR-NDD-NEXT:    addq %rax, %rcx
+; EGPR-NDD-NEXT:    adcq %rdx, %rsi
+; EGPR-NDD-NEXT:    setb %dil
+; EGPR-NDD-NEXT:    movq %r23, %rax
+; EGPR-NDD-NEXT:    mulq %r29
+; EGPR-NDD-NEXT:    addq %rax, %rsi
+; EGPR-NDD-NEXT:    movzbl %dil, %eax
+; EGPR-NDD-NEXT:    adcq %rax, %rdx, %rdi
+; EGPR-NDD-NEXT:    movq %r22, %rax
+; EGPR-NDD-NEXT:    mulq %r28
+; EGPR-NDD-NEXT:    movq %rdx, %r31
+; EGPR-NDD-NEXT:    movq %rax, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
+; EGPR-NDD-NEXT:    movq %r21, %rax
+; EGPR-NDD-NEXT:    mulq %r28
+; EGPR-NDD-NEXT:    addq %r31, %rax, %r8
+; EGPR-NDD-NEXT:    adcq $0, %rdx, %r9
+; EGPR-NDD-NEXT:    movq %r22, %rax
+; EGPR-NDD-NEXT:    mulq %r29
+; EGPR-NDD-NEXT:    addq %r8, %rax
+; EGPR-NDD-NEXT:    movq %rax, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
+; EGPR-NDD-NEXT:    adcq %rdx, %r9, %r8
+; EGPR-NDD-NEXT:    setb %r9b
+; EGPR-NDD-NEXT:    movq %r21, %rax
+; EGPR-NDD-NEXT:    mulq %r29
+; EGPR-NDD-NEXT:    addq %r8, %rax
+; EGPR-NDD-NEXT:    movzbl %r9b, %r8d
+; EGPR-NDD-NEXT:    adcq %r8, %rdx
+; EGPR-NDD-NEXT:    addq %rax, %r30, %r8
+; EGPR-NDD-NEXT:    adcq %rdx, %rcx
+; EGPR-NDD-NEXT:    adcq $0, %rsi
+; EGPR-NDD-NEXT:    adcq $0, %rdi
+; EGPR-NDD-NEXT:    movq 80(%r20), %rbx
+; EGPR-NDD-NEXT:    movq %r22, %rax
+; EGPR-NDD-NEXT:    mulq %rbx
+; EGPR-NDD-NEXT:    movq %rdx, %r30
+; EGPR-NDD-NEXT:    movq %rax, %r31
+; EGPR-NDD-NEXT:    movq %r21, %rax
+; EGPR-NDD-NEXT:    mulq %rbx
+; EGPR-NDD-NEXT:    addq %r30, %rax, %r9
+; EGPR-NDD-NEXT:    adcq $0, %rdx, %r10
+; EGPR-NDD-NEXT:    movq 88(%r20), %r15
+; EGPR-NDD-NEXT:    movq %r22, %rax
+; EGPR-NDD-NEXT:    mulq %r15
+; EGPR-NDD-NEXT:    addq %rax, %r9
+; EGPR-NDD-NEXT:    adcq %rdx, %r10
+; EGPR-NDD-NEXT:    setb %r19b
+; EGPR-NDD-NEXT:    movq %r21, %rax
+; EGPR-NDD-NEXT:    mulq %r15
+; EGPR-NDD-NEXT:    addq %r10, %rax
+; EGPR-NDD-NEXT:    movzbl %r19b, %r10d
+; EGPR-NDD-NEXT:    adcq %r10, %rdx
+; EGPR-NDD-NEXT:    addq %r31, %r8
+; EGPR-NDD-NEXT:    movq %r8, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
+; EGPR-NDD-NEXT:    adcq %r9, %rcx
+; EGPR-NDD-NEXT:    movq %rcx, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
+; EGPR-NDD-NEXT:    adcq $0, %rax
+; EGPR-NDD-NEXT:    adcq $0, %rdx, %rcx
+; EGPR-NDD-NEXT:    addq %rax, %rsi
+; EGPR-NDD-NEXT:    adcq %rdi, %rcx
+; EGPR-NDD-NEXT:    setb %dil
+; EGPR-NDD-NEXT:    movq %r24, %rax
+; EGPR-NDD-NEXT:    mulq %rbx
+; EGPR-NDD-NEXT:    movq %rdx, %r30
+; EGPR-NDD-NEXT:    movq %rax, %r31
+; EGPR-NDD-NEXT:    movq %r23, %rax
+; EGPR-NDD-NEXT:    mulq %rbx
+; EGPR-NDD-NEXT:    addq %r30, %rax, %r8
+; EGPR-NDD-NEXT:    adcq $0, %rdx, %r9
+; EGPR-NDD-NEXT:    movq %r24, %rax
+; EGPR-NDD-NEXT:    mulq %r15
+; EGPR-NDD-NEXT:    addq %rax, %r8
+; EGPR-NDD-NEXT:    adcq %rdx, %r9
+; EGPR-NDD-NEXT:    setb %r10b
+; EGPR-NDD-NEXT:    movq %r23, %rax
+; EGPR-NDD-NEXT:    mulq %r15
+; EGPR-NDD-NEXT:    addq %r9, %rax
+; EGPR-NDD-NEXT:    movzbl %r10b, %r9d
+; EGPR-NDD-NEXT:    adcq %r9, %rdx
+; EGPR-NDD-NEXT:    addq %rsi, %r31, %r25
+; EGPR-NDD-NEXT:    adcq %rcx, %r8, %r19
+; EGPR-NDD-NEXT:    movzbl %dil, %ecx
+; EGPR-NDD-NEXT:    adcq %rcx, %rax, %r31
+; EGPR-NDD-NEXT:    adcq $0, %rdx, %r12
+; EGPR-NDD-NEXT:    imulq %r15, %r26, %rcx
+; EGPR-NDD-NEXT:    movq %r26, %rax
+; EGPR-NDD-NEXT:    mulq %rbx
+; EGPR-NDD-NEXT:    movq %rax, %r30
+; EGPR-NDD-NEXT:    addq %rcx, %rdx, %rax
+; EGPR-NDD-NEXT:    imulq %rbx, %r18, %rcx
+; EGPR-NDD-NEXT:    addq %rax, %rcx
+; EGPR-NDD-NEXT:    imulq %r29, %r11, %rsi
+; EGPR-NDD-NEXT:    movq %r11, %rax
+; EGPR-NDD-NEXT:    mulq %r28
+; EGPR-NDD-NEXT:    addq %rsi, %rdx
+; EGPR-NDD-NEXT:    imulq %r28, %r16, %rsi
+; EGPR-NDD-NEXT:    addq %rsi, %rdx
+; EGPR-NDD-NEXT:    addq %r30, %rax, %rsi
+; EGPR-NDD-NEXT:    adcq %rcx, %rdx, %rdi
+; EGPR-NDD-NEXT:    movq %r28, %rax
+; EGPR-NDD-NEXT:    mulq %r26
+; EGPR-NDD-NEXT:    movq %rdx, %r30
+; EGPR-NDD-NEXT:    movq %rax, %r27
+; EGPR-NDD-NEXT:    movq %r29, %rax
+; EGPR-NDD-NEXT:    mulq %r26
+; EGPR-NDD-NEXT:    addq %r30, %rax, %rcx
+; EGPR-NDD-NEXT:    adcq $0, %rdx, %r8
+; EGPR-NDD-NEXT:    movq %r28, %rax
+; EGPR-NDD-NEXT:    mulq %r18
+; EGPR-NDD-NEXT:    addq %rax, %rcx
+; EGPR-NDD-NEXT:    adcq %rdx, %r8
+; EGPR-NDD-NEXT:    setb %r9b
+; EGPR-NDD-NEXT:    movq %r29, %rax
+; EGPR-NDD-NEXT:    mulq %r18
+; EGPR-NDD-NEXT:    addq %r8, %rax
+; EGPR-NDD-NEXT:    movzbl %r9b, %r8d
+; EGPR-NDD-NEXT:    adcq %r8, %rdx
+; EGPR-NDD-NEXT:    addq %rax, %rsi
+; EGPR-NDD-NEXT:    adcq %rdi, %rdx, %r29
+; EGPR-NDD-NEXT:    movq 112(%r20), %rdi
+; EGPR-NDD-NEXT:    movq %r22, %rax
+; EGPR-NDD-NEXT:    mulq %rdi
+; EGPR-NDD-NEXT:    movq %rax, %r26
+; EGPR-NDD-NEXT:    imulq 120(%r20), %r22, %rax
+; EGPR-NDD-NEXT:    addq %rdx, %rax
+; EGPR-NDD-NEXT:    imulq %rdi, %r21, %rdx
+; EGPR-NDD-NEXT:    addq %rdx, %rax, %r8
+; EGPR-NDD-NEXT:    movq 96(%r20), %r28
+; EGPR-NDD-NEXT:    movq 104(%r20), %rdi
+; EGPR-NDD-NEXT:    imulq %rdi, %r24, %r9
+; EGPR-NDD-NEXT:    movq %r24, %rax
+; EGPR-NDD-NEXT:    mulq %r28
+; EGPR-NDD-NEXT:    addq %r9, %rdx
+; EGPR-NDD-NEXT:    imulq %r28, %r23, %r9
+; EGPR-NDD-NEXT:    addq %r9, %rdx
+; EGPR-NDD-NEXT:    addq %r26, %rax, %r9
+; EGPR-NDD-NEXT:    adcq %rdx, %r8
+; EGPR-NDD-NEXT:    movq %r28, %rax
+; EGPR-NDD-NEXT:    mulq %r22
+; EGPR-NDD-NEXT:    movq %rdx, %r23
+; EGPR-NDD-NEXT:    movq %rax, %r24
+; EGPR-NDD-NEXT:    movq %rdi, %rax
+; EGPR-NDD-NEXT:    mulq %r22
+; EGPR-NDD-NEXT:    addq %r23, %rax, %r10
+; EGPR-NDD-NEXT:    adcq $0, %rdx, %r11
+; EGPR-NDD-NEXT:    movq %r28, %rax
+; EGPR-NDD-NEXT:    mulq %r21
+; EGPR-NDD-NEXT:    addq %rax, %r10
+; EGPR-NDD-NEXT:    adcq %rdx, %r11
+; EGPR-NDD-NEXT:    setb %r16b
+; EGPR-NDD-NEXT:    movq %rdi, %rax
+; EGPR-NDD-NEXT:    mulq %r21
+; EGPR-NDD-NEXT:    addq %r11, %rax
+; EGPR-NDD-NEXT:    movzbl %r16b, %edi
+; EGPR-NDD-NEXT:    adcq %rdi, %rdx
+; EGPR-NDD-NEXT:    addq %r9, %rax
+; EGPR-NDD-NEXT:    adcq %r8, %rdx
+; EGPR-NDD-NEXT:    addq %r27, %r24, %rdi
+; EGPR-NDD-NEXT:    adcq %r10, %rcx
+; EGPR-NDD-NEXT:    adcq %rsi, %rax
+; EGPR-NDD-NEXT:    adcq %r29, %rdx
+; EGPR-NDD-NEXT:    addq %rdi, %r25, %r15
+; EGPR-NDD-NEXT:    adcq %rcx, %r19, %rbx
+; EGPR-NDD-NEXT:    adcq %rax, %r31, %rbp
+; EGPR-NDD-NEXT:    adcq %rdx, %r12, %r30
+; EGPR-NDD-NEXT:    movq {{[-0-9]+}}(%r{{[sb]}}p), %r18 # 8-byte Reload
+; EGPR-NDD-NEXT:    movq 80(%r18), %r22
+; EGPR-NDD-NEXT:    movq %r22, %rax
+; EGPR-NDD-NEXT:    movq {{[-0-9]+}}(%r{{[sb]}}p), %r21 # 8-byte Reload
+; EGPR-NDD-NEXT:    mulq %r21
+; EGPR-NDD-NEXT:    movq %rax, %r26
+; EGPR-NDD-NEXT:    movq %rdx, %rdi
+; EGPR-NDD-NEXT:    movq 88(%r18), %r20
+; EGPR-NDD-NEXT:    movq %r20, %rax
+; EGPR-NDD-NEXT:    mulq %r21
+; EGPR-NDD-NEXT:    addq %rdi, %rax, %rcx
+; EGPR-NDD-NEXT:    adcq $0, %rdx, %rsi
+; EGPR-NDD-NEXT:    movq %r22, %rax
+; EGPR-NDD-NEXT:    movq {{[-0-9]+}}(%r{{[sb]}}p), %r12 # 8-byte Reload
+; EGPR-NDD-NEXT:    mulq %r12
+; EGPR-NDD-NEXT:    addq %rax, %rcx
+; EGPR-NDD-NEXT:    adcq %rdx, %rsi
+; EGPR-NDD-NEXT:    setb %dil
+; EGPR-NDD-NEXT:    movq %r20, %rax
+; EGPR-NDD-NEXT:    mulq %r12
+; EGPR-NDD-NEXT:    addq %rax, %rsi
+; EGPR-NDD-NEXT:    movzbl %dil, %eax
+; EGPR-NDD-NEXT:    adcq %rax, %rdx, %rdi
+; EGPR-NDD-NEXT:    movq 64(%r18), %r24
+; EGPR-NDD-NEXT:    movq %r24, %rax
+; EGPR-NDD-NEXT:    mulq %r21
+; EGPR-NDD-NEXT:    movq %rax, %r29
+; EGPR-NDD-NEXT:    movq %rdx, %r27
+; EGPR-NDD-NEXT:    movq 72(%r18), %r23
+; EGPR-NDD-NEXT:    movq %r23, %rax
+; EGPR-NDD-NEXT:    mulq %r21
+; EGPR-NDD-NEXT:    addq %r27, %rax, %r8
+; EGPR-NDD-NEXT:    adcq $0, %rdx, %r9
+; EGPR-NDD-NEXT:    movq %r24, %rax
+; EGPR-NDD-NEXT:    mulq %r12
+; EGPR-NDD-NEXT:    addq %r8, %rax, %r31
+; EGPR-NDD-NEXT:    adcq %rdx, %r9, %r8
+; EGPR-NDD-NEXT:    setb %r9b
+; EGPR-NDD-NEXT:    movq %r23, %rax
+; EGPR-NDD-NEXT:    mulq %r12
+; EGPR-NDD-NEXT:    addq %r8, %rax
+; EGPR-NDD-NEXT:    movzbl %r9b, %r8d
+; EGPR-NDD-NEXT:    adcq %r8, %rdx
+; EGPR-NDD-NEXT:    addq %rax, %r26, %r8
+; EGPR-NDD-NEXT:    adcq %rdx, %rcx
+; EGPR-NDD-NEXT:    adcq $0, %rsi
+; EGPR-NDD-NEXT:    adcq $0, %rdi
+; EGPR-NDD-NEXT:    movq %r24, %rax
+; EGPR-NDD-NEXT:    movq {{[-0-9]+}}(%r{{[sb]}}p), %r16 # 8-byte Reload
+; EGPR-NDD-NEXT:    mulq %r16
+; EGPR-NDD-NEXT:    movq %rdx, %r26
+; EGPR-NDD-NEXT:    movq %rax, %r27
+; EGPR-NDD-NEXT:    movq %r23, %rax
+; EGPR-NDD-NEXT:    mulq %r16
+; EGPR-NDD-NEXT:    addq %r26, %rax, %r9
+; EGPR-NDD-NEXT:    adcq $0, %rdx, %r10
+; EGPR-NDD-NEXT:    movq %r24, %rax
+; EGPR-NDD-NEXT:    mulq %r17
+; EGPR-NDD-NEXT:    addq %rax, %r9
+; EGPR-NDD-NEXT:    adcq %rdx, %r10
+; EGPR-NDD-NEXT:    setb %r11b
+; EGPR-NDD-NEXT:    movq %r23, %rax
+; EGPR-NDD-NEXT:    mulq %r17
+; EGPR-NDD-NEXT:    addq %r10, %rax
+; EGPR-NDD-NEXT:    movzbl %r11b, %r10d
+; EGPR-NDD-NEXT:    adcq %r10, %rdx
+; EGPR-NDD-NEXT:    addq %r8, %r27, %r28
+; EGPR-NDD-NEXT:    adcq %rcx, %r9, %r25
+; EGPR-NDD-NEXT:    adcq $0, %rax
+; EGPR-NDD-NEXT:    adcq $0, %rdx, %rcx
+; EGPR-NDD-NEXT:    addq %rax, %rsi
+; EGPR-NDD-NEXT:    adcq %rdi, %rcx
+; EGPR-NDD-NEXT:    setb %dil
+; EGPR-NDD-NEXT:    movq %r22, %rax
+; EGPR-NDD-NEXT:    mulq %r16
+; EGPR-NDD-NEXT:    movq %rdx, %r26
+; EGPR-NDD-NEXT:    movq %rax, %r27
+; EGPR-NDD-NEXT:    movq %r20, %rax
+; EGPR-NDD-NEXT:    mulq %r16
+; EGPR-NDD-NEXT:    addq %r26, %rax, %r8
+; EGPR-NDD-NEXT:    adcq $0, %rdx, %r9
+; EGPR-NDD-NEXT:    movq %r22, %rax
+; EGPR-NDD-NEXT:    mulq %r17
+; EGPR-NDD-NEXT:    addq %rax, %r8
+; EGPR-NDD-NEXT:    adcq %rdx, %r9
+; EGPR-NDD-NEXT:    setb %r10b
+; EGPR-NDD-NEXT:    movq %r20, %rax
+; EGPR-NDD-NEXT:    mulq %r17
+; EGPR-NDD-NEXT:    addq %r9, %rax
+; EGPR-NDD-NEXT:    movzbl %r10b, %r9d
+; EGPR-NDD-NEXT:    adcq %r9, %rdx
+; EGPR-NDD-NEXT:    addq %rsi, %r27
+; EGPR-NDD-NEXT:    adcq %rcx, %r8, %r19
+; EGPR-NDD-NEXT:    movzbl %dil, %ecx
+; EGPR-NDD-NEXT:    adcq %rax, %rcx
+; EGPR-NDD-NEXT:    adcq $0, %rdx, %rdi
+; EGPR-NDD-NEXT:    movq %r18, %r9
+; EGPR-NDD-NEXT:    movq 96(%r18), %r26
+; EGPR-NDD-NEXT:    imulq %r17, %r26, %rsi
+; EGPR-NDD-NEXT:    movq %r26, %rax
+; EGPR-NDD-NEXT:    mulq %r16
+; EGPR-NDD-NEXT:    movq %rax, %r18
+; EGPR-NDD-NEXT:    addq %rsi, %rdx, %rax
+; EGPR-NDD-NEXT:    movq 104(%r9), %r8
+; EGPR-NDD-NEXT:    imulq %r16, %r8, %rdx
+; EGPR-NDD-NEXT:    addq %rdx, %rax, %rsi
+; EGPR-NDD-NEXT:    movq 112(%r9), %rax
+; EGPR-NDD-NEXT:    movq %r9, %r11
+; EGPR-NDD-NEXT:    imulq %r12, %rax, %r9
+; EGPR-NDD-NEXT:    mulq %r21
+; EGPR-NDD-NEXT:    addq %r9, %rdx
+; EGPR-NDD-NEXT:    imulq 120(%r11), %r21, %r9
+; EGPR-NDD-NEXT:    addq %r9, %rdx
+; EGPR-NDD-NEXT:    addq %r18, %rax, %r9
+; EGPR-NDD-NEXT:    adcq %rsi, %rdx, %r16
+; EGPR-NDD-NEXT:    movq %r21, %rax
+; EGPR-NDD-NEXT:    mulq %r26
+; EGPR-NDD-NEXT:    movq %rdx, %r17
+; EGPR-NDD-NEXT:    movq %rax, %rsi
+; EGPR-NDD-NEXT:    movq %r12, %rax
+; EGPR-NDD-NEXT:    mulq %r26
+; EGPR-NDD-NEXT:    addq %r17, %rax, %r10
+; EGPR-NDD-NEXT:    adcq $0, %rdx, %r17
+; EGPR-NDD-NEXT:    movq %r21, %rax
+; EGPR-NDD-NEXT:    mulq %r8
+; EGPR-NDD-NEXT:    addq %r10, %rax, %r11
+; EGPR-NDD-NEXT:    adcq %rdx, %r17, %r10
+; EGPR-NDD-NEXT:    setb %r17b
+; EGPR-NDD-NEXT:    movq %r12, %rax
+; EGPR-NDD-NEXT:    mulq %r8
+; EGPR-NDD-NEXT:    addq %r10, %rax
+; EGPR-NDD-NEXT:    movzbl %r17b, %r8d
+; EGPR-NDD-NEXT:    adcq %r8, %rdx
+; EGPR-NDD-NEXT:    addq %r9, %rax, %r10
+; EGPR-NDD-NEXT:    adcq %r16, %rdx, %r17
+; EGPR-NDD-NEXT:    imulq %r14, %r24, %r8
+; EGPR-NDD-NEXT:    movq %r24, %rax
+; EGPR-NDD-NEXT:    mulq %r13
+; EGPR-NDD-NEXT:    movq %rax, %r9
+; EGPR-NDD-NEXT:    addq %r8, %rdx, %rax
+; EGPR-NDD-NEXT:    imulq %r13, %r23, %rdx
+; EGPR-NDD-NEXT:    addq %rdx, %rax, %r8
+; EGPR-NDD-NEXT:    movq {{[-0-9]+}}(%r{{[sb]}}p), %r21 # 8-byte Reload
+; EGPR-NDD-NEXT:    imulq %r21, %r22, %r16
+; EGPR-NDD-NEXT:    movq %r22, %rax
+; EGPR-NDD-NEXT:    movq {{[-0-9]+}}(%r{{[sb]}}p), %r26 # 8-byte Reload
+; EGPR-NDD-NEXT:    mulq %r26
+; EGPR-NDD-NEXT:    addq %r16, %rdx
+; EGPR-NDD-NEXT:    imulq %r26, %r20, %r16
+; EGPR-NDD-NEXT:    addq %r16, %rdx
+; EGPR-NDD-NEXT:    addq %r9, %rax, %r16
+; EGPR-NDD-NEXT:    adcq %r8, %rdx, %r18
+; EGPR-NDD-NEXT:    movq %r26, %rax
+; EGPR-NDD-NEXT:    mulq %r24
+; EGPR-NDD-NEXT:    movq %rdx, %r8
+; EGPR-NDD-NEXT:    movq %rax, %r9
+; EGPR-NDD-NEXT:    movq %r21, %rax
+; EGPR-NDD-NEXT:    movq %r21, %r22
+; EGPR-NDD-NEXT:    mulq %r24
+; EGPR-NDD-NEXT:    addq %rax, %r8
+; EGPR-NDD-NEXT:    adcq $0, %rdx, %r20
+; EGPR-NDD-NEXT:    movq %r26, %rax
+; EGPR-NDD-NEXT:    mulq %r23
+; EGPR-NDD-NEXT:    addq %rax, %r8
+; EGPR-NDD-NEXT:    adcq %rdx, %r20
+; EGPR-NDD-NEXT:    setb %r21b
+; EGPR-NDD-NEXT:    movq %r22, %rax
+; EGPR-NDD-NEXT:    mulq %r23
+; EGPR-NDD-NEXT:    addq %r20, %rax
+; EGPR-NDD-NEXT:    movzbl %r21b, %r20d
+; EGPR-NDD-NEXT:    adcq %r20, %rdx
+; EGPR-NDD-NEXT:    addq %r16, %rax
+; EGPR-NDD-NEXT:    adcq %r18, %rdx
+; EGPR-NDD-NEXT:    addq %r9, %rsi
+; EGPR-NDD-NEXT:    adcq %r11, %r8
+; EGPR-NDD-NEXT:    adcq %r10, %rax
+; EGPR-NDD-NEXT:    adcq %r17, %rdx
+; EGPR-NDD-NEXT:    addq %r27, %rsi
+; EGPR-NDD-NEXT:    adcq %r19, %r8
+; EGPR-NDD-NEXT:    adcq %rcx, %rax
+; EGPR-NDD-NEXT:    adcq %rdx, %rdi, %rcx
+; EGPR-NDD-NEXT:    addq {{[-0-9]+}}(%r{{[sb]}}p), %r29, %rdx # 8-byte Folded Reload
+; EGPR-NDD-NEXT:    adcq {{[-0-9]+}}(%r{{[sb]}}p), %r31, %rdi # 8-byte Folded Reload
+; EGPR-NDD-NEXT:    adcq {{[-0-9]+}}(%r{{[sb]}}p), %r28, %r9 # 8-byte Folded Reload
+; EGPR-NDD-NEXT:    adcq {{[-0-9]+}}(%r{{[sb]}}p), %r25, %r10 # 8-byte Folded Reload
+; EGPR-NDD-NEXT:    adcq %r15, %rsi
+; EGPR-NDD-NEXT:    adcq %rbx, %r8
+; EGPR-NDD-NEXT:    adcq %rbp, %rax
+; EGPR-NDD-NEXT:    adcq %r30, %rcx
+; EGPR-NDD-NEXT:    addq %rdx, {{[-0-9]+}}(%r{{[sb]}}p), %rdx # 8-byte Folded Reload
+; EGPR-NDD-NEXT:    adcq %rdi, {{[-0-9]+}}(%r{{[sb]}}p), %rdi # 8-byte Folded Reload
+; EGPR-NDD-NEXT:    adcq %r9, {{[-0-9]+}}(%r{{[sb]}}p), %r9 # 8-byte Folded Reload
+; EGPR-NDD-NEXT:    adcq %r10, {{[-0-9]+}}(%r{{[sb]}}p), %r10 # 8-byte Folded Reload
+; EGPR-NDD-NEXT:    adcq %rsi, {{[-0-9]+}}(%r{{[sb]}}p), %rsi # 8-byte Folded Reload
+; EGPR-NDD-NEXT:    adcq %r8, (%rsp), %r8 # 8-byte Folded Reload
+; EGPR-NDD-NEXT:    adcq %rax, {{[-0-9]+}}(%r{{[sb]}}p), %rax # 8-byte Folded Reload
+; EGPR-NDD-NEXT:    adcq %rcx, {{[-0-9]+}}(%r{{[sb]}}p), %rcx # 8-byte Folded Reload
+; EGPR-NDD-NEXT:    movq {{[-0-9]+}}(%r{{[sb]}}p), %r11 # 8-byte Reload
+; EGPR-NDD-NEXT:    movq {{[-0-9]+}}(%r{{[sb]}}p), %r16 # 8-byte Reload
+; EGPR-NDD-NEXT:    movq %r16, (%r11)
+; EGPR-NDD-NEXT:    movq {{[-0-9]+}}(%r{{[sb]}}p), %r16 # 8-byte Reload
+; EGPR-NDD-NEXT:    movq %r16, 8(%r11)
+; EGPR-NDD-NEXT:    movq {{[-0-9]+}}(%r{{[sb]}}p), %r16 # 8-byte Reload
+; EGPR-NDD-NEXT:    movq %r16, 16(%r11)
+; EGPR-NDD-NEXT:    movq {{[-0-9]+}}(%r{{[sb]}}p), %r16 # 8-byte Reload
+; EGPR-NDD-NEXT:    movq %r16, 24(%r11)
+; EGPR-NDD-NEXT:    movq {{[-0-9]+}}(%r{{[sb]}}p), %r16 # 8-byte Reload
+; EGPR-NDD-NEXT:    movq %r16, 32(%r11)
+; EGPR-NDD-NEXT:    movq {{[-0-9]+}}(%r{{[sb]}}p), %r16 # 8-byte Reload
+; EGPR-NDD-NEXT:    movq %r16, 40(%r11)
+; EGPR-NDD-NEXT:    movq {{[-0-9]+}}(%r{{[sb]}}p), %r16 # 8-byte Reload
+; EGPR-NDD-NEXT:    movq %r16, 48(%r11)
+; EGPR-NDD-NEXT:    movq {{[-0-9]+}}(%r{{[sb]}}p), %r16 # 8-byte Reload
+; EGPR-NDD-NEXT:    movq %r16, 56(%r11)
+; EGPR-NDD-NEXT:    movq %rdx, 64(%r11)
+; EGPR-NDD-NEXT:    movq %rdi, 72(%r11)
+; EGPR-NDD-NEXT:    movq %r9, 80(%r11)
+; EGPR-NDD-NEXT:    movq %r10, 88(%r11)
+; EGPR-NDD-NEXT:    movq %rsi, 96(%r11)
+; EGPR-NDD-NEXT:    movq %r8, 104(%r11)
+; EGPR-NDD-NEXT:    movq %rax, 112(%r11)
+; EGPR-NDD-NEXT:    movq %rcx, 120(%r11)
+; EGPR-NDD-NEXT:    addq $104, %rsp
+; EGPR-NDD-NEXT:    popq %rbx
+; EGPR-NDD-NEXT:    popq %r12
+; EGPR-NDD-NEXT:    popq %r13
+; EGPR-NDD-NEXT:    popq %r14
+; EGPR-NDD-NEXT:    popq %r15
+; EGPR-NDD-NEXT:    popq %rbp
+; EGPR-NDD-NEXT:    retq
   %av = load i1024, ptr %a
   %bv = load i1024, ptr %b
   %r = mul i1024 %av, %bv


        


More information about the llvm-commits mailing list