]> granicus.if.org Git - llvm/commit
[RISCV] Add RV64F codegen support
authorAlex Bradbury <asb@lowrisc.org>
Thu, 31 Jan 2019 22:48:38 +0000 (22:48 +0000)
committerAlex Bradbury <asb@lowrisc.org>
Thu, 31 Jan 2019 22:48:38 +0000 (22:48 +0000)
commit5816be49d6db6717dc4ffb550ae9f5050a499190
tree036b85c0444efcec818512467dcf7a6960b4f891
parent9edb74e0f28c21d102e489784db801f05f00d965
[RISCV] Add RV64F codegen support

This requires a little extra work due tothe fact i32 is not a legal type. When
call lowering happens post-legalisation (e.g. when an intrinsic was inserted
during legalisation). A bitcast from f32 to i32 can't be introduced. This is
similar to the challenges with RV32D. To handle this, we introduce
target-specific DAG nodes that perform bitcast+anyext for f32->i64 and
trunc+bitcast for i64->f32.

Differential Revision: https://reviews.llvm.org/D53235

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@352807 91177308-0d34-0410-b5e6-96231b3b80d8
13 files changed:
lib/Target/RISCV/RISCVISelLowering.cpp
lib/Target/RISCV/RISCVISelLowering.h
lib/Target/RISCV/RISCVInstrInfoF.td
test/CodeGen/RISCV/float-arith.ll
test/CodeGen/RISCV/float-bitmanip-dagcombines.ll
test/CodeGen/RISCV/float-br-fcmp.ll
test/CodeGen/RISCV/float-convert.ll
test/CodeGen/RISCV/float-fcmp.ll
test/CodeGen/RISCV/float-imm.ll
test/CodeGen/RISCV/float-mem.ll
test/CodeGen/RISCV/float-select-fcmp.ll
test/CodeGen/RISCV/rv32i-rv64i-float-double.ll [new file with mode: 0644]
test/CodeGen/RISCV/rv64f-float-convert.ll [new file with mode: 0644]