[CIR][CIRGen][Builtin][X86] Add support for tzcnt_u16, tzcnt_u32, and tzcnt_u64 #1691
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Related: #1404
Implements codegen for the X86 builtins
tzcnt_u16
,tzcnt_u32
, andtzcnt_u64
.While adding tests for both the Intel and AMD variants of BMI intrinsics, I ran into issues when placing them in the same file.
Both
_tzcnt_u16
(Intel) and__tzcnt_u16
(AMD) map to the same inline wrapper in <immintrin.h>. Whether they're isolated or both are present in a test file, Clang emits only one definition (__tzcnt_u16
) which I think causes FileCheck mismatches i.e., the CHECK lines for the Intel version (test_tzcnt_u16
) would fail when looking for_tzcnt_u16
.I tried updating the CHECK lines for the Intel test to match the emitted symbol (
__tzcnt_u16
), but it still failed unless the Intel test was run in isolation, and only when CHECK was updated to_tzcnt_u16
even though__tzcnt_u16
is what is emitted. I also experimented with split-file to isolate the tests, but that didn’t resolve the issue either.To keep the tests independent, I split the Intel and AMD tests into separate files. Was wondering if this was fine as in OG clang, both Intel and AMD variants are in the same file (https://github.com/llvm/clangir/blob/main/clang/test/CodeGen/X86/bmi-builtins.c)