Please use GitHub pull requests for new patches. Phabricator shutdown timeline
Changeset View
Changeset View
Standalone View
Standalone View
llvm/trunk/test/CodeGen/ARM/CGP/arm-cgp-overflow.ll
Show First 20 Lines • Show All 79 Lines • ▼ Show 20 Lines | |||||
define i32 @overflow_add_positive_const_limit(i8 zeroext %a) { | define i32 @overflow_add_positive_const_limit(i8 zeroext %a) { | ||||
%add = add i8 %a, 1 | %add = add i8 %a, 1 | ||||
%cmp = icmp ugt i8 %add, 128 | %cmp = icmp ugt i8 %add, 128 | ||||
%res = select i1 %cmp, i32 8, i32 16 | %res = select i1 %cmp, i32 8, i32 16 | ||||
ret i32 %res | ret i32 %res | ||||
} | } | ||||
; CHECK-LABEL: unsafe_add_underflow: | ; CHECK-LABEL: unsafe_add_underflow: | ||||
; CHECK: subs r0, #2 | ; CHECK: movs r1, #16 | ||||
; CHECK: uxtb [[EXT:r[0-9]+]], r0 | ; CHECK: cmp r0, #1 | ||||
; CHECK: cmp [[EXT]], #255 | ; CHECK: it eq | ||||
; CHECK: moveq r0, #8 | ; CHECK: moveq r1, #8 | ||||
; CHECK: mov r0, r1 | |||||
define i32 @unsafe_add_underflow(i8 zeroext %a) { | define i32 @unsafe_add_underflow(i8 zeroext %a) { | ||||
%add = add i8 %a, -2 | %add = add i8 %a, -2 | ||||
%cmp = icmp ugt i8 %add, 254 | %cmp = icmp ugt i8 %add, 254 | ||||
%res = select i1 %cmp, i32 8, i32 16 | %res = select i1 %cmp, i32 8, i32 16 | ||||
ret i32 %res | ret i32 %res | ||||
} | } | ||||
; CHECK-LABEL: safe_add_underflow: | ; CHECK-LABEL: safe_add_underflow: | ||||
▲ Show 20 Lines • Show All 150 Lines • Show Last 20 Lines |