gallivm: Simplify intrinsic name construction.
authorJosé Fonseca <jfonseca@vmware.com>
Tue, 2 Jul 2013 05:53:25 +0000 (06:53 +0100)
committerJosé Fonseca <jfonseca@vmware.com>
Tue, 2 Jul 2013 12:12:31 +0000 (13:12 +0100)
Just noticed this could be slightly shortened when fixing MSVC build.

Trivial.

src/gallium/auxiliary/gallivm/lp_bld_arit_overflow.c

index 124381d87e4f5f2ac88c354dc23f83929541e601..91247fdbc954644fb34c5f92edd55a28d34f375f 100644 (file)
@@ -66,10 +66,8 @@ build_binary_int_overflow(struct gallivm_state *gallivm,
    char intr_str[256];
    LLVMTypeRef type_ref;
    LLVMTypeKind type_kind;
-   LLVMTypeRef oelems[2] = {
-      LLVMInt32TypeInContext(gallivm->context),
-      LLVMInt1TypeInContext(gallivm->context)
-   };
+   unsigned type_width;
+   LLVMTypeRef oelems[2];
    LLVMValueRef oresult;
    LLVMTypeRef otype;
 
@@ -78,26 +76,15 @@ build_binary_int_overflow(struct gallivm_state *gallivm,
    type_kind = LLVMGetTypeKind(type_ref);
 
    debug_assert(type_kind == LLVMIntegerTypeKind);
+   type_width = LLVMGetIntTypeWidth(type_ref);
 
-   switch (LLVMGetIntTypeWidth(type_ref)) {
-   case 16:
-      util_snprintf(intr_str, sizeof intr_str, "%s.i16",
-                    intr_prefix);
-      oelems[0] = LLVMInt16TypeInContext(gallivm->context);
-      break;
-   case 32:
-      util_snprintf(intr_str, sizeof intr_str, "%s.i32",
-                    intr_prefix);
-      oelems[0] = LLVMInt32TypeInContext(gallivm->context);
-      break;
-   case 64:
-      util_snprintf(intr_str, sizeof intr_str, "%s.i64",
-                    intr_prefix);
-      oelems[0] = LLVMInt64TypeInContext(gallivm->context);
-      break;
-   default:
-      debug_assert(!"Unsupported integer width in overflow computation!");
-   }
+   debug_assert(type_width == 16 || type_width == 32 || type_width == 64);
+
+   util_snprintf(intr_str, sizeof intr_str, "%s.i%u",
+                 intr_prefix, type_width);
+
+   oelems[0] = type_ref;
+   oelems[1] = LLVMInt1TypeInContext(gallivm->context);
 
    otype = LLVMStructTypeInContext(gallivm->context, oelems, 2, FALSE);
    oresult = lp_build_intrinsic_binary(builder, intr_str,