gem5  v22.1.0.0
decoder.cc
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2015-2021 Advanced Micro Devices, Inc.
3  * All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions are met:
7  *
8  * 1. Redistributions of source code must retain the above copyright notice,
9  * this list of conditions and the following disclaimer.
10  *
11  * 2. Redistributions in binary form must reproduce the above copyright notice,
12  * this list of conditions and the following disclaimer in the documentation
13  * and/or other materials provided with the distribution.
14  *
15  * 3. Neither the name of the copyright holder nor the names of its
16  * contributors may be used to endorse or promote products derived from this
17  * software without specific prior written permission.
18  *
19  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
20  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
21  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
22  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
23  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
24  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
25  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
26  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
27  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
28  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
29  * POSSIBILITY OF SUCH DAMAGE.
30  */
31 
32 #include <vector>
33 
37 
38 namespace gem5
39 {
40 
41 namespace VegaISA
42 {
44  {
45  } // Decoder
46 
48  {
49  } // ~Decoder
50 
51  /*
52  * These will probably have to be updated according to the Vega ISA manual:
53  * https://developer.amd.com/wp-content/resources/
54  * Vega_Shader_ISA_28July2017.pdf
55  */
569  };
570 
1340  };
1341 
1599  };
1600 
1730  };
1731 
1861  };
1862 
1992  };
1993 
2011  };
2012 
2142  };
2143 
2273  };
2274 
2532  };
2533 
2791  };
2792 
2922  };
2923 
3053  };
3054 
3060  };
3061 
3319  };
3320 
3578  };
3579 
3709  };
3710 
3711  GPUStaticInst*
3713  {
3714  InFmt_SOP1 *enc = &mach_inst->iFmt_SOP1;
3716  return (this->*method)(mach_inst);
3717  } // decode
3718 
3719  GPUStaticInst*
3721  {
3722  InFmt_VOPC *enc = &iFmt->iFmt_VOPC;
3723  IsaDecodeMethod method = tableSubDecode_OP_VOPC[enc->OP];
3724  return (this->*method)(iFmt);
3725  } // subDecode_OP_VOPC
3726 
3727  GPUStaticInst*
3729  {
3730  InFmt_VOP3P *enc = &iFmt->iFmt_VOP3P;
3732  return (this->*method)(iFmt);
3733  } // subDecode_OP_VOP3P
3734 
3735  GPUStaticInst*
3737  {
3738  InFmt_VOP1 *enc = &iFmt->iFmt_VOP1;
3739  IsaDecodeMethod method = tableSubDecode_OP_VOP1[enc->OP];
3740  return (this->*method)(iFmt);
3741  } // subDecode_OP_VOP1
3742 
3743  GPUStaticInst*
3745  {
3746  InFmt_SOP1 *enc = &iFmt->iFmt_SOP1;
3747  IsaDecodeMethod method = tableSubDecode_OP_SOP1[enc->OP];
3748  return (this->*method)(iFmt);
3749  } // subDecode_OP_SOP1
3750 
3751  GPUStaticInst*
3753  {
3754  InFmt_SOPC *enc = &iFmt->iFmt_SOPC;
3755  IsaDecodeMethod method = tableSubDecode_OP_SOPC[enc->OP];
3756  return (this->*method)(iFmt);
3757  } // subDecode_OP_SOPC
3758 
3759  GPUStaticInst*
3761  {
3762  InFmt_SOPP *enc = &iFmt->iFmt_SOPP;
3763  IsaDecodeMethod method = tableSubDecode_OP_SOPP[enc->OP];
3764  return (this->*method)(iFmt);
3765  } // subDecode_OP_SOPP
3766 
3767  GPUStaticInst*
3769  {
3770  InFmt_SMEM *enc = &iFmt->iFmt_SMEM;
3771  IsaDecodeMethod method = tableSubDecode_OP_SMEM[enc->OP];
3772  return (this->*method)(iFmt);
3773  } // subDecode_OP_SMEM
3774 
3775  GPUStaticInst*
3777  {
3778  InFmt_VOP3A *enc = &iFmt->iFmt_VOP3A;
3780  return (this->*method)(iFmt);
3781  } // subDecode_OPU_VOP3
3782 
3783  GPUStaticInst*
3785  {
3786  InFmt_VINTRP *enc = &iFmt->iFmt_VINTRP;
3788  return (this->*method)(iFmt);
3789  } // subDecode_OP_VINTRP
3790 
3791  GPUStaticInst*
3793  {
3794  InFmt_DS *enc = &iFmt->iFmt_DS;
3795  IsaDecodeMethod method = tableSubDecode_OP_DS[enc->OP];
3796  return (this->*method)(iFmt);
3797  } // subDecode_OP_DS
3798 
3799  GPUStaticInst*
3801  {
3802  InFmt_FLAT *enc = &iFmt->iFmt_FLAT;
3803  IsaDecodeMethod method;
3804  switch (enc->SEG) {
3805  case 0:
3806  method = tableSubDecode_OP_FLAT[enc->OP];
3807  break;
3808  case 1:
3809  method = tableSubDecode_OP_SCRATCH[enc->OP];
3810  break;
3811  case 2:
3812  method = tableSubDecode_OP_GLOBAL[enc->OP];
3813  break;
3814  default:
3815  fatal("Invalid SEG for FLAT encoding: %d\n", enc->SEG);
3816  }
3817  return (this->*method)(iFmt);
3818  } // subDecode_OP_FLAT
3819 
3820  GPUStaticInst*
3822  {
3823  InFmt_MUBUF *enc = &iFmt->iFmt_MUBUF;
3825  return (this->*method)(iFmt);
3826  } // subDecode_OP_MUBUF
3827 
3828  GPUStaticInst*
3830  {
3831  InFmt_MTBUF *enc = &iFmt->iFmt_MTBUF;
3833  return (this->*method)(iFmt);
3834  } // subDecode_OP_MTBUF
3835 
3836  GPUStaticInst*
3838  {
3839  InFmt_MIMG *enc = &iFmt->iFmt_MIMG;
3840  IsaDecodeMethod method = tableSubDecode_OP_MIMG[enc->OP];
3841  return (this->*method)(iFmt);
3842  } // subDecode_OP_MIMG
3843 
3844  GPUStaticInst*
3846  {
3847  return new Inst_VOP2__V_CNDMASK_B32(&iFmt->iFmt_VOP2);
3848  } // decode_OP_VOP2__V_CNDMASK_B32
3849 
3850  GPUStaticInst*
3852  {
3853  return new Inst_VOP2__V_ADD_F32(&iFmt->iFmt_VOP2);
3854  } // decode_OP_VOP2__V_ADD_F32
3855 
3856  GPUStaticInst*
3858  {
3859  return new Inst_VOP2__V_SUB_F32(&iFmt->iFmt_VOP2);
3860  } // decode_OP_VOP2__V_SUB_F32
3861 
3862  GPUStaticInst*
3864  {
3865  return new Inst_VOP2__V_SUBREV_F32(&iFmt->iFmt_VOP2);
3866  } // decode_OP_VOP2__V_SUBREV_F32
3867 
3868  GPUStaticInst*
3870  {
3871  return new Inst_VOP2__V_MUL_LEGACY_F32(&iFmt->iFmt_VOP2);
3872  } // decode_OP_VOP2__V_MUL_LEGACY_F32
3873 
3874  GPUStaticInst*
3876  {
3877  return new Inst_VOP2__V_MUL_F32(&iFmt->iFmt_VOP2);
3878  } // decode_OP_VOP2__V_MUL_F32
3879 
3880  GPUStaticInst*
3882  {
3883  return new Inst_VOP2__V_MUL_I32_I24(&iFmt->iFmt_VOP2);
3884  } // decode_OP_VOP2__V_MUL_I32_I24
3885 
3886  GPUStaticInst*
3888  {
3889  return new Inst_VOP2__V_MUL_HI_I32_I24(&iFmt->iFmt_VOP2);
3890  } // decode_OP_VOP2__V_MUL_HI_I32_I24
3891 
3892  GPUStaticInst*
3894  {
3895  return new Inst_VOP2__V_MUL_U32_U24(&iFmt->iFmt_VOP2);
3896  } // decode_OP_VOP2__V_MUL_U32_U24
3897 
3898  GPUStaticInst*
3900  {
3901  return new Inst_VOP2__V_MUL_HI_U32_U24(&iFmt->iFmt_VOP2);
3902  } // decode_OP_VOP2__V_MUL_HI_U32_U24
3903 
3904  GPUStaticInst*
3906  {
3907  return new Inst_VOP2__V_MIN_F32(&iFmt->iFmt_VOP2);
3908  } // decode_OP_VOP2__V_MIN_F32
3909 
3910  GPUStaticInst*
3912  {
3913  return new Inst_VOP2__V_MAX_F32(&iFmt->iFmt_VOP2);
3914  } // decode_OP_VOP2__V_MAX_F32
3915 
3916  GPUStaticInst*
3918  {
3919  return new Inst_VOP2__V_MIN_I32(&iFmt->iFmt_VOP2);
3920  } // decode_OP_VOP2__V_MIN_I32
3921 
3922  GPUStaticInst*
3924  {
3925  return new Inst_VOP2__V_MAX_I32(&iFmt->iFmt_VOP2);
3926  } // decode_OP_VOP2__V_MAX_I32
3927 
3928  GPUStaticInst*
3930  {
3931  return new Inst_VOP2__V_MIN_U32(&iFmt->iFmt_VOP2);
3932  } // decode_OP_VOP2__V_MIN_U32
3933 
3934  GPUStaticInst*
3936  {
3937  return new Inst_VOP2__V_MAX_U32(&iFmt->iFmt_VOP2);
3938  } // decode_OP_VOP2__V_MAX_U32
3939 
3940  GPUStaticInst*
3942  {
3943  return new Inst_VOP2__V_LSHRREV_B32(&iFmt->iFmt_VOP2);
3944  } // decode_OP_VOP2__V_LSHRREV_B32
3945 
3946  GPUStaticInst*
3948  {
3949  return new Inst_VOP2__V_ASHRREV_I32(&iFmt->iFmt_VOP2);
3950  } // decode_OP_VOP2__V_ASHRREV_I32
3951 
3952  GPUStaticInst*
3954  {
3955  return new Inst_VOP2__V_LSHLREV_B32(&iFmt->iFmt_VOP2);
3956  } // decode_OP_VOP2__V_LSHLREV_B32
3957 
3958  GPUStaticInst*
3960  {
3961  return new Inst_VOP2__V_AND_B32(&iFmt->iFmt_VOP2);
3962  } // decode_OP_VOP2__V_AND_B32
3963 
3964  GPUStaticInst*
3966  {
3967  return new Inst_VOP2__V_OR_B32(&iFmt->iFmt_VOP2);
3968  } // decode_OP_VOP2__V_OR_B32
3969 
3970  GPUStaticInst*
3972  {
3973  return new Inst_VOP2__V_XOR_B32(&iFmt->iFmt_VOP2);
3974  } // decode_OP_VOP2__V_XOR_B32
3975 
3976  GPUStaticInst*
3978  {
3979  return new Inst_VOP2__V_MAC_F32(&iFmt->iFmt_VOP2);
3980  } // decode_OP_VOP2__V_MAC_F32
3981 
3982  GPUStaticInst*
3984  {
3985  return new Inst_VOP2__V_MADMK_F32(&iFmt->iFmt_VOP2);
3986  } // decode_OP_VOP2__V_MADMK_F32
3987 
3988  GPUStaticInst*
3990  {
3991  return new Inst_VOP2__V_MADAK_F32(&iFmt->iFmt_VOP2);
3992  } // decode_OP_VOP2__V_MADAK_F32
3993 
3994  GPUStaticInst*
3996  {
3997  return new Inst_VOP2__V_ADD_CO_U32(&iFmt->iFmt_VOP2);
3998  } // decode_OP_VOP2__V_ADD_CO_U32
3999 
4000  GPUStaticInst*
4002  {
4003  return new Inst_VOP2__V_SUB_CO_U32(&iFmt->iFmt_VOP2);
4004  } // decode_OP_VOP2__V_SUB_CO_U32
4005 
4006  GPUStaticInst*
4008  {
4009  return new Inst_VOP2__V_SUBREV_CO_U32(&iFmt->iFmt_VOP2);
4010  } // decode_OP_VOP2__V_SUBREV_CO_U32
4011 
4012  GPUStaticInst*
4014  {
4015  return new Inst_VOP2__V_ADDC_CO_U32(&iFmt->iFmt_VOP2);
4016  } // decode_OP_VOP2__V_ADDC_CO_U32
4017 
4018  GPUStaticInst*
4020  {
4021  return new Inst_VOP2__V_SUBB_CO_U32(&iFmt->iFmt_VOP2);
4022  } // decode_OP_VOP2__V_SUBB_CO_U32
4023 
4024  GPUStaticInst*
4026  {
4027  return new Inst_VOP2__V_SUBBREV_CO_U32(&iFmt->iFmt_VOP2);
4028  } // decode_OP_VOP2__V_SUBBREV_CO_U32
4029 
4030  GPUStaticInst*
4032  {
4033  return new Inst_VOP2__V_ADD_F16(&iFmt->iFmt_VOP2);
4034  } // decode_OP_VOP2__V_ADD_F16
4035 
4036  GPUStaticInst*
4038  {
4039  return new Inst_VOP2__V_SUB_F16(&iFmt->iFmt_VOP2);
4040  } // decode_OP_VOP2__V_SUB_F16
4041 
4042  GPUStaticInst*
4044  {
4045  return new Inst_VOP2__V_SUBREV_F16(&iFmt->iFmt_VOP2);
4046  } // decode_OP_VOP2__V_SUBREV_F16
4047 
4048  GPUStaticInst*
4050  {
4051  return new Inst_VOP2__V_MUL_F16(&iFmt->iFmt_VOP2);
4052  } // decode_OP_VOP2__V_MUL_F16
4053 
4054  GPUStaticInst*
4056  {
4057  return new Inst_VOP2__V_MAC_F16(&iFmt->iFmt_VOP2);
4058  } // decode_OP_VOP2__V_MAC_F16
4059 
4060  GPUStaticInst*
4062  {
4063  return new Inst_VOP2__V_MADMK_F16(&iFmt->iFmt_VOP2);
4064  } // decode_OP_VOP2__V_MADMK_F16
4065 
4066  GPUStaticInst*
4068  {
4069  return new Inst_VOP2__V_MADAK_F16(&iFmt->iFmt_VOP2);
4070  } // decode_OP_VOP2__V_MADAK_F16
4071 
4072  GPUStaticInst*
4074  {
4075  return new Inst_VOP2__V_ADD_U16(&iFmt->iFmt_VOP2);
4076  } // decode_OP_VOP2__V_ADD_U16
4077 
4078  GPUStaticInst*
4080  {
4081  return new Inst_VOP2__V_SUB_U16(&iFmt->iFmt_VOP2);
4082  } // decode_OP_VOP2__V_SUB_U16
4083 
4084  GPUStaticInst*
4086  {
4087  return new Inst_VOP2__V_SUBREV_U16(&iFmt->iFmt_VOP2);
4088  } // decode_OP_VOP2__V_SUBREV_U16
4089 
4090  GPUStaticInst*
4092  {
4093  return new Inst_VOP2__V_MUL_LO_U16(&iFmt->iFmt_VOP2);
4094  } // decode_OP_VOP2__V_MUL_LO_U16
4095 
4096  GPUStaticInst*
4098  {
4099  return new Inst_VOP2__V_LSHLREV_B16(&iFmt->iFmt_VOP2);
4100  } // decode_OP_VOP2__V_LSHLREV_B16
4101 
4102  GPUStaticInst*
4104  {
4105  return new Inst_VOP2__V_LSHRREV_B16(&iFmt->iFmt_VOP2);
4106  } // decode_OP_VOP2__V_LSHRREV_B16
4107 
4108  GPUStaticInst*
4110  {
4111  return new Inst_VOP2__V_ASHRREV_I16(&iFmt->iFmt_VOP2);
4112  } // decode_OP_VOP2__V_ASHRREV_I16
4113 
4114  GPUStaticInst*
4116  {
4117  return new Inst_VOP2__V_MAX_F16(&iFmt->iFmt_VOP2);
4118  } // decode_OP_VOP2__V_MAX_F16
4119 
4120  GPUStaticInst*
4122  {
4123  return new Inst_VOP2__V_MIN_F16(&iFmt->iFmt_VOP2);
4124  } // decode_OP_VOP2__V_MIN_F16
4125 
4126  GPUStaticInst*
4128  {
4129  return new Inst_VOP2__V_MAX_U16(&iFmt->iFmt_VOP2);
4130  } // decode_OP_VOP2__V_MAX_U16
4131 
4132  GPUStaticInst*
4134  {
4135  return new Inst_VOP2__V_MAX_I16(&iFmt->iFmt_VOP2);
4136  } // decode_OP_VOP2__V_MAX_I16
4137 
4138  GPUStaticInst*
4140  {
4141  return new Inst_VOP2__V_MIN_U16(&iFmt->iFmt_VOP2);
4142  } // decode_OP_VOP2__V_MIN_U16
4143 
4144  GPUStaticInst*
4146  {
4147  return new Inst_VOP2__V_MIN_I16(&iFmt->iFmt_VOP2);
4148  } // decode_OP_VOP2__V_MIN_I16
4149 
4150  GPUStaticInst*
4152  {
4153  return new Inst_VOP2__V_LDEXP_F16(&iFmt->iFmt_VOP2);
4154  } // decode_OP_VOP2__V_LDEXP_F16
4155 
4156  GPUStaticInst*
4158  {
4159  return new Inst_VOP2__V_ADD_U32(&iFmt->iFmt_VOP2);
4160  }
4161 
4162  GPUStaticInst*
4164  {
4165  return new Inst_VOP2__V_SUB_U32(&iFmt->iFmt_VOP2);
4166  }
4167 
4168  GPUStaticInst*
4170  {
4171  return new Inst_VOP2__V_SUBREV_U32(&iFmt->iFmt_VOP2);
4172  }
4173 
4174  GPUStaticInst*
4176  {
4177  return new Inst_SOP2__S_ADD_U32(&iFmt->iFmt_SOP2);
4178  } // decode_OP_SOP2__S_ADD_U32
4179 
4180  GPUStaticInst*
4182  {
4183  return new Inst_SOP2__S_SUB_U32(&iFmt->iFmt_SOP2);
4184  } // decode_OP_SOP2__S_SUB_U32
4185 
4186  GPUStaticInst*
4188  {
4189  return new Inst_SOP2__S_ADD_I32(&iFmt->iFmt_SOP2);
4190  } // decode_OP_SOP2__S_ADD_I32
4191 
4192  GPUStaticInst*
4194  {
4195  return new Inst_SOP2__S_SUB_I32(&iFmt->iFmt_SOP2);
4196  } // decode_OP_SOP2__S_SUB_I32
4197 
4198  GPUStaticInst*
4200  {
4201  return new Inst_SOP2__S_ADDC_U32(&iFmt->iFmt_SOP2);
4202  } // decode_OP_SOP2__S_ADDC_U32
4203 
4204  GPUStaticInst*
4206  {
4207  return new Inst_SOP2__S_SUBB_U32(&iFmt->iFmt_SOP2);
4208  } // decode_OP_SOP2__S_SUBB_U32
4209 
4210  GPUStaticInst*
4212  {
4213  return new Inst_SOP2__S_MIN_I32(&iFmt->iFmt_SOP2);
4214  } // decode_OP_SOP2__S_MIN_I32
4215 
4216  GPUStaticInst*
4218  {
4219  return new Inst_SOP2__S_MIN_U32(&iFmt->iFmt_SOP2);
4220  } // decode_OP_SOP2__S_MIN_U32
4221 
4222  GPUStaticInst*
4224  {
4225  return new Inst_SOP2__S_MAX_I32(&iFmt->iFmt_SOP2);
4226  } // decode_OP_SOP2__S_MAX_I32
4227 
4228  GPUStaticInst*
4230  {
4231  return new Inst_SOP2__S_MAX_U32(&iFmt->iFmt_SOP2);
4232  } // decode_OP_SOP2__S_MAX_U32
4233 
4234  GPUStaticInst*
4236  {
4237  return new Inst_SOP2__S_CSELECT_B32(&iFmt->iFmt_SOP2);
4238  } // decode_OP_SOP2__S_CSELECT_B32
4239 
4240  GPUStaticInst*
4242  {
4243  return new Inst_SOP2__S_CSELECT_B64(&iFmt->iFmt_SOP2);
4244  } // decode_OP_SOP2__S_CSELECT_B64
4245 
4246  GPUStaticInst*
4248  {
4249  return new Inst_SOP2__S_AND_B32(&iFmt->iFmt_SOP2);
4250  } // decode_OP_SOP2__S_AND_B32
4251 
4252  GPUStaticInst*
4254  {
4255  return new Inst_SOP2__S_AND_B64(&iFmt->iFmt_SOP2);
4256  } // decode_OP_SOP2__S_AND_B64
4257 
4258  GPUStaticInst*
4260  {
4261  return new Inst_SOP2__S_OR_B32(&iFmt->iFmt_SOP2);
4262  } // decode_OP_SOP2__S_OR_B32
4263 
4264  GPUStaticInst*
4266  {
4267  return new Inst_SOP2__S_OR_B64(&iFmt->iFmt_SOP2);
4268  } // decode_OP_SOP2__S_OR_B64
4269 
4270  GPUStaticInst*
4272  {
4273  return new Inst_SOP2__S_XOR_B32(&iFmt->iFmt_SOP2);
4274  } // decode_OP_SOP2__S_XOR_B32
4275 
4276  GPUStaticInst*
4278  {
4279  return new Inst_SOP2__S_XOR_B64(&iFmt->iFmt_SOP2);
4280  } // decode_OP_SOP2__S_XOR_B64
4281 
4282  GPUStaticInst*
4284  {
4285  return new Inst_SOP2__S_ANDN2_B32(&iFmt->iFmt_SOP2);
4286  } // decode_OP_SOP2__S_ANDN2_B32
4287 
4288  GPUStaticInst*
4290  {
4291  return new Inst_SOP2__S_ANDN2_B64(&iFmt->iFmt_SOP2);
4292  } // decode_OP_SOP2__S_ANDN2_B64
4293 
4294  GPUStaticInst*
4296  {
4297  return new Inst_SOP2__S_ORN2_B32(&iFmt->iFmt_SOP2);
4298  } // decode_OP_SOP2__S_ORN2_B32
4299 
4300  GPUStaticInst*
4302  {
4303  return new Inst_SOP2__S_ORN2_B64(&iFmt->iFmt_SOP2);
4304  } // decode_OP_SOP2__S_ORN2_B64
4305 
4306  GPUStaticInst*
4308  {
4309  return new Inst_SOP2__S_NAND_B32(&iFmt->iFmt_SOP2);
4310  } // decode_OP_SOP2__S_NAND_B32
4311 
4312  GPUStaticInst*
4314  {
4315  return new Inst_SOP2__S_NAND_B64(&iFmt->iFmt_SOP2);
4316  } // decode_OP_SOP2__S_NAND_B64
4317 
4318  GPUStaticInst*
4320  {
4321  return new Inst_SOP2__S_NOR_B32(&iFmt->iFmt_SOP2);
4322  } // decode_OP_SOP2__S_NOR_B32
4323 
4324  GPUStaticInst*
4326  {
4327  return new Inst_SOP2__S_NOR_B64(&iFmt->iFmt_SOP2);
4328  } // decode_OP_SOP2__S_NOR_B64
4329 
4330  GPUStaticInst*
4332  {
4333  return new Inst_SOP2__S_XNOR_B32(&iFmt->iFmt_SOP2);
4334  } // decode_OP_SOP2__S_XNOR_B32
4335 
4336  GPUStaticInst*
4338  {
4339  return new Inst_SOP2__S_XNOR_B64(&iFmt->iFmt_SOP2);
4340  } // decode_OP_SOP2__S_XNOR_B64
4341 
4342  GPUStaticInst*
4344  {
4345  return new Inst_SOP2__S_LSHL_B32(&iFmt->iFmt_SOP2);
4346  } // decode_OP_SOP2__S_LSHL_B32
4347 
4348  GPUStaticInst*
4350  {
4351  return new Inst_SOP2__S_LSHL_B64(&iFmt->iFmt_SOP2);
4352  } // decode_OP_SOP2__S_LSHL_B64
4353 
4354  GPUStaticInst*
4356  {
4357  return new Inst_SOP2__S_LSHR_B32(&iFmt->iFmt_SOP2);
4358  } // decode_OP_SOP2__S_LSHR_B32
4359 
4360  GPUStaticInst*
4362  {
4363  return new Inst_SOP2__S_LSHR_B64(&iFmt->iFmt_SOP2);
4364  } // decode_OP_SOP2__S_LSHR_B64
4365 
4366  GPUStaticInst*
4368  {
4369  return new Inst_SOP2__S_ASHR_I32(&iFmt->iFmt_SOP2);
4370  } // decode_OP_SOP2__S_ASHR_I32
4371 
4372  GPUStaticInst*
4374  {
4375  return new Inst_SOP2__S_ASHR_I64(&iFmt->iFmt_SOP2);
4376  } // decode_OP_SOP2__S_ASHR_I64
4377 
4378  GPUStaticInst*
4380  {
4381  return new Inst_SOP2__S_BFM_B32(&iFmt->iFmt_SOP2);
4382  } // decode_OP_SOP2__S_BFM_B32
4383 
4384  GPUStaticInst*
4386  {
4387  return new Inst_SOP2__S_BFM_B64(&iFmt->iFmt_SOP2);
4388  } // decode_OP_SOP2__S_BFM_B64
4389 
4390  GPUStaticInst*
4392  {
4393  return new Inst_SOP2__S_MUL_I32(&iFmt->iFmt_SOP2);
4394  } // decode_OP_SOP2__S_MUL_I32
4395 
4396  GPUStaticInst*
4398  {
4399  return new Inst_SOP2__S_BFE_U32(&iFmt->iFmt_SOP2);
4400  } // decode_OP_SOP2__S_BFE_U32
4401 
4402  GPUStaticInst*
4404  {
4405  return new Inst_SOP2__S_BFE_I32(&iFmt->iFmt_SOP2);
4406  } // decode_OP_SOP2__S_BFE_I32
4407 
4408  GPUStaticInst*
4410  {
4411  return new Inst_SOP2__S_BFE_U64(&iFmt->iFmt_SOP2);
4412  } // decode_OP_SOP2__S_BFE_U64
4413 
4414  GPUStaticInst*
4416  {
4417  return new Inst_SOP2__S_BFE_I64(&iFmt->iFmt_SOP2);
4418  } // decode_OP_SOP2__S_BFE_I64
4419 
4420  GPUStaticInst*
4422  {
4423  return new Inst_SOP2__S_CBRANCH_G_FORK(&iFmt->iFmt_SOP2);
4424  } // decode_OP_SOP2__S_CBRANCH_G_FORK
4425 
4426  GPUStaticInst*
4428  {
4429  return new Inst_SOP2__S_ABSDIFF_I32(&iFmt->iFmt_SOP2);
4430  } // decode_OP_SOP2__S_ABSDIFF_I32
4431 
4432  GPUStaticInst*
4434  {
4435  return new Inst_SOP2__S_RFE_RESTORE_B64(&iFmt->iFmt_SOP2);
4436  } // decode_OP_SOP2__S_RFE_RESTORE_B64
4437 
4438  GPUStaticInst*
4440  {
4441  return new Inst_SOP2__S_MUL_HI_U32(&iFmt->iFmt_SOP2);
4442  }
4443 
4444  GPUStaticInst*
4446  {
4447  return new Inst_SOP2__S_MUL_HI_I32(&iFmt->iFmt_SOP2);
4448  }
4449 
4450  GPUStaticInst*
4452  {
4453  fatal("Trying to decode instruction without a class\n");
4454  return nullptr;
4455  }
4456 
4457  GPUStaticInst*
4459  {
4460  fatal("Trying to decode instruction without a class\n");
4461  return nullptr;
4462  }
4463 
4464  GPUStaticInst*
4466  {
4467  fatal("Trying to decode instruction without a class\n");
4468  return nullptr;
4469  }
4470 
4471  GPUStaticInst*
4473  {
4474  fatal("Trying to decode instruction without a class\n");
4475  return nullptr;
4476  }
4477 
4478  GPUStaticInst*
4480  {
4481  fatal("Trying to decode instruction without a class\n");
4482  return nullptr;
4483  }
4484 
4485  GPUStaticInst*
4487  {
4488  fatal("Trying to decode instruction without a class\n");
4489  return nullptr;
4490  }
4491 
4492  GPUStaticInst*
4494  {
4495  fatal("Trying to decode instruction without a class\n");
4496  return nullptr;
4497  }
4498 
4499  GPUStaticInst*
4501  {
4502  return new Inst_SOPK__S_MOVK_I32(&iFmt->iFmt_SOPK);
4503  } // decode_OP_SOPK__S_MOVK_I32
4504 
4505  GPUStaticInst*
4507  {
4508  return new Inst_SOPK__S_CMOVK_I32(&iFmt->iFmt_SOPK);
4509  } // decode_OP_SOPK__S_CMOVK_I32
4510 
4511  GPUStaticInst*
4513  {
4514  return new Inst_SOPK__S_CMPK_EQ_I32(&iFmt->iFmt_SOPK);
4515  } // decode_OP_SOPK__S_CMPK_EQ_I32
4516 
4517  GPUStaticInst*
4519  {
4520  return new Inst_SOPK__S_CMPK_LG_I32(&iFmt->iFmt_SOPK);
4521  } // decode_OP_SOPK__S_CMPK_LG_I32
4522 
4523  GPUStaticInst*
4525  {
4526  return new Inst_SOPK__S_CMPK_GT_I32(&iFmt->iFmt_SOPK);
4527  } // decode_OP_SOPK__S_CMPK_GT_I32
4528 
4529  GPUStaticInst*
4531  {
4532  return new Inst_SOPK__S_CMPK_GE_I32(&iFmt->iFmt_SOPK);
4533  } // decode_OP_SOPK__S_CMPK_GE_I32
4534 
4535  GPUStaticInst*
4537  {
4538  return new Inst_SOPK__S_CMPK_LT_I32(&iFmt->iFmt_SOPK);
4539  } // decode_OP_SOPK__S_CMPK_LT_I32
4540 
4541  GPUStaticInst*
4543  {
4544  return new Inst_SOPK__S_CMPK_LE_I32(&iFmt->iFmt_SOPK);
4545  } // decode_OP_SOPK__S_CMPK_LE_I32
4546 
4547  GPUStaticInst*
4549  {
4550  return new Inst_SOPK__S_CMPK_EQ_U32(&iFmt->iFmt_SOPK);
4551  } // decode_OP_SOPK__S_CMPK_EQ_U32
4552 
4553  GPUStaticInst*
4555  {
4556  return new Inst_SOPK__S_CMPK_LG_U32(&iFmt->iFmt_SOPK);
4557  } // decode_OP_SOPK__S_CMPK_LG_U32
4558 
4559  GPUStaticInst*
4561  {
4562  return new Inst_SOPK__S_CMPK_GT_U32(&iFmt->iFmt_SOPK);
4563  } // decode_OP_SOPK__S_CMPK_GT_U32
4564 
4565  GPUStaticInst*
4567  {
4568  return new Inst_SOPK__S_CMPK_GE_U32(&iFmt->iFmt_SOPK);
4569  } // decode_OP_SOPK__S_CMPK_GE_U32
4570 
4571  GPUStaticInst*
4573  {
4574  return new Inst_SOPK__S_CMPK_LT_U32(&iFmt->iFmt_SOPK);
4575  } // decode_OP_SOPK__S_CMPK_LT_U32
4576 
4577  GPUStaticInst*
4579  {
4580  return new Inst_SOPK__S_CMPK_LE_U32(&iFmt->iFmt_SOPK);
4581  } // decode_OP_SOPK__S_CMPK_LE_U32
4582 
4583  GPUStaticInst*
4585  {
4586  return new Inst_SOPK__S_ADDK_I32(&iFmt->iFmt_SOPK);
4587  } // decode_OP_SOPK__S_ADDK_I32
4588 
4589  GPUStaticInst*
4591  {
4592  return new Inst_SOPK__S_MULK_I32(&iFmt->iFmt_SOPK);
4593  } // decode_OP_SOPK__S_MULK_I32
4594 
4595  GPUStaticInst*
4597  {
4598  return new Inst_SOPK__S_CBRANCH_I_FORK(&iFmt->iFmt_SOPK);
4599  } // decode_OP_SOPK__S_CBRANCH_I_FORK
4600 
4601  GPUStaticInst*
4603  {
4604  return new Inst_SOPK__S_GETREG_B32(&iFmt->iFmt_SOPK);
4605  } // decode_OP_SOPK__S_GETREG_B32
4606 
4607  GPUStaticInst*
4609  {
4610  return new Inst_SOPK__S_SETREG_B32(&iFmt->iFmt_SOPK);
4611  } // decode_OP_SOPK__S_SETREG_B32
4612 
4613  GPUStaticInst*
4615  {
4616  return new Inst_SOPK__S_SETREG_IMM32_B32(&iFmt->iFmt_SOPK);
4617  } // decode_OP_SOPK__S_SETREG_IMM32_B32
4618 
4619  GPUStaticInst*
4621  {
4622  fatal("Trying to decode instruction without a class\n");
4623  return nullptr;
4624  }
4625 
4626  GPUStaticInst*
4628  {
4629  return new Inst_EXP__EXP(&iFmt->iFmt_EXP);
4630  } // decode_OP_EXP
4631 
4632  GPUStaticInst*
4634  {
4635  return new Inst_VOP3__V_CMP_CLASS_F32(&iFmt->iFmt_VOP3A);
4636  } // decode_OPU_VOP3__V_CMP_CLASS_F32
4637 
4638  GPUStaticInst*
4640  {
4641  return new Inst_VOP3__V_CMPX_CLASS_F32(&iFmt->iFmt_VOP3A);
4642  } // decode_OPU_VOP3__V_CMPX_CLASS_F32
4643 
4644  GPUStaticInst*
4646  {
4647  return new Inst_VOP3__V_CMP_CLASS_F64(&iFmt->iFmt_VOP3A);
4648  } // decode_OPU_VOP3__V_CMP_CLASS_F64
4649 
4650  GPUStaticInst*
4652  {
4653  return new Inst_VOP3__V_CMPX_CLASS_F64(&iFmt->iFmt_VOP3A);
4654  } // decode_OPU_VOP3__V_CMPX_CLASS_F64
4655 
4656  GPUStaticInst*
4658  {
4659  return new Inst_VOP3__V_CMP_CLASS_F16(&iFmt->iFmt_VOP3A);
4660  } // decode_OPU_VOP3__V_CMP_CLASS_F16
4661 
4662  GPUStaticInst*
4664  {
4665  return new Inst_VOP3__V_CMPX_CLASS_F16(&iFmt->iFmt_VOP3A);
4666  } // decode_OPU_VOP3__V_CMPX_CLASS_F16
4667 
4668  GPUStaticInst*
4670  {
4671  return new Inst_VOP3__V_CMP_F_F16(&iFmt->iFmt_VOP3A);
4672  } // decode_OPU_VOP3__V_CMP_F_F16
4673 
4674  GPUStaticInst*
4676  {
4677  return new Inst_VOP3__V_CMP_LT_F16(&iFmt->iFmt_VOP3A);
4678  } // decode_OPU_VOP3__V_CMP_LT_F16
4679 
4680  GPUStaticInst*
4682  {
4683  return new Inst_VOP3__V_CMP_EQ_F16(&iFmt->iFmt_VOP3A);
4684  } // decode_OPU_VOP3__V_CMP_EQ_F16
4685 
4686  GPUStaticInst*