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 } 69