Lines Matching refs:f16
237 [(set f16:$vdst, (SIfptrunc_round_upward f32:$src0))]>;
241 [(set f16:$vdst, (SIfptrunc_round_downward f32:$src0))]>;
1135 (f64 (any_fpextend f16:$src)),
1146 (i32 (fp_to_sint f16:$src)),
1151 (i32 (fp_to_uint f16:$src)),
1156 (f16 (sint_to_fp i32:$src)),
1161 (f16 (uint_to_fp i32:$src)),
1222 def : FMADPat <f16, V_MAC_F16_e64>;
1248 def : VOPSelectPat <f16>;
1505 def : BitConvert <i16, f16, VGPR_32>;
1506 def : BitConvert <f16, i16, VGPR_32>;
1507 def : BitConvert <f16, bf16, VGPR_32>;
1508 def : BitConvert <bf16, f16, VGPR_32>;
1510 def : BitConvert <i16, f16, SReg_32>;
1511 def : BitConvert <f16, i16, SReg_32>;
1512 def : BitConvert <f16, bf16, SReg_32>;
1513 def : BitConvert <bf16, f16, SReg_32>;
1874 def : ClampPat<V_MAX_F16_e64, f16>;
1876 def : ClampPat<V_MAX_F16_t16_e64, f16>;
1878 def : ClampPat<V_MAX_F16_fake16_e64, f16>;
1908 foreach fp16vt = [f16, bf16] in {
2032 foreach fp16vt = [f16, bf16] in {
2103 foreach fp16vt = [f16, bf16] in {
2135 } // End foreach fp16vt = [f16, bf16]
2170 (VGPRImm<(f16 fpimm)>:$imm),
2171 (V_MOV_B32_e32 (f16 (bitcast_fpimm_to_i32 $imm)))
2208 (f16 fpimm:$imm),
2592 def : FPToI1Pat<V_CMP_EQ_F16_e64, CONST.FP16_ONE, i16, f16, fp_to_uint>;
2593 def : FPToI1Pat<V_CMP_EQ_F16_e64, CONST.FP16_NEG_ONE, i16, f16, fp_to_sint>;
2597 def : FPToI1Pat<V_CMP_EQ_F16_t16_e64, CONST.FP16_ONE, i16, f16, fp_to_uint>;
2598 def : FPToI1Pat<V_CMP_EQ_F16_t16_e64, CONST.FP16_NEG_ONE, i16, f16, fp_to_sint>;
2706 (f16 (sint_to_fp i1:$src)),
2715 (f16 (sint_to_fp i1:$src)),
2724 (f16 (uint_to_fp i1:$src)),
2732 (f16 (uint_to_fp i1:$src)),
2956 foreach vt = [f16, v2f16, f32, v2f32, f64] in {
2969 (fcanonicalize (f16 (VOP3Mods f16:$src, i32:$src_mods))),
2974 (fcanonicalize (f16 (fneg (VOP3Mods f16:$src, i32:$src_mods)))),
2981 (fcanonicalize (f16 (VOP3Mods f16:$src, i32:$src_mods))),
2986 (fcanonicalize (f16 (fneg (VOP3Mods f16:$src, i32:$src_mods)))),
3045 (fcanonicalize (f16 (VOP3Mods f16:$src, i32:$src_mods))),
3051 (fcanonicalize (f16 (VOP3Mods f16:$src, i32:$src_mods))),
3066 // this with a max. For f16/f32 it's a wash, but prefer max when
3069 // FIXME: Lowering f32/f16 with max is worse since we can use a
3105 (fma (f16 (VOP3NoMods f32:$src0)),
3106 (f16 (VOP3NoMods f32:$src1)),
3107 (f16 (VOP3NoMods f32:$src2))),
3113 (fma (f16 (VOP3NoMods f32:$src0)),
3114 (f16 (VOP3NoMods f32:$src1)),
3115 (f16 (VOP3NoMods f32:$src2))),
3157 (v2f16 (UniformBinFrag<build_vector> (f16 SReg_32:$src1), (f16 FP_ZERO))),
3162 (v2f16 (DivergentBinFrag<build_vector> (f16 VGPR_32:$src1), (f16 FP_ZERO))),
3280 (v2f16 (is_canonicalized_2<build_vector> (f16 (VOP3Mods (f16 VGPR_32:$src0), i32:$src0_mods)),
3281 (f16 (VOP3Mods (f16 VGPR_32:$src1), i32:$src1_mods)))),
3297 (v2f16 (scalar_to_vector f16:$src0)),
3312 (v4f16 (scalar_to_vector f16:$src0)),
3568 defm : FPMed3Pat<f16, V_MED3_F16_e64>;
3607 def : FPMinMaxPat<V_MINMAX_F16_e64, f16, fmaxnum_like, fminnum_like_oneuse>;
3608 def : FPMinMaxPat<V_MAXMIN_F16_e64, f16, fminnum_like, fmaxnum_like_oneuse>;
3611 def : FPMinCanonMaxPat<V_MINMAX_F16_e64, f16, fmaxnum_like, fminnum_like_oneuse>;
3612 def : FPMinCanonMaxPat<V_MAXMIN_F16_e64, f16, fminnum_like, fmaxnum_like_oneuse>;
3623 def : FPMinMaxPat<V_MINIMUMMAXIMUM_F16_e64, f16, DivergentBinFrag<fmaximum>, fminimum_oneuse>;
3624 def : FPMinMaxPat<V_MAXIMUMMINIMUM_F16_e64, f16, DivergentBinFrag<fminimum>, fmaximum_oneuse>;
3627 def : FPMinCanonMaxPat<V_MINIMUMMAXIMUM_F16_e64, f16, DivergentBinFrag<fmaximum>, fminimum_oneuse>;
3628 def : FPMinCanonMaxPat<V_MAXIMUMMINIMUM_F16_e64, f16, DivergentBinFrag<fminimum>, fmaximum_oneuse>;
3673 // TODO: For f32/f16, it's not a clear win on code size to use ldexp