This change implements #70074 - `hlsl_intrinsics.h` - add the `rsqrt` api - `DXIL.td` add the llvm intrinsic to DXIL op lowering map. - `Builtins.td` - add an hlsl builtin for rsqrt. - `CGBuiltin.cpp` add the ir generation for the rsqrt intrinsic. - `SemaChecking.cpp` - reuse the one arg float only checks. - `IntrinsicsDirectX.td` -add an `rsqrt` intrinsic.
15 lines
470 B
LLVM
15 lines
470 B
LLVM
; RUN: not opt -S -dxil-op-lower %s 2>&1 | FileCheck %s
|
|
|
|
; DXIL operation rsqrt does not support double overload type
|
|
; CHECK: LLVM ERROR: Invalid Overload Type
|
|
|
|
; Function Attrs: noinline nounwind optnone
|
|
define noundef double @rsqrt_double(double noundef %a) #0 {
|
|
entry:
|
|
%a.addr = alloca double, align 8
|
|
store double %a, ptr %a.addr, align 8
|
|
%0 = load double, ptr %a.addr, align 8
|
|
%dx.rsqrt = call double @llvm.dx.rsqrt.f64(double %0)
|
|
ret double %dx.rsqrt
|
|
}
|