R600: Fix inconsistency in rsq instructions.
authorMatt Arsenault <Matthew.Arsenault@amd.com>
Tue, 24 Jun 2014 22:13:39 +0000 (22:13 +0000)
committerMatt Arsenault <Matthew.Arsenault@amd.com>
Tue, 24 Jun 2014 22:13:39 +0000 (22:13 +0000)
commit95eb45c5d94bfe9360ffc021697a50c6cf8c08cd
treeccff569afcf67b58b968ce88f204ad9641431949
parent0029534141ee83d827267d4ac9418bbed5704c2e
R600: Fix inconsistency in rsq instructions.

R600 was using a clamped version of rsq, but SI was not. Add a
new rsq_clamped intrinsic and use them consistently.

It's unclear to me from the documentation what behavior
the R600 instructions have, so I assume they have the legacy behavior
described by the SI documents. For R600, use RECIPSQRT_IEEE
for both llvm.AMDGPU.rsq.legacy and llvm.AMDGPU.rsq. R600 also
has RECIPSQRT_FF, which I'm not sure how it fits in here.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211637 91177308-0d34-0410-b5e6-96231b3b80d8
13 files changed:
include/llvm/IR/IntrinsicsR600.td
lib/Target/R600/AMDGPUISelLowering.cpp
lib/Target/R600/AMDGPUISelLowering.h
lib/Target/R600/AMDGPUInstrInfo.td
lib/Target/R600/AMDGPUInstructions.td
lib/Target/R600/AMDGPUIntrinsics.td
lib/Target/R600/R600ISelLowering.cpp
lib/Target/R600/R600Instructions.td
lib/Target/R600/SIInstructions.td
test/CodeGen/R600/llvm.AMDGPU.legacy.rsq.ll [new file with mode: 0644]
test/CodeGen/R600/llvm.AMDGPU.rsq.clamped.f64.ll [new file with mode: 0644]
test/CodeGen/R600/llvm.AMDGPU.rsq.clamped.ll [new file with mode: 0644]
test/CodeGen/R600/llvm.AMDGPU.rsq.ll [new file with mode: 0644]