Issue 100846
Summary [RISCV] build_vector crash with Zvfbfmin without Zbfmin
Labels backend:RISC-V
Assignees
Reporter topperc
    This test crashes with -mattr=+zvfbfmin

```
define <4 x bfloat> @foo() { 
  ret <4 x bfloat> <bfloat 1.0, bfloat 2.0, bfloat 3.0, bfloat 4.0> 
}
```

```
SoftPromoteHalfOperand Op #0: t5: v4bf16 = BUILD_VECTOR ConstantFP:bf16<APFloat(16256)>, ConstantFP:bf16<APFloat(16384)>, ConstantFP:bf16<APFloat(16448)>, ConstantFP:bf16<APFloat(16512)>

LLVM ERROR: Do not know how to soft promote this operator's operand!
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0.      Program arguments: ./bin/llc test.ll -mattr=+zvfbfmin -mtriple=riscv64
1.      Running pass 'Function Pass Manager' on module 'test.ll'.
2.      Running pass 'RISC-V DAG->DAG Pattern Instruction Selection' on function '@foo'
 #0 0x0000558ca69f7dd8 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (./bin/llc+0x34b5dd8)
 #1 0x0000558ca69f592e llvm::sys::RunSignalHandlers() (./bin/llc+0x34b392e)
 #2 0x0000558ca69f84ad SignalHandler(int) Signals.cpp:0:0
 #3 0x00007ff113171cf0 __restore_rt (/lib64/libpthread.so.0+0x12cf0)
 #4 0x00007ff111bf1acf raise (/lib64/libc.so.6+0x4eacf)
 #5 0x00007ff111bc4ea5 abort (/lib64/libc.so.6+0x21ea5)
 #6 0x0000558ca696da13 llvm::report_fatal_error(llvm::Twine const&, bool) (./bin/llc+0x342ba13)
 #7 0x0000558ca696d846 (./bin/llc+0x342b846)
 #8 0x0000558ca68ecf3e (./bin/llc+0x33aaf3e)
 #9 0x0000558ca687cc81 llvm::DAGTypeLegalizer::run() (./bin/llc+0x333ac81)
#10 0x0000558ca6881e07 llvm::SelectionDAG::LegalizeTypes() (./bin/llc+0x333fe07)
#11 0x0000558ca67ff676 llvm::SelectionDAGISel::CodeGenAndEmitDAG() (./bin/llc+0x32bd676)
#12 0x0000558ca67fe08a llvm::SelectionDAGISel::SelectAllBasicBlocks(llvm::Function const&) (./bin/llc+0x32bc08a)
#13 0x0000558ca67fb661 llvm::SelectionDAGISel::runOnMachineFunction(llvm::MachineFunction&) (./bin/llc+0x32b9661)
#14 0x0000558ca67f9006 llvm::SelectionDAGISelLegacy::runOnMachineFunction(llvm::MachineFunction&) (./bin/llc+0x32b7006)
#15 0x0000558ca5bac9ef llvm::MachineFunctionPass::runOnFunction(llvm::Function&) (./bin/llc+0x266a9ef)
#16 0x0000558ca60e6b89 llvm::FPPassManager::runOnFunction(llvm::Function&) (./bin/llc+0x2ba4b89)
#17 0x0000558ca60eebb2 llvm::FPPassManager::runOnModule(llvm::Module&) (./bin/llc+0x2bacbb2)
#18 0x0000558ca60e7416 llvm::legacy::PassManagerImpl::run(llvm::Module&) (./bin/llc+0x2ba5416)
#19 0x0000558ca3f97751 compileModule(char**, llvm::LLVMContext&) llc.cpp:0:0
#20 0x0000558ca3f94ddd main (./bin/llc+0xa52ddd)
#21 0x00007ff111bddd85 __libc_start_main (/lib64/libc.so.6+0x3ad85)
#22 0x0000558ca3f90f7e _start (./bin/llc+0xa4ef7e)
Aborted
```

Probably need to patch this code from #97874 in `lowerBUILD_VECTOR` to handle bf16 too.

```
 // If we don't have scalar f16, we need to bitcast to an i16 vector. 
  if (VT.getVectorElementType() == MVT::f16 && 
      !Subtarget.hasStdExtZfhmin()) 
    return lowerBUILD_VECTORvXf16(Op, DAG)
```

CC: @asb @jacquesguan @wangpc-pp 
_______________________________________________
llvm-bugs mailing list
llvm-bugs@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs

Reply via email to