@@ -840,6 +840,33 @@ let SubtargetPredicate = HasDot9Insts, IsDOT=1 in {
840
840
defm V_DOT2_BF16_BF16 : VOP3Inst<"v_dot2_bf16_bf16", VOP3_DOT_Profile<VOP_I16_V2I16_V2I16_I16>, int_amdgcn_fdot2_bf16_bf16>;
841
841
}
842
842
843
+ class VOP_Pseudo_Scalar<RegisterClass Dst, RegisterOperand SrcOp,
844
+ ValueType dstVt, ValueType srcVt = dstVt>
845
+ : VOPProfile<[dstVt, srcVt, untyped, untyped]> {
846
+ let DstRC = VOPDstOperand<Dst>;
847
+ let Src0RC64 = SrcOp;
848
+
849
+ let HasOMod = 1;
850
+ let HasModifiers = 1;
851
+ }
852
+
853
+ def VOP_Pseudo_Scalar_F32 : VOP_Pseudo_Scalar<SReg_32_XEXEC, SSrc_f32, f32>;
854
+ def VOP_Pseudo_Scalar_F16 : VOP_Pseudo_Scalar<SReg_32_XEXEC, SSrc_f16, f32, f16>;
855
+
856
+ let SubtargetPredicate = HasPseudoScalarTrans, TRANS = 1,
857
+ isReMaterializable = 1 in {
858
+ defm V_S_EXP_F32 : VOP3PseudoScalarInst<"v_s_exp_f32", VOP_Pseudo_Scalar_F32>;
859
+ defm V_S_EXP_F16 : VOP3PseudoScalarInst<"v_s_exp_f16", VOP_Pseudo_Scalar_F16>;
860
+ defm V_S_LOG_F32 : VOP3PseudoScalarInst<"v_s_log_f32", VOP_Pseudo_Scalar_F32>;
861
+ defm V_S_LOG_F16 : VOP3PseudoScalarInst<"v_s_log_f16", VOP_Pseudo_Scalar_F16>;
862
+ defm V_S_RCP_F32 : VOP3PseudoScalarInst<"v_s_rcp_f32", VOP_Pseudo_Scalar_F32>;
863
+ defm V_S_RCP_F16 : VOP3PseudoScalarInst<"v_s_rcp_f16", VOP_Pseudo_Scalar_F16>;
864
+ defm V_S_RSQ_F32 : VOP3PseudoScalarInst<"v_s_rsq_f32", VOP_Pseudo_Scalar_F32>;
865
+ defm V_S_RSQ_F16 : VOP3PseudoScalarInst<"v_s_rsq_f16", VOP_Pseudo_Scalar_F16>;
866
+ defm V_S_SQRT_F32 : VOP3PseudoScalarInst<"v_s_sqrt_f32", VOP_Pseudo_Scalar_F32>;
867
+ defm V_S_SQRT_F16 : VOP3PseudoScalarInst<"v_s_sqrt_f16", VOP_Pseudo_Scalar_F16>;
868
+ }
869
+
843
870
//===----------------------------------------------------------------------===//
844
871
// Integer Clamp Patterns
845
872
//===----------------------------------------------------------------------===//
@@ -906,6 +933,16 @@ defm V_MINIMUMMAXIMUM_F32 : VOP3Only_Realtriple_gfx12<0x26c>;
906
933
defm V_MAXIMUMMINIMUM_F32 : VOP3Only_Realtriple_gfx12<0x26d>;
907
934
defm V_MINIMUMMAXIMUM_F16 : VOP3Only_Realtriple_t16_gfx12<0x26e>;
908
935
defm V_MAXIMUMMINIMUM_F16 : VOP3Only_Realtriple_t16_gfx12<0x26f>;
936
+ defm V_S_EXP_F32 : VOP3Only_Real_Base_gfx12<0x280>;
937
+ defm V_S_EXP_F16 : VOP3Only_Real_Base_gfx12<0x281>;
938
+ defm V_S_LOG_F32 : VOP3Only_Real_Base_gfx12<0x282>;
939
+ defm V_S_LOG_F16 : VOP3Only_Real_Base_gfx12<0x283>;
940
+ defm V_S_RCP_F32 : VOP3Only_Real_Base_gfx12<0x284>;
941
+ defm V_S_RCP_F16 : VOP3Only_Real_Base_gfx12<0x285>;
942
+ defm V_S_RSQ_F32 : VOP3Only_Real_Base_gfx12<0x286>;
943
+ defm V_S_RSQ_F16 : VOP3Only_Real_Base_gfx12<0x287>;
944
+ defm V_S_SQRT_F32 : VOP3Only_Real_Base_gfx12<0x288>;
945
+ defm V_S_SQRT_F16 : VOP3Only_Real_Base_gfx12<0x289>;
909
946
defm V_MAD_CO_U64_U32 : VOP3be_Real_with_name_gfx12<0x2fe, "V_MAD_U64_U32", "v_mad_co_u64_u32">;
910
947
defm V_MAD_CO_I64_I32 : VOP3be_Real_with_name_gfx12<0x2ff, "V_MAD_I64_I32", "v_mad_co_i64_i32">;
911
948
defm V_MINIMUM_F64 : VOP3Only_Real_Base_gfx12<0x341>;
0 commit comments