diff --git a/test/Transforms/InstCombine/and.ll b/test/Transforms/InstCombine/and.ll index 455be22a9f3..9f7f49a60d9 100644 --- a/test/Transforms/InstCombine/and.ll +++ b/test/Transforms/InstCombine/and.ll @@ -28,4 +28,13 @@ bool "test4"(bool %A) { ret bool %B } +int "test5"(int %A) { + %B = and int %A, %A + ret int %B +} + +bool "test6"(bool %A) { + %B = and bool %A, %A + ret bool %B +} diff --git a/test/Transforms/InstCombine/or.ll b/test/Transforms/InstCombine/or.ll index 76d620eb334..34b9cc215b7 100644 --- a/test/Transforms/InstCombine/or.ll +++ b/test/Transforms/InstCombine/or.ll @@ -33,9 +33,30 @@ bool "test5"(bool %A) { ret bool %B } -int "test5"(int %A) { +int "test6"(int %A) { %B = xor int %A, 0 ret int %B } +bool "test7"(bool %A) { + %B = xor bool %A, %A + ret bool %B +} + +int "test8"(int %A) { + %B = xor int %A, %A + ret int %B +} + +bool "test9"(bool %A) { + %B = or bool %A, %A + ret bool %B +} + +int "test10"(int %A) { + %B = or int %A, %A + ret int %B +} + + diff --git a/test/Transforms/InstCombine/set.ll b/test/Transforms/InstCombine/set.ll new file mode 100644 index 00000000000..264bb353c31 --- /dev/null +++ b/test/Transforms/InstCombine/set.ll @@ -0,0 +1,39 @@ +; This test makes sure that these instructions are properly eliminated. +; + +; RUN: if as < %s | opt -instcombine -dce | dis | grep set +; RUN: then exit 1 +; RUN: else exit 0 +; RUN: fi + +implementation + +bool "test1"(int %A) { + %B = seteq int %A, %A + ret bool %B +} + +bool "test2"(int %A) { + %B = setne int %A, %A + ret bool %B +} + +bool "test3"(int %A) { + %B = setlt int %A, %A + ret bool %B +} + +bool "test4"(int %A) { + %B = setgt int %A, %A + ret bool %B +} + +bool "test5"(int %A) { + %B = setle int %A, %A + ret bool %B +} + +bool "test6"(int %A) { + %B = setge int %A, %A + ret bool %B +} diff --git a/test/Transforms/InstCombine/sub.ll b/test/Transforms/InstCombine/sub.ll new file mode 100644 index 00000000000..15903b678cb --- /dev/null +++ b/test/Transforms/InstCombine/sub.ll @@ -0,0 +1,21 @@ +; This test makes sure that these instructions are properly eliminated. +; + +; RUN: if as < %s | opt -instcombine -dce | dis | grep sub +; RUN: then exit 1 +; RUN: else exit 0 +; RUN: fi + +implementation + +int "test1"(int %A) { + %B = sub int %A, %A ; ISA constant 0 + ret int %B +} + +int "test2"(int %A) { + %B = sub int %A, 0 + ret int %B +} + +