| Index: lib/Target/NVPTX/NVPTXIntrinsics.td
|
| diff --git a/lib/Target/NVPTX/NVPTXIntrinsics.td b/lib/Target/NVPTX/NVPTXIntrinsics.td
|
| index 24037cafefe96b8d475603272b366a04873449e5..49e2568dfa2c50406c4a4cc579bc39f7698b3bf0 100644
|
| --- a/lib/Target/NVPTX/NVPTXIntrinsics.td
|
| +++ b/lib/Target/NVPTX/NVPTXIntrinsics.td
|
| @@ -512,16 +512,6 @@ def INT_NVVM_SQRT_RM_D : F_MATH_1<"sqrt.rm.f64 \t$dst, $src0;", Float64Regs,
|
| def INT_NVVM_SQRT_RP_D : F_MATH_1<"sqrt.rp.f64 \t$dst, $src0;", Float64Regs,
|
| Float64Regs, int_nvvm_sqrt_rp_d>;
|
|
|
| -// nvvm_sqrt intrinsic
|
| -def : Pat<(int_nvvm_sqrt_f Float32Regs:$a),
|
| - (INT_NVVM_SQRT_RN_FTZ_F Float32Regs:$a)>, Requires<[doF32FTZ, do_SQRTF32_RN]>;
|
| -def : Pat<(int_nvvm_sqrt_f Float32Regs:$a),
|
| - (INT_NVVM_SQRT_RN_F Float32Regs:$a)>, Requires<[do_SQRTF32_RN]>;
|
| -def : Pat<(int_nvvm_sqrt_f Float32Regs:$a),
|
| - (INT_NVVM_SQRT_APPROX_FTZ_F Float32Regs:$a)>, Requires<[doF32FTZ]>;
|
| -def : Pat<(int_nvvm_sqrt_f Float32Regs:$a),
|
| - (INT_NVVM_SQRT_APPROX_F Float32Regs:$a)>;
|
| -
|
| //
|
| // Rsqrt
|
| //
|
| @@ -1520,12 +1510,38 @@ multiclass G_TO_NG<string Str, Intrinsic Intrin> {
|
| defm cvta_local : NG_TO_G<"local", int_nvvm_ptr_local_to_gen>;
|
| defm cvta_shared : NG_TO_G<"shared", int_nvvm_ptr_shared_to_gen>;
|
| defm cvta_global : NG_TO_G<"global", int_nvvm_ptr_global_to_gen>;
|
| -defm cvta_const : NG_TO_G<"const", int_nvvm_ptr_constant_to_gen>;
|
|
|
| defm cvta_to_local : G_TO_NG<"local", int_nvvm_ptr_gen_to_local>;
|
| defm cvta_to_shared : G_TO_NG<"shared", int_nvvm_ptr_gen_to_shared>;
|
| defm cvta_to_global : G_TO_NG<"global", int_nvvm_ptr_gen_to_global>;
|
| -defm cvta_to_const : G_TO_NG<"const", int_nvvm_ptr_gen_to_constant>;
|
| +
|
| +def cvta_const : NVPTXInst<(outs Int32Regs:$result), (ins Int32Regs:$src),
|
| + "mov.u32 \t$result, $src;",
|
| + [(set Int32Regs:$result, (int_nvvm_ptr_constant_to_gen Int32Regs:$src))]>;
|
| +def cvta_const_64 : NVPTXInst<(outs Int64Regs:$result), (ins Int64Regs:$src),
|
| + "mov.u64 \t$result, $src;",
|
| + [(set Int64Regs:$result, (int_nvvm_ptr_constant_to_gen Int64Regs:$src))]>;
|
| +
|
| +
|
| +
|
| +// @TODO: Revisit this. There is a type
|
| +// contradiction between iPTRAny and iPTR for the def.
|
| +/*def cvta_const_addr : NVPTXInst<(outs Int32Regs:$result), (ins imemAny:$src),
|
| + "mov.u32 \t$result, $src;",
|
| + [(set Int32Regs:$result, (int_nvvm_ptr_constant_to_gen
|
| + (Wrapper tglobaladdr:$src)))]>;
|
| +def cvta_const_addr_64 : NVPTXInst<(outs Int64Regs:$result), (ins imemAny:$src),
|
| + "mov.u64 \t$result, $src;",
|
| + [(set Int64Regs:$result, (int_nvvm_ptr_constant_to_gen
|
| + (Wrapper tglobaladdr:$src)))]>;*/
|
| +
|
| +
|
| +def cvta_to_const : NVPTXInst<(outs Int32Regs:$result), (ins Int32Regs:$src),
|
| + "mov.u32 \t$result, $src;",
|
| + [(set Int32Regs:$result, (int_nvvm_ptr_gen_to_constant Int32Regs:$src))]>;
|
| +def cvta_to_const_64 : NVPTXInst<(outs Int64Regs:$result), (ins Int64Regs:$src),
|
| + "mov.u64 \t$result, $src;",
|
| + [(set Int64Regs:$result, (int_nvvm_ptr_gen_to_constant Int64Regs:$src))]>;
|
|
|
|
|
| // nvvm.ptr.gen.to.param
|
|
|