]> granicus.if.org Git - llvm/commit
[NVPTX] Added support for half-precision floating point.
authorArtem Belevich <tra@google.com>
Fri, 13 Jan 2017 20:56:17 +0000 (20:56 +0000)
committerArtem Belevich <tra@google.com>
Fri, 13 Jan 2017 20:56:17 +0000 (20:56 +0000)
commitf53524b4f64eea25aec919f4a0147b1cd844940d
tree4e606f2545be0253f59609dc59729f9183498771
parent999a6572f34646b59935ac28817c8612bf1777ce
[NVPTX] Added support for half-precision floating point.

Only scalar half-precision operations are supported at the moment.

- Adds general support for 'half' type in NVPTX.
- fp16 math operations are supported on sm_53+ GPUs only
  (can be disabled with --nvptx-no-f16-math).
- Type conversions to/from fp16 are supported on all GPU variants.
- On GPU variants that do not have full fp16 support (or if it's disabled),
  fp16 operations are promoted to fp32 and results are converted back
  to fp16 for storage.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@291956 91177308-0d34-0410-b5e6-96231b3b80d8
18 files changed:
lib/Target/NVPTX/InstPrinter/NVPTXInstPrinter.cpp
lib/Target/NVPTX/NVPTX.h
lib/Target/NVPTX/NVPTXAsmPrinter.cpp
lib/Target/NVPTX/NVPTXISelDAGToDAG.cpp
lib/Target/NVPTX/NVPTXISelDAGToDAG.h
lib/Target/NVPTX/NVPTXISelLowering.cpp
lib/Target/NVPTX/NVPTXISelLowering.h
lib/Target/NVPTX/NVPTXInstrInfo.cpp
lib/Target/NVPTX/NVPTXInstrInfo.td
lib/Target/NVPTX/NVPTXIntrinsics.td
lib/Target/NVPTX/NVPTXMCExpr.cpp
lib/Target/NVPTX/NVPTXMCExpr.h
lib/Target/NVPTX/NVPTXRegisterInfo.cpp
lib/Target/NVPTX/NVPTXRegisterInfo.td
lib/Target/NVPTX/NVPTXSubtarget.cpp
lib/Target/NVPTX/NVPTXSubtarget.h
test/CodeGen/NVPTX/f16-instructions.ll [new file with mode: 0644]
test/CodeGen/NVPTX/half.ll