Skip to content

Commit 31eca32

Browse files
committed
Prevent clamp logic on bools
1 parent 86f4009 commit 31eca32

1 file changed

Lines changed: 13 additions & 7 deletions

File tree

tools/clang/unittests/HLSLExec/ExecutionTest.cpp

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -12179,6 +12179,14 @@ void ExecutionTest::LongVectorOpTestBase(
1217912179
T ClampArgC = 0;
1218012180
T ClampArgT = 0;
1218112181
if (TestConfig.OpType == LongVectorOpType_Clamp) {
12182+
if constexpr (std::is_same_v<T, HLSLBool_t>) {
12183+
// Attempting to generate a clamp value for HLSLBool_t will result in an
12184+
// infinite loop in the below while. We don't have a test case for clamp
12185+
// with bools anyways. But adding this check to prevent the mistake.
12186+
LogErrorFmtThrow(
12187+
L"Clamp is not supported for HLSLBool_t.");
12188+
}
12189+
1218212190
ClampArgC = NumberGenerator.generate();
1218312191
ClampArgT = NumberGenerator.generate();
1218412192
while (ClampArgC >= ClampArgT) {
@@ -12198,17 +12206,16 @@ void ExecutionTest::LongVectorOpTestBase(
1219812206
} else if (TestConfig.OperatorString == "+") {
1219912207
ExpectedVector[Index] = Input1 + Input2;
1220012208
} else if (TestConfig.OperatorString == ",") {
12201-
if (TestConfig.OpType == LongVectorOpType_Min)
12209+
if (TestConfig.OpType == LongVectorOpType_Min )
1220212210
ExpectedVector[Index] = std::min<T>(Input1, Input2);
1220312211
else if (TestConfig.OpType == LongVectorOpType_Max)
1220412212
ExpectedVector[Index] = std::max<T>(Input1, Input2);
1220512213
else
12206-
LogErrorFmtThrow(L"Unrecognized Binary LongVectorOpType: %d",
12207-
TestConfig.OpType);
12214+
LogErrorFmtThrow(L"Unrecognized Binary LongVectorOpType: %d",TestConfig.OpType);
1220812215
} else {
1220912216
LogErrorFmtThrow(
12210-
L"Don't know how to compute expected value for operatorString: %s",
12211-
TestConfig.OperatorString.c_str());
12217+
L"Don't know how to compute expected value for operatorString: %s",
12218+
TestConfig.OperatorString.c_str());
1221212219
}
1221312220
} else // Unary op logic
1221412221
{
@@ -12218,8 +12225,7 @@ void ExecutionTest::LongVectorOpTestBase(
1221812225
} else if (TestConfig.OpType = LongVectorOpType_Initialize) {
1221912226
ExpectedVector[Index] = InputVector1[Index];
1222012227
} else {
12221-
LogErrorFmtThrow(L"Unrecognized Unary LongVectorOpType: %d",
12222-
TestConfig.OpType);
12228+
LogErrorFmtThrow(L"Unrecognized Unary LongVectorOpType: %d",TestConfig.OpType);
1222312229
}
1222412230
}
1222512231
}

0 commit comments

Comments
 (0)