diff --git a/lib/Target/R600/SIInstrInfo.td b/lib/Target/R600/SIInstrInfo.td index 17b2141356b..544f0cb1fc1 100644 --- a/lib/Target/R600/SIInstrInfo.td +++ b/lib/Target/R600/SIInstrInfo.td @@ -821,6 +821,9 @@ class VOP1_Pseudo pattern, string opName> : VOP , SIMCInstr { let isPseudo = 1; + + field bits<8> vdst; + field bits<9> src0; } multiclass VOP1_m pattern, diff --git a/lib/Target/R600/SIInstructions.td b/lib/Target/R600/SIInstructions.td index ec86cc89af6..4c60647995d 100644 --- a/lib/Target/R600/SIInstructions.td +++ b/lib/Target/R600/SIInstructions.td @@ -1186,7 +1186,9 @@ def FLAT_STORE_DWORDX3 : FLAT_Store_Helper < // VOP1 Instructions //===----------------------------------------------------------------------===// -//def V_NOP : VOP1_ <0x00000000, "v_nop", []>; +let vdst = 0, src0 = 0 in { +defm V_NOP : VOP1_m , (outs), (ins), "v_nop", [], "v_nop">; +} let isMoveImm = 1 in { defm V_MOV_B32 : VOP1Inst , "v_mov_b32", VOP_I32_I32>; @@ -1237,7 +1239,7 @@ defm V_CVT_RPI_I32_F32 : VOP1Inst , "v_cvt_rpi_i32_f32", VOP_I32_F32, cvt_rpi_i32_f32>; defm V_CVT_FLR_I32_F32 : VOP1Inst , "v_cvt_flr_i32_f32", VOP_I32_F32, cvt_flr_i32_f32>; -//defm V_CVT_OFF_F32_I4 : VOP1_32 <0x0000000e, "v_cvt_off_f32_i4", []>; +defm V_CVT_OFF_F32_I4 : VOP1Inst , "v_cvt_off_f32_i4", VOP_F32_I32>; defm V_CVT_F32_F64 : VOP1Inst , "v_cvt_f32_f64", VOP_F32_F64, fround >; @@ -1335,16 +1337,24 @@ defm V_BFREV_B32 : VOP1Inst , "v_bfrev_b32", VOP_I32_I32>; defm V_FFBH_U32 : VOP1Inst , "v_ffbh_u32", VOP_I32_I32>; defm V_FFBL_B32 : VOP1Inst , "v_ffbl_b32", VOP_I32_I32>; defm V_FFBH_I32 : VOP1Inst , "v_ffbh_i32", VOP_I32_I32>; -//defm V_FREXP_EXP_I32_F64 : VOPInst <0x0000003c, "v_frexp_exp_i32_f64", VOP_I32_F32>; +defm V_FREXP_EXP_I32_F64 : VOP1Inst , "v_frexp_exp_i32_f64", + VOP_I32_F64 +>; defm V_FREXP_MANT_F64 : VOP1Inst , "v_frexp_mant_f64", VOP_F64_F64 >; defm V_FRACT_F64 : VOP1Inst , "v_fract_f64", VOP_F64_F64>; -//defm V_FREXP_EXP_I32_F32 : VOPInst <0x0000003f, "v_frexp_exp_i32_f32", VOP_I32_F32>; +defm V_FREXP_EXP_I32_F32 : VOP1Inst , "v_frexp_exp_i32_f32", + VOP_I32_F32 +>; defm V_FREXP_MANT_F32 : VOP1Inst , "v_frexp_mant_f32", VOP_F32_F32 >; -//def V_CLREXCP : VOP1_ <0x00000041, "v_clrexcp", []>; +let vdst = 0, src0 = 0 in { +defm V_CLREXCP : VOP1_m , (outs), (ins), "v_clrexcp", [], + "v_clrexcp" +>; +} defm V_MOVRELD_B32 : VOP1Inst , "v_movreld_b32", VOP_I32_I32>; defm V_MOVRELS_B32 : VOP1Inst , "v_movrels_b32", VOP_I32_I32>; defm V_MOVRELSD_B32 : VOP1Inst , "v_movrelsd_b32", VOP_I32_I32>;