@ -302,6 +302,23 @@ enum class VmadShr : u64 {
Shr15 = 2 ,
Shr15 = 2 ,
} ;
} ;
enum class VmnmxType : u64 {
Bits8 ,
Bits16 ,
Bits32 ,
} ;
enum class VmnmxOperation : u64 {
Mrg_16H = 0 ,
Mrg_16L = 1 ,
Mrg_8B0 = 2 ,
Mrg_8B2 = 3 ,
Acc = 4 ,
Min = 5 ,
Max = 6 ,
Nop = 7 ,
} ;
enum class XmadMode : u64 {
enum class XmadMode : u64 {
None = 0 ,
None = 0 ,
CLo = 1 ,
CLo = 1 ,
@ -1662,6 +1679,42 @@ union Instruction {
BitField < 47 , 1 , u64 > cc ;
BitField < 47 , 1 , u64 > cc ;
} vmad ;
} vmad ;
union {
BitField < 54 , 1 , u64 > is_dest_signed ;
BitField < 48 , 1 , u64 > is_src_a_signed ;
BitField < 49 , 1 , u64 > is_src_b_signed ;
BitField < 37 , 2 , u64 > src_format_a ;
BitField < 29 , 2 , u64 > src_format_b ;
BitField < 56 , 1 , u64 > mx ;
BitField < 55 , 1 , u64 > sat ;
BitField < 36 , 2 , u64 > selector_a ;
BitField < 28 , 2 , u64 > selector_b ;
BitField < 50 , 1 , u64 > is_op_b_register ;
BitField < 51 , 3 , VmnmxOperation > operation ;
VmnmxType SourceFormatA ( ) const {
switch ( src_format_a ) {
case 0b11 :
return VmnmxType : : Bits32 ;
case 0b10 :
return VmnmxType : : Bits16 ;
default :
return VmnmxType : : Bits8 ;
}
}
VmnmxType SourceFormatB ( ) const {
switch ( src_format_b ) {
case 0b11 :
return VmnmxType : : Bits32 ;
case 0b10 :
return VmnmxType : : Bits16 ;
default :
return VmnmxType : : Bits8 ;
}
}
} vmnmx ;
union {
union {
BitField < 20 , 16 , u64 > imm20_16 ;
BitField < 20 , 16 , u64 > imm20_16 ;
BitField < 35 , 1 , u64 > high_b_rr ; // used on RR
BitField < 35 , 1 , u64 > high_b_rr ; // used on RR
@ -1773,6 +1826,7 @@ public:
MEMBAR ,
MEMBAR ,
VMAD ,
VMAD ,
VSETP ,
VSETP ,
VMNMX ,
FFMA_IMM , // Fused Multiply and Add
FFMA_IMM , // Fused Multiply and Add
FFMA_CR ,
FFMA_CR ,
FFMA_RC ,
FFMA_RC ,
@ -2078,6 +2132,7 @@ private:
INST ( " 1110111110011--- " , Id : : MEMBAR , Type : : Trivial , " MEMBAR " ) ,
INST ( " 1110111110011--- " , Id : : MEMBAR , Type : : Trivial , " MEMBAR " ) ,
INST ( " 01011111-------- " , Id : : VMAD , Type : : Video , " VMAD " ) ,
INST ( " 01011111-------- " , Id : : VMAD , Type : : Video , " VMAD " ) ,
INST ( " 0101000011110--- " , Id : : VSETP , Type : : Video , " VSETP " ) ,
INST ( " 0101000011110--- " , Id : : VSETP , Type : : Video , " VSETP " ) ,
INST ( " 0011101--------- " , Id : : VMNMX , Type : : Video , " VMNMX " ) ,
INST ( " 0011001-1------- " , Id : : FFMA_IMM , Type : : Ffma , " FFMA_IMM " ) ,
INST ( " 0011001-1------- " , Id : : FFMA_IMM , Type : : Ffma , " FFMA_IMM " ) ,
INST ( " 010010011------- " , Id : : FFMA_CR , Type : : Ffma , " FFMA_CR " ) ,
INST ( " 010010011------- " , Id : : FFMA_CR , Type : : Ffma , " FFMA_CR " ) ,
INST ( " 010100011------- " , Id : : FFMA_RC , Type : : Ffma , " FFMA_RC " ) ,
INST ( " 010100011------- " , Id : : FFMA_RC , Type : : Ffma , " FFMA_RC " ) ,