]> granicus.if.org Git - llvm/commit
[InstCombine][NFC] Tests for 'unsigned add overflow' check
authorRoman Lebedev <lebedev.ri@gmail.com>
Thu, 5 Sep 2019 17:40:28 +0000 (17:40 +0000)
committerRoman Lebedev <lebedev.ri@gmail.com>
Thu, 5 Sep 2019 17:40:28 +0000 (17:40 +0000)
commitdaf74d92cf1e728d9d073d7d974501103e43a6a0
tree4884e3601a8fd9973f48ee66e79d161c4319264b
parent8451b2e55fa308498d7f1ddf60dfd0c111e3b5b1
[InstCombine][NFC] Tests for 'unsigned add overflow' check

----------------------------------------
Name: unsigned add, overflow, v0
  %add = add i8 %x, %y
  %ov = icmp ult i8 %add, %x
=>
  %agg = uadd_overflow i8 %x, %y
  %add = extractvalue {i8, i1} %agg, 0
  %ov = extractvalue {i8, i1} %agg, 1

Done: 1
Optimization is correct!

----------------------------------------
Name: unsigned add, overflow, v1
  %add = add i8 %x, %y
  %ov = icmp ult i8 %add, %y
=>
  %agg = uadd_overflow i8 %x, %y
  %add = extractvalue {i8, i1} %agg, 0
  %ov = extractvalue {i8, i1} %agg, 1

Done: 1
Optimization is correct!

----------------------------------------
Name: unsigned add, no overflow, v0
  %add = add i8 %x, %y
  %ov = icmp uge i8 %add, %x
=>
  %agg = uadd_overflow i8 %x, %y
  %add = extractvalue {i8, i1} %agg, 0
  %not.ov = extractvalue {i8, i1} %agg, 1
  %ov = xor %not.ov, -1

Done: 1
Optimization is correct!

----------------------------------------
Name: unsigned add, no overflow, v1
  %add = add i8 %x, %y
  %ov = icmp uge i8 %add, %y
=>
  %agg = uadd_overflow i8 %x, %y
  %add = extractvalue {i8, i1} %agg, 0
  %not.ov = extractvalue {i8, i1} %agg, 1
  %ov = xor %not.ov, -1

Done: 1
Optimization is correct!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@371098 91177308-0d34-0410-b5e6-96231b3b80d8
test/Transforms/InstCombine/unsigned-add-lack-of-overflow-check.ll [new file with mode: 0644]
test/Transforms/InstCombine/unsigned-add-overflow-check.ll [new file with mode: 0644]