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