gallium/gallivm: fix compilation issues with llvm 11
authorJan Zielinski <jan.zielinski@intel.com>
Sat, 25 Apr 2020 17:27:07 +0000 (19:27 +0200)
committerMarge Bot <eric+marge@anholt.net>
Mon, 27 Apr 2020 16:53:44 +0000 (16:53 +0000)
Top of the trunk LLVM removes old vector type
and introduces two new ones - one for fixed-width
and one for scalable vectors. This commit fixes
compilation issues by switching from LLVMVectorTypeKind
to LLVMFixedVectorTypeKind for new LLVM.

Reviewed-by: Jose Fonseca <jfonseca@vmware.com>
Reviewed-by: Roland Scheidegger <sroland@vmware.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4748>

src/gallium/auxiliary/gallivm/lp_bld_conv.c
src/gallium/auxiliary/gallivm/lp_bld_format_float.c
src/gallium/auxiliary/gallivm/lp_bld_intr.c
src/gallium/auxiliary/gallivm/lp_bld_pack.c
src/gallium/auxiliary/gallivm/lp_bld_printf.c
src/gallium/auxiliary/gallivm/lp_bld_swizzle.c
src/gallium/auxiliary/gallivm/lp_bld_type.c
src/gallium/auxiliary/gallivm/lp_bld_type.h

index 579801ca93a594f7f9d05c54aa81c002eed89296..1321545808ab12d586b4630857c17edb95054880 100644 (file)
@@ -34,7 +34,7 @@
  * The other side of this is that we need to be able convert between several
  * types accurately and efficiently.
  *
- * Conversion between types of different bit width is quite complex since a 
+ * Conversion between types of different bit width is quite complex since a
  *
  * To remember there are a few invariants in type conversions:
  *
