Skip to content

Commit 0e704e4

Browse files
committed
fixing bugs in FP API tests
1 parent 405a641 commit 0e704e4

File tree

2 files changed

+11
-23
lines changed

2 files changed

+11
-23
lines changed

src/tests/Common/GenerateHWIntrinsicTests/Arm/Templates.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -310,7 +310,7 @@ public static (string templateFileName, string outputTemplateName, Dictionary<st
310310
("_BinaryOpTestTemplate.template", "SecureHashBinOpTest.template", new Dictionary<string, string> { ["TemplateName"] = "SecureHash", ["TemplateValidationLogic"] = SecureHashOpTest_ValidationLogic }),
311311
("_TernaryOpTestTemplate.template", "SecureHashTernOpTest.template", new Dictionary<string, string> { ["TemplateName"] = "SecureHash", ["TemplateValidationLogic"] = SecureHashOpTest_ValidationLogic }),
312312
("_SveUnaryOpTestTemplate.template", "SveSimpleVecOpTest.template", new Dictionary<string, string> { ["TemplateName"] = "Simple", ["TemplateValidationLogic"] = SimpleVecOpTest_ValidationLogic, ["TemplateValidationLogicForCndSel"] = SimpleVecOpTest_ValidationLogicForCndSel, ["TemplateValidationLogicForCndSel_FalseValue"] = SimpleVecOpTest_ValidationLogicForCndSel_FalseValue }),
313-
("_SveUnaryOpDifferentRetTypeTestTemplate.template", "SveSimpleVecOpDiffRetTypeTest.template", new Dictionary<string, string> { ["TemplateName"] = "Simple", ["TemplateValidationLogic"] = SimpleVecOpTest_ValidationLogicForNarrowing, ["TemplateValidationLogicForCndSel"] = SimpleVecOpTest_ValidationLogicForCndSelForNarrowing, ["TemplateValidationLogicForCndSel_FalseValue"] = SimpleVecOpTest_ValidationLogicForCndSelForNarrowing_FalseValue }),
313+
("_SveUnaryOpDifferentRetTypeTestTemplate.template", "SveSimpleVecOpDiffRetTypeTest.template", new Dictionary<string, string> { ["TemplateName"] = "Simple", ["TemplateValidationLogic"] = SimpleVecOpTest_ValidationLogic, ["TemplateValidationLogicForCndSel"] = SimpleVecOpTest_ValidationLogicForCndSel, ["TemplateValidationLogicForCndSel_FalseValue"] = SimpleVecOpTest_ValidationLogicForCndSel_FalseValue }),
314314
("_SveUnaryOpDifferentRetTypeTestTemplate.template", "SveSimpleVecOpDiffRetTypeTestVec.template", new Dictionary<string, string> { ["TemplateName"] = "Simple", ["TemplateValidationLogic"] = SimpleVecOpTest_VectorValidationLogic, ["TemplateValidationLogicForCndSel"] = SimpleVecOpTest_VectorValidationLogicForCndSel, ["TemplateValidationLogicForCndSel_FalseValue"] = SimpleVecOpTest_VectorValidationLogicForCndSel_FalseValue }),
315315
("_SveBinaryOpTestTemplate.template", "SveVecBinOpTest.template", new Dictionary<string, string> { ["TemplateName"] = "Simple", ["TemplateValidationLogic"] = SimpleVecOpTest_ValidationLogic, ["TemplateValidationLogicForCndSel"] = SimpleVecOpTest_ValidationLogicForCndSel, ["TemplateValidationLogicForCndSel_FalseValue"] = SimpleVecOpTest_ValidationLogicForCndSel_FalseValue }),
316316
("_SveBinaryOpTestTemplate.template", "SveVecBinOpVecTest.template", new Dictionary<string, string> { ["TemplateName"] = "Simple", ["TemplateValidationLogic"] = SimpleVecOpTest_VectorValidationLogic, ["TemplateValidationLogicForCndSel"] = SimpleVecOpTest_VectorValidationLogicForCndSel, ["TemplateValidationLogicForCndSel_FalseValue"] = SimpleVecOpTest_VectorValidationLogicForCndSel_FalseValue }),

src/tests/JIT/HardwareIntrinsics/Arm/Shared/Helpers.cs

Lines changed: 10 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -4955,36 +4955,24 @@ private static uint ExtractBits(uint val, byte msbPos, byte lsbPos)
49554955

49564956
public static uint UnsignedReciprocalEstimate(uint op1)
49574957
{
4958-
uint result;
4958+
if ((op1 & 0x8000_0000u) == 0)
4959+
return 0xFFFF_FFFFu;
49594960

4960-
if ((op1 & (1 << 31)) == 0)
4961-
{
4962-
result = ~0U;
4963-
}
4964-
else
4965-
{
4966-
uint estimate = ReciprocalEstimate(ExtractBits(op1, 31, 23));
4967-
result = ExtractBits(estimate, 8, 0) << 31;
4968-
}
4961+
uint idx = (op1 >> 23) & 0x1FFu;
49694962

4970-
return result;
4963+
uint estimate = ReciprocalEstimate(idx) & 0x1FFu;
4964+
4965+
return estimate << 23;
49714966
}
49724967

49734968
public static uint UnsignedReciprocalSqrtEstimate(uint op1)
49744969
{
4975-
uint result;
4970+
if ((op1 & 0xC0000000u) == 0)
4971+
return 0xFFFFFFFFu;
49764972

4977-
if ((op1 & (3 << 30)) == 0)
4978-
{
4979-
result = ~0U;
4980-
}
4981-
else
4982-
{
4983-
uint estimate = ReciprocalSqrtEstimate(ExtractBits(op1, 31, 23));
4984-
result = ExtractBits(estimate, 8, 0) << 31;
4985-
}
4973+
uint estimate = ReciprocalSqrtEstimate(ExtractBits(op1, 31, 23)) & 0x1FFu;
49864974

4987-
return result;
4975+
return estimate << 23;
49884976
}
49894977

49904978
public static T Add<T>(T a, T b) where T : INumber<T> => a + b;

0 commit comments

Comments
 (0)