forked from OSchip/llvm-project
[PPC] Add intrinsic mapping to the xscvhpsp instruction
add an intrinsic to expose the 'VSX Scalar Convert Half-Precision to Single-Precision' instruction. Differential review: https://reviews.llvm.org/D26536 llvm-svn: 286862
This commit is contained in:
parent
544220fc0b
commit
a435e07de8
|
@ -867,6 +867,9 @@ def int_ppc_vsx_xvtstdcdp :
|
|||
def int_ppc_vsx_xvtstdcsp :
|
||||
PowerPC_VSX_Intrinsic<"xvtstdcsp", [llvm_v4i32_ty],
|
||||
[llvm_v4f32_ty,llvm_i32_ty], [IntrNoMem]>;
|
||||
def int_ppc_vsx_xvcvhpsp :
|
||||
PowerPC_VSX_Intrinsic<"xvcvhpsp", [llvm_v4f32_ty],
|
||||
[llvm_v8i16_ty],[IntrNoMem]>;
|
||||
}
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
|
|
@ -2132,6 +2132,7 @@ let AddedComplexity = 400, Predicates = [HasP9Vector] in {
|
|||
def XSCVSDQP : X_VT5_XO5_VB5_TyVB<63, 10, 836, "xscvsdqp", vfrc, []>;
|
||||
def XSCVUDQP : X_VT5_XO5_VB5_TyVB<63, 2, 836, "xscvudqp", vfrc, []>;
|
||||
|
||||
let UseVSXReg = 1 in {
|
||||
//===--------------------------------------------------------------------===//
|
||||
// Round to Floating-Point Integer Instructions
|
||||
|
||||
|
@ -2148,6 +2149,14 @@ let AddedComplexity = 400, Predicates = [HasP9Vector] in {
|
|||
[(set v4f32:$XT,
|
||||
(int_ppc_vsx_xvcvsphp v4f32:$XB))]>;
|
||||
|
||||
} // UseVSXReg = 1
|
||||
|
||||
// Pattern for matching Vector HP -> Vector SP intrinsic. Defined as a
|
||||
// seperate pattern so that it can convert the input register class from
|
||||
// VRRC(v8i16) to VSRC.
|
||||
def : Pat<(v4f32 (int_ppc_vsx_xvcvhpsp v8i16:$A)),
|
||||
(v4f32 (XVCVHPSP (COPY_TO_REGCLASS $A, VSRC)))>;
|
||||
|
||||
class Z23_VT5_R1_VB5_RMC2_EX1<bits<6> opcode, bits<8> xo, bit ex, string opc,
|
||||
list<dag> pattern>
|
||||
: Z23Form_1<opcode, xo,
|
||||
|
|
|
@ -331,4 +331,15 @@ entry:
|
|||
; Function Attrs: nounwind readnone
|
||||
declare <2 x i64> @llvm.ppc.vsx.xvtstdcdp(<2 x double> %a, i32 %b)
|
||||
|
||||
define <4 x float> @testXVCVHPSP(<8 x i16> %a) {
|
||||
entry:
|
||||
%0 = tail call <4 x float>@llvm.ppc.vsx.xvcvhpsp(<8 x i16> %a)
|
||||
ret <4 x float> %0
|
||||
; CHECK-LABEL: testXVCVHPSP
|
||||
; CHECK: xvcvhpsp 34, 34
|
||||
; CHECK: blr
|
||||
}
|
||||
; Function Attrs: nounwind readnone
|
||||
declare <4 x float>@llvm.ppc.vsx.xvcvhpsp(<8 x i16>)
|
||||
|
||||
declare void @sink(...)
|
||||
|
|
Loading…
Reference in New Issue