@@ -412,24 +412,28 @@ Value *CodeGenFunction::EmitHLSLBuiltinExpr(unsigned BuiltinID,
412412 ArrayRef<Value *>{Op0, Op1}, nullptr , " hlsl.dot" );
413413 }
414414 case Builtin::BI__builtin_hlsl_dot4add_i8packed: {
415- Value *A = EmitScalarExpr (E->getArg (0 ));
416- Value *B = EmitScalarExpr (E->getArg (1 ));
417- Value *C = EmitScalarExpr (E->getArg (2 ));
415+ Value *X = EmitScalarExpr (E->getArg (0 ));
416+ Value *Y = EmitScalarExpr (E->getArg (1 ));
417+ Value *Acc = EmitScalarExpr (E->getArg (2 ));
418418
419419 Intrinsic::ID ID = CGM.getHLSLRuntime ().getDot4AddI8PackedIntrinsic ();
420+ // Note that the argument order disagrees between the builtin and the
421+ // intrinsic here.
420422 return Builder.CreateIntrinsic (
421- /* ReturnType=*/ C ->getType (), ID, ArrayRef<Value *>{A, B, C}, nullptr ,
422- " hlsl.dot4add.i8packed" );
423+ /* ReturnType=*/ Acc ->getType (), ID, ArrayRef<Value *>{Acc, X, Y} ,
424+ nullptr , " hlsl.dot4add.i8packed" );
423425 }
424426 case Builtin::BI__builtin_hlsl_dot4add_u8packed: {
425- Value *A = EmitScalarExpr (E->getArg (0 ));
426- Value *B = EmitScalarExpr (E->getArg (1 ));
427- Value *C = EmitScalarExpr (E->getArg (2 ));
427+ Value *X = EmitScalarExpr (E->getArg (0 ));
428+ Value *Y = EmitScalarExpr (E->getArg (1 ));
429+ Value *Acc = EmitScalarExpr (E->getArg (2 ));
428430
429431 Intrinsic::ID ID = CGM.getHLSLRuntime ().getDot4AddU8PackedIntrinsic ();
432+ // Note that the argument order disagrees between the builtin and the
433+ // intrinsic here.
430434 return Builder.CreateIntrinsic (
431- /* ReturnType=*/ C ->getType (), ID, ArrayRef<Value *>{A, B, C}, nullptr ,
432- " hlsl.dot4add.u8packed" );
435+ /* ReturnType=*/ Acc ->getType (), ID, ArrayRef<Value *>{Acc, X, Y} ,
436+ nullptr , " hlsl.dot4add.u8packed" );
433437 }
434438 case Builtin::BI__builtin_hlsl_elementwise_firstbithigh: {
435439 Value *X = EmitScalarExpr (E->getArg (0 ));
0 commit comments