[llvm] [X86] Lower mathlib call ldexp into scalef when avx512 is enabled (PR #69710)
Matt Arsenault via llvm-commits
llvm-commits at lists.llvm.org
Wed Jan 17 01:00:42 PST 2024
================
@@ -0,0 +1,361 @@
+; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 3
+; RUN: llc -mtriple=x86_64 -mattr=+avx512f < %s -o - | FileCheck %s --check-prefixes=AVX512
+; RUN: llc -mtriple=x86_64 -mattr=+avx512vl < %s -o - | FileCheck %s --check-prefixes=AVX512VL
+
+define half @test_half(half %x, i32 %exp) {
+; AVX512-LABEL: test_half:
+; AVX512: # %bb.0: # %entry
+; AVX512-NEXT: vpextrw $0, %xmm0, %eax
+; AVX512-NEXT: vcvtsi2ss %edi, %xmm1, %xmm0
+; AVX512-NEXT: movzwl %ax, %eax
+; AVX512-NEXT: vmovd %eax, %xmm1
+; AVX512-NEXT: vcvtph2ps %xmm1, %xmm1
+; AVX512-NEXT: vscalefss %xmm0, %xmm1, %xmm0
+; AVX512-NEXT: vcvtps2ph $4, %xmm0, %xmm0
+; AVX512-NEXT: vmovd %xmm0, %eax
+; AVX512-NEXT: vpinsrw $0, %eax, %xmm0, %xmm0
+; AVX512-NEXT: retq
+;
+; AVX512VL-LABEL: test_half:
+; AVX512VL: # %bb.0: # %entry
+; AVX512VL-NEXT: vpextrw $0, %xmm0, %eax
+; AVX512VL-NEXT: vcvtsi2ss %edi, %xmm1, %xmm0
+; AVX512VL-NEXT: movzwl %ax, %eax
+; AVX512VL-NEXT: vmovd %eax, %xmm1
+; AVX512VL-NEXT: vcvtph2ps %xmm1, %xmm1
+; AVX512VL-NEXT: vscalefss %xmm0, %xmm1, %xmm0
+; AVX512VL-NEXT: vcvtps2ph $4, %xmm0, %xmm0
+; AVX512VL-NEXT: vmovd %xmm0, %eax
+; AVX512VL-NEXT: vpinsrw $0, %eax, %xmm0, %xmm0
+; AVX512VL-NEXT: retq
+entry:
+ %r = tail call fast half @llvm.ldexp.f16.i32(half %x, i32 %exp)
----------------
arsenm wrote:
Drop unnecessary fast flags?
https://github.com/llvm/llvm-project/pull/69710
More information about the llvm-commits
mailing list