Skip to content

@fastmath maximum segfaults for Float16 on master #49907

Closed
@matthias314

Description

@matthias314

On master I get

julia> @fastmath maximum(Float16[1,2,3]; init = Float16(0))

LLVM ERROR: Cannot select: 0xe31218: v16f16 = X86ISD::FMAX nnan ninf nsz arcp contract afn reassoc 0xe4a4b0, 0xe1ddc8, array.jl:938 @[ reduce.jl:60 @[ reduce.jl:48 @[ reduce.jl:44 @[ reducedim.jl:362 @[ reducedim.jl:357 @[ reducedim.jl:357 @[ reducedim.jl:406 @[ reducedim.jl:406 @[ fastmath.jl:380 @[ fastmath.jl:380 ] ] ] ] ] ] ] ] ] ]
  0xe4a4b0: v16f16,ch = CopyFromReg 0x91a8d8, Register:v16f16 %10, array.jl:938 @[ reduce.jl:60 @[ reduce.jl:48 @[ reduce.jl:44 @[ reducedim.jl:362 @[ reducedim.jl:357 @[ reducedim.jl:357 @[ reducedim.jl:406 @[ reducedim.jl:406 @[ fastmath.jl:380 @[ fastmath.jl:380 ] ] ] ] ] ] ] ] ] ]
    0xe28c10: v16f16 = Register %10
  0xe1ddc8: v16f16,ch = CopyFromReg 0x91a8d8, Register:v16f16 %11, array.jl:938 @[ reduce.jl:60 @[ reduce.jl:48 @[ reduce.jl:44 @[ reducedim.jl:362 @[ reducedim.jl:357 @[ reducedim.jl:357 @[ reducedim.jl:406 @[ reducedim.jl:406 @[ fastmath.jl:380 @[ fastmath.jl:380 ] ] ] ] ] ] ] ] ] ]
    0xe1e0a0: v16f16 = Register %11
In function: julia_maximum_fast_16
Complete output
julia> @fastmath maximum(Float16[1,2,3]; init = Float16(0))
LLVM ERROR: Cannot select: 0x258e0d8: v16f16 = X86ISD::FMAX nnan ninf nsz arcp contract afn reassoc 0x25a7370, 0x2572848, array.jl:938 @[ reduce.jl:60 @[ reduce.jl:48 @[ reduce.jl:44 @[ reducedim.jl:362 @[ reducedim.jl:357 @[ reducedim.jl:357 @[ reducedim.jl:406 @[ reducedim.jl:406 @[ fastmath.jl:380 @[ fastmath.jl:380 ] ] ] ] ] ] ] ] ] ]
  0x25a7370: v16f16,ch = CopyFromReg 0x205e688, Register:v16f16 %10, array.jl:938 @[ reduce.jl:60 @[ reduce.jl:48 @[ reduce.jl:44 @[ reducedim.jl:362 @[ reducedim.jl:357 @[ reducedim.jl:357 @[ reducedim.jl:406 @[ reducedim.jl:406 @[ fastmath.jl:380 @[ fastmath.jl:380 ] ] ] ] ] ] ] ] ] ]
    0x2587730: v16f16 = Register %10
  0x2572848: v16f16,ch = CopyFromReg 0x205e688, Register:v16f16 %11, array.jl:938 @[ reduce.jl:60 @[ reduce.jl:48 @[ reduce.jl:44 @[ reducedim.jl:362 @[ reducedim.jl:357 @[ reducedim.jl:357 @[ reducedim.jl:406 @[ reducedim.jl:406 @[ fastmath.jl:380 @[ fastmath.jl:380 ] ] ] ] ] ] ] ] ] ]
    0x2572b20: v16f16 = Register %11
In function: julia_maximum_fast_19

