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

P.288の64ビット版アセンブリ命令に変換する際にエラーにならない #33

Open
m1goh opened this issue Nov 13, 2022 · 0 comments

Comments

@m1goh
Copy link

m1goh commented Nov 13, 2022

P.288のアセンブリ命令の変換の際に32ビット版では、P288のようなエラーになりますが、64ビット版ではエラーにならずアセンブラに変換されてしまいます。

ISEL: Starting pattern match
Initial Opcode index to 0
Match failed at index 0
LLVM ERROR: Cannot select: t19: i32 = rotl t7, Constant:i32<30>
t7: i32,ch = load<(dereferenceable load 4 from %ir.a.addr)> t6, FrameIndex:i32<0>, undef:i32
t3: i32 = FrameIndex<0>
t5: i32 = undef
t8: i32 = Constant<30>
In function: rotate_left
PLEASE submit a bug report to https://bugs.llvm.org/ and include the crash backtrace.
Stack dump:
0. Program arguments: /home/akiyoshi/llvm-myriscvx120/build/bin/llc -debug -march=myriscvx32 -filetype=asm rotate_test.rv32.bc -o -

  1.  Running pass 'Function Pass Manager' on module 'rotate_test.rv32.bc'.
    
  2.  Running pass 'MYRISCVX DAG->DAG Pattern Instruction Selection' on function '@rotate_left'
    

#0 0x0000555bb861bfb6 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) /home/akiyoshi/llvm-myriscvx120/llvm/lib/Support/Unix/Signals.inc:565:22
#1 0x0000555bb861c071 PrintStackTraceSignalHandler(void*) /home/akiyoshi/llvm-myriscvx120/llvm/lib/Support/Unix/Signals.inc:632:1
#2 0x0000555bb8619ce7 llvm::sys::RunSignalHandlers() /home/akiyoshi/llvm-myriscvx120/llvm/lib/Support/Signals.cpp:71:20
#3 0x0000555bb861b902 SignalHandler(int) /home/akiyoshi/llvm-myriscvx120/llvm/lib/Support/Unix/Signals.inc:407:1
#4 0x00007f0854fe9420 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x14420)
#5 0x00007f0854a8600b raise (/lib/x86_64-linux-gnu/libc.so.6+0x4300b)
#6 0x00007f0854a65859 abort (/lib/x86_64-linux-gnu/libc.so.6+0x22859)
#7 0x0000555bb855bc89 llvm::install_bad_alloc_error_handler(void ()(void, std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&, bool), void*) /home/akiyoshi/llvm-myriscvx120/llvm/lib/Support/ErrorHandling.cpp:130:61
#8 0x0000555bb855ba82 llvm::report_fatal_error(llvm::StringRef, bool) /home/akiyoshi/llvm-myriscvx120/llvm/lib/Support/ErrorHandling.cpp:90:68
#9 0x0000555bb8418527 /home/akiyoshi/llvm-myriscvx120/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:3763:21
#10 0x0000555bb8417c4f llvm::SelectionDAGISel::SelectCodeCommon(llvm::SDNode*, unsigned char const*, unsigned int) /home/akiyoshi/llvm-myriscvx120/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:3666:9
#11 0x0000555bb6e24098 llvm::MYRISCVXDAGToDAGISel::SelectCode(llvm::SDNode*) /home/akiyoshi/llvm-myriscvx120/build/lib/Target/MYRISCVX/MYRISCVXGenDAGISel.inc:3962:1
#12 0x0000555bb6e23eea llvm::MYRISCVXDAGToDAGISel::Select(llvm::SDNode*) /home/akiyoshi/llvm-myriscvx120/llvm/lib/Target/MYRISCVX/MYRISCVXISelDAGToDAG.cpp:141:13
#13 0x0000555bb840a1cf llvm::SelectionDAGISel::DoInstructionSelection() /home/akiyoshi/llvm-myriscvx120/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:1118:32
#14 0x0000555bb84094a8 llvm::SelectionDAGISel::CodeGenAndEmitDAG() /home/akiyoshi/llvm-myriscvx120/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:957:61
#15 0x0000555bb8407b7f llvm::SelectionDAGISel::SelectBasicBlock(llvm::ilist_iterator<llvm::ilist_detail::node_options<llvm::Instruction, true, false, void>, false, true>, llvm::ilist_iterator<llvm::ilist_detail::node_options<llvm::Instruction, true, false, void>, false, true>, bool&) /home/akiyoshi/llvm-myriscvx120/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:711:1
#16 0x0000555bb840c885 llvm::SelectionDAGISel::SelectAllBasicBlocks(llvm::Function const&) /home/akiyoshi/llvm-myriscvx120/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:1611:33
#17 0x0000555bb8406789 llvm::SelectionDAGISel::runOnMachineFunction(llvm::MachineFunction&) /home/akiyoshi/llvm-myriscvx120/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:506:7
#18 0x0000555bb6e23792 llvm::MYRISCVXDAGToDAGISel::runOnMachineFunction(llvm::MachineFunction&) /home/akiyoshi/llvm-myriscvx120/llvm/lib/Target/MYRISCVX/MYRISCVXISelDAGToDAG.cpp:52:52
#19 0x0000555bb75c4741 llvm::MachineFunctionPass::runOnFunction(llvm::Function&) /home/akiyoshi/llvm-myriscvx120/llvm/lib/CodeGen/MachineFunctionPass.cpp:72:33
#20 0x0000555bb7c2be9a llvm::FPPassManager::runOnFunction(llvm::Function&) /home/akiyoshi/llvm-myriscvx120/llvm/lib/IR/LegacyPassManager.cpp:1435:20
#21 0x0000555bb7c2c163 llvm::FPPassManager::runOnModule(llvm::Module&) /home/akiyoshi/llvm-myriscvx120/llvm/lib/IR/LegacyPassManager.cpp:1481:13
#22 0x0000555bb7c2c5d5 (anonymous namespace)::MPPassManager::runOnModule(llvm::Module&) /home/akiyoshi/llvm-myriscvx120/llvm/lib/IR/LegacyPassManager.cpp:1550:20
#23 0x0000555bb7c276d0 llvm::legacy::PassManagerImpl::run(llvm::Module&) /home/akiyoshi/llvm-myriscvx120/llvm/lib/IR/LegacyPassManager.cpp:541:13
#24 0x0000555bb7c2ceab llvm::legacy::PassManager::run(llvm::Module&) /home/akiyoshi/llvm-myriscvx120/llvm/lib/IR/LegacyPassManager.cpp:1678:1
#25 0x0000555bb69619f0 compileModule(char**, llvm::LLVMContext&) /home/akiyoshi/llvm-myriscvx120/llvm/tools/llc/llc.cpp:687:66
#26 0x0000555bb695f6cc main /home/akiyoshi/llvm-myriscvx120/llvm/tools/llc/llc.cpp:385:35
#27 0x00007f0854a67083 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x24083)
#28 0x0000555bb695e6be _start (/home/akiyoshi/llvm-myriscvx120/build/bin/llc+0x13256be)
Aborted

********** COMPUTING STACKMAP LIVENESS: rotate_left **********

Debug Range Extension
.globl rotate_left # -- Begin function rotate_left
.p2align 2
.type rotate_left,@function
rotate_left: # @rotate_left

%bb.0: # %entry

    addi    x2, x2, -8
    sw      x10, 4(x2)
    lwu     x10, 4(x2)
    slli    x11, x10, 30
    srli    x10, x10, 2
    or      x10, x11, x10
    sw      x10, 0(x2)
    lw      x10, 0(x2)
    addi    x2, x2, 8
    ret

$func_end0:
.size rotate_left, ($func_end0)-rotate_left
# -- End function
.ident "clang version 12.0.1 (https://github.com/llvm/llvm-project.git 05251477a312cbf758cdc06e9d8751dff0f842e0)"
.section ".note.GNU-stack","",@progbits

本では、32ビット版、64ビット版ともにP.288のようなエラーとなるはずですが、本のように64ビット版でエラーを確認するのにはどうしたらよいでしょうか?教えていただけるとありがたいです。よろしくお願いします。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant