1 ; RUN: llc < %s -march=x86-64 -enable-unsafe-fp-math | FileCheck %s 2 3 define double @exact(double %x) { 4 ; Exact division by a constant converted to multiplication. 5 ; CHECK: @exact 6 ; CHECK: mulsd 7 %div = fdiv double %x, 2.0 8 ret double %div 9 } 10 11 define double @inexact(double %x) { 12 ; Inexact division by a constant converted to multiplication. 13 ; CHECK: @inexact 14 ; CHECK: mulsd 15 %div = fdiv double %x, 0x41DFFFFFFFC00000 16 ret double %div 17 } 18 19 define double @funky(double %x) { 20 ; No conversion to multiplication if too funky. 21 ; CHECK: @funky 22 ; CHECK: divsd 23 %div = fdiv double %x, 0.0 24 ret double %div 25 } 26 27 define double @denormal1(double %x) { 28 ; Don't generate multiplication by a denormal. 29 ; CHECK: @denormal1 30 ; CHECK: divsd 31 %div = fdiv double %x, 0x7FD0000000000001 32 ret double %div 33 } 34 35 define double @denormal2(double %x) { 36 ; Don't generate multiplication by a denormal. 37 ; CHECK: @denormal 38 ; CHECK: divsd 39 %div = fdiv double %x, 0x7FEFFFFFFFFFFFFF 40 ret double %div 41 } 42