Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[hexagon - hvx] Cannot select: t50: v4i16 = bswap t96, ../examples/dr_wav.h:1190:16 #62474

Closed
androm3da opened this issue May 1, 2023 · 2 comments
Assignees

Comments

@androm3da
Copy link
Member

androm3da commented May 1, 2023

"Cannot select" failure compiling common.cpp from https://github.com/ggerganov/whisper.cpp/blob/9c61f5f58555bb136b71b391b40f956328f18dd5/examples/common.cpp -

$ hexagon-unknown-linux-musl-clang++ -DGGML_SHARED -DWHISPER_SHARED -I../examples -I../. -mv67 -O2 -mhvx -fvectorize -Wall -Wextra -Wpedantic -Wcast-qual -g -fPIC -MD -MT examples/CMakeFiles/common.dir/common.cpp.o -MF examples/CMakeFiles/common.dir/common.cpp.o.d -o examples/CMakeFiles/common.dir/common.cpp.o -c ../examples/common.cpp
fatal error: error in backend: Cannot select: t50: v4i16 = bswap t96, ../examples/dr_wav.h:1190:16 @[ ../examples/dr_wav.h:1257:25 @[ ../examples/dr_wav.h:1264:29 @[ ../examples/dr_wav.h:1411:13 @[ ../examples/dr_wav.h:3626:9 ] ] ] ]
  t96: v4i16 = bitcast t344, ../examples/dr_wav.h:1264:46 @[ ../examples/dr_wav.h:1411:13 @[ ../examples/dr_wav.h:3626:9 ] ]
    t344: i64 = HexagonISD::COMBINE t210, t204, ../examples/dr_wav.h:1264:46 @[ ../examples/dr_wav.h:1411:13 @[ ../examples/dr_wav.h:3626:9 ] ]
      t210: i32 = or t209, t207, ../examples/dr_wav.h:1264:46 @[ ../examples/dr_wav.h:1411:13 @[ ../examples/dr_wav.h:3626:9 ] ]
        t209: i32 = shl t208, Constant:i32<16>, ../examples/dr_wav.h:1264:46 @[ ../examples/dr_wav.h:1411:13 @[ ../examples/dr_wav.h:3626:9 ] ]
          t208: i32,ch = load<(load (s16) from %ir.cgep185 + 6, !tbaa !21531), zext from i16> t0, t260, undef:i32, ../examples/dr_wav.h:1264:46 @[ ../examples/dr_wav.h:1411:13 @[ ../examples/dr_wav.h:3626:9 ] ]
            t260: i32 = add t8, Constant:i32<6>, ../examples/dr_wav.h:1264:46 @[ ../examples/dr_wav.h:1411:13 @[ ../examples/dr_wav.h:3626:9 ] ]
              t8: i32 = add t5, t7
                t5: i32,ch = CopyFromReg t0, Register:i32 %56
                  t4: i32 = Register %56
                t7: i32 = shl t3, Constant:i32<1>
                  t3: i32 = truncate t2, ../examples/dr_wav.h:1263:5 @[ ../examples/dr_wav.h:1411:13 @[ ../examples/dr_wav.h:3626:9 ] ]

                  t6: i32 = Constant<1>
              t259: i32 = Constant<6>
            t10: i32 = undef
          t33: i32 = Constant<16>
        t207: i32,ch = load<(load (s16) from %ir.cgep185 + 4, !tbaa !21531), zext from i16> t0, t100, undef:i32, ../examples/dr_wav.h:1264:46 @[ ../examples/dr_wav.h:1411:13 @[ ../examples/dr_wav.h:3626:9 ] ]
          t100: i32 = add nuw t8, Constant:i32<4>, ../examples/dr_wav.h:1264:46 @[ ../examples/dr_wav.h:1411:13 @[ ../examples/dr_wav.h:3626:9 ] ]
            t8: i32 = add t5, t7
              t5: i32,ch = CopyFromReg t0, Register:i32 %56
                t4: i32 = Register %56
              t7: i32 = shl t3, Constant:i32<1>
                t3: i32 = truncate t2, ../examples/dr_wav.h:1263:5 @[ ../examples/dr_wav.h:1411:13 @[ ../examples/dr_wav.h:3626:9 ] ]
                  t2: i64,ch = CopyFromReg t0, Register:i64 %50, ../examples/dr_wav.h:1263:5 @[ ../examples/dr_wav.h:1411:13 @[ ../examples/dr_wav.h:3626:9 ] ]

                t6: i32 = Constant<1>
            t99: i32 = Constant<4>
          t10: i32 = undef
      t204: i32 = or t203, t201, ../examples/dr_wav.h:1264:46 @[ ../examples/dr_wav.h:1411:13 @[ ../examples/dr_wav.h:3626:9 ] ]
        t203: i32 = shl t202, Constant:i32<16>, ../examples/dr_wav.h:1264:46 @[ ../examples/dr_wav.h:1411:13 @[ ../examples/dr_wav.h:3626:9 ] ]
          t202: i32,ch = load<(load (s16) from %ir.cgep185 + 2, !tbaa !21531), zext from i16> t0, t182, undef:i32, ../examples/dr_wav.h:1264:46 @[ ../examples/dr_wav.h:1411:13 @[ ../examples/dr_wav.h:3626:9 ] ]
            t182: i32 = add nuw t8, Constant:i32<2>, ../examples/dr_wav.h:1264:46 @[ ../examples/dr_wav.h:1411:13 @[ ../examples/dr_wav.h:3626:9 ] ]
              t8: i32 = add t5, t7
                t5: i32,ch = CopyFromReg t0, Register:i32 %56
                  t4: i32 = Register %56
                t7: i32 = shl t3, Constant:i32<1>
                  t3: i32 = truncate t2, ../examples/dr_wav.h:1263:5 @[ ../examples/dr_wav.h:1411:13 @[ ../examples/dr_wav.h:3626:9 ] ]

                  t6: i32 = Constant<1>
              t146: i32 = Constant<2>
            t10: i32 = undef
          t33: i32 = Constant<16>
        t201: i32,ch = load<(load (s16) from %ir.cgep185, !tbaa !21531), zext from i16> t0, t8, undef:i32, ../examples/dr_wav.h:1264:46 @[ ../examples/dr_wav.h:1411:13 @[ ../examples/dr_wav.h:3626:9 ] ]
          t8: i32 = add t5, t7
            t5: i32,ch = CopyFromReg t0, Register:i32 %56
              t4: i32 = Register %56
            t7: i32 = shl t3, Constant:i32<1>
              t3: i32 = truncate t2, ../examples/dr_wav.h:1263:5 @[ ../examples/dr_wav.h:1411:13 @[ ../examples/dr_wav.h:3626:9 ] ]
                t2: i64,ch = CopyFromReg t0, Register:i64 %50, ../examples/dr_wav.h:1263:5 @[ ../examples/dr_wav.h:1411:13 @[ ../examples/dr_wav.h:3626:9 ] ]
                  t1: i64 = Register %50
              t6: i32 = Constant<1>
          t10: i32 = undef
