forked from OSchip/llvm-project
Remove unsafe AssertZext after promoting result of FP_TO_FP16
Summary: Some target lowerings of FP_TO_FP16, for instance ARM's vcvtb.f16.f32 instruction, do not guarantee that the top 16 bits are zeroed out. Remove the unsafe AssertZext and add tests to exercise this. Reviewers: jmolloy, sbaranga, kristof.beyls, aadg Subscribers: llvm-commits, srhines, aemerson Differential Revision: http://reviews.llvm.org/D18426 llvm-svn: 264285
This commit is contained in:
parent
733ea34f38
commit
dc45aef2d8
|
@ -436,10 +436,7 @@ SDValue DAGTypeLegalizer::PromoteIntRes_FP_TO_FP16(SDNode *N) {
|
|||
EVT NVT = TLI.getTypeToTransformTo(*DAG.getContext(), N->getValueType(0));
|
||||
SDLoc dl(N);
|
||||
|
||||
SDValue Res = DAG.getNode(N->getOpcode(), dl, NVT, N->getOperand(0));
|
||||
|
||||
return DAG.getNode(ISD::AssertZext, dl,
|
||||
NVT, Res, DAG.getValueType(N->getValueType(0)));
|
||||
return DAG.getNode(N->getOpcode(), dl, NVT, N->getOperand(0));
|
||||
}
|
||||
|
||||
SDValue DAGTypeLegalizer::PromoteIntRes_INT_EXTEND(SDNode *N) {
|
||||
|
|
|
@ -25,4 +25,16 @@ define void @test_vec3(<3 x half>* %arr, i32 %i) #0 {
|
|||
ret void
|
||||
}
|
||||
|
||||
; CHECK-LABEL: test_bitcast:
|
||||
; CHECK: vcvtb.f16.f32
|
||||
; CHECK: vcvtb.f16.f32
|
||||
; CHECK: vcvtb.f16.f32
|
||||
; CHECK: pkhbt
|
||||
; CHECK: uxth
|
||||
define void @test_bitcast(<3 x half> %inp, <3 x i16>* %arr) #0 {
|
||||
%bc = bitcast <3 x half> %inp to <3 x i16>
|
||||
store <3 x i16> %bc, <3 x i16>* %arr, align 8
|
||||
ret void
|
||||
}
|
||||
|
||||
attributes #0 = { nounwind }
|
||||
|
|
Loading…
Reference in New Issue