Home | History | Annotate | Download | only in AMDGPU
      1 //===-- R600Intrinsics.td - R600 Instrinsic defs -------*- tablegen -*-----===//
      2 //
      3 //                     The LLVM Compiler Infrastructure
      4 //
      5 // This file is distributed under the University of Illinois Open Source
      6 // License. See LICENSE.TXT for details.
      7 //
      8 //===----------------------------------------------------------------------===//
      9 //
     10 // R600 Intrinsic Definitions
     11 //
     12 //===----------------------------------------------------------------------===//
     13 
     14 // FIXME: Should migrate to using TargetPrefix that matches triple arch name.
     15 let TargetPrefix = "R600", isTarget = 1 in {
     16   def int_R600_store_swizzle :
     17     Intrinsic<[], [llvm_v4f32_ty, llvm_i32_ty, llvm_i32_ty], []>;
     18   def int_R600_store_stream_output :
     19     Intrinsic<[], [llvm_v4f32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], []>;
     20 } // End TargetPrefix = "R600", isTarget = 1
     21 
     22 let TargetPrefix = "r600", isTarget = 1 in {
     23   class TextureIntrinsicFloatInput :
     24     Intrinsic<[llvm_v4f32_ty], [
     25       llvm_v4f32_ty, // Coord
     26       llvm_i32_ty, // offset_x
     27       llvm_i32_ty, // offset_y,
     28       llvm_i32_ty, // offset_z,
     29       llvm_i32_ty, // resource_id
     30       llvm_i32_ty, // samplerid
     31       llvm_i32_ty, // coord_type_x
     32       llvm_i32_ty, // coord_type_y
     33       llvm_i32_ty, // coord_type_z
     34       llvm_i32_ty // coord_type_w
     35     ], [IntrNoMem]>;
     36   class TextureIntrinsicInt32Input :
     37     Intrinsic<[llvm_v4i32_ty], [
     38       llvm_v4i32_ty, // Coord
     39       llvm_i32_ty, // offset_x
     40       llvm_i32_ty, // offset_y,
     41       llvm_i32_ty, // offset_z,
     42       llvm_i32_ty, // resource_id
     43       llvm_i32_ty, // samplerid
     44       llvm_i32_ty, // coord_type_x
     45       llvm_i32_ty, // coord_type_y
     46       llvm_i32_ty, // coord_type_z
     47       llvm_i32_ty // coord_type_w
     48     ], [IntrNoMem]>;
     49 
     50 
     51   def int_r600_tex : TextureIntrinsicFloatInput;
     52   def int_r600_texc : TextureIntrinsicFloatInput;
     53   def int_r600_txl : TextureIntrinsicFloatInput;
     54   def int_r600_txlc : TextureIntrinsicFloatInput;
     55   def int_r600_txb : TextureIntrinsicFloatInput;
     56   def int_r600_txbc : TextureIntrinsicFloatInput;
     57   def int_r600_txf : TextureIntrinsicInt32Input;
     58   def int_r600_txq : TextureIntrinsicInt32Input;
     59   def int_r600_ddx : TextureIntrinsicFloatInput;
     60   def int_r600_ddy : TextureIntrinsicFloatInput;
     61 
     62   def int_r600_dot4 : Intrinsic<[llvm_float_ty],
     63     [llvm_v4f32_ty, llvm_v4f32_ty], [IntrNoMem]
     64   >;
     65 } // End TargetPrefix = "r600", isTarget = 1
     66