Skip to content

LLVM 21.1.0: Unable to expand result for ppcf128 with ISD::AssertNoFPClass #151375

@amy-kwan

Description

@amy-kwan

I've encountered the following issue on LLVM 21.1.0 rc1 as a result of #138839 (comment) on PPC64LE, with the ppc_fp128 type.

$ cat t.ll
target datalayout = "e-m:e-Fn32-i64:64-i128:128-n32:64-S128-v256:256:256-v512:512:512"
target triple = "powerpc64le-unknown-linux-gnu"

define ppc_fp128 @test(ppc_fp128 nofpclass(nan) %s) {
entry:
  ret ppc_fp128 %s
}

$ llc < t.ll
	.abiversion 2
	.file	"<stdin>"
ExpandFloatResult #0: t7: ppcf128 = AssertNoFPClass t5, TargetConstant:i32<3>

LLVM ERROR: Do not know how to expand the result of this operator!
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0.	Program arguments: llc
1.	Running pass 'Function Pass Manager' on module '<stdin>'.
2.	Running pass 'PowerPC DAG->DAG Pattern Instruction Selection' on function '@test'
 #0 0x0000071c5b0bb42c llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) 
 #1 0x0000071c5b0bbbd4 PrintStackTraceSignalHandler(void*) Signals.cpp:0:0
 #2 0x0000071c5b0b7fac llvm::sys::RunSignalHandlers()  
 #3 0x0000071c5b0bc83c SignalHandler(int, siginfo_t*, void*) Signals.cpp:0:0
 #4 0x00006b262e170444 (linux-vdso64.so.1+0x444)
 #5 0x00006b262d8f55fc __pthread_kill_implementation ./nptl/pthread_kill.c:44:76
 #6 0x00006b262d8f55fc __pthread_kill_internal ./nptl/pthread_kill.c:78:10
 #7 0x00006b262d8f55fc pthread_kill ./nptl/pthread_kill.c:89:10
 #8 0x00006b262d88bd5c raise ./signal/../sysdeps/posix/raise.c:26:13
 #9 0x00006b262d86645c abort ./stdlib/abort.c:79:7
#10 0x0000071c5aff42fc llvm::report_fatal_error(llvm::Twine const&, bool)
#11 0x0000071c5aff402c llvm::report_fatal_error(char const*, bool)
#12 0x0000071c5aec252c llvm::DAGTypeLegalizer::ExpandFloatResult(llvm::SDNode*, unsigned int) LegalizeFloatTypes.cpp:0:0
#13 0x0000071c5ae5bbcc llvm::DAGTypeLegalizer::run() LegalizeTypes.cpp:0:0
. . .

The ISD::AssertNoFPClass presumably needs to know how to expand float results.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    Projects

    Status

    Needs Fix

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions