Displaying 2 results from an estimated 2 matches for "res_i64".
Did you mean:
res_i1
2016 May 09
2
x.with.overflow semantics question
CGP also relies on the add being a simple two's complement add, since it will transform
define void @test1(i64 %a, i64 %b, i64* %res_i64, i1* %res_i1) {
entry:
%add = add i64 %b, %a
%cmp = icmp ult i64 %add, %a
store i1 %cmp, i1* %res_i1
store i64 %add, i64* %res_i64
ret void
}
to
define void @test1(i64 %a, i64 %b, i64* %res_i64, i1* %res_i1) {
entry:
%uadd.overflow = call { i64, i1 } @llvm.uadd.with.overflow.i64...
2016 May 08
3
x.with.overflow semantics question
Hi Pete,
> Or do you mean that the result of an add may not even be defined? In
that case would reading it be considered UB in the case where the
overflow bit was set?
Yeah, this is the case I'm worried about: that for example
sadd.with.overflow(INT_MAX, 1) might be designed to return { poison,
true } instead of giving a useful result in the first element of the struct.
John