[llvm] 47f3d90 - [X86] int-to-fp-demanded.ll - add f16/bf16 signbit extraction tests (#189570)
via llvm-commits
llvm-commits at lists.llvm.org
Tue Mar 31 02:53:37 PDT 2026
Author: Simon Pilgrim
Date: 2026-03-31T09:53:32Z
New Revision: 47f3d90dacb92ac2281ae259bd3be6584b386253
URL: https://github.com/llvm/llvm-project/commit/47f3d90dacb92ac2281ae259bd3be6584b386253
DIFF: https://github.com/llvm/llvm-project/commit/47f3d90dacb92ac2281ae259bd3be6584b386253.diff
LOG: [X86] int-to-fp-demanded.ll - add f16/bf16 signbit extraction tests (#189570)
Based off original test from #189129
Added:
Modified:
llvm/test/CodeGen/X86/int-to-fp-demanded.ll
Removed:
################################################################################
diff --git a/llvm/test/CodeGen/X86/int-to-fp-demanded.ll b/llvm/test/CodeGen/X86/int-to-fp-demanded.ll
index cdde03fb0534b..54e4db33e5f22 100644
--- a/llvm/test/CodeGen/X86/int-to-fp-demanded.ll
+++ b/llvm/test/CodeGen/X86/int-to-fp-demanded.ll
@@ -380,3 +380,59 @@ define i32 @uitofp_multiuse_okay(i32 %i_in) nounwind {
%r = and i32 %i, 2147483648
ret i32 %r
}
+
+define i16 @f16_bitcast_signbit(float %a) nounwind {
+; X86-LABEL: f16_bitcast_signbit:
+; X86: # %bb.0:
+; X86-NEXT: pushl %eax
+; X86-NEXT: flds {{[0-9]+}}(%esp)
+; X86-NEXT: fstps (%esp)
+; X86-NEXT: calll __truncsfhf2
+; X86-NEXT: # kill: def $ax killed $ax def $eax
+; X86-NEXT: andl $32768, %eax # imm = 0x8000
+; X86-NEXT: # kill: def $ax killed $ax killed $eax
+; X86-NEXT: popl %ecx
+; X86-NEXT: retl
+;
+; X64-LABEL: f16_bitcast_signbit:
+; X64: # %bb.0:
+; X64-NEXT: pushq %rax
+; X64-NEXT: callq __truncsfhf2 at PLT
+; X64-NEXT: pextrw $0, %xmm0, %eax
+; X64-NEXT: andl $32768, %eax # imm = 0x8000
+; X64-NEXT: # kill: def $ax killed $ax killed $eax
+; X64-NEXT: popq %rcx
+; X64-NEXT: retq
+ %bf = fptrunc float %a to half
+ %i = bitcast half %bf to i16
+ %r = and i16 %i, -32768
+ ret i16 %r
+}
+
+define i16 @bf16_bitcast_signbit(float %a) nounwind {
+; X86-LABEL: bf16_bitcast_signbit:
+; X86: # %bb.0:
+; X86-NEXT: pushl %eax
+; X86-NEXT: flds {{[0-9]+}}(%esp)
+; X86-NEXT: fstps (%esp)
+; X86-NEXT: calll __truncsfbf2
+; X86-NEXT: # kill: def $ax killed $ax def $eax
+; X86-NEXT: andl $32768, %eax # imm = 0x8000
+; X86-NEXT: # kill: def $ax killed $ax killed $eax
+; X86-NEXT: popl %ecx
+; X86-NEXT: retl
+;
+; X64-LABEL: bf16_bitcast_signbit:
+; X64: # %bb.0:
+; X64-NEXT: pushq %rax
+; X64-NEXT: callq __truncsfbf2 at PLT
+; X64-NEXT: pextrw $0, %xmm0, %eax
+; X64-NEXT: andl $32768, %eax # imm = 0x8000
+; X64-NEXT: # kill: def $ax killed $ax killed $eax
+; X64-NEXT: popq %rcx
+; X64-NEXT: retq
+ %bf = fptrunc float %a to bfloat
+ %i = bitcast bfloat %bf to i16
+ %r = and i16 %i, -32768
+ ret i16 %r
+}
More information about the llvm-commits
mailing list