@@ -1983,25 +1983,29 @@ checkMathBuiltinElementType(Sema &S, SourceLocation Loc, QualType ArgTy,
1983
1983
if (!ArgTy->getAs<VectorType>() &&
1984
1984
!ConstantMatrixType::isValidElementType(ArgTy)) {
1985
1985
return S.Diag(Loc, diag::err_builtin_invalid_arg_type)
1986
- << ArgOrdinal << /* vector, integer or float ty*/ 0 << ArgTy;
1986
+ << ArgOrdinal << /* vector, */ 3 << /* integer */ 1 << /* fp */ 1
1987
+ << ArgTy;
1987
1988
}
1988
1989
break;
1989
1990
case Sema::EltwiseBuiltinArgTyRestriction::FloatTy:
1990
1991
if (!EltTy->isRealFloatingType()) {
1991
1992
return S.Diag(Loc, diag::err_builtin_invalid_arg_type)
1992
- << ArgOrdinal << /* vector or float ty*/ 5 << ArgTy;
1993
+ << ArgOrdinal << /* scalar or vector */ 5 << /* no int */ 0
1994
+ << /* floating-point */ 1 << ArgTy;
1993
1995
}
1994
1996
break;
1995
1997
case Sema::EltwiseBuiltinArgTyRestriction::IntegerTy:
1996
1998
if (!EltTy->isIntegerType()) {
1997
1999
return S.Diag(Loc, diag::err_builtin_invalid_arg_type)
1998
- << ArgOrdinal << /* vector or int ty*/ 10 << ArgTy;
2000
+ << ArgOrdinal << /* scalar or vector */ 5 << /* integer */ 1
2001
+ << /* no fp */ 0 << ArgTy;
1999
2002
}
2000
2003
break;
2001
2004
case Sema::EltwiseBuiltinArgTyRestriction::SignedIntOrFloatTy:
2002
2005
if (EltTy->isUnsignedIntegerType()) {
2003
2006
return S.Diag(Loc, diag::err_builtin_invalid_arg_type)
2004
- << 1 << /* signed integer or float ty*/ 3 << ArgTy;
2007
+ << 1 << /* scalar or vector */ 5 << /* signed int */ 2
2008
+ << /* or fp */ 1 << ArgTy;
2005
2009
}
2006
2010
break;
2007
2011
}
@@ -2071,7 +2075,8 @@ static bool BuiltinPopcountg(Sema &S, CallExpr *TheCall) {
2071
2075
2072
2076
if (!ArgTy->isUnsignedIntegerType()) {
2073
2077
S.Diag(Arg->getBeginLoc(), diag::err_builtin_invalid_arg_type)
2074
- << 1 << /*unsigned integer ty*/ 7 << ArgTy;
2078
+ << 1 << /* scalar */ 1 << /* unsigned integer ty */ 3 << /* no fp */ 0
2079
+ << ArgTy;
2075
2080
return true;
2076
2081
}
2077
2082
return false;
@@ -2095,7 +2100,8 @@ static bool BuiltinCountZeroBitsGeneric(Sema &S, CallExpr *TheCall) {
2095
2100
2096
2101
if (!Arg0Ty->isUnsignedIntegerType()) {
2097
2102
S.Diag(Arg0->getBeginLoc(), diag::err_builtin_invalid_arg_type)
2098
- << 1 << /*unsigned integer ty*/ 7 << Arg0Ty;
2103
+ << 1 << /* scalar */ 1 << /* unsigned integer ty */ 3 << /* no fp */ 0
2104
+ << Arg0Ty;
2099
2105
return true;
2100
2106
}
2101
2107
@@ -2111,7 +2117,7 @@ static bool BuiltinCountZeroBitsGeneric(Sema &S, CallExpr *TheCall) {
2111
2117
2112
2118
if (!Arg1Ty->isSpecificBuiltinType(BuiltinType::Int)) {
2113
2119
S.Diag(Arg1->getBeginLoc(), diag::err_builtin_invalid_arg_type)
2114
- << 2 << /*'int' ty*/ 8 << Arg1Ty;
2120
+ << 2 << /* scalar */ 1 << /* 'int' ty */ 4 << /* no fp */ 0 << Arg1Ty;
2115
2121
return true;
2116
2122
}
2117
2123
}
@@ -2826,7 +2832,8 @@ Sema::CheckBuiltinFunctionCall(FunctionDecl *FDecl, unsigned BuiltinID,
2826
2832
2827
2833
if (ElTy.isNull()) {
2828
2834
Diag(Arg->getBeginLoc(), diag::err_builtin_invalid_arg_type)
2829
- << 1 << /* vector ty*/ 4 << Arg->getType();
2835
+ << 1 << /* vector ty */ 2 << /* no int */ 0 << /* no fp */ 0
2836
+ << Arg->getType();
2830
2837
return ExprError();
2831
2838
}
2832
2839
@@ -2849,7 +2856,8 @@ Sema::CheckBuiltinFunctionCall(FunctionDecl *FDecl, unsigned BuiltinID,
2849
2856
2850
2857
if (ElTy.isNull() || !ElTy->isFloatingType()) {
2851
2858
Diag(Arg->getBeginLoc(), diag::err_builtin_invalid_arg_type)
2852
- << 1 << /* vector of floating points */ 9 << Arg->getType();
2859
+ << 1 << /* vector of */ 4 << /* no int */ 0 << /* fp */ 1
2860
+ << Arg->getType();
2853
2861
return ExprError();
2854
2862
}
2855
2863
@@ -2878,7 +2886,8 @@ Sema::CheckBuiltinFunctionCall(FunctionDecl *FDecl, unsigned BuiltinID,
2878
2886
2879
2887
if (ElTy.isNull() || !ElTy->isIntegerType()) {
2880
2888
Diag(Arg->getBeginLoc(), diag::err_builtin_invalid_arg_type)
2881
- << 1 << /* vector of integers */ 6 << Arg->getType();
2889
+ << 1 << /* vector of */ 4 << /* int */ 1 << /* no fp */ 0
2890
+ << Arg->getType();
2882
2891
return ExprError();
2883
2892
}
2884
2893
@@ -14789,8 +14798,9 @@ bool Sema::BuiltinNonDeterministicValue(CallExpr *TheCall) {
14789
14798
QualType TyArg = Arg.get()->getType();
14790
14799
14791
14800
if (!TyArg->isBuiltinType() && !TyArg->isVectorType())
14792
- return Diag(TheCall->getArg(0)->getBeginLoc(), diag::err_builtin_invalid_arg_type)
14793
- << 1 << /*vector, integer or floating point ty*/ 0 << TyArg;
14801
+ return Diag(TheCall->getArg(0)->getBeginLoc(),
14802
+ diag::err_builtin_invalid_arg_type)
14803
+ << 1 << /* vector, */ 3 << /* integer */ 1 << /* fp */ 1 << TyArg;
14794
14804
14795
14805
TheCall->setType(TyArg);
14796
14806
return false;
@@ -14809,7 +14819,7 @@ ExprResult Sema::BuiltinMatrixTranspose(CallExpr *TheCall,
14809
14819
auto *MType = Matrix->getType()->getAs<ConstantMatrixType>();
14810
14820
if (!MType) {
14811
14821
Diag(Matrix->getBeginLoc(), diag::err_builtin_invalid_arg_type)
14812
- << 1 << /* matrix ty*/ 1 << Matrix->getType();
14822
+ << 1 << 0 << /* matrix ty */ 5 << /* no fp */ 0 << Matrix->getType();
14813
14823
return ExprError();
14814
14824
}
14815
14825
@@ -14881,15 +14891,16 @@ ExprResult Sema::BuiltinMatrixColumnMajorLoad(CallExpr *TheCall,
14881
14891
QualType ElementTy;
14882
14892
if (!PtrTy) {
14883
14893
Diag(PtrExpr->getBeginLoc(), diag::err_builtin_invalid_arg_type)
14884
- << PtrArgIdx + 1 << /*pointer to element ty*/ 2 << PtrExpr->getType();
14894
+ << PtrArgIdx + 1 << 0 << /* pointer to element ty */ 6 << /* no fp */ 0
14895
+ << PtrExpr->getType();
14885
14896
ArgError = true;
14886
14897
} else {
14887
14898
ElementTy = PtrTy->getPointeeType().getUnqualifiedType();
14888
14899
14889
14900
if (!ConstantMatrixType::isValidElementType(ElementTy)) {
14890
14901
Diag(PtrExpr->getBeginLoc(), diag::err_builtin_invalid_arg_type)
14891
- << PtrArgIdx + 1 << /* pointer to element ty*/ 2
14892
- << PtrExpr->getType();
14902
+ << PtrArgIdx + 1 << 0 << /* pointer to element ty */ 6
14903
+ << /* no fp */ 0 << PtrExpr->getType();
14893
14904
ArgError = true;
14894
14905
}
14895
14906
}
@@ -14989,7 +15000,7 @@ ExprResult Sema::BuiltinMatrixColumnMajorStore(CallExpr *TheCall,
14989
15000
auto *MatrixTy = MatrixExpr->getType()->getAs<ConstantMatrixType>();
14990
15001
if (!MatrixTy) {
14991
15002
Diag(MatrixExpr->getBeginLoc(), diag::err_builtin_invalid_arg_type)
14992
- << 1 << /* matrix ty */ 1 << MatrixExpr->getType();
15003
+ << 1 << 0 << /* matrix ty */ 5 << 0 << MatrixExpr->getType();
14993
15004
ArgError = true;
14994
15005
}
14995
15006
@@ -15009,7 +15020,8 @@ ExprResult Sema::BuiltinMatrixColumnMajorStore(CallExpr *TheCall,
15009
15020
auto *PtrTy = PtrExpr->getType()->getAs<PointerType>();
15010
15021
if (!PtrTy) {
15011
15022
Diag(PtrExpr->getBeginLoc(), diag::err_builtin_invalid_arg_type)
15012
- << PtrArgIdx + 1 << /*pointer to element ty*/ 2 << PtrExpr->getType();
15023
+ << PtrArgIdx + 1 << 0 << /* pointer to element ty */ 6 << 0
15024
+ << PtrExpr->getType();
15013
15025
ArgError = true;
15014
15026
} else {
15015
15027
QualType ElementTy = PtrTy->getPointeeType();
0 commit comments