[92681] signal (6.-6): Aborted
in expression starting at REPL[1]:1
gsignal at /lib/x86_64-linux-gnu/libc.so.6 (unknown line)
abort at /lib/x86_64-linux-gnu/libc.so.6 (unknown line)
_ZN4llvm18report_fatal_errorERKNS_5TwineEb at /tmp/julia-d2f5bbd7cf/bin/../lib/julia/libLLVM-15jl.so (unknown line)
_ZN4llvm16SelectionDAGISel15CannotYetSelectEPNS_6SDNodeE at /tmp/julia-d2f5bbd7cf/bin/../lib/julia/libLLVM-15jl.so (unknown line)
_ZN4llvm16SelectionDAGISel16SelectCodeCommonEPNS_6SDNodeEPKhj at /tmp/julia-d2f5bbd7cf/bin/../lib/julia/libLLVM-15jl.so (unknown line)
_ZN12_GLOBAL__N_115X86DAGToDAGISel6SelectEPN4llvm6SDNodeE at /tmp/julia-d2f5bbd7cf/bin/../lib/julia/libLLVM-15jl.so (unknown line)
_ZN4llvm16SelectionDAGISel22DoInstructionSelectionEv at /tmp/julia-d2f5bbd7cf/bin/../lib/julia/libLLVM-15jl.so (unknown line)
_ZN4llvm16SelectionDAGISel17CodeGenAndEmitDAGEv at /tmp/julia-d2f5bbd7cf/bin/../lib/julia/libLLVM-15jl.so (unknown line)
_ZN4llvm16SelectionDAGISel20SelectAllBasicBlocksERKNS_8FunctionE at /tmp/julia-d2f5bbd7cf/bin/../lib/julia/libLLVM-15jl.so (unknown line)
_ZN4llvm16SelectionDAGISel20runOnMachineFunctionERNS_15MachineFunctionE.part.950 at /tmp/julia-d2f5bbd7cf/bin/../lib/julia/libLLVM-15jl.so (unknown line)
_ZN12_GLOBAL__N_115X86DAGToDAGISel20runOnMachineFunctionERN4llvm15MachineFunctionE at /tmp/julia-d2f5bbd7cf/bin/../lib/julia/libLLVM-15jl.so (unknown line)
_ZN4llvm19MachineFunctionPass13runOnFunctionERNS_8FunctionE.part.68 at /tmp/julia-d2f5bbd7cf/bin/../lib/julia/libLLVM-15jl.so (unknown line)
_ZN4llvm13FPPassManager13runOnFunctionERNS_8FunctionE at /tmp/julia-d2f5bbd7cf/bin/../lib/julia/libLLVM-15jl.so (unknown line)
_ZN4llvm13FPPassManager11runOnModuleERNS_6ModuleE at /tmp/julia-d2f5bbd7cf/bin/../lib/julia/libLLVM-15jl.so (unknown line)
_ZN4llvm6legacy15PassManagerImpl3runERNS_6ModuleE at /tmp/julia-d2f5bbd7cf/bin/../lib/julia/libLLVM-15jl.so (unknown line)
_ZN4llvm3orc14SimpleCompilerclERNS_6ModuleE at /tmp/julia-d2f5bbd7cf/bin/../lib/julia/libLLVM-15jl.so (unknown line)
operator() at /cache/build/default-amdci4-2/julialang/julia-master/src/jitlayers.cpp:1272
_ZN4llvm3orc14IRCompileLayer4emitESt10unique_ptrINS0_29MaterializationResponsibilityESt14default_deleteIS3_EENS0_16ThreadSafeModuleE at /tmp/julia-d2f5bbd7cf/bin/../lib/julia/libLLVM-15jl.so (unknown line)
_ZN4llvm3orc16IRTransformLayer4emitESt10unique_ptrINS0_29MaterializationResponsibilityESt14default_deleteIS3_EENS0_16ThreadSafeModuleE at /tmp/julia-d2f5bbd7cf/bin/../lib/julia/libLLVM-15jl.so (unknown line)
emit at /cache/build/default-amdci4-2/julialang/julia-master/src/jitlayers.cpp:690
_ZN4llvm3orc31BasicIRLayerMaterializationUnit11materializeESt10unique_ptrINS0_29MaterializationResponsibilityESt14default_deleteIS3_EE at /tmp/julia-d2f5bbd7cf/bin/../lib/julia/libLLVM-15jl.so (unknown line)
_ZN4llvm3orc19MaterializationTask3runEv at /tmp/julia-d2f5bbd7cf/bin/../lib/julia/libLLVM-15jl.so (unknown line)
_ZN4llvm6detail18UniqueFunctionBaseIvJSt10unique_ptrINS_3orc4TaskESt14default_deleteIS4_EEEE8CallImplIPFvS7_EEEvPvRS7_ at /tmp/julia-d2f5bbd7cf/bin/../lib/julia/libLLVM-15jl.so (unknown line)
_ZN4llvm3orc16ExecutionSession22dispatchOutstandingMUsEv at /tmp/julia-d2f5bbd7cf/bin/../lib/julia/libLLVM-15jl.so (unknown line)
_ZN4llvm3orc16ExecutionSession17OL_completeLookupESt10unique_ptrINS0_21InProgressLookupStateESt14default_deleteIS3_EESt10shared_ptrINS0_23AsynchronousSymbolQueryEESt8functionIFvRKNS_8DenseMapIPNS0_8JITDylibENS_8DenseSetINS0_15SymbolStringPtrENS_12DenseMapInfoISF_vEEEENSG_ISD_vEENS_6detail12DenseMapPairISD_SI_EEEEEE at /tmp/julia-d2f5bbd7cf/bin/../lib/julia/libLLVM-15jl.so (unknown line)
_ZN4llvm3orc25InProgressFullLookupState8completeESt10unique_ptrINS0_21InProgressLookupStateESt14default_deleteIS3_EE at /tmp/julia-d2f5bbd7cf/bin/../lib/julia/libLLVM-15jl.so (unknown line)
_ZN4llvm3orc16ExecutionSession19OL_applyQueryPhase1ESt10unique_ptrINS0_21InProgressLookupStateESt14default_deleteIS3_EENS_5ErrorE at /tmp/julia-d2f5bbd7cf/bin/../lib/julia/libLLVM-15jl.so (unknown line)
_ZN4llvm3orc16ExecutionSession6lookupENS0_10LookupKindERKSt6vectorISt4pairIPNS0_8JITDylibENS0_19JITDylibLookupFlagsEESaIS8_EENS0_15SymbolLookupSetENS0_11SymbolStateENS_15unique_functionIFvNS_8ExpectedINS_8DenseMapINS0_15SymbolStringPtrENS_18JITEvaluatedSymbolENS_12DenseMapInfoISI_vEENS_6detail12DenseMapPairISI_SJ_EEEEEEEEESt8functionIFvRKNSH_IS6_NS_8DenseSetISI_SL_EENSK_IS6_vEENSN_IS6_SV_EEEEEE at /tmp/julia-d2f5bbd7cf/bin/../lib/julia/libLLVM-15jl.so (unknown line)
_ZN4llvm3orc16ExecutionSession6lookupERKSt6vectorISt4pairIPNS0_8JITDylibENS0_19JITDylibLookupFlagsEESaIS7_EENS0_15SymbolLookupSetENS0_10LookupKindENS0_11SymbolStateESt8functionIFvRKNS_8DenseMapIS5_NS_8DenseSetINS0_15SymbolStringPtrENS_12DenseMapInfoISI_vEEEENSJ_IS5_vEENS_6detail12DenseMapPairIS5_SL_EEEEEE at /tmp/julia-d2f5bbd7cf/bin/../lib/julia/libLLVM-15jl.so (unknown line)
addModule at /cache/build/default-amdci4-2/julialang/julia-master/src/jitlayers.cpp:1491
jl_add_to_ee at /cache/build/default-amdci4-2/julialang/julia-master/src/jitlayers.cpp:1896
_jl_compile_codeinst at /cache/build/default-amdci4-2/julialang/julia-master/src/jitlayers.cpp:243
jl_generate_fptr_impl at /cache/build/default-amdci4-2/julialang/julia-master/src/jitlayers.cpp:493
jl_compile_method_internal at /cache/build/default-amdci4-2/julialang/julia-master/src/gf.c:2475 [inlined]
jl_compile_method_internal at /cache/build/default-amdci4-2/julialang/julia-master/src/gf.c:2364
_jl_invoke at /cache/build/default-amdci4-2/julialang/julia-master/src/gf.c:2880 [inlined]
ijl_apply_generic at /cache/build/default-amdci4-2/julialang/julia-master/src/gf.c:3070
jl_apply at /cache/build/default-amdci4-2/julialang/julia-master/src/julia.h:1961 [inlined]
do_call at /cache/build/default-amdci4-2/julialang/julia-master/src/interpreter.c:125
eval_value at /cache/build/default-amdci4-2/julialang/julia-master/src/interpreter.c:222
eval_stmt_value at /cache/build/default-amdci4-2/julialang/julia-master/src/interpreter.c:173 [inlined]
eval_body at /cache/build/default-amdci4-2/julialang/julia-master/src/interpreter.c:602
jl_interpret_toplevel_thunk at /cache/build/default-amdci4-2/julialang/julia-master/src/interpreter.c:760
jl_toplevel_eval_flex at /cache/build/default-amdci4-2/julialang/julia-master/src/toplevel.c:911
jl_toplevel_eval_flex at /cache/build/default-amdci4-2/julialang/julia-master/src/toplevel.c:854
ijl_toplevel_eval_in at /cache/build/default-amdci4-2/julialang/julia-master/src/toplevel.c:970
eval at ./boot.jl:383 [inlined]
eval_user_input at /cache/build/default-amdci4-2/julialang/julia-master/usr/share/julia/stdlib/v1.10/REPL/src/REPL.jl:150
repl_backend_loop at /cache/build/default-amdci4-2/julialang/julia-master/usr/share/julia/stdlib/v1.10/REPL/src/REPL.jl:246
#start_repl_backend#46 at /cache/build/default-amdci4-2/julialang/julia-master/usr/share/julia/stdlib/v1.10/REPL/src/REPL.jl:231
start_repl_backend at /cache/build/default-amdci4-2/julialang/julia-master/usr/share/julia/stdlib/v1.10/REPL/src/REPL.jl:228
_jl_invoke at /cache/build/default-amdci4-2/julialang/julia-master/src/gf.c:2888 [inlined]
ijl_apply_generic at /cache/build/default-amdci4-2/julialang/julia-master/src/gf.c:3070
#run_repl#59 at /cache/build/default-amdci4-2/julialang/julia-master/usr/share/julia/stdlib/v1.10/REPL/src/REPL.jl:376
run_repl at /cache/build/default-amdci4-2/julialang/julia-master/usr/share/julia/stdlib/v1.10/REPL/src/REPL.jl:362
jfptr_run_repl_89532.1 at /tmp/julia-d2f5bbd7cf/lib/julia/sys.so (unknown line)
_jl_invoke at /cache/build/default-amdci4-2/julialang/julia-master/src/gf.c:2888 [inlined]
ijl_apply_generic at /cache/build/default-amdci4-2/julialang/julia-master/src/gf.c:3070
#997 at ./client.jl:421
jfptr_YY.997_82669.1 at /tmp/julia-d2f5bbd7cf/lib/julia/sys.so (unknown line)
_jl_invoke at /cache/build/default-amdci4-2/julialang/julia-master/src/gf.c:2888 [inlined]
ijl_apply_generic at /cache/build/default-amdci4-2/julialang/julia-master/src/gf.c:3070
jl_apply at /cache/build/default-amdci4-2/julialang/julia-master/src/julia.h:1961 [inlined]
jl_f__call_latest at /cache/build/default-amdci4-2/julialang/julia-master/src/builtins.c:812
#invokelatest#2 at ./essentials.jl:863 [inlined]
invokelatest at ./essentials.jl:860 [inlined]
run_main_repl at ./client.jl:405
exec_options at ./client.jl:322
_start at ./client.jl:541
jfptr__start_82698.1 at /tmp/julia-d2f5bbd7cf/lib/julia/sys.so (unknown line)
_jl_invoke at /cache/build/default-amdci4-2/julialang/julia-master/src/gf.c:2888 [inlined]
ijl_apply_generic at /cache/build/default-amdci4-2/julialang/julia-master/src/gf.c:3070
jl_apply at /cache/build/default-amdci4-2/julialang/julia-master/src/julia.h:1961 [inlined]
true_main at /cache/build/default-amdci4-2/julialang/julia-master/src/jlapi.c:582
jl_repl_entrypoint at /cache/build/default-amdci4-2/julialang/julia-master/src/jlapi.c:734
main at /cache/build/default-amdci4-2/julialang/julia-master/cli/loader_exe.c:58
__libc_start_main at /lib/x86_64-linux-gnu/libc.so.6 (unknown line)
unknown function (ip: 0x401098)
Allocations: 2832 (Pool: 2823; Big: 9); GC: 0
Aborted (core dumped)

It works fine with Julia 1.9.0. Float32 and Float64 don't seem to be affected, and without @fastmath it also works for Float16.

Julia Version 1.10.0-DEV.1347
Commit d2f5bbd7cfb (2023-05-20 10:45 UTC)
Platform Info:
  OS: Linux (x86_64-linux-gnu)
  CPU: 4 × Intel(R) Core(TM) i3-10110U CPU @ 2.10GHz
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-15.0.7 (ORCJIT, skylake)
  Threads: 1 on 4 virtual cores

Metadata

Metadata

Assignees

No one assigned

    Labels

    compiler:llvmFor issues that relate to LLVMfloat16foldsum, maximum, reduce, foldl, etc.regressionRegression in behavior compared to a previous versionupstreamThe issue is with an upstream dependency, e.g. LLVM

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions