brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.1 KiB · a755dd5 Raw
74 lines · cpp
1//===- DirectXTargetTransformInfo.cpp - DirectX TTI ---------------*- C++2//-*-===//3//4// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.5// See https://llvm.org/LICENSE.txt for license information.6// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception7//8//===----------------------------------------------------------------------===//9///10//===----------------------------------------------------------------------===//11 12#include "DirectXTargetTransformInfo.h"13#include "llvm/IR/Intrinsics.h"14#include "llvm/IR/IntrinsicsDirectX.h"15 16using namespace llvm;17 18bool DirectXTTIImpl::isTargetIntrinsicWithScalarOpAtArg(19    Intrinsic::ID ID, unsigned ScalarOpdIdx) const {20  switch (ID) {21  case Intrinsic::dx_wave_readlane:22    return ScalarOpdIdx == 1;23  default:24    return false;25  }26}27 28bool DirectXTTIImpl::isTargetIntrinsicWithOverloadTypeAtArg(Intrinsic::ID ID,29                                                            int OpdIdx) const {30  switch (ID) {31  case Intrinsic::dx_asdouble:32  case Intrinsic::dx_firstbitlow:33  case Intrinsic::dx_firstbitshigh:34  case Intrinsic::dx_firstbituhigh:35  case Intrinsic::dx_isinf:36  case Intrinsic::dx_isnan:37  case Intrinsic::dx_legacyf16tof32:38    return OpdIdx == 0;39  default:40    return OpdIdx == -1;41  }42}43 44bool DirectXTTIImpl::isTargetIntrinsicTriviallyScalarizable(45    Intrinsic::ID ID) const {46  switch (ID) {47  case Intrinsic::dx_asdouble:48  case Intrinsic::dx_firstbitlow:49  case Intrinsic::dx_firstbitshigh:50  case Intrinsic::dx_firstbituhigh:51  case Intrinsic::dx_frac:52  case Intrinsic::dx_isinf:53  case Intrinsic::dx_isnan:54  case Intrinsic::dx_legacyf16tof32:55  case Intrinsic::dx_rsqrt:56  case Intrinsic::dx_saturate:57  case Intrinsic::dx_splitdouble:58  case Intrinsic::dx_wave_readlane:59  case Intrinsic::dx_wave_reduce_max:60  case Intrinsic::dx_wave_reduce_min:61  case Intrinsic::dx_wave_reduce_sum:62  case Intrinsic::dx_wave_reduce_umax:63  case Intrinsic::dx_wave_reduce_umin:64  case Intrinsic::dx_wave_reduce_usum:65  case Intrinsic::dx_imad:66  case Intrinsic::dx_umad:67  case Intrinsic::dx_ddx_coarse:68  case Intrinsic::dx_ddy_coarse:69    return true;70  default:71    return false;72  }73}74