ac: add various int8 definitions
authorSamuel Pitoiset <samuel.pitoiset@gmail.com>
Wed, 13 Mar 2019 14:53:51 +0000 (15:53 +0100)
committerSamuel Pitoiset <samuel.pitoiset@gmail.com>
Thu, 21 Mar 2019 08:02:10 +0000 (09:02 +0100)
Original patch by Rhys Perry.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
src/amd/common/ac_llvm_build.c
src/amd/common/ac_llvm_build.h

index 4d0cb555a42472f1664745f4b1243219d41396fa..195fdcb224dab792752a59d391798a7d39b58e53 100644 (file)
@@ -87,6 +87,8 @@ ac_llvm_context_init(struct ac_llvm_context *ctx,
        ctx->v4f32 = LLVMVectorType(ctx->f32, 4);
        ctx->v8i32 = LLVMVectorType(ctx->i32, 8);
 
+       ctx->i8_0 = LLVMConstInt(ctx->i8, 0, false);
+       ctx->i8_1 = LLVMConstInt(ctx->i8, 1, false);
        ctx->i16_0 = LLVMConstInt(ctx->i16, 0, false);
        ctx->i16_1 = LLVMConstInt(ctx->i16, 1, false);
        ctx->i32_0 = LLVMConstInt(ctx->i32, 0, false);
@@ -201,7 +203,9 @@ ac_get_type_size(LLVMTypeRef type)
 
 static LLVMTypeRef to_integer_type_scalar(struct ac_llvm_context *ctx, LLVMTypeRef t)
 {
-       if (t == ctx->f16 || t == ctx->i16)
+       if (t == ctx->i8)
+               return ctx->i8;
+       else if (t == ctx->f16 || t == ctx->i16)
                return ctx->i16;
        else if (t == ctx->f32 || t == ctx->i32)
                return ctx->i32;
@@ -253,7 +257,9 @@ ac_to_integer_or_pointer(struct ac_llvm_context *ctx, LLVMValueRef v)
 
 static LLVMTypeRef to_float_type_scalar(struct ac_llvm_context *ctx, LLVMTypeRef t)
 {
-       if (t == ctx->i16 || t == ctx->f16)
+       if (t == ctx->i8)
+               return ctx->i8;
+       else if (t == ctx->i16 || t == ctx->f16)
                return ctx->f16;
        else if (t == ctx->i32 || t == ctx->f32)
                return ctx->f32;
index 723aec53cbe1254f953a6042916d83db05c3c9b2..f6bf473f6a11636cbb8950afa8a1b6cfd2b65860 100644 (file)
@@ -74,6 +74,8 @@ struct ac_llvm_context {
        LLVMTypeRef v4f32;
        LLVMTypeRef v8i32;
 
+       LLVMValueRef i8_0;
+       LLVMValueRef i8_1;
        LLVMValueRef i16_0;
        LLVMValueRef i16_1;
        LLVMValueRef i32_0;