R600/SI: Add more special cases for opcodes to ensureSRegLimit()
[oota-llvm.git] / lib / Target / R600 / R600Intrinsics.td
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_load_texbuf :
47     Intrinsic<[llvm_v4f32_ty], [llvm_i32_ty, llvm_i32_ty], [IntrNoMem]>;
48   def int_R600_tex : TextureIntrinsicFloatInput;
49   def int_R600_texc : TextureIntrinsicFloatInput;
50   def int_R600_txl : TextureIntrinsicFloatInput;
51   def int_R600_txlc : TextureIntrinsicFloatInput;
52   def int_R600_txb : TextureIntrinsicFloatInput;
53   def int_R600_txbc : TextureIntrinsicFloatInput;
54   def int_R600_txf : TextureIntrinsicInt32Input;
55   def int_R600_txq : TextureIntrinsicInt32Input;
56   def int_R600_ddx : TextureIntrinsicFloatInput;
57   def int_R600_ddy : TextureIntrinsicFloatInput;
58   def int_R600_store_swizzle :
59     Intrinsic<[], [llvm_v4f32_ty, llvm_i32_ty, llvm_i32_ty], []>;
60   def int_R600_store_stream_output :
61     Intrinsic<[], [llvm_v4f32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], []>;
62   def int_R600_store_pixel_depth :
63       Intrinsic<[], [llvm_float_ty], []>;
64   def int_R600_store_pixel_stencil :
65       Intrinsic<[], [llvm_float_ty], []>;
66   def int_R600_store_dummy :
67       Intrinsic<[], [llvm_i32_ty], []>;
68 }