Skip to content

Commit 4e017e4

Browse files
Icohedronbogner
andcommitted
Simply asserts and return early for clarity
Addresses Justin Bogner's PR comments regarding assertions and the return. Co-authored-by: Justin Bogner <[email protected]>
1 parent ae46297 commit 4e017e4

File tree

1 file changed

+15
-23
lines changed

1 file changed

+15
-23
lines changed

clang/lib/CodeGen/CGBuiltin.cpp

Lines changed: 15 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -19448,23 +19448,15 @@ Value *CodeGenFunction::EmitHLSLBuiltinExpr(unsigned BuiltinID,
1944819448
case Builtin::BI__builtin_hlsl_adduint64: {
1944919449
Value *OpA = EmitScalarExpr(E->getArg(0));
1945019450
Value *OpB = EmitScalarExpr(E->getArg(1));
19451-
assert(E->getArg(0)->getType()->hasIntegerRepresentation() &&
19452-
E->getArg(1)->getType()->hasIntegerRepresentation() &&
19451+
QualType Arg0Ty = E->getArg(0)->getType();
19452+
uint64_t NumElements = Arg0Ty->castAs<VectorType>()->getNumElements();
19453+
assert(Arg0Ty == E->getArg(1)->getType() &&
19454+
"AddUint64 operand types must match");
19455+
assert(Arg0Ty->hasIntegerRepresentation() &&
1945319456
"AddUint64 operands must have an integer representation");
19454-
assert(((E->getArg(0)->getType()->castAs<VectorType>()->getNumElements() ==
19455-
2 &&
19456-
E->getArg(1)->getType()->castAs<VectorType>()->getNumElements() ==
19457-
2) ||
19458-
(E->getArg(0)->getType()->castAs<VectorType>()->getNumElements() ==
19459-
4 &&
19460-
E->getArg(1)->getType()->castAs<VectorType>()->getNumElements() ==
19461-
4)) &&
19462-
"input vectors must have 2 or 4 elements each");
19463-
19464-
uint64_t NumElements =
19465-
E->getArg(0)->getType()->castAs<VectorType>()->getNumElements();
19457+
assert((NumElements == 2 || NumElements == 4) &&
19458+
"AddUint64 operands must have 2 or 4 elements");
1946619459

19467-
llvm::Value *Result = PoisonValue::get(OpA->getType());
1946819460
llvm::Value *LowA;
1946919461
llvm::Value *HighA;
1947019462
llvm::Value *LowB;
@@ -19496,17 +19488,17 @@ Value *CodeGenFunction::EmitHLSLBuiltinExpr(unsigned BuiltinID,
1949619488
llvm::Value *HighSumPlusCarry =
1949719489
Builder.CreateAdd(HighSum, ZExtCarry, "HighSumPlusCarry");
1949819490

19499-
// Insert the low and high word sums into the result vector
19500-
if (NumElements == 2) {
19501-
Result = Builder.CreateInsertElement(Result, LowSum, (uint64_t)0,
19502-
"hlsl.AddUint64.upto0");
19503-
Result = Builder.CreateInsertElement(Result, HighSumPlusCarry,
19504-
(uint64_t)1, "hlsl.AddUint64");
19505-
} else { /* NumElements == 4 */
19506-
Result = Builder.CreateShuffleVector(LowSum, HighSumPlusCarry,
19491+
if (NumElements == 4) {
19492+
return Builder.CreateShuffleVector(LowSum, HighSumPlusCarry,
1950719493
ArrayRef<int>{0, 2, 1, 3},
1950819494
"hlsl.AddUint64");
1950919495
}
19496+
19497+
llvm::Value *Result = PoisonValue::get(OpA->getType());
19498+
Result = Builder.CreateInsertElement(Result, LowSum, (uint64_t)0,
19499+
"hlsl.AddUint64.upto0");
19500+
Result = Builder.CreateInsertElement(Result, HighSumPlusCarry, (uint64_t)1,
19501+
"hlsl.AddUint64");
1951019502
return Result;
1951119503
}
1951219504
case Builtin::BI__builtin_hlsl_resource_getpointer: {

0 commit comments

Comments
 (0)