diff options
author | Hal Finkel <hfinkel@anl.gov> | 2014-03-29 16:04:40 +0000 |
---|---|---|
committer | Hal Finkel <hfinkel@anl.gov> | 2014-03-29 16:04:40 +0000 |
commit | 7563821402165cfe7d9b33ee6a5706b65503d306 (patch) | |
tree | 17f2cb1e765a3c053971fad033c97ed3de3c25c4 /test/CodeGen/PowerPC | |
parent | e2c0b61c4f1d6945c9494889d025402a65b51b45 (diff) | |
download | llvm-7563821402165cfe7d9b33ee6a5706b65503d306.tar.gz llvm-7563821402165cfe7d9b33ee6a5706b65503d306.tar.bz2 llvm-7563821402165cfe7d9b33ee6a5706b65503d306.tar.xz |
[PowerPC] Handle v2i64 comparisons
v2i64 is a legal type under VSX, however we don't have native vector
comparisons. We can handle eq/ne by casting it to an Altivec type, but
everything else must be expanded.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@205106 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/CodeGen/PowerPC')
-rw-r--r-- | test/CodeGen/PowerPC/vsx.ll | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/test/CodeGen/PowerPC/vsx.ll b/test/CodeGen/PowerPC/vsx.ll index ec10bc683b..f3e325f322 100644 --- a/test/CodeGen/PowerPC/vsx.ll +++ b/test/CodeGen/PowerPC/vsx.ll @@ -547,3 +547,36 @@ define double @test64(<2 x double> %a) { ; CHECK: blr } +define <2 x i1> @test65(<2 x i64> %a, <2 x i64> %b) { + %w = icmp eq <2 x i64> %a, %b + ret <2 x i1> %w + +; CHECK-LABEL: @test65 +; CHECK: vcmpequw 2, 2, 3 +; CHECK: blr +} + +define <2 x i1> @test66(<2 x i64> %a, <2 x i64> %b) { + %w = icmp ne <2 x i64> %a, %b + ret <2 x i1> %w + +; CHECK-LABEL: @test66 +; CHECK: vcmpequw {{[0-9]+}}, 2, 3 +; CHECK: xxlnor 34, {{[0-9]+}}, {{[0-9]+}} +; CHECK: blr +} + +define <2 x i1> @test67(<2 x i64> %a, <2 x i64> %b) { + %w = icmp ult <2 x i64> %a, %b + ret <2 x i1> %w + +; CHECK-LABEL: @test67 +; This should scalarize, and the current code quality is not good. +; CHECK: stxvd2x +; CHECK: stxvd2x +; CHECK: cmpld +; CHECK: cmpld +; CHECK: lxvd2x +; CHECK: blr +} + |