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
14let 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]>;
48def int_R600_interp_xy :
49    Intrinsic<[llvm_v2f32_ty], [llvm_i32_ty, llvm_float_ty, llvm_float_ty], [IntrNoMem]>;
50def 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