forked from OSchip/llvm-project
[ARM] FP16Pat and FullFP16Pat patterns. NFC.
Create and use FP16Pat FullFP16Pat helper patterns to make the difference explicit. Differential Revision: https://reviews.llvm.org/D42634 llvm-svn: 323640
This commit is contained in:
parent
02d4e50e9d
commit
3ddb7fb663
|
@ -1024,6 +1024,12 @@ class Thumb2DSPPat<dag pattern, dag result> : Pat<pattern, result> {
|
|||
class Thumb2DSPMulPat<dag pattern, dag result> : Pat<pattern, result> {
|
||||
list<Predicate> Predicates = [IsThumb2, UseMulOps, HasDSP];
|
||||
}
|
||||
class FP16Pat<dag pattern, dag result> : Pat<pattern, result> {
|
||||
list<Predicate> Predicates = [HasFP16];
|
||||
}
|
||||
class FullFP16Pat<dag pattern, dag result> : Pat<pattern, result> {
|
||||
list<Predicate> Predicates = [HasFullFP16];
|
||||
}
|
||||
//===----------------------------------------------------------------------===//
|
||||
// Thumb Instruction Format Definitions.
|
||||
//
|
||||
|
|
|
@ -674,8 +674,8 @@ def VCVTBHS: ASuI<0b11101, 0b11, 0b0010, 0b01, 0, (outs SPR:$Sd), (ins SPR:$Sm),
|
|||
Requires<[HasFP16]>,
|
||||
Sched<[WriteFPCVT]>;
|
||||
|
||||
def : Pat<(f32 (fpextend HPR:$Sm)),
|
||||
(VCVTBHS (COPY_TO_REGCLASS HPR:$Sm, SPR))>;
|
||||
def : FullFP16Pat<(f32 (fpextend HPR:$Sm)),
|
||||
(VCVTBHS (COPY_TO_REGCLASS HPR:$Sm, SPR))>;
|
||||
|
||||
def VCVTBSH: ASuI<0b11101, 0b11, 0b0011, 0b01, 0, (outs SPR:$Sd), (ins SPR:$Sm),
|
||||
/* FIXME */ IIC_fpCVTHS, "vcvtb", ".f16.f32\t$Sd, $Sm",
|
||||
|
@ -750,17 +750,17 @@ def VCVTTDH : ADuI<0b11101, 0b11, 0b0011, 0b11, 0,
|
|||
let Inst{5} = Dm{4};
|
||||
}
|
||||
|
||||
def : Pat<(fp_to_f16 SPR:$a),
|
||||
(i32 (COPY_TO_REGCLASS (VCVTBSH SPR:$a), GPR))>;
|
||||
def : FP16Pat<(fp_to_f16 SPR:$a),
|
||||
(i32 (COPY_TO_REGCLASS (VCVTBSH SPR:$a), GPR))>;
|
||||
|
||||
def : Pat<(fp_to_f16 (f64 DPR:$a)),
|
||||
(i32 (COPY_TO_REGCLASS (VCVTBDH DPR:$a), GPR))>;
|
||||
def : FP16Pat<(fp_to_f16 (f64 DPR:$a)),
|
||||
(i32 (COPY_TO_REGCLASS (VCVTBDH DPR:$a), GPR))>;
|
||||
|
||||
def : Pat<(f16_to_fp GPR:$a),
|
||||
(VCVTBHS (COPY_TO_REGCLASS GPR:$a, SPR))>;
|
||||
def : FP16Pat<(f16_to_fp GPR:$a),
|
||||
(VCVTBHS (COPY_TO_REGCLASS GPR:$a, SPR))>;
|
||||
|
||||
def : Pat<(f64 (f16_to_fp GPR:$a)),
|
||||
(VCVTBHD (COPY_TO_REGCLASS GPR:$a, SPR))>;
|
||||
def : FP16Pat<(f64 (f16_to_fp GPR:$a)),
|
||||
(VCVTBHD (COPY_TO_REGCLASS GPR:$a, SPR))>;
|
||||
|
||||
multiclass vcvt_inst<string opc, bits<2> rm,
|
||||
SDPatternOperator node = null_frag> {
|
||||
|
|
Loading…
Reference in New Issue