@@ -52,6 +52,11 @@ def FeatureNSA              : SubtargetFeature<"nsa", "HasNSA", "true",
5252def HasNSA                  : Predicate<"Subtarget->hasNSA()">,
5353                                         AssemblerPredicate<(all_of FeatureNSA)>;
5454
55+ def FeatureMul16            : SubtargetFeature<"mul16", "HasMul16", "true",
56+                                                "Enable Xtensa Mul16 option">;
57+ def HasMul16                : Predicate<"Subtarget->hasMul16()">,
58+                                          AssemblerPredicate<(all_of FeatureMul16)>;
59+ 
5560def FeatureMul32            : SubtargetFeature<"mul32", "HasMul32", "true",
5661                                               "Enable Xtensa Mul32 option">;
5762def HasMul32                : Predicate<"Subtarget->hasMul32()">,
@@ -171,20 +176,20 @@ class Proc<string Name, list<SubtargetFeature> Features>
171176
172177def : Proc<"generic", []>;
173178
174- def : Proc<"esp32", [FeatureDensity, FeatureSingleFloat, FeatureLoop, FeatureMAC16, FeatureWindowed, FeatureBoolean, 
175-                      FeatureSEXT, FeatureNSA , FeatureMul32, FeatureMul32High, FeatureDFPAccel, FeatureS32C1I, FeatureTHREADPTR, FeatureDiv32,
179+ def : Proc<"esp32", [FeatureDensity, FeatureSingleFloat, FeatureLoop, FeatureMAC16, FeatureWindowed, FeatureBoolean, FeatureSEXT, 
180+                      FeatureNSA, FeatureMul16 , FeatureMul32, FeatureMul32High, FeatureDFPAccel, FeatureS32C1I, FeatureTHREADPTR, FeatureDiv32,
176181                     FeatureATOMCTL, FeatureMEMCTL, FeatureDebug, FeatureException, FeatureHighPriInterrupts, FeatureCoprocessor,
177182                     FeatureInterrupt, FeatureRelocatableVector, FeatureTimerInt, FeaturePRID, FeatureRegionProtection, FeatureMiscSR]>;
178183
179- def : Proc<"esp8266", [FeatureDensity, FeatureNSA, FeatureMul32, FeatureExtendedL32R, FeatureDebug, FeatureException, FeatureHighPriInterrupts ,
180-                        FeatureInterrupt, FeatureRelocatableVector, FeatureTimerInt, FeatureRegionProtection, FeaturePRID]>;
184+ def : Proc<"esp8266", [FeatureDensity, FeatureNSA, FeatureMul16,  FeatureMul32, FeatureExtendedL32R, FeatureDebug, FeatureException,
185+                        FeatureHighPriInterrupts,  FeatureInterrupt, FeatureRelocatableVector, FeatureTimerInt, FeatureRegionProtection, FeaturePRID]>;
181186
182- def : Proc<"esp32-s2", [FeatureDensity, FeatureWindowed, FeatureSEXT, FeatureNSA, FeatureMul32, FeatureMul32High, FeatureTHREADPTR, FeatureDiv32 ,
183-                         FeatureMEMCTL, FeatureDebug, FeatureException, FeatureHighPriInterrupts, FeatureCoprocessor, FeatureInterrupt,
187+ def : Proc<"esp32-s2", [FeatureDensity, FeatureWindowed, FeatureSEXT, FeatureNSA,  FeatureMul16,  FeatureMul32, FeatureMul32High, FeatureTHREADPTR,
188+                         FeatureDiv32,  FeatureMEMCTL, FeatureDebug, FeatureException, FeatureHighPriInterrupts, FeatureCoprocessor, FeatureInterrupt,
184189                        FeatureRelocatableVector,	FeatureTimerInt, FeaturePRID, FeatureRegionProtection, FeatureMiscSR, FeatureESP32S2Ops]>;
185190
186- def : Proc<"esp32-s3", [FeatureDensity, FeatureSingleFloat, FeatureLoop, FeatureMAC16, FeatureWindowed, FeatureBoolean, 
187-                         FeatureSEXT, FeatureNSA , FeatureMul32, FeatureMul32High, FeatureDFPAccel, FeatureS32C1I, FeatureTHREADPTR, FeatureDiv32,
191+ def : Proc<"esp32-s3", [FeatureDensity, FeatureSingleFloat, FeatureLoop, FeatureMAC16, FeatureWindowed, FeatureBoolean, FeatureSEXT, 
192+                         FeatureNSA, FeatureMul16 , FeatureMul32, FeatureMul32High, FeatureDFPAccel, FeatureS32C1I, FeatureTHREADPTR, FeatureDiv32,
188193                        FeatureATOMCTL, FeatureMEMCTL, FeatureDebug, FeatureException, FeatureHighPriInterrupts, FeatureCoprocessor,
189194                        FeatureInterrupt, FeatureRelocatableVector, FeatureTimerInt, FeaturePRID, FeatureRegionProtection, FeatureMiscSR,
190195                        FeatureESP32S3Ops]>;
0 commit comments