Displaying 2 results from an estimated 2 matches for "eax1".
Did you mean:
eax
2013 Jun 28
3
[LLVMdev] Question regarding the x86 SBB instruction.
...y flag is set, jump to jump_destination1
How do I represent this correctly in LLVM IR?
In the above case, the carry flag should be set by the SBB because:
%eax + carry == 0x100000000 (33 bits) or 0x0 (32 bits)
%edx - (%eax + carry) == %edx with Carry set.
If I use LLVM IR:
%eax2 = ADD i32 %eax1, %carry (%eax2 == 0)
[%edx2,%carry] = llvm.ssub.with.overflow.i32 %edx1, %eax2 (carry ==
0, but I want it to be 1)
So, the problem only occurs with the edge case of %eax == 0xffffffff
and carry == 1
Any ideas how I could make this work accurately in LLVM IR ?
I could put an if round it:
if...
2013 Jun 28
0
[LLVMdev] Question regarding the x86 SBB instruction.
...>
> How do I represent this correctly in LLVM IR?
> In the above case, the carry flag should be set by the SBB because:
> %eax + carry == 0x100000000 (33 bits) or 0x0 (32 bits)
> %edx - (%eax + carry) == %edx with Carry set.
>
> If I use LLVM IR:
> %eax2 = ADD i32 %eax1, %carry (%eax2 == 0)
> [%edx2,%carry] = llvm.ssub.with.overflow.i32 %edx1, %eax2 (carry ==
> 0, but I want it to be 1)
>
> So, the problem only occurs with the edge case of %eax == 0xffffffff
> and carry == 1
>
> Any ideas how I could make this work accurately in LLVM I...