xref: /llvm-project/llvm/test/CodeGen/PowerPC/vec_mul_even_odd.ll (revision a538b0f023e858d0f71a1295bb9084e851ddd361)
10cfa7b7aSKit Barton; Check the vector multiply even/odd word instructions that were added in P8
20cfa7b7aSKit Barton;
3*a538b0f0SEhsan Amiri; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu -mcpu=pwr8 < %s | FileCheck %s
4*a538b0f0SEhsan Amiri; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu -mcpu=pwr8 -mattr=-vsx < %s | FileCheck %s
50cfa7b7aSKit Barton
60cfa7b7aSKit Bartondeclare <2 x i64> @llvm.ppc.altivec.vmuleuw(<4 x i32>, <4 x i32>) nounwind readnone
70cfa7b7aSKit Bartondeclare <2 x i64> @llvm.ppc.altivec.vmulesw(<4 x i32>, <4 x i32>) nounwind readnone
80cfa7b7aSKit Bartondeclare <2 x i64> @llvm.ppc.altivec.vmulouw(<4 x i32>, <4 x i32>) nounwind readnone
90cfa7b7aSKit Bartondeclare <2 x i64> @llvm.ppc.altivec.vmulosw(<4 x i32>, <4 x i32>) nounwind readnone
100cfa7b7aSKit Bartondeclare <4 x i32> @llvm.ppc.altivec.vmuluwm(<4 x i32>, <4 x i32>) nounwind readnone
110cfa7b7aSKit Barton
120cfa7b7aSKit Bartondefine <2 x i64> @test_vmuleuw(<4 x i32> %x, <4 x i32> %y) nounwind readnone {
130cfa7b7aSKit Barton       %tmp = tail call <2 x i64> @llvm.ppc.altivec.vmuleuw(<4 x i32> %x, <4 x i32> %y)
140cfa7b7aSKit Barton       ret <2 x i64> %tmp
150cfa7b7aSKit Barton; CHECK: vmuleuw 2, 2, 3
160cfa7b7aSKit Barton}
170cfa7b7aSKit Barton
180cfa7b7aSKit Bartondefine <2 x i64> @test_vmulesw(<4 x i32> %x, <4 x i32> %y) nounwind readnone {
190cfa7b7aSKit Barton       %tmp = tail call <2 x i64> @llvm.ppc.altivec.vmulesw(<4 x i32> %x, <4 x i32> %y)
200cfa7b7aSKit Barton       ret <2 x i64> %tmp
210cfa7b7aSKit Barton; CHECK: vmulesw 2, 2, 3
220cfa7b7aSKit Barton}
230cfa7b7aSKit Barton
240cfa7b7aSKit Bartondefine <2 x i64> @test_vmulouw(<4 x i32> %x, <4 x i32> %y) nounwind readnone {
250cfa7b7aSKit Barton       %tmp = tail call <2 x i64> @llvm.ppc.altivec.vmulouw(<4 x i32> %x, <4 x i32> %y)
260cfa7b7aSKit Barton       ret <2 x i64> %tmp
270cfa7b7aSKit Barton; CHECK: vmulouw 2, 2, 3
280cfa7b7aSKit Barton}
290cfa7b7aSKit Barton
300cfa7b7aSKit Bartondefine <2 x i64> @test_vmulosw(<4 x i32> %x, <4 x i32> %y) nounwind readnone {
310cfa7b7aSKit Barton       %tmp = tail call <2 x i64> @llvm.ppc.altivec.vmulosw(<4 x i32> %x, <4 x i32> %y)
320cfa7b7aSKit Barton       ret <2 x i64> %tmp
330cfa7b7aSKit Barton; CHECK: vmulosw 2, 2, 3
340cfa7b7aSKit Barton}
350cfa7b7aSKit Barton
360cfa7b7aSKit Bartondefine <4 x i32> @test_vmuluwm(<4 x i32> %x, <4 x i32> %y) nounwind readnone {
3720d3981eSKit Barton	%tmp = mul <4 x i32> %x, %y
380cfa7b7aSKit Barton	ret <4 x i32> %tmp
3920d3981eSKit Barton; CHECK-LABEL: test_vmuluwm
400cfa7b7aSKit Barton; CHECK: vmuluwm 2, 2, 3
410cfa7b7aSKit Barton}
420cfa7b7aSKit Barton
43