diff options
author | Hal Finkel <hfinkel@anl.gov> | 2014-03-26 22:58:37 +0000 |
---|---|---|
committer | Hal Finkel <hfinkel@anl.gov> | 2014-03-26 22:58:37 +0000 |
commit | ee5f4bb6b3549d8c100f6084c0e430f802b1784c (patch) | |
tree | 174aed090b6551e797af4117ddd69827aa02b1df /test/CodeGen/PowerPC | |
parent | 7c3874103553fac204c7daeb8d3f6c15dc43c413 (diff) | |
download | llvm-ee5f4bb6b3549d8c100f6084c0e430f802b1784c.tar.gz llvm-ee5f4bb6b3549d8c100f6084c0e430f802b1784c.tar.bz2 llvm-ee5f4bb6b3549d8c100f6084c0e430f802b1784c.tar.xz |
[PowerPC] Generate VSX permutations for v2[fi]64 vectors
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@204873 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/CodeGen/PowerPC')
-rw-r--r-- | test/CodeGen/PowerPC/vsx.ll | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/test/CodeGen/PowerPC/vsx.ll b/test/CodeGen/PowerPC/vsx.ll index 36848427a5..2524251a20 100644 --- a/test/CodeGen/PowerPC/vsx.ll +++ b/test/CodeGen/PowerPC/vsx.ll @@ -422,3 +422,68 @@ define <2 x i64> @test47(<2 x float> %a) { ; CHECK: blr } +define <2 x double> @test50(double* %a) { + %v = load double* %a, align 8 + %w = insertelement <2 x double> undef, double %v, i32 0 + %x = insertelement <2 x double> %w, double %v, i32 1 + ret <2 x double> %x + +; CHECK-LABEL: @test50 +; CHECK: lxvdsx 34, 0, 3 +; CHECK: blr +} + +define <2 x double> @test51(<2 x double> %a, <2 x double> %b) { + %v = shufflevector <2 x double> %a, <2 x double> %b, <2 x i32> <i32 0, i32 0> + ret <2 x double> %v + +; CHECK-LABEL: @test51 +; CHECK: xxpermdi 34, 34, 34, 0 +; CHECK: blr +} + +define <2 x double> @test52(<2 x double> %a, <2 x double> %b) { + %v = shufflevector <2 x double> %a, <2 x double> %b, <2 x i32> <i32 0, i32 2> + ret <2 x double> %v + +; CHECK-LABEL: @test52 +; CHECK: xxpermdi 34, 34, 35, 0 +; CHECK: blr +} + +define <2 x double> @test53(<2 x double> %a, <2 x double> %b) { + %v = shufflevector <2 x double> %a, <2 x double> %b, <2 x i32> <i32 2, i32 0> + ret <2 x double> %v + +; CHECK-LABEL: @test53 +; CHECK: xxpermdi 34, 35, 34, 0 +; CHECK: blr +} + +define <2 x double> @test54(<2 x double> %a, <2 x double> %b) { + %v = shufflevector <2 x double> %a, <2 x double> %b, <2 x i32> <i32 1, i32 2> + ret <2 x double> %v + +; CHECK-LABEL: @test54 +; CHECK: xxpermdi 34, 34, 35, 1 +; CHECK: blr +} + +define <2 x double> @test55(<2 x double> %a, <2 x double> %b) { + %v = shufflevector <2 x double> %a, <2 x double> %b, <2 x i32> <i32 1, i32 3> + ret <2 x double> %v + +; CHECK-LABEL: @test55 +; CHECK: xxpermdi 34, 34, 35, 3 +; CHECK: blr +} + +define <2 x i64> @test56(<2 x i64> %a, <2 x i64> %b) { + %v = shufflevector <2 x i64> %a, <2 x i64> %b, <2 x i32> <i32 1, i32 3> + ret <2 x i64> %v + +; CHECK-LABEL: @test56 +; CHECK: xxpermdi 34, 34, 35, 3 +; CHECK: blr +} + |