[llvm] 3e0cdf3 - Upgrade a rdar://5907648 link to a github issue

Jon Roelofs via llvm-commits llvm-commits at lists.llvm.org
Thu Jul 27 13:37:57 PDT 2023


Author: Jon Roelofs
Date: 2023-07-27T13:37:48-07:00
New Revision: 3e0cdf332fc3ad433dd61adb9d6909c89df35a8f

URL: https://github.com/llvm/llvm-project/commit/3e0cdf332fc3ad433dd61adb9d6909c89df35a8f
DIFF: https://github.com/llvm/llvm-project/commit/3e0cdf332fc3ad433dd61adb9d6909c89df35a8f.diff

LOG: Upgrade a rdar://5907648 link to a github issue

https://github.com/llvm/llvm-project/issues/64174

Added: 
    llvm/test/CodeGen/X86/int8-to-fp.ll

Modified: 
    llvm/lib/Target/X86/README-SSE.txt

Removed: 
    


################################################################################
diff  --git a/llvm/lib/Target/X86/README-SSE.txt b/llvm/lib/Target/X86/README-SSE.txt
index d52840e5c48967..c0c1bb66ebabae 100644
--- a/llvm/lib/Target/X86/README-SSE.txt
+++ b/llvm/lib/Target/X86/README-SSE.txt
@@ -680,37 +680,6 @@ _t:
 	shufps	$132, %xmm2, %xmm0
 	movaps	%xmm0, 0
 
-//===---------------------------------------------------------------------===//
-rdar://5907648
-
-This function:
-
-float foo(unsigned char x) {
-  return x;
-}
-
-compiles to (x86-32):
-
-define float @foo(i8 zeroext  %x) nounwind  {
-	%tmp12 = uitofp i8 %x to float		; <float> [#uses=1]
-	ret float %tmp12
-}
-
-compiles to:
-
-_foo:
-	subl	$4, %esp
-	movzbl	8(%esp), %eax
-	cvtsi2ss	%eax, %xmm0
-	movss	%xmm0, (%esp)
-	flds	(%esp)
-	addl	$4, %esp
-	ret
-
-We should be able to use:
-  cvtsi2ss 8($esp), %xmm0
-since we know the stack slot is already zext'd.
-
 //===---------------------------------------------------------------------===//
 
 Consider using movlps instead of movsd to implement (scalar_to_vector (loadf64))

diff  --git a/llvm/test/CodeGen/X86/int8-to-fp.ll b/llvm/test/CodeGen/X86/int8-to-fp.ll
new file mode 100644
index 00000000000000..72c3e94832d91d
--- /dev/null
+++ b/llvm/test/CodeGen/X86/int8-to-fp.ll
@@ -0,0 +1,25 @@
+; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
+; RUN: llc < %s -mtriple=i386-apple-macosx -mattr=+sse2 | FileCheck %s --check-prefix=X86
+; RUN: llc < %s -mtriple=x86_64-apple-macosx -mattr=+sse2 | FileCheck %s --check-prefix=X64
+
+; We get this right for x86-64, but on x86-32 the code is less optimal.
+; See: https://github.com/llvm/llvm-project/issues/64174
+define noundef float @i8_to_fp(i8 noundef zeroext %0) {
+; X86-LABEL: i8_to_fp:
+; X86:       ## %bb.0:
+; X86-NEXT:    pushl %eax
+; X86-NEXT:    .cfi_def_cfa_offset 8
+; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
+; X86-NEXT:    cvtsi2ss %eax, %xmm0
+; X86-NEXT:    movss %xmm0, (%esp)
+; X86-NEXT:    flds (%esp)
+; X86-NEXT:    popl %eax
+; X86-NEXT:    retl
+;
+; X64-LABEL: i8_to_fp:
+; X64:       ## %bb.0:
+; X64-NEXT:    cvtsi2ss %edi, %xmm0
+; X64-NEXT:    retq
+  %2 = uitofp i8 %0 to float
+  ret float %2
+}


        


More information about the llvm-commits mailing list