search for: adcq

Displaying 9 results from an estimated 9 matches for "adcq".

Did you mean: adc
2020 Aug 17
3
Code generation option for wide integers on x86_64?
Is there an existing option in X86_64 target code generator to emit a loop for the following code: define i4096 @add(i4096 %a, i4096 %b) alwaysinline { %c = add i4096 %a, %b ret i4096 %c } instead of: movq %rdi, %rax addq 96(%rsp), %rsi adcq 104(%rsp), %rdx movq %rdx, 8(%rdi) movq %rsi, (%rdi) adcq 112(%rsp), %rcx movq %rcx, 16(%rdi) adcq 120(%rsp), %r8 movq %r8, 24(%rdi) adcq 128(%rsp), %r9 movq %r9, 32(%rdi) movq 8(%rsp), %rcx adcq 136(%rsp), %rcx movq %rcx, 40(%rdi) movq 16...
2011 Mar 30
1
[LLVMdev] Bignums
...integer support. (2) Is there a way to convince LLVM's register allocator to do the right thing on x86? I'm getting swaths of code like: movq 88(%rsp), %rax mulq 112(%rsp) movq %rax, %r15 addq %r11, %r15 movq %rdx, %r14 adcq %rcx, %r14 adcq $0, %r9 (that's a 64x64 -> 128-bit multiply with 192-bit accumulate.) The problem is, %r11 and %rcx are dead here. It should have just added %rax and %rdx into them. This results in more movs, more spills, more code and less performance. (3) Is there a w...
2010 Jun 13
2
[LLVMdev] Bignum development
...; > > .LBB1_7:                                # %bb.i >                                        #   Parent Loop BB1_6 Depth=1 >                                        # =>  This Inner Loop Header: Depth=2 >        addq    (%rbx,%rsi,8), %rdi >        movl    $0, %r8d >        adcq    $0, %r8 >        addq    (%r14,%rsi,8), %rdi >        adcq    $0, %r8 >        movq    %rdi, (%r15,%rsi,8) >        incq    %rsi >        cmpq    $1000, %rsi             # imm = 0x3E8 >        movq    %r8, %rdi >        jne     .LBB1_7 > > So it basically tries to keep...
2010 Jun 12
0
[LLVMdev] Bignum development
...). Indeed, this compiles to: .LBB1_7: # %bb.i # Parent Loop BB1_6 Depth=1 # => This Inner Loop Header: Depth=2 addq (%rbx,%rsi,8), %rdi movl $0, %r8d adcq $0, %r8 addq (%r14,%rsi,8), %rdi adcq $0, %r8 movq %rdi, (%r15,%rsi,8) incq %rsi cmpq $1000, %rsi # imm = 0x3E8 movq %r8, %rdi jne .LBB1_7 So it basically tries to keep track of the carry in %r8 instead of...
2010 Jun 13
0
[LLVMdev] Bignum development
...# %bb.i >> # Parent Loop BB1_6 Depth=1 >> # => This Inner Loop Header: Depth=2 >> addq (%rbx,%rsi,8), %rdi >> movl $0, %r8d >> adcq $0, %r8 >> addq (%r14,%rsi,8), %rdi >> adcq $0, %r8 >> movq %rdi, (%r15,%rsi,8) >> incq %rsi >> cmpq $1000, %rsi # imm = 0x3E8 >> movq %r8, %rdi >> jne .LBB1_7 >> &...
2010 Jun 13
2
[LLVMdev] Bignum development
...           # %bb.i >>>                                        #   Parent Loop BB1_6 Depth=1 >>>                                        # =>  This Inner Loop Header: Depth=2 >>>        addq    (%rbx,%rsi,8), %rdi >>>        movl    $0, %r8d >>>        adcq    $0, %r8 >>>        addq    (%r14,%rsi,8), %rdi >>>        adcq    $0, %r8 >>>        movq    %rdi, (%r15,%rsi,8) >>>        incq    %rsi >>>        cmpq    $1000, %rsi             # imm = 0x3E8 >>>        movq    %r8, %rdi >>>      ...
2016 Nov 09
10
Is the correct behavior of getelementptr i192* for opt + llc -march=aarch64?
Hi all, opt and opt + llc generate the difference aarch64 asm code for the following LLVM code. Is it intended behavior? I expected (A) because I cast %p from i192* to i64*. The information is dropped by opt and 8-byte padding is inserted or I write a bad code? % cat a.ll define void @store0_to_p4(i192* %p) { %p1 = bitcast i192* %p to i64* %p2 = getelementptr i64, i64* %p1, i64 3 %p3 =
2010 Jun 11
3
[LLVMdev] Bignum development
On Fri, Jun 11, 2010 at 3:28 PM, Bill Hart <goodwillhart at googlemail.com> wrote: > Hi Eli, > > On 11 June 2010 22:44, Eli Friedman <eli.friedman at gmail.com> wrote: >> On Fri, Jun 11, 2010 at 10:37 AM, Bill Hart <goodwillhart at googlemail.com> wrote: >>> a) What plans are there to support addition, subtraction, >>> multiplication, division,
2010 Jun 11
4
[LLVMdev] Bignum development
Hi all, After searching for a decent compiler backend for ages (google sometimes isn't helpful), I recently stumbled upon LLVM. Woot!! I work on bignum arithmetic (I'm a professional mathematician) and have recently decided to switch from developing GPL'd bignum code to BSD licensed code. (See http://www.mpir.org/ which I contributed to for a while - a fork of GMP). Please bear with