Home | History | Annotate | Download | only in R600
      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 let TargetPrefix = "R600", isTarget = 1 in {
     15   class TextureIntrinsicFloatInput :
     16     Intrinsic<[llvm_v4f32_ty], [
     17       llvm_v4f32_ty, // Coord
     18       llvm_i32_ty, // offset_x
     19       llvm_i32_ty, // offset_y,
     20       llvm_i32_ty, // offset_z,
     21       llvm_i32_ty, // resource_id
     22       llvm_i32_ty, // samplerid
     23       llvm_i32_ty, // coord_type_x
     24       llvm_i32_ty, // coord_type_y
     25       llvm_i32_ty, // coord_type_z
     26       llvm_i32_ty // coord_type_w
     27     ], [IntrNoMem]>;
     28   class TextureIntrinsicInt32Input :
     29     Intrinsic<[llvm_v4i32_ty], [
     30       llvm_v4i32_ty, // Coord
     31       llvm_i32_ty, // offset_x
     32       llvm_i32_ty, // offset_y,
     33       llvm_i32_ty, // offset_z,
     34       llvm_i32_ty, // resource_id
     35       llvm_i32_ty, // samplerid
     36       llvm_i32_ty, // coord_type_x
     37       llvm_i32_ty, // coord_type_y
     38       llvm_i32_ty, // coord_type_z
     39       llvm_i32_ty // coord_type_w
     40     ], [IntrNoMem]>;
     41 
     42   def int_R600_load_input :
     43     Intrinsic<[llvm_float_ty], [llvm_i32_ty], [IntrNoMem]>;
     44   def int_R600_interp_input :
     45     Intrinsic<[llvm_float_ty], [llvm_i32_ty, llvm_i32_ty], [IntrNoMem]>;
     46   def int_R600_interp_const :
     47     Intrinsic<[llvm_v4f32_ty], [llvm_i32_ty], [IntrNoMem]>;
     48 def int_R600_interp_xy :
     49     Intrinsic<[llvm_v2f32_ty], [llvm_i32_ty, llvm_float_ty, llvm_float_ty], [IntrNoMem]>;
     50 def int_R600_interp_zw :
     51     Intrinsic<[llvm_v2f32_ty], [llvm_i32_ty, llvm_float_ty, llvm_float_ty], [IntrNoMem]>;
     52   def int_R600_load_texbuf :
     53     Intrinsic<[llvm_v4f32_ty], [llvm_i32_ty, llvm_i32_ty], [IntrNoMem]>;
     54   def int_R600_tex : TextureIntrinsicFloatInput;
     55   def int_R600_texc : TextureIntrinsicFloatInput;
     56   def int_R600_txl : TextureIntrinsicFloatInput;
     57   def int_R600_txlc : TextureIntrinsicFloatInput;
     58   def int_R600_txb : TextureIntrinsicFloatInput;
     59   def int_R600_txbc : TextureIntrinsicFloatInput;
     60   def int_R600_txf : TextureIntrinsicInt32Input;
     61   def int_R600_ldptr : TextureIntrinsicInt32Input;
     62   def int_R600_txq : TextureIntrinsicInt32Input;
     63   def int_R600_ddx : TextureIntrinsicFloatInput;
     64   def int_R600_ddy : TextureIntrinsicFloatInput;
     65   def int_R600_store_swizzle :
     66     Intrinsic<[], [llvm_v4f32_ty, llvm_i32_ty, llvm_i32_ty], []>;
     67   def int_R600_store_stream_output :
     68     Intrinsic<[], [llvm_v4f32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], []>;
     69   def int_R600_store_pixel_depth :
     70       Intrinsic<[], [llvm_float_ty], []>;
     71   def int_R600_store_pixel_stencil :
     72       Intrinsic<[], [llvm_float_ty], []>;
     73   def int_R600_store_dummy :
     74       Intrinsic<[], [llvm_i32_ty], []>;
     75 }
     76