forked from OSchip/llvm-project
[AArch64] Fix assert AArch64TargetLowering::ReplaceNodeResults
Don't know how to custom expand this UNREACHABLE executed at llvm-project/llvm/lib/Target/AArch64/AArch64ISelLowering.cpp:16788 The fix is to provide missing expansions for: case ISD::STRICT_FP_TO_UINT: case ISD::STRICT_FP_TO_SINT: A test case is provided. Reviewed By: dmgreen Differential Revision: https://reviews.llvm.org/D107452
This commit is contained in:
parent
b8f612e780
commit
9269752671
|
@ -17320,6 +17320,8 @@ void AArch64TargetLowering::ReplaceNodeResults(
|
|||
return;
|
||||
case ISD::FP_TO_UINT:
|
||||
case ISD::FP_TO_SINT:
|
||||
case ISD::STRICT_FP_TO_SINT:
|
||||
case ISD::STRICT_FP_TO_UINT:
|
||||
assert(N->getValueType(0) == MVT::i128 && "unexpected illegal conversion");
|
||||
// Let normal code take care of it by not adding anything to Results.
|
||||
return;
|
||||
|
|
|
@ -0,0 +1,23 @@
|
|||
; RUN: llc < %s | FileCheck %s
|
||||
target datalayout = "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128"
|
||||
target triple = "aarch64-arm-none-eabi"
|
||||
|
||||
define i128 @test_fixtfti(fp128 %ld) {
|
||||
; CHECK-LABEL: test_fixtfti:
|
||||
; CHECK: bl __fixtfti
|
||||
entry:
|
||||
%conv = call i128 @llvm.experimental.constrained.fptosi.i128.f128(fp128 %ld, metadata !"fpexcept.strict")
|
||||
ret i128 %conv
|
||||
}
|
||||
|
||||
declare i128 @llvm.experimental.constrained.fptosi.i128.f128(fp128, metadata)
|
||||
|
||||
define i128 @test_fixtftu(fp128 %ld) {
|
||||
; CHECK-LABEL: test_fixtftu:
|
||||
; CHECK: bl __fixunstfti
|
||||
entry:
|
||||
%conv = call i128 @llvm.experimental.constrained.fptoui.i128.f128(fp128 %ld, metadata !"fpexcept.strict")
|
||||
ret i128 %conv
|
||||
}
|
||||
|
||||
declare i128 @llvm.experimental.constrained.fptoui.i128.f128(fp128, metadata)
|
Loading…
Reference in New Issue