In function: drwav_read_pcm_frames_be
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace, preprocessed source, and associated run script.
Stack dump:
0.	Program arguments: /pkg/qct/software/llvm/build_tools/clang+llvm-16.0.0-cross-hexagon-unknown-linux-musl/x86_64-linux-gnu/bin/hexagon-unknown-linux-musl-clang++ -DGGML_SHARED -DWHISPER_SHARED -I../examples -I../. -mv67 -O2 -mhvx -fvectorize -Wall -Wextra -Wpedantic -Wcast-qual -g -fPIC -MD -MT examples/CMakeFiles/common.dir/common.cpp.o -MF examples/CMakeFiles/common.dir/common.cpp.o.d -o examples/CMakeFiles/common.dir/common.cpp.o -c ../examples/common.cpp
1.	<eof> parser at end of file
2.	Code generation
3.	Running pass 'Function Pass Manager' on module '../examples/common.cpp'.
4.	Running pass 'Hexagon DAG->DAG Pattern Instruction Selection' on function '@drwav_read_pcm_frames_be'
 #0 0x00000000030c3d72 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/pkg/qct/software/llvm/build_tools/clang+llvm-16.0.0-cross-hexagon-unknown-linux-musl/x86_64-linux-gnu/bin/hexagon-unknown-linux-musl-clang+++0x30c3d72)
 #1 0x00000000030c1c6e llvm::sys::RunSignalHandlers() (/pkg/qct/software/llvm/build_tools/clang+llvm-16.0.0-cross-hexagon-unknown-linux-musl/x86_64-linux-gnu/bin/hexagon-unknown-linux-musl-clang+++0x30c1c6e)
 #2 0x00000000030c31ad llvm::sys::CleanupOnSignal(unsigned long) (/pkg/qct/software/llvm/build_tools/clang+llvm-16.0.0-cross-hexagon-unknown-linux-musl/x86_64-linux-gnu/bin/hexagon-unknown-linux-musl-clang+++0x30c31ad)
 #3 0x0000000003054606 (anonymous namespace)::CrashRecoveryContextImpl::HandleCrash(int, unsigned long) CrashRecoveryContext.cpp:0:0
 #4 0x00000000030545b9 llvm::CrashRecoveryContext::HandleExit(int) (/pkg/qct/software/llvm/build_tools/clang+llvm-16.0.0-cross-hexagon-unknown-linux-musl/x86_64-linux-gnu/bin/hexagon-unknown-linux-musl-clang+++0x30545b9)
 #5 0x00000000030bdf97 llvm::sys::Process::Exit(int, bool) (/pkg/qct/software/llvm/build_tools/clang+llvm-16.0.0-cross-hexagon-unknown-linux-musl/x86_64-linux-gnu/bin/hexagon-unknown-linux-musl-clang+++0x30bdf97)
 #6 0x0000000001f67282 (/pkg/qct/software/llvm/build_tools/clang+llvm-16.0.0-cross-hexagon-unknown-linux-musl/x86_64-linux-gnu/bin/hexagon-unknown-linux-musl-clang+++0x1f67282)
 #7 0x0000000003058c06 llvm::report_fatal_error(llvm::Twine const&, bool) (/pkg/qct/software/llvm/build_tools/clang+llvm-16.0.0-cross-hexagon-unknown-linux-musl/x86_64-linux-gnu/bin/hexagon-unknown-linux-musl-clang+++0x3058c06)
 #8 0x00000000041087e0 llvm::SelectionDAGISel::CannotYetSelect(llvm::SDNode*) (/pkg/qct/software/llvm/build_tools/clang+llvm-16.0.0-cross-hexagon-unknown-linux-musl/x86_64-linux-gnu/bin/hexagon-unknown-linux-musl-clang+++0x41087e0)
 #9 0x0000000004107a66 llvm::SelectionDAGISel::SelectCodeCommon(llvm::SDNode*, unsigned char const*, unsigned int) (/pkg/qct/software/llvm/build_tools/clang+llvm-16.0.0-cross-hexagon-unknown-linux-musl/x86_64-linux-gnu/bin/hexagon-unknown-linux-musl-clang+++0x4107a66)
