diff options
author | Matt Arsenault <Matthew.Arsenault@amd.com> | 2019-01-20 19:10:31 +0000 |
---|---|---|
committer | Matt Arsenault <Matthew.Arsenault@amd.com> | 2019-01-20 19:10:31 +0000 |
commit | 745fd9f547e08fe93fcce7c997b7c1b50a22a08d (patch) | |
tree | 445d5f1d5f3dd4b6e534a9963115b5df5231cb43 /llvm/lib/CodeGen | |
parent | cfd9e7f594dd944427631be19bd6ef5dbe8ee161 (diff) | |
download | bcm5719-llvm-745fd9f547e08fe93fcce7c997b7c1b50a22a08d.tar.gz bcm5719-llvm-745fd9f547e08fe93fcce7c997b7c1b50a22a08d.zip |
GlobalISel: Implement widenScalar for basic FP ops
llvm-svn: 351696
Diffstat (limited to 'llvm/lib/CodeGen')
-rw-r--r-- | llvm/lib/CodeGen/GlobalISel/LegalizerHelper.cpp | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/llvm/lib/CodeGen/GlobalISel/LegalizerHelper.cpp b/llvm/lib/CodeGen/GlobalISel/LegalizerHelper.cpp index 100e4086a3b..4e76518660c 100644 --- a/llvm/lib/CodeGen/GlobalISel/LegalizerHelper.cpp +++ b/llvm/lib/CodeGen/GlobalISel/LegalizerHelper.cpp @@ -953,12 +953,21 @@ LegalizerHelper::widenScalar(MachineInstr &MI, unsigned TypeIdx, LLT WideTy) { widenScalarSrc(MI, WideTy, 2, TargetOpcode::G_SEXT); Observer.changedInstr(MI); return Legalized; - + case TargetOpcode::G_FADD: + case TargetOpcode::G_FMUL: + case TargetOpcode::G_FSUB: + case TargetOpcode::G_FMA: + case TargetOpcode::G_FNEG: + case TargetOpcode::G_FABS: + case TargetOpcode::G_FDIV: + case TargetOpcode::G_FREM: case TargetOpcode::G_FCEIL: - if (TypeIdx != 0) - return UnableToLegalize; + assert(TypeIdx == 0); Observer.changingInstr(MI); - widenScalarSrc(MI, WideTy, 1, TargetOpcode::G_FPEXT); + + for (unsigned I = 1, E = MI.getNumOperands(); I != E; ++I) + widenScalarSrc(MI, WideTy, I, TargetOpcode::G_FPEXT); + widenScalarDst(MI, WideTy, 0, TargetOpcode::G_FPTRUNC); Observer.changedInstr(MI); return Legalized; |