diff options
| author | Antoni Boucher <bouanto@zoho.com> | 2024-07-02 10:43:26 -0400 |
|---|---|---|
| committer | Antoni Boucher <bouanto@zoho.com> | 2024-07-02 12:28:44 -0400 |
| commit | 4d3d0d492f25eddeb837e16b2773783c95f8933b (patch) | |
| tree | 91ad7497a96b79b57c854176d182ac33c0d8af49 /src | |
| parent | cd014cda8c09afd88f6a9b8d75043c1d95bee734 (diff) | |
Fix intrinsic/generic-arithmetic-pass.rs test
Diffstat (limited to 'src')
| -rw-r--r-- | src/intrinsic/simd.rs | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/src/intrinsic/simd.rs b/src/intrinsic/simd.rs index a54e7107a90..01f207368e8 100644 --- a/src/intrinsic/simd.rs +++ b/src/intrinsic/simd.rs @@ -343,11 +343,13 @@ pub fn generic_simd_intrinsic<'a, 'gcc, 'tcx>( .map(|i| { let index = bx.context.new_rvalue_from_long(bx.i32_type, i as i64); let value = bx.extract_element(vector, index).to_rvalue(); - if name == sym::simd_ctlz { - bx.count_leading_zeroes(value.get_type().get_size() as u64 * 8, value) + let value_type = value.get_type(); + let element = if name == sym::simd_ctlz { + bx.count_leading_zeroes(value_type.get_size() as u64 * 8, value) } else { - bx.count_trailing_zeroes(value.get_type().get_size() as u64 * 8, value) - } + bx.count_trailing_zeroes(value_type.get_size() as u64 * 8, value) + }; + bx.context.new_cast(None, element, value_type) }) .collect(); return Ok(bx.context.new_rvalue_from_vector(None, vector.get_type(), &elements)); |
