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// FIXME: Should migrate to using TargetPrefix that matches triple arch name. 15let TargetPrefix = "R600", isTarget = 1 in { 16 def int_R600_store_swizzle : 17 Intrinsic<[], [llvm_v4f32_ty, llvm_i32_ty, llvm_i32_ty], []>; 18 def int_R600_store_stream_output : 19 Intrinsic<[], [llvm_v4f32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], []>; 20} // End TargetPrefix = "R600", isTarget = 1 21 22let TargetPrefix = "r600", isTarget = 1 in { 23 class TextureIntrinsicFloatInput : 24 Intrinsic<[llvm_v4f32_ty], [ 25 llvm_v4f32_ty, // Coord 26 llvm_i32_ty, // offset_x 27 llvm_i32_ty, // offset_y, 28 llvm_i32_ty, // offset_z, 29 llvm_i32_ty, // resource_id 30 llvm_i32_ty, // samplerid 31 llvm_i32_ty, // coord_type_x 32 llvm_i32_ty, // coord_type_y 33 llvm_i32_ty, // coord_type_z 34 llvm_i32_ty // coord_type_w 35 ], [IntrNoMem]>; 36 class TextureIntrinsicInt32Input : 37 Intrinsic<[llvm_v4i32_ty], [ 38 llvm_v4i32_ty, // Coord 39 llvm_i32_ty, // offset_x 40 llvm_i32_ty, // offset_y, 41 llvm_i32_ty, // offset_z, 42 llvm_i32_ty, // resource_id 43 llvm_i32_ty, // samplerid 44 llvm_i32_ty, // coord_type_x 45 llvm_i32_ty, // coord_type_y 46 llvm_i32_ty, // coord_type_z 47 llvm_i32_ty // coord_type_w 48 ], [IntrNoMem]>; 49 50 51 def int_r600_tex : TextureIntrinsicFloatInput; 52 def int_r600_texc : TextureIntrinsicFloatInput; 53 def int_r600_txl : TextureIntrinsicFloatInput; 54 def int_r600_txlc : TextureIntrinsicFloatInput; 55 def int_r600_txb : TextureIntrinsicFloatInput; 56 def int_r600_txbc : TextureIntrinsicFloatInput; 57 def int_r600_txf : TextureIntrinsicInt32Input; 58 def int_r600_txq : TextureIntrinsicInt32Input; 59 def int_r600_ddx : TextureIntrinsicFloatInput; 60 def int_r600_ddy : TextureIntrinsicFloatInput; 61 62 def int_r600_dot4 : Intrinsic<[llvm_float_ty], 63 [llvm_v4f32_ty, llvm_v4f32_ty], [IntrNoMem] 64 >; 65} // End TargetPrefix = "r600", isTarget = 1 66