diff options
| author | Sjoerd Meijer <sjoerd.meijer@arm.com> | 2018-02-07 08:37:17 +0000 |
|---|---|---|
| committer | Sjoerd Meijer <sjoerd.meijer@arm.com> | 2018-02-07 08:37:17 +0000 |
| commit | 8c0739347cbc4fe2b2d323621debbf7141fd6b74 (patch) | |
| tree | 9d052fbf533604c1e5129f9b53486982ef7e5b48 /llvm/lib | |
| parent | 5f133dc99b42db10d342e7a8644507ff90c7f446 (diff) | |
| download | bcm5719-llvm-8c0739347cbc4fe2b2d323621debbf7141fd6b74.tar.gz bcm5719-llvm-8c0739347cbc4fe2b2d323621debbf7141fd6b74.zip | |
[ARM] FP16 mov imm pattern
This is a follow up of r324321, adding a match pattern for mov with a FP16
immediate (also fixing operand vfp_f16imm that wasn't even compiling).
Differential Revision: https://reviews.llvm.org/D42973
llvm-svn: 324456
Diffstat (limited to 'llvm/lib')
| -rw-r--r-- | llvm/lib/Target/ARM/ARMInstrVFP.td | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/llvm/lib/Target/ARM/ARMInstrVFP.td b/llvm/lib/Target/ARM/ARMInstrVFP.td index af9daf19bb1..6e805475698 100644 --- a/llvm/lib/Target/ARM/ARMInstrVFP.td +++ b/llvm/lib/Target/ARM/ARMInstrVFP.td @@ -44,7 +44,7 @@ def vfp_f16imm : Operand<f16>, }], SDNodeXForm<fpimm, [{ APFloat InVal = N->getValueAPF(); uint32_t enc = ARM_AM::getFP16Imm(InVal); - return CurDAG->getTargetConstant(enc, MVT::i32); + return CurDAG->getTargetConstant(enc, SDLoc(N), MVT::i32); }]>> { let PrintMethod = "printFPImmOperand"; let ParserMatchClass = FPImmOperand; @@ -2343,10 +2343,11 @@ def FCONSTS : VFPAI<(outs SPR:$Sd), (ins vfp_f32imm:$imm), let Inst{3-0} = imm{3-0}; } -def FCONSTH : VFPAI<(outs SPR:$Sd), (ins vfp_f16imm:$imm), +def FCONSTH : VFPAI<(outs HPR:$Sd), (ins vfp_f16imm:$imm), VFPMiscFrm, IIC_fpUNA16, "vmov", ".f16\t$Sd, $imm", - []>, Requires<[HasFullFP16]> { + [(set HPR:$Sd, vfp_f16imm:$imm)]>, + Requires<[HasFullFP16]> { bits<5> Sd; bits<8> imm; |

