gem5  v21.2.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  fatal("Trying to decode instruction without a class\n");
4442  return nullptr;
4443  }
4444 
4445  GPUStaticInst*
4447  {
4448  return new Inst_SOP2__S_MUL_I32(&iFmt->iFmt_SOP2);
4449  }
4450 
4451  GPUStaticInst*
4453  {
4454  fatal("Trying to decode instruction without a class\n");
4455  return nullptr;
4456  }
4457 
4458  GPUStaticInst*
4460  {
4461  fatal("Trying to decode instruction without a class\n");
4462  return nullptr;
4463  }
4464 
4465  GPUStaticInst*
4467  {
4468  fatal("Trying to decode instruction without a class\n");
4469  return nullptr;
4470  }
4471 
4472  GPUStaticInst*
4474  {
4475  fatal("Trying to decode instruction without a class\n");
4476  return nullptr;
4477  }
4478 
4479  GPUStaticInst*
4481  {
4482  fatal("Trying to decode instruction without a class\n");
4483  return nullptr;
4484  }
4485 
4486  GPUStaticInst*
4488  {
4489  fatal("Trying to decode instruction without a class\n");
4490  return nullptr;
4491  }
4492 
4493  GPUStaticInst*
4495  {
4496  fatal("Trying to decode instruction without a class\n");
4497  return nullptr;
4498  }
4499 
4500  GPUStaticInst*
4502  {
4503  return new Inst_SOPK__S_MOVK_I32(&iFmt->iFmt_SOPK);
4504  } // decode_OP_SOPK__S_MOVK_I32
4505 
4506  GPUStaticInst*
4508  {
4509  return new Inst_SOPK__S_CMOVK_I32(&iFmt->iFmt_SOPK);
4510  } // decode_OP_SOPK__S_CMOVK_I32
4511 
4512  GPUStaticInst*
4514  {
4515  return new Inst_SOPK__S_CMPK_EQ_I32(&iFmt->iFmt_SOPK);
4516  } // decode_OP_SOPK__S_CMPK_EQ_I32
4517 
4518  GPUStaticInst*
4520  {
4521  return new Inst_SOPK__S_CMPK_LG_I32(&iFmt->iFmt_SOPK);
4522  } // decode_OP_SOPK__S_CMPK_LG_I32
4523 
4524  GPUStaticInst*
4526  {
4527  return new Inst_SOPK__S_CMPK_GT_I32(&iFmt->iFmt_SOPK);
4528  } // decode_OP_SOPK__S_CMPK_GT_I32
4529 
4530  GPUStaticInst*
4532  {
4533  return new Inst_SOPK__S_CMPK_GE_I32(&iFmt->iFmt_SOPK);
4534  } // decode_OP_SOPK__S_CMPK_GE_I32
4535 
4536  GPUStaticInst*
4538  {
4539  return new Inst_SOPK__S_CMPK_LT_I32(&iFmt->iFmt_SOPK);
4540  } // decode_OP_SOPK__S_CMPK_LT_I32
4541 
4542  GPUStaticInst*
4544  {
4545  return new Inst_SOPK__S_CMPK_LE_I32(&iFmt->iFmt_SOPK);
4546  } // decode_OP_SOPK__S_CMPK_LE_I32
4547 
4548  GPUStaticInst*
4550  {
4551  return new Inst_SOPK__S_CMPK_EQ_U32(&iFmt->iFmt_SOPK);
4552  } // decode_OP_SOPK__S_CMPK_EQ_U32
4553 
4554  GPUStaticInst*
4556  {
4557  return new Inst_SOPK__S_CMPK_LG_U32(&iFmt->iFmt_SOPK);
4558  } // decode_OP_SOPK__S_CMPK_LG_U32
4559 
4560  GPUStaticInst*
4562  {
4563  return new Inst_SOPK__S_CMPK_GT_U32(&iFmt->iFmt_SOPK);
4564  } // decode_OP_SOPK__S_CMPK_GT_U32
4565 
4566  GPUStaticInst*
4568  {
4569  return new Inst_SOPK__S_CMPK_GE_U32(&iFmt->iFmt_SOPK);
4570  } // decode_OP_SOPK__S_CMPK_GE_U32
4571 
4572  GPUStaticInst*
4574  {
4575  return new Inst_SOPK__S_CMPK_LT_U32(&iFmt->iFmt_SOPK);
4576  } // decode_OP_SOPK__S_CMPK_LT_U32
4577 
4578  GPUStaticInst*
4580  {
4581  return new Inst_SOPK__S_CMPK_LE_U32(&iFmt->iFmt_SOPK);
4582  } // decode_OP_SOPK__S_CMPK_LE_U32
4583 
4584  GPUStaticInst*
4586  {
4587  return new Inst_SOPK__S_ADDK_I32(&iFmt->iFmt_SOPK);
4588  } // decode_OP_SOPK__S_ADDK_I32
4589 
4590  GPUStaticInst*
4592  {
4593  return new Inst_SOPK__S_MULK_I32(&iFmt->iFmt_SOPK);
4594  } // decode_OP_SOPK__S_MULK_I32
4595 
4596  GPUStaticInst*
4598  {
4599  return new Inst_SOPK__S_CBRANCH_I_FORK(&iFmt->iFmt_SOPK);
4600  } // decode_OP_SOPK__S_CBRANCH_I_FORK
4601 
4602  GPUStaticInst*
4604  {
4605  return new Inst_SOPK__S_GETREG_B32(&iFmt->iFmt_SOPK);
4606  } // decode_OP_SOPK__S_GETREG_B32
4607 
4608  GPUStaticInst*
4610  {
4611  return new Inst_SOPK__S_SETREG_B32(&iFmt->iFmt_SOPK);
4612  } // decode_OP_SOPK__S_SETREG_B32
4613 
4614  GPUStaticInst*
4616  {
4617  return new Inst_SOPK__S_SETREG_IMM32_B32(&iFmt->iFmt_SOPK);
4618  } // decode_OP_SOPK__S_SETREG_IMM32_B32
4619 
4620  GPUStaticInst*
4622  {
4623  fatal("Trying to decode instruction without a class\n");
4624  return nullptr;
4625  }
4626 
4627  GPUStaticInst*
4629  {
4630  return new Inst_EXP__EXP(&iFmt->iFmt_EXP);
4631  } // decode_OP_EXP
4632 
4633  GPUStaticInst*
4635  {
4636  return new Inst_VOP3__V_CMP_CLASS_F32(&iFmt->iFmt_VOP3A);
4637  } // decode_OPU_VOP3__V_CMP_CLASS_F32
4638 
4639  GPUStaticInst*
4641  {
4642  return new Inst_VOP3__V_CMPX_CLASS_F32(&iFmt->iFmt_VOP3A);
4643  } // decode_OPU_VOP3__V_CMPX_CLASS_F32
4644 
4645  GPUStaticInst*
4647  {
4648  return new Inst_VOP3__V_CMP_CLASS_F64(&iFmt->iFmt_VOP3A);
4649  } // decode_OPU_VOP3__V_CMP_CLASS_F64
4650 
4651  GPUStaticInst*
4653  {
4654  return new Inst_VOP3__V_CMPX_CLASS_F64(&iFmt->iFmt_VOP3A);
4655  } // decode_OPU_VOP3__V_CMPX_CLASS_F64
4656 
4657  GPUStaticInst*
4659  {
4660  return new Inst_VOP3__V_CMP_CLASS_F16(&iFmt->iFmt_VOP3A);
4661  } // decode_OPU_VOP3__V_CMP_CLASS_F16
4662 
4663  GPUStaticInst*
4665  {
4666  return new Inst_VOP3__V_CMPX_CLASS_F16(&iFmt->iFmt_VOP3A);
4667  } // decode_OPU_VOP3__V_CMPX_CLASS_F16
4668 
4669  GPUStaticInst*
4671  {
4672  return new Inst_VOP3__V_CMP_F_F16(&iFmt->iFmt_VOP3A);
4673  } // decode_OPU_VOP3__V_CMP_F_F16
4674 
4675  GPUStaticInst*
4677  {
4678  return new Inst_VOP3__V_CMP_LT_F16(&iFmt->iFmt_VOP3A);
4679  } // decode_OPU_VOP3__V_CMP_LT_F16
4680 
4681  GPUStaticInst*
4683  {
4684  return new Inst_VOP3__V_CMP_EQ_F16(&iFmt->iFmt_VOP3A);
4685  } // decode_OPU_VOP3__V_CMP_EQ_F16
4686 
4687  GPUStaticInst*