[LLVMbugs] [Bug 11334] New: 'fpext float2 to double2' not lowered to 'cvtps2pd'

bugzilla-daemon at llvm.org bugzilla-daemon at llvm.org
Tue Nov 8 03:23:09 PST 2011


             Bug #: 11334
           Summary: 'fpext float2 to double2' not lowered to 'cvtps2pd'
           Product: libraries
           Version: trunk
          Platform: PC
        OS/Version: Linux
            Status: NEW
          Severity: enhancement
          Priority: P
         Component: Backend: X86
        AssignedTo: unassignedbugs at nondot.org
        ReportedBy: zvi.rackover at intel.com
                CC: llvmbugs at cs.uiuc.edu
    Classification: Unclassified

Consider the following test:
; RUN: llc < %s -mtriple=x86_64-pc-linux -mcpu=corei7 | FileCheck %s

define <2 x double> @f2d_ext_vec(<2 x float> %v1) nounwind {
; CHECK: cvtps2pd
  %f1 = fpext <2 x float> %v1 to <2 x double>
  ret <2 x double> %f1

The generated code is:
        movdqa  %xmm0, %xmm1
        cvtss2sd        %xmm1, %xmm0
        pshufd  $1, %xmm1, %xmm1        # xmm1 = xmm1[1,0,0,0]
        cvtss2sd        %xmm1, %xmm1
        unpcklpd        %xmm1, %xmm0    # xmm0 = xmm0[0],xmm1[0]

A more optimal code would be:
        cvtps2pd  %xmm0, %xmm0

Configure bugmail: http://llvm.org/bugs/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.

More information about the llvm-bugs mailing list