@@ -322,7 +322,8 @@ class ConstOCLSPVBuiltin<string _Name, list<Type> _Signature> :
322322// OpenCL v1.0/1.2/2.0 s6.1.1: Built-in Scalar Data Types.
323323def Bool : IntType<"bool", QualType<"Context.BoolTy">, 1>;
324324def TrueChar : IntType<"_char", QualType<"Context.CharTy", 0, 1>, 8>;
325- def Char : IntType<"char", QualTypeFromFunction<"GetCharType", 0, 1>, 8>;
325+ def Char : IntType<"char", QualType<"Context.SignedCharTy", 0, 1>, 8>;
326+ def SChar : IntType<"schar", QualType<"Context.SignedCharTy", 0, 1>, 8>;
326327def UChar : UIntType<"uchar", QualType<"Context.UnsignedCharTy">, 8>;
327328def Short : IntType<"short", QualType<"Context.ShortTy", 0, 1>, 16>;
328329def UShort : UIntType<"ushort", QualType<"Context.UnsignedShortTy">, 16>;
@@ -411,7 +412,7 @@ def IntLongFloatGenType1 : GenericType<"IntLongFloatGenType1", TLIntLongFloats
411412
412413// GenType definitions for every single base type (e.g. fp32 only).
413414// Names are like: GenTypeFloatVecAndScalar.
414- foreach Type = [Char, UChar, Short, UShort,
415+ foreach Type = [Char, UChar, SChar, Short, UShort,
415416 Int, UInt, Long, ULong,
416417 Float, Double, Half] in {
417418 foreach VecSizes = [VecAndScalar, VecNoScalar] in {
@@ -871,16 +872,16 @@ foreach name = ["Dot"] in {
871872}
872873
873874foreach name = ["Any", "All"] in {
874- def : SPVBuiltin<name, [Bool, GenTypeCharVecNoScalar ], Attr.Const>;
875+ def : SPVBuiltin<name, [Bool, GenTypeSCharVecNoScalar ], Attr.Const>;
875876}
876877
877878foreach name = ["IsNan", "IsInf", "IsFinite", "IsNormal", "SignBitSet"] in {
878879 def : SPVBuiltin<name, [Bool, Float], Attr.Const>;
879880 def : SPVBuiltin<name, [Bool, Double], Attr.Const>;
880881 def : SPVBuiltin<name, [Bool, Half], Attr.Const>;
881- def : SPVBuiltin<name, [GenTypeCharVecNoScalar , GenTypeFloatVecNoScalar], Attr.Const>;
882- def : SPVBuiltin<name, [GenTypeCharVecNoScalar , GenTypeDoubleVecNoScalar], Attr.Const>;
883- def : SPVBuiltin<name, [GenTypeCharVecNoScalar , GenTypeHalfVecNoScalar], Attr.Const>;
882+ def : SPVBuiltin<name, [GenTypeSCharVecNoScalar , GenTypeFloatVecNoScalar], Attr.Const>;
883+ def : SPVBuiltin<name, [GenTypeSCharVecNoScalar , GenTypeDoubleVecNoScalar], Attr.Const>;
884+ def : SPVBuiltin<name, [GenTypeSCharVecNoScalar , GenTypeHalfVecNoScalar], Attr.Const>;
884885}
885886
886887foreach name = ["LessOrGreater",
@@ -894,9 +895,9 @@ foreach name = ["LessOrGreater",
894895 def : SPVBuiltin<name, [Bool, Float, Float], Attr.Const>;
895896 def : SPVBuiltin<name, [Bool, Double, Double], Attr.Const>;
896897 def : SPVBuiltin<name, [Bool, Half, Half], Attr.Const>;
897- def : SPVBuiltin<name, [GenTypeCharVecNoScalar , GenTypeFloatVecNoScalar, GenTypeFloatVecNoScalar], Attr.Const>;
898- def : SPVBuiltin<name, [GenTypeCharVecNoScalar , GenTypeDoubleVecNoScalar, GenTypeDoubleVecNoScalar], Attr.Const>;
899- def : SPVBuiltin<name, [GenTypeCharVecNoScalar , GenTypeHalfVecNoScalar, GenTypeHalfVecNoScalar], Attr.Const>;
898+ def : SPVBuiltin<name, [GenTypeSCharVecNoScalar , GenTypeFloatVecNoScalar, GenTypeFloatVecNoScalar], Attr.Const>;
899+ def : SPVBuiltin<name, [GenTypeSCharVecNoScalar , GenTypeDoubleVecNoScalar, GenTypeDoubleVecNoScalar], Attr.Const>;
900+ def : SPVBuiltin<name, [GenTypeSCharVecNoScalar , GenTypeHalfVecNoScalar, GenTypeHalfVecNoScalar], Attr.Const>;
900901}
901902
902903foreach name = ["BitCount"] in {
0 commit comments