The first port of the library to a non-x86 architecture (ARM) introduced a kmp_invoke_microtask() function which relied on libffi. Two architecture ports after that (aarch64 and ppc64) rely on yet another kmp_invoke_microtask(). I've rearranged the MACRO logic to say "If this isn't an x86 or MIC architecture, then use the kmp_invoke_microtask() that doesn't use libffi". This also makes the library just a little more port friendly for possible future architecture ports and gets rid of a duplicate kmp_invoke_microtask() that is easily replaced by another existing __kmp_invoke_microtask().
Because I don't have access to non-x86 architectures, this patch should be tested by external users if possible although it isn't very invasive.