Skip to content

Assertion `VT.getSizeInBits() == Operand.getValueSizeInBits() && "Cannot BITCAST between types of different sizes!" #128775

@androm3da

Description

@androm3da

The ./reduced_matrix_types.ll test case below asserts at O0. This case was reduced from https://github.com/llvm/llvm-test-suite/blob/589a966491ac5edc64c6f915d7301351e309db65/SingleSource/UnitTests/matrix-types-spec.cpp

target datalayout = "e-m:e-p:32:32:32-a:0-n16:32-i64:64:64-i32:32:32-i16:16:16-i1:8:8-f32:32:32-f64:64:64-v32:32:32-v64:64:64-v512:512:512-v1024:1024:1024-v2048:2048:2048"
target triple = "hexagon-unknown-linux-musl"

define void @_Z13testTransposeIjLj8ELj7EEvv(<56 x i32> %matins.7.6.i, ptr %ResSpec) #0 {
entry:
  %split = shufflevector <56 x i32> %matins.7.6.i, <56 x i32> zeroinitializer, <7 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6>
  store <7 x i32> %split, ptr %ResSpec, align 32
  ret void
}

attributes #0 = { "target-features"="+hvx-ieee-fp,+hvx-length128b,+hvxv68,+v68,-long-calls" }

Test build:

./bin/llc -O0 --mtriple=hexagon ./reduced_matrix_types.ll 
[44/44] Linking CXX executable bin/llc
llc: /local/mnt/workspace/upstream/toolchain_for_hexagon/llvm-project/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp:5444: SDValue llvm::SelectionDAG::getNode(unsigned int, const SDLoc &, EVT, SDValue, const SDNodeFlags): Assertion `VT.getSizeInBits() == Operand.getValueSizeInBits() && "Cannot BITCAST between types of different sizes!"' failed.
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 -O2 --mtriple=hexagon ./reduced_matrix_types.ll
1.	Running pass 'Function Pass Manager' on module './reduced_matrix_types.ll'.
2.	Running pass 'Hexagon DAG->DAG Pattern Instruction Selection' on function '@_Z13testTransposeIjLj8ELj7EEvv'
 #0 0x0000557da88ed474 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (./bin/llc+0x24e9474)
 #1 0x0000557da88eb14e llvm::sys::RunSignalHandlers() (./bin/llc+0x24e714e)
 #2 0x0000557da88ed93a SignalHandler(int) Signals.cpp:0:0
 #3 0x00007f35d0ec1520 (/lib/x86_64-linux-gnu/libc.so.6+0x42520)
 #4 0x00007f35d0f159fc __pthread_kill_implementation ./nptl/pthread_kill.c:44:76
 #5 0x00007f35d0f159fc __pthread_kill_internal ./nptl/pthread_kill.c:78:10
 #6 0x00007f35d0f159fc pthread_kill ./nptl/pthread_kill.c:89:10
 #7 0x00007f35d0ec1476 gsignal ./signal/../sysdeps/posix/raise.c:27:6
 #8 0x00007f35d0ea77f3 abort ./stdlib/abort.c:81:7
 #9 0x00007f35d0ea771b _nl_load_domain ./intl/loadmsgcat.c:1177:9
#10 0x00007f35d0eb8e96 (/lib/x86_64-linux-gnu/libc.so.6+0x39e96)
#11 0x0000557da8617cc9 llvm::SelectionDAG::getNode(unsigned int, llvm::SDLoc const&, llvm::EVT, llvm::SDValue, llvm::SDNodeFlags) (./bin/llc+0x2213cc9)
#12 0x0000557da8607907 llvm::SelectionDAG::getBitcast(llvm::EVT, llvm::SDValue) (./bin/llc+0x2203907)
#13 0x0000557da759a738 llvm::HexagonTargetLowering::extractHvxSubvectorReg(llvm::SDValue, llvm::SDValue, llvm::SDValue, llvm::SDLoc const&, llvm::MVT, llvm::SelectionDAG&) const HexagonISelLoweringHVX.cpp:0:0
#14 0x0000557da759f48c llvm::HexagonTargetLowering::LowerHvxExtractSubvector(llvm::SDValue, llvm::SelectionDAG&) const HexagonISelLoweringHVX.cpp:0:0
#15 0x0000557da75a9b50 llvm::HexagonTargetLowering::LowerHvxOperation(llvm::SDValue, llvm::SelectionDAG&) const HexagonISelLoweringHVX.cpp:0:0
#16 0x0000557da758cd87 llvm::HexagonTargetLowering::LowerOperation(llvm::SDValue, llvm::SelectionDAG&) const HexagonISelLowering.cpp:0:0
#17 0x0000557da870f9c8 (anonymous namespace)::SelectionDAGLegalize::LegalizeOp(llvm::SDNode*) LegalizeDAG.cpp:0:0
#18 0x0000557da870eb96 llvm::SelectionDAG::Legalize() (./bin/llc+0x230ab96)
#19 0x0000557da865588f llvm::SelectionDAGISel::CodeGenAndEmitDAG() (./bin/llc+0x225188f)
#20 0x0000557da8653abc llvm::SelectionDAGISel::SelectAllBasicBlocks(llvm::Function const&) (./bin/llc+0x224fabc)
#21 0x0000557da864fefd llvm::SelectionDAGISel::runOnMachineFunction(llvm::MachineFunction&) (./bin/llc+0x224befd)
#22 0x0000557da768e4e4 llvm::HexagonDAGToDAGISel::runOnMachineFunction(llvm::MachineFunction&) HexagonISelDAGToDAG.cpp:0:0
#23 0x0000557da7b786e3 llvm::MachineFunctionPass::runOnFunction(llvm::Function&) (./bin/llc+0x17746e3)
#24 0x0000557da806a6d2 llvm::FPPassManager::runOnFunction(llvm::Function&) (./bin/llc+0x1c666d2)
#25 0x0000557da8072b32 llvm::FPPassManager::runOnModule(llvm::Module&) (./bin/llc+0x1c6eb32)
#26 0x0000557da806b227 llvm::legacy::PassManagerImpl::run(llvm::Module&) (./bin/llc+0x1c67227)
#27 0x0000557da7534936 main (./bin/llc+0x1130936)
#28 0x00007f35d0ea8d90 __libc_start_call_main ./csu/../sysdeps/nptl/libc_start_call_main.h:58:16
#29 0x00007f35d0ea8e40 call_init ./csu/../csu/libc-start.c:128:20
#30 0x00007f35d0ea8e40 __libc_start_main ./csu/../csu/libc-start.c:379:5
#31 0x0000557da752f465 _start (./bin/llc+0x112b465)
Aborted (core dumped)

I have bisected this failure to d9ed93d.

Metadata

Metadata

Type

Projects

Status

Done

Relationships

None yet

Development

No branches or pull requests

Issue actions