[llvm-bugs] [Bug 34149] New: Suboptimal codegen for "fast" minnum and maxnum
via llvm-bugs
llvm-bugs at lists.llvm.org
Thu Aug 10 21:13:09 PDT 2017
https://bugs.llvm.org/show_bug.cgi?id=34149
Bug ID: 34149
Summary: Suboptimal codegen for "fast" minnum and maxnum
Product: libraries
Version: trunk
Hardware: PC
OS: All
Status: NEW
Severity: enhancement
Priority: P
Component: Backend: X86
Assignee: unassignedbugs at nondot.org
Reporter: sanjoy at playingwithpointers.com
CC: llvm-bugs at lists.llvm.org
On trunk, llc -O3 -mcpu=haswell on this program:
define <4 x double> @via_minnum(<4 x double> %x, <4 x double> %y) {
%z = call fast <4 x double> @llvm.minnum.v4f64(<4 x double> %x, <4 x double>
%y) readnone
ret <4 x double> %z
}
define <4 x double> @via_fcmp(<4 x double> %x, <4 x double> %y) {
%c = fcmp ule <4 x double> %x, %y
%z = select <4 x i1> %c, <4 x double> %x, <4 x double> %y
ret <4 x double> %z
}
declare <4 x double> @llvm.minnum.v4f64(<4 x double>, <4 x double>)
generates:
.text
.file "fast-min.ll"
.globl via_minnum # -- Begin function via_minnum
.p2align 4, 0x90
.type via_minnum, at function
via_minnum: # @via_minnum
.cfi_startproc
# BB#0:
vminpd %ymm0, %ymm1, %ymm2
vcmpunordpd %ymm0, %ymm0, %ymm0
vblendvpd %ymm0, %ymm1, %ymm2, %ymm0
retq
.Lfunc_end0:
.size via_minnum, .Lfunc_end0-via_minnum
.cfi_endproc
# -- End function
.globl via_fcmp # -- Begin function via_fcmp
.p2align 4, 0x90
.type via_fcmp, at function
via_fcmp: # @via_fcmp
.cfi_startproc
# BB#0:
vminpd %ymm0, %ymm1, %ymm0
retq
.Lfunc_end1:
.size via_fcmp, .Lfunc_end1-via_fcmp
.cfi_endproc
# -- End function
.section ".note.GNU-stack","", at progbits
Ideally we should be able to exploit the "fast" attribute on the minnum call to
generate the same assembly for @via_minnum as we do for @via_fcmp
--
You are receiving this mail because:
You are on the CC list for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-bugs/attachments/20170811/2c8387bc/attachment.html>
More information about the llvm-bugs
mailing list