@@ -93,7 +93,7 @@ lp_build_half_to_float(struct gallivm_state *gallivm,
 {
    LLVMBuilderRef builder = gallivm->builder;
    LLVMTypeRef src_type = LLVMTypeOf(src);
-   unsigned src_length = LLVMGetTypeKind(src_type) == LLVMVectorTypeKind ?
+   unsigned src_length = LLVMGetTypeKind(src_type) == LLVMFixedVectorTypeKind ?
                             LLVMGetVectorSize(src_type) : 1;
 
    struct lp_type f32_type = lp_type_float_vec(32, 32 * src_length);
@@ -138,7 +138,7 @@ lp_build_float_to_half(struct gallivm_state *gallivm,
 {
    LLVMBuilderRef builder = gallivm->builder;
    LLVMTypeRef f32_vec_type = LLVMTypeOf(src);
-   unsigned length = LLVMGetTypeKind(f32_vec_type) == LLVMVectorTypeKind
+   unsigned length = LLVMGetTypeKind(f32_vec_type) == LLVMFixedVectorTypeKind
                    ? LLVMGetVectorSize(f32_vec_type) : 1;
    struct lp_type i32_type = lp_type_int_vec(32, 32 * length);
    struct lp_type i16_type = lp_type_int_vec(16, 16 * length);
@@ -673,7 +673,7 @@ lp_build_conv(struct gallivm_state *gallivm,
          dst[0] = lp_build_extract_range(gallivm, dst[0], 0, dst_type.length);
       }
 
-      return; 
+      return;
    }
 
    /* Special case 2x8x32 --> 1x16x8, 1x8x32 ->1x8x8
index 1924650ca40905335774c66a7ef5bcfcb79583c4..1d6647da556df80b8783c22cf01624edc2852001 100644 (file)
@@ -240,7 +240,7 @@ lp_build_float_to_r11g11b10(struct gallivm_state *gallivm,
    LLVMValueRef dst, rcomp, bcomp, gcomp;
    struct lp_build_context i32_bld;
    LLVMTypeRef src_type = LLVMTypeOf(*src);
-   unsigned src_length = LLVMGetTypeKind(src_type) == LLVMVectorTypeKind ?
+   unsigned src_length = LLVMGetTypeKind(src_type) == LLVMFixedVectorTypeKind ?
                             LLVMGetVectorSize(src_type) : 1;
    struct lp_type i32_type = lp_type_int_vec(32, 32 * src_length);
 
@@ -406,7 +406,7 @@ lp_build_r11g11b10_to_float(struct gallivm_state *gallivm,
                             LLVMValueRef *dst)
 {
    LLVMTypeRef src_type = LLVMTypeOf(src);
-   unsigned src_length = LLVMGetTypeKind(src_type) == LLVMVectorTypeKind ?
+   unsigned src_length = LLVMGetTypeKind(src_type) == LLVMFixedVectorTypeKind ?
                             LLVMGetVectorSize(src_type) : 1;
    struct lp_type f32_type = lp_type_float_vec(32, 32 * src_length);
 
@@ -464,7 +464,7 @@ lp_build_rgb9e5_to_float(struct gallivm_state *gallivm,
    LLVMBuilderRef builder = gallivm->builder;
    LLVMTypeRef src_type = LLVMTypeOf(src);
    LLVMValueRef shift, scale, bias, exp;
-   unsigned src_length = LLVMGetTypeKind(src_type) == LLVMVectorTypeKind ?
+   unsigned src_length = LLVMGetTypeKind(src_type) == LLVMFixedVectorTypeKind ?
                             LLVMGetVectorSize(src_type) : 1;
    struct lp_type i32_type = lp_type_int_vec(32, 32 * src_length);
    struct lp_type u32_type = lp_type_uint_vec(32, 32 * src_length);
index 5e9cc70ef3d610de39d8deccc2269932e90df8e9..4a3aaa1d511cffcd8c555895fc62374b62937150 100644 (file)
@@ -67,7 +67,7 @@ lp_format_intrinsic(char *name,
    char c;
 
    LLVMTypeKind kind = LLVMGetTypeKind(type);
-   if (kind == LLVMVectorTypeKind) {
+   if (kind == LLVMFixedVectorTypeKind) {
       length = LLVMGetVectorSize(type);
       type = LLVMGetElementType(type);
       kind = LLVMGetTypeKind(type);
index e1f652a9342b3fa164c488aadfe6bacdf85332a1..61e9651fd699418e0da6c18676c254097163bc7c 100644 (file)
@@ -1035,7 +1035,7 @@ lp_build_pad_vector(struct gallivm_state *gallivm,
 
    type = LLVMTypeOf(src);
 
-   if (LLVMGetTypeKind(type) != LLVMVectorTypeKind) {
+   if (LLVMGetTypeKind(type) != LLVMFixedVectorTypeKind) {
       /* Can't use ShuffleVector on non-vector type */
       undef = LLVMGetUndef(LLVMVectorType(type, dst_length));
       return LLVMBuildInsertElement(gallivm->builder, undef, src, lp_build_const_int32(gallivm, 0), "");
index a4233a24e3317cc98f0c1cb3afe60cdc73258826..6884407a83a01070e93a9b32ed46a91845a6ff59 100644 (file)
@@ -92,7 +92,7 @@ lp_build_print_value(struct gallivm_state *gallivm,
    type_ref = LLVMTypeOf(value);
    type_kind = LLVMGetTypeKind(type_ref);
 
-   if (type_kind == LLVMVectorTypeKind) {
+   if (type_kind == LLVMFixedVectorTypeKind) {
       length = LLVMGetVectorSize(type_ref);
 
       type_ref = LLVMGetElementType(type_ref);
index b648e6819941894800aeca49b0b52e6062e1d091..922ef0b7c9e24c44a4515d4fe613b4e851e39bd7 100644 (file)
@@ -50,7 +50,7 @@ lp_build_broadcast(struct gallivm_state *gallivm,
 {
    LLVMValueRef res;
 
-   if (LLVMGetTypeKind(vec_type) != LLVMVectorTypeKind) {
+   if (LLVMGetTypeKind(vec_type) != LLVMFixedVectorTypeKind) {
       /* scalar */
       assert(vec_type == LLVMTypeOf(scalar));
       res = scalar;
index 5a8019990808c2c89559d5250394fbf177853163..0b108702998619b1868e33883abe759e85af259b 100644 (file)
@@ -76,7 +76,7 @@ lp_build_vec_type(struct gallivm_state *gallivm,struct lp_type type)
  * type and check for identity.
  */
 boolean
-lp_check_elem_type(struct lp_type type, LLVMTypeRef elem_type) 
+lp_check_elem_type(struct lp_type type, LLVMTypeRef elem_type)
 {
    LLVMTypeKind elem_kind;
 
@@ -113,12 +113,12 @@ lp_check_elem_type(struct lp_type type, LLVMTypeRef elem_type)
          return FALSE;
    }
 
-   return TRUE; 
+   return TRUE;
 }
 
 
 boolean
-lp_check_vec_type(struct lp_type type, LLVMTypeRef vec_type) 
+lp_check_vec_type(struct lp_type type, LLVMTypeRef vec_type)
 {
    LLVMTypeRef elem_type;
 
@@ -129,7 +129,7 @@ lp_check_vec_type(struct lp_type type, LLVMTypeRef vec_type)
    if (type.length == 1)
       return lp_check_elem_type(type, vec_type);
 
-   if(LLVMGetTypeKind(vec_type) != LLVMVectorTypeKind)
+   if(LLVMGetTypeKind(vec_type) != LLVMFixedVectorTypeKind)
       return FALSE;
 
    if(LLVMGetVectorSize(vec_type) != type.length)
@@ -142,7 +142,7 @@ lp_check_vec_type(struct lp_type type, LLVMTypeRef vec_type)
 
 
 boolean
-lp_check_value(struct lp_type type, LLVMValueRef val) 
+lp_check_value(struct lp_type type, LLVMValueRef val)
 {
    LLVMTypeRef vec_type;
 
@@ -259,7 +259,7 @@ lp_sizeof_llvm_type(LLVMTypeRef t)
       return 8 * sizeof(float);
    case LLVMDoubleTypeKind:
       return 8 * sizeof(double);
-   case LLVMVectorTypeKind:
+   case LLVMFixedVectorTypeKind:
       {
          LLVMTypeRef elem = LLVMGetElementType(t);
          unsigned len = LLVMGetVectorSize(t);
@@ -311,8 +311,12 @@ lp_typekind_name(LLVMTypeKind t)
       return "LLVMArrayTypeKind";
    case LLVMPointerTypeKind:
       return "LLVMPointerTypeKind";
-   case LLVMVectorTypeKind:
+   case LLVMFixedVectorTypeKind:
+   #if LLVM_VERSION_MAJOR >= 11
+      return "LLVMFixedVectorTypeKind";
+   #else
       return "LLVMVectorTypeKind";
+   #endif
    case LLVMMetadataTypeKind:
       return "LLVMMetadataTypeKind";
    default:
@@ -329,7 +333,7 @@ lp_dump_llvmtype(LLVMTypeRef t)
 {
    LLVMTypeKind k = LLVMGetTypeKind(t);
 
-   if (k == LLVMVectorTypeKind) {
+   if (k == LLVMFixedVectorTypeKind) {
       LLVMTypeRef te = LLVMGetElementType(t);
       LLVMTypeKind ke = LLVMGetTypeKind(te);
       unsigned len = LLVMGetVectorSize(t);
index 9c7dc252166d8e693f7abf633317a24c390a21dc..f51ce4270716802c74ac3ddf6a17fe3e91952841 100644 (file)
@@ -36,6 +36,9 @@
 #ifndef LP_BLD_TYPE_H
 #define LP_BLD_TYPE_H
 
+#if LLVM_VERSION_MAJOR < 11
+#define LLVMFixedVectorTypeKind LLVMVectorTypeKind
+#endif
 
 #include "util/format/u_format.h"
 #include "pipe/p_compiler.h"