*julia> **@code_llvm(b^a)*
define i1 @"julia_^_21646"(i1, i1) { top: %2 = xor i1 %1, true %3 = or i1 %0, %2 ret i1 %3 } On Friday, October 7, 2016 at 10:56:26 AM UTC-3, Kevin Liu wrote: > > Sorry, no need, I got this > > *julia> **@code_llvm(a<=b)* > > > define i1 @"julia_<=_21637"(i1, i1) { > > top: > > %2 = xor i1 %0, true > > %3 = or i1 %1, %2 > > ret i1 %3 > > } > > > *julia> **@code_llvm(ifelse(a,b,true))* > > > define i1 @julia_ifelse_21636(i1, i1, i1) { > > top: > > %3 = select i1 %0, i1 %1, i1 %2 > > ret i1 %3 > > } > > > How do you read this output? > > On Friday, October 7, 2016 at 10:50:57 AM UTC-3, Kevin Liu wrote: >> >> Jeffrey, can you show the expression you put inside @code_llvm() and >> @code_native() for evaluation? >> >> On Friday, October 7, 2016 at 2:26:56 AM UTC-3, Jeffrey Sarnoff wrote: >>> >>> Hi Jussi, >>> >>> Your version compiles down more neatly than the ifelse version. On my >>> system, BenchmarkTools gives nearly identical results; I don't know why, >>> but the ifelse version is consistently a smidge faster (~%2, relative >>> speed). Here is the llvm code and local native code for each, your version >>> looks more tidy. >>> >>> >>> ``` >>> implies(p::Bool, q::Bool) = (p <= q) implies(p::Bool, q::Bool) >>> = ifelse( p, q, true ) >>> >>> # llvm >>> >>> %2 = xor i8 %0, 1 %2 = and i8 %0, 1 >>> %3 = or i8 %2, %1 %3 = icmp eq i8 %2, 0 >>> ret i8 %3 %4 = select i1 %3, i8 >>> 1, i8 %1 >>> ret i8 %3 >>> >>> # native with some common code removed >>> >>> xorb $1, %dil testb $1, %dil >>> orb %sil, %dil movb $1, %al >>> movb %dil, %al je L15 >>> popq %rbp movb %sil, %al >>> retq L15: popq %rbp >>> retq >>> ``` >>> >>> >>> >>> >>> On Friday, October 7, 2016 at 12:22:23 AM UTC-4, Jussi Piitulainen wrote: >>>> >>>> >>>> implies(p::Bool, q::Bool) = p <= q >>>> >>>> >>>> >>>> torstai 6. lokakuuta 2016 19.10.51 UTC+3 Kevin Liu kirjoitti: >>>>> >>>>> How is an implication represented in Julia? >>>>> >>>>> >>>>> https://en.wikipedia.org/wiki/Material_conditional#Definitions_of_the_material_conditional >>>>> >>>>