#10 0x00000000040fce97 llvm::SelectionDAGISel::DoInstructionSelection() (/pkg/qct/software/llvm/build_tools/clang+llvm-16.0.0-cross-hexagon-unknown-linux-musl/x86_64-linux-gnu/bin/hexagon-unknown-linux-musl-clang+++0x40fce97)
#11 0x00000000040fbf18 llvm::SelectionDAGISel::CodeGenAndEmitDAG() (/pkg/qct/software/llvm/build_tools/clang+llvm-16.0.0-cross-hexagon-unknown-linux-musl/x86_64-linux-gnu/bin/hexagon-unknown-linux-musl-clang+++0x40fbf18)
#12 0x00000000040f9da0 llvm::SelectionDAGISel::SelectAllBasicBlocks(llvm::Function const&) (/pkg/qct/software/llvm/build_tools/clang+llvm-16.0.0-cross-hexagon-unknown-linux-musl/x86_64-linux-gnu/bin/hexagon-unknown-linux-musl-clang+++0x40f9da0)
#13 0x00000000040f6afc llvm::SelectionDAGISel::runOnMachineFunction(llvm::MachineFunction&) (/pkg/qct/software/llvm/build_tools/clang+llvm-16.0.0-cross-hexagon-unknown-linux-musl/x86_64-linux-gnu/bin/hexagon-unknown-linux-musl-clang+++0x40f6afc)
#14 0x0000000002009f24 llvm::HexagonDAGToDAGISel::runOnMachineFunction(llvm::MachineFunction&) HexagonISelDAGToDAG.cpp:0:0
#15 0x00000000024bcec8 llvm::MachineFunctionPass::runOnFunction(llvm::Function&) (/pkg/qct/software/llvm/build_tools/clang+llvm-16.0.0-cross-hexagon-unknown-linux-musl/x86_64-linux-gnu/bin/hexagon-unknown-linux-musl-clang+++0x24bcec8)
#16 0x00000000029d0672 llvm::FPPassManager::runOnFunction(llvm::Function&) (/pkg/qct/software/llvm/build_tools/clang+llvm-16.0.0-cross-hexagon-unknown-linux-musl/x86_64-linux-gnu/bin/hexagon-unknown-linux-musl-clang+++0x29d0672)
#17 0x00000000029d68f1 llvm::FPPassManager::runOnModule(llvm::Module&) (/pkg/qct/software/llvm/build_tools/clang+llvm-16.0.0-cross-hexagon-unknown-linux-musl/x86_64-linux-gnu/bin/hexagon-unknown-linux-musl-clang+++0x29d68f1)
#18 0x00000000029d0c48 llvm::legacy::PassManagerImpl::run(llvm::Module&) (/pkg/qct/software/llvm/build_tools/clang+llvm-16.0.0-cross-hexagon-unknown-linux-musl/x86_64-linux-gnu/bin/hexagon-unknown-linux-musl-clang+++0x29d0c48)
#19 0x00000000033dfe5c clang::EmitBackendOutput(clang::DiagnosticsEngine&, clang::HeaderSearchOptions const&, clang::CodeGenOptions const&, clang::TargetOptions const&, clang::LangOptions const&, llvm::StringRef, llvm::Module*, clang::BackendAction, std::unique_ptr<llvm::raw_pwrite_stream, std::default_delete<llvm::raw_pwrite_stream>>) (/pkg/qct/software/llvm/build_tools/clang+llvm-16.0.0-cross-hexagon-unknown-linux-musl/x86_64-linux-gnu/bin/hexagon-unknown-linux-musl-clang+++0x33dfe5c)
#20 0x0000000003de7f3a clang::BackendConsumer::HandleTranslationUnit(clang::ASTContext&) CodeGenAction.cpp:0:0
#21 0x0000000004ea0540 clang::ParseAST(clang::Sema&, bool, bool) (/pkg/qct/software/llvm/build_tools/clang+llvm-16.0.0-cross-hexagon-unknown-linux-musl/x86_64-linux-gnu/bin/hexagon-unknown-linux-musl-clang+++0x4ea0540)
#22 0x0000000003d22910 clang::FrontendAction::Execute() (/pkg/qct/software/llvm/build_tools/clang+llvm-16.0.0-cross-hexagon-unknown-linux-musl/x86_64-linux-gnu/bin/hexagon-unknown-linux-musl-clang+++0x3d22910)
#23 0x0000000003c927cf clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/pkg/qct/software/llvm/build_tools/clang+llvm-16.0.0-cross-hexagon-unknown-linux-musl/x86_64-linux-gnu/bin/hexagon-unknown-linux-musl-clang+++0x3c927cf)
#24 0x0000000003de0d51 clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (/pkg/qct/software/llvm/build_tools/clang+llvm-16.0.0-cross-hexagon-unknown-linux-musl/x86_64-linux-gnu/bin/hexagon-unknown-linux-musl-clang+++0x3de0d51)
#25 0x0000000001f66db5 cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (/pkg/qct/software/llvm/build_tools/clang+llvm-16.0.0-cross-hexagon-unknown-linux-musl/x86_64-linux-gnu/bin/hexagon-unknown-linux-musl-clang+++0x1f66db5)
#26 0x0000000001f62b17 ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&) driver.cpp:0:0
#27 0x0000000003afcf92 void llvm::function_ref<void ()>::callback_fn<clang::driver::CC1Command::Execute(llvm::ArrayRef<std::optional<llvm::StringRef>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>*, bool*) const::$_1>(long) Job.cpp:0:0
#28 0x000000000305456b llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>) (/pkg/qct/software/llvm/build_tools/clang+llvm-16.0.0-cross-hexagon-unknown-linux-musl/x86_64-linux-gnu/bin/hexagon-unknown-linux-musl-clang+++0x305456b)
#29 0x0000000003afc90e clang::driver::CC1Command::Execute(llvm::ArrayRef<std::optional<llvm::StringRef>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>*, bool*) const (/pkg/qct/software/llvm/build_tools/clang+llvm-16.0.0-cross-hexagon-unknown-linux-musl/x86_64-linux-gnu/bin/hexagon-unknown-linux-musl-clang+++0x3afc90e)
#30 0x0000000003ab92a4 clang::driver::Compilation::ExecuteCommand(clang::driver::Command const&, clang::driver::Command const*&, bool) const (/pkg/qct/software/llvm/build_tools/clang+llvm-16.0.0-cross-hexagon-unknown-linux-musl/x86_64-linux-gnu/bin/hexagon-unknown-linux-musl-clang+++0x3ab92a4)
#31 0x0000000003ab959e clang::driver::Compilation::ExecuteJobs(clang::driver::JobList const&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&, bool) const (/pkg/qct/software/llvm/build_tools/clang+llvm-16.0.0-cross-hexagon-unknown-linux-musl/x86_64-linux-gnu/bin/hexagon-unknown-linux-musl-clang+++0x3ab959e)
#32 0x0000000003ada6c0 clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&) (/pkg/qct/software/llvm/build_tools/clang+llvm-16.0.0-cross-hexagon-unknown-linux-musl/x86_64-linux-gnu/bin/hexagon-unknown-linux-musl-clang+++0x3ada6c0)
#33 0x0000000001f618e6 clang_main(int, char**) (/pkg/qct/software/llvm/build_tools/clang+llvm-16.0.0-cross-hexagon-unknown-linux-musl/x86_64-linux-gnu/bin/hexagon-unknown-linux-musl-clang+++0x1f618e6)
#34 0x00007f2c39df4083 __libc_start_main /build/glibc-SzIz7B/glibc-2.31/csu/../csu/libc-start.c:342:3
#35 0x0000000001f5ecaa _start (/pkg/qct/software/llvm/build_tools/clang+llvm-16.0.0-cross-hexagon-unknown-linux-musl/x86_64-linux-gnu/bin/hexagon-unknown-linux-musl-clang+++0x1f5ecaa)
clang-16: error: clang frontend command failed with exit code 70 (use -v to see invocation)
clang version 16.0.0
Target: hexagon-unknown-linux-musl
Thread model: posix
InstalledDir: /pkg/qct/software/llvm/build_tools/clang+llvm-16.0.0-cross-hexagon-unknown-linux-musl/x86_64-linux-gnu/bin
clang-16: note: diagnostic msg: 
********************

PLEASE ATTACH THE FOLLOWING FILES TO THE BUG REPORT:
Preprocessed source(s) and associated run script(s) are located at:
clang-16: note: diagnostic msg: /tmp/common-cb81a3.cpp
clang-16: note: diagnostic msg: /tmp/common-cb81a3.sh
clang-16: note: diagnostic msg: 

********************
@llvmbot
Copy link
Collaborator

llvmbot commented May 1, 2023

@llvm/issue-subscribers-backend-hexagon

@androm3da
Copy link
Member Author

Uploaded preprocessed source and run script:
common-cb81a3.cpp.txt
common-cb81a3.sh.txt

@kparzysz-quic kparzysz-quic self-assigned this May 3, 2023
llvmbot pushed a commit to llvm/llvm-project-release-prs that referenced this issue May 16, 2023
tstellar pushed a commit to llvm/llvm-project-release-prs that referenced this issue May 30, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants