diff options
author | Craig Topper <craig.topper@intel.com> | 2017-07-03 05:54:14 +0000 |
---|---|---|
committer | Craig Topper <craig.topper@intel.com> | 2017-07-03 05:54:14 +0000 |
commit | 1a79c38d5e2b9d90250596fdb9572e803bcd13b5 (patch) | |
tree | 603e3cc7f215910e073894657751367f6b1cdab1 | |
parent | 32fce4d647602e77a68953c08718c4347c2800f3 (diff) | |
download | bcm5719-llvm-1a79c38d5e2b9d90250596fdb9572e803bcd13b5.tar.gz bcm5719-llvm-1a79c38d5e2b9d90250596fdb9572e803bcd13b5.zip |
[InstCombine] Add test cases for BITWISE_OP( BSWAP(x), CONSTANT ) -> BSWAP( BITWISE_OP(x, BSWAP(CONSTANT) ) ) with splat vectors. NFC
llvm-svn: 307001
-rw-r--r-- | llvm/test/Transforms/InstCombine/bswap-fold.ll | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/llvm/test/Transforms/InstCombine/bswap-fold.ll b/llvm/test/Transforms/InstCombine/bswap-fold.ll index 3edd7b338ae..64e80c1b29e 100644 --- a/llvm/test/Transforms/InstCombine/bswap-fold.ll +++ b/llvm/test/Transforms/InstCombine/bswap-fold.ll @@ -247,6 +247,39 @@ define <2 x i32> @bs_xor32vec(<2 x i32> %a, <2 x i32> %b) #0 { ret <2 x i32> %tmp3 } +define <2 x i32> @bs_and32ivec(<2 x i32> %a, <2 x i32> %b) #0 { +; CHECK-LABEL: @bs_and32ivec( +; CHECK-NEXT: [[TMP1:%.*]] = tail call <2 x i32> @llvm.bswap.v2i32(<2 x i32> [[A:%.*]]) +; CHECK-NEXT: [[TMP2:%.*]] = and <2 x i32> [[TMP1]], <i32 100001, i32 100001> +; CHECK-NEXT: ret <2 x i32> [[TMP2]] +; + %tmp1 = tail call <2 x i32> @llvm.bswap.v2i32(<2 x i32> %a) + %tmp2 = and <2 x i32> %tmp1, <i32 100001, i32 100001> + ret <2 x i32> %tmp2 +} + +define <2 x i32> @bs_or32ivec(<2 x i32> %a, <2 x i32> %b) #0 { +; CHECK-LABEL: @bs_or32ivec( +; CHECK-NEXT: [[TMP1:%.*]] = tail call <2 x i32> @llvm.bswap.v2i32(<2 x i32> [[A:%.*]]) +; CHECK-NEXT: [[TMP2:%.*]] = or <2 x i32> [[TMP1]], <i32 100001, i32 100001> +; CHECK-NEXT: ret <2 x i32> [[TMP2]] +; + %tmp1 = tail call <2 x i32> @llvm.bswap.v2i32(<2 x i32> %a) + %tmp2 = or <2 x i32> %tmp1, <i32 100001, i32 100001> + ret <2 x i32> %tmp2 +} + +define <2 x i32> @bs_xor32ivec(<2 x i32> %a, <2 x i32> %b) #0 { +; CHECK-LABEL: @bs_xor32ivec( +; CHECK-NEXT: [[TMP1:%.*]] = tail call <2 x i32> @llvm.bswap.v2i32(<2 x i32> [[A:%.*]]) +; CHECK-NEXT: [[TMP2:%.*]] = xor <2 x i32> [[TMP1]], <i32 100001, i32 100001> +; CHECK-NEXT: ret <2 x i32> [[TMP2]] +; + %tmp1 = tail call <2 x i32> @llvm.bswap.v2i32(<2 x i32> %a) + %tmp2 = xor <2 x i32> %tmp1, <i32 100001, i32 100001> + ret <2 x i32> %tmp2 +} + declare i16 @llvm.bswap.i16(i16) declare i32 @llvm.bswap.i32(i32) declare i64 @llvm.bswap.i64(i64) |