blob: 92ad707c4087948b98aac488df4a4306489f5acb [file]
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
; RUN: llc -verify-machineinstrs -mtriple=powerpc64le-unknown-linux-gnu \
; RUN: -mcpu=future < %s | FileCheck %s
; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu \
; RUN: -mcpu=future < %s | FileCheck %s
; Test Post Quantum Cryptography Acceleration instructions
define <4 x i32> @test_xvadduwm(<4 x i32> %a, <4 x i32> %b) {
; CHECK-LABEL: test_xvadduwm:
; CHECK: # %bb.0:
; CHECK-NEXT: xvadduwm 34, 34, 35
; CHECK-NEXT: blr
%res = add <4 x i32> %a, %b
ret <4 x i32> %res
}
define <8 x i16> @test_xvadduhm(<8 x i16> %a, <8 x i16> %b) {
; CHECK-LABEL: test_xvadduhm:
; CHECK: # %bb.0:
; CHECK-NEXT: xvadduhm 34, 34, 35
; CHECK-NEXT: blr
%res = add <8 x i16> %a, %b
ret <8 x i16> %res
}
define <4 x i32> @test_xvsubuwm(<4 x i32> %a, <4 x i32> %b) {
; CHECK-LABEL: test_xvsubuwm:
; CHECK: # %bb.0:
; CHECK-NEXT: xvsubuwm 34, 34, 35
; CHECK-NEXT: blr
%res = sub <4 x i32> %a, %b
ret <4 x i32> %res
}
define <8 x i16> @test_xvsubuhm(<8 x i16> %a, <8 x i16> %b) {
; CHECK-LABEL: test_xvsubuhm:
; CHECK: # %bb.0:
; CHECK-NEXT: xvsubuhm 34, 34, 35
; CHECK-NEXT: blr
%res = sub <8 x i16> %a, %b
ret <8 x i16> %res
}
define <4 x i32> @test_xvmuluwm(<4 x i32> %a, <4 x i32> %b) {
; CHECK-LABEL: test_xvmuluwm:
; CHECK: # %bb.0:
; CHECK-NEXT: xvmuluwm 34, 34, 35
; CHECK-NEXT: blr
%res = mul <4 x i32> %a, %b
ret <4 x i32> %res
}
define <8 x i16> @test_xvmuluhm(<8 x i16> %a, <8 x i16> %b) {
; CHECK-LABEL: test_xvmuluhm:
; CHECK: # %bb.0:
; CHECK-NEXT: xvmuluhm 34, 34, 35
; CHECK-NEXT: blr
%res = mul <8 x i16> %a, %b
ret <8 x i16> %res
}
declare <4 x i32> @llvm.ppc.altivec.vmulhsw(<4 x i32>, <4 x i32>)
define <4 x i32> @test_xvmulhsw(<4 x i32> %a, <4 x i32> %b) {
; CHECK-LABEL: test_xvmulhsw:
; CHECK: # %bb.0:
; CHECK-NEXT: xvmulhsw 34, 34, 35
; CHECK-NEXT: blr
%res = call <4 x i32> @llvm.ppc.altivec.vmulhsw(<4 x i32> %a, <4 x i32> %b)
ret <4 x i32> %res
}
declare <4 x i32> @llvm.ppc.altivec.vmulhuw(<4 x i32>, <4 x i32>)
define <4 x i32> @test_xvmulhuw(<4 x i32> %a, <4 x i32> %b) {
; CHECK-LABEL: test_xvmulhuw:
; CHECK: # %bb.0:
; CHECK-NEXT: xvmulhuw 34, 34, 35
; CHECK-NEXT: blr
%res = call <4 x i32> @llvm.ppc.altivec.vmulhuw(<4 x i32> %a, <4 x i32> %b)
ret <4 x i32> %res
}
declare <8 x i16> @llvm.ppc.altivec.vmulhsh(<8 x i16>, <8 x i16>)
define <8 x i16> @test_xvmulhsh(<8 x i16> %a, <8 x i16> %b) {
; CHECK-LABEL: test_xvmulhsh:
; CHECK: # %bb.0:
; CHECK-NEXT: xvmulhsh 34, 34, 35
; CHECK-NEXT: blr
%res = call <8 x i16> @llvm.ppc.altivec.vmulhsh(<8 x i16> %a, <8 x i16> %b)
ret <8 x i16> %res
}
declare <8 x i16> @llvm.ppc.altivec.vmulhuh(<8 x i16>, <8 x i16>)
define <8 x i16> @test_xvmulhuh(<8 x i16> %a, <8 x i16> %b) {
; CHECK-LABEL: test_xvmulhuh:
; CHECK: # %bb.0:
; CHECK-NEXT: xvmulhuh 34, 34, 35
; CHECK-NEXT: blr
%res = call <8 x i16> @llvm.ppc.altivec.vmulhuh(<8 x i16> %a, <8 x i16> %b)
ret <8 x i16> %res
}