Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 16d2065

Browse files
committed
[InstCombine] Add ub-safe negation patterns (PR27817)
1 parent b8a2cf6 commit 16d2065

File tree

1 file changed

+23
-0
lines changed

1 file changed

+23
-0
lines changed

llvm/test/Transforms/InstCombine/select.ll

+23
Original file line numberDiff line numberDiff line change
@@ -1348,6 +1348,29 @@ define i32 @PR27137(i32 %a) {
13481348
ret i32 %s1
13491349
}
13501350

1351+
; ub-safe negation pattern
1352+
define i32 @PR27817(i32 %x) {
1353+
; CHECK-LABEL: @PR27817(
1354+
; CHECK-NEXT: [[SUB:%.*]] = sub i32 0, [[X:%.*]]
1355+
; CHECK-NEXT: ret i32 [[SUB]]
1356+
;
1357+
%cmp = icmp eq i32 %x, -2147483648
1358+
%sub = sub i32 0, %x
1359+
%sel = select i1 %cmp, i32 -2147483648, i32 %sub
1360+
ret i32 %sel
1361+
}
1362+
1363+
define i32 @PR27817_nsw(i32 %x) {
1364+
; CHECK-LABEL: @PR27817_nsw(
1365+
; CHECK-NEXT: [[SUB:%.*]] = sub i32 0, [[X:%.*]]
1366+
; CHECK-NEXT: ret i32 [[SUB]]
1367+
;
1368+
%cmp = icmp eq i32 %x, -2147483648
1369+
%sub = sub nsw i32 0, %x
1370+
%sel = select i1 %cmp, i32 -2147483648, i32 %sub
1371+
ret i32 %sel
1372+
}
1373+
13511374
define i32 @select_icmp_slt0_xor(i32 %x) {
13521375
; CHECK-LABEL: @select_icmp_slt0_xor(
13531376
; CHECK-NEXT: [[TMP1:%.*]] = or i32 [[X:%.*]], -2147483648

0 commit comments

Comments
 (0)