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

Crash in ARM instruction selection for fp_round #53533

Closed
stephenhines opened this issue Feb 2, 2022 · 4 comments
Closed

Crash in ARM instruction selection for fp_round #53533

stephenhines opened this issue Feb 2, 2022 · 4 comments
Assignees

Comments

@stephenhines
Copy link
Collaborator

This is one reduced crasher from android/ndk#1608. The LLVM IR input can be found at Arm82InstanceNorm-22e98b.ll.txt. Drop the .txt to get the original file that crashes with llc.

srhines@ringworld:__:~$ /disk/llvm/build/bin/llc Arm82InstanceNorm-22e98b.ll 
LLVM ERROR: Cannot select: t9: v4f16 = fp_round t43, TargetConstant:i32<0>, Arm82InstanceNorm-22e98b.ii:24:14
  t43: v4f32,i32,ch = ARMISD::VLD1_UPD<(load (s128) from %ir.lsr.iv1113, align 4, !tbaa !79)> t0, t4, Constant:i32<16>, Constant:i32<1>, Arm82InstanceNorm-22e98b.ii:24:14
    t4: i32,ch = CopyFromReg t0, Register:i32 %4, Arm82InstanceNorm-22e98b.ii:23:33
      t3: i32 = Register %4
    t21: i32 = Constant<16>
    t41: i32 = Constant<1>
  t8: i32 = TargetConstant<0>
In function: _ZN17Arm82InstanceNormC2Ev
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0.      Program arguments: /disk/llvm/build/bin/llc Arm82InstanceNorm-22e98b.ll
1.      Running pass 'Function Pass Manager' on module 'Arm82InstanceNorm-22e98b.ll'.
2.      Running pass 'ARM Instruction Selection' on function '@_ZN17Arm82InstanceNormC2Ev'
Stack dump without symbol names (ensure you have llvm-symbolizer in your PATH or set the environment var `LLVM_SYMBOLIZER_PATH` to point to it):
/disk/llvm/build/bin/llc(_ZN4llvm3sys15PrintStackTraceERNS_11raw_ostreamEi+0x3a)[0x447704a]
/disk/llvm/build/bin/llc[0x44771fb]
/disk/llvm/build/bin/llc(_ZN4llvm3sys17RunSignalHandlersEv+0x8a)[0x44758aa]
/disk/llvm/build/bin/llc[0x4477925]
/lib/x86_64-linux-gnu/libpthread.so.0(+0x13200)[0x7f3de4bda200]
/lib/x86_64-linux-gnu/libc.so.6(gsignal+0x141)[0x7f3de466f891]
/lib/x86_64-linux-gnu/libc.so.6(abort+0x112)[0x7f3de4659536]
/disk/llvm/build/bin/llc[0x439fa4a]
/disk/llvm/build/bin/llc[0x420ff1b]
/disk/llvm/build/bin/llc(_ZN4llvm16SelectionDAGISel16SelectCodeCommonEPNS_6SDNodeEPKhj+0x653e)[0x420d51e]
/disk/llvm/build/bin/llc[0x1979559]
/disk/llvm/build/bin/llc[0x195ff1a]
/disk/llvm/build/bin/llc(_ZN4llvm16SelectionDAGISel22DoInstructionSelectionEv+0x629)[0x4201df9]
/disk/llvm/build/bin/llc(_ZN4llvm16SelectionDAGISel17CodeGenAndEmitDAGEv+0x161a)[0x4200e4a]
/disk/llvm/build/bin/llc(_ZN4llvm16SelectionDAGISel16SelectBasicBlockENS_14ilist_iteratorINS_12ilist_detail12node_optionsINS_11InstructionELb1ELb0EvEELb0ELb1EEES6_Rb+0x17d)[0x41ff81d]
/disk/llvm/build/bin/llc(_ZN4llvm16SelectionDAGISel20SelectAllBasicBlocksERKNS_8FunctionE+0x16b0)[0x41ff2b0]
/disk/llvm/build/bin/llc(_ZN4llvm16SelectionDAGISel20runOnMachineFunctionERNS_15MachineFunctionE+0x7f5)[0x41fc6d5]
/disk/llvm/build/bin/llc[0x1956225]
/disk/llvm/build/bin/llc(_ZN4llvm19MachineFunctionPass13runOnFunctionERNS_8FunctionE+0x1f7)[0x33131d7]
/disk/llvm/build/bin/llc(_ZN4llvm13FPPassManager13runOnFunctionERNS_8FunctionE+0x26e)[0x399db6e]
/disk/llvm/build/bin/llc(_ZN4llvm13FPPassManager11runOnModuleERNS_6ModuleE+0x72)[0x39a29f2]
/disk/llvm/build/bin/llc[0x399e459]
/disk/llvm/build/bin/llc(_ZN4llvm6legacy15PassManagerImpl3runERNS_6ModuleE+0x10d)[0x399dfcd]
/disk/llvm/build/bin/llc(_ZN4llvm6legacy11PassManager3runERNS_6ModuleE+0x21)[0x39a2cd1]
/disk/llvm/build/bin/llc[0xd5deb9]
/disk/llvm/build/bin/llc(main+0x53e)[0xd5c27e]
/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xcd)[0x7f3de465a7ed]
/disk/llvm/build/bin/llc(_start+0x2a)[0xd5ba6a]
Aborted
@llvmbot
Copy link
Member

llvmbot commented Feb 2, 2022

@llvm/issue-subscribers-backend-arm

@stephenhines stephenhines changed the title Crash in ARM instruction selection for ARMISD::VLD1_UPD Crash in ARM instruction selection for fp_round Feb 2, 2022
@stephenhines
Copy link
Collaborator Author

I thought I had a second issue, but I realize I mistakenly ignored the first line. I suspect that this bugpoint-reduced case might be helpful too. bugpoint-reduced-simplified.ll.txt is the source file for this case, which is definitely a bit smaller.

srhines@ringworld:__:~$ /disk/llvm/build/bin/llc bugpoint-reduced-simplified.ll 
LLVM ERROR: Cannot select: t3: v4f16 = fp_round undef:v4f32, TargetConstant:i32<0>
  t1: v4f32 = undef
  t2: i32 = TargetConstant<0>
In function: _ZN17Arm82InstanceNormC2Ev
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0.      Program arguments: /disk/llvm/build/bin/llc bugpoint-reduced-simplified.ll
1.      Running pass 'Function Pass Manager' on module 'bugpoint-reduced-simplified.ll'.
2.      Running pass 'ARM Instruction Selection' on function '@_ZN17Arm82InstanceNormC2Ev'
Stack dump without symbol names (ensure you have llvm-symbolizer in your PATH or set the environment var `LLVM_SYMBOLIZER_PATH` to point to it):
/disk/llvm/build/bin/llc(_ZN4llvm3sys15PrintStackTraceERNS_11raw_ostreamEi+0x3a)[0x447704a]
/disk/llvm/build/bin/llc[0x44771fb]
/disk/llvm/build/bin/llc(_ZN4llvm3sys17RunSignalHandlersEv+0x8a)[0x44758aa]
/disk/llvm/build/bin/llc[0x4477925]
/lib/x86_64-linux-gnu/libpthread.so.0(+0x13200)[0x7fc5f38c1200]
/lib/x86_64-linux-gnu/libc.so.6(gsignal+0x141)[0x7fc5f3356891]
/lib/x86_64-linux-gnu/libc.so.6(abort+0x112)[0x7fc5f3340536]
/disk/llvm/build/bin/llc[0x439fa4a]
/disk/llvm/build/bin/llc[0x420ff1b]
/disk/llvm/build/bin/llc(_ZN4llvm16SelectionDAGISel16SelectCodeCommonEPNS_6SDNodeEPKhj+0x653e)[0x420d51e]
/disk/llvm/build/bin/llc[0x1979559]
/disk/llvm/build/bin/llc[0x195ff1a]
/disk/llvm/build/bin/llc(_ZN4llvm16SelectionDAGISel22DoInstructionSelectionEv+0x629)[0x4201df9]
/disk/llvm/build/bin/llc(_ZN4llvm16SelectionDAGISel17CodeGenAndEmitDAGEv+0x161a)[0x4200e4a]
/disk/llvm/build/bin/llc(_ZN4llvm16SelectionDAGISel16SelectBasicBlockENS_14ilist_iteratorINS_12ilist_detail12node_optionsINS_11InstructionELb1ELb0EvEELb0ELb1EEES6_Rb+0x17d)[0x41ff81d]
/disk/llvm/build/bin/llc(_ZN4llvm16SelectionDAGISel20SelectAllBasicBlocksERKNS_8FunctionE+0x16b0)[0x41ff2b0]
/disk/llvm/build/bin/llc(_ZN4llvm16SelectionDAGISel20runOnMachineFunctionERNS_15MachineFunctionE+0x7f5)[0x41fc6d5]
/disk/llvm/build/bin/llc[0x1956225]
/disk/llvm/build/bin/llc(_ZN4llvm19MachineFunctionPass13runOnFunctionERNS_8FunctionE+0x1f7)[0x33131d7]
/disk/llvm/build/bin/llc(_ZN4llvm13FPPassManager13runOnFunctionERNS_8FunctionE+0x26e)[0x399db6e]
/disk/llvm/build/bin/llc(_ZN4llvm13FPPassManager11runOnModuleERNS_6ModuleE+0x72)[0x39a29f2]
/disk/llvm/build/bin/llc[0x399e459]
/disk/llvm/build/bin/llc(_ZN4llvm6legacy15PassManagerImpl3runERNS_6ModuleE+0x10d)[0x399dfcd]
/disk/llvm/build/bin/llc(_ZN4llvm6legacy11PassManager3runERNS_6ModuleE+0x21)[0x39a2cd1]
/disk/llvm/build/bin/llc[0xd5deb9]
/disk/llvm/build/bin/llc(main+0x53e)[0xd5c27e]
/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xcd)[0x7fc5f33417ed]
/disk/llvm/build/bin/llc(_start+0x2a)[0xd5ba6a]
Aborted

@ostannard ostannard self-assigned this Feb 9, 2022
@ostannard
Copy link
Collaborator

Only triggers when the fullfp16 target feature (introduced in v8.2A, adds instructions for arithmetic on half-precision scalars and vectors) is enabled. Bisected to d16037d, which was the start of codegen support for that feature, so I don't think this has ever worked properly.

@ostannard
Copy link
Collaborator

Fix: https://reviews.llvm.org/D119354

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