blob: a5310e9fd6d0486d3592b5dca1231f9b933dd692 [file] [log] [blame]
Tom Stellard75aadc22012-12-11 21:25:42 +00001//===-- 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
Matt Arsenault82e5e1e2016-07-15 21:27:08 +000014class TextureIntrinsicFloatInput : Intrinsic<[llvm_v4f32_ty], [
15 llvm_v4f32_ty, // Coord
16 llvm_i32_ty, // offset_x
17 llvm_i32_ty, // offset_y,
18 llvm_i32_ty, // offset_z,
19 llvm_i32_ty, // resource_id
20 llvm_i32_ty, // samplerid
21 llvm_i32_ty, // coord_type_x
22 llvm_i32_ty, // coord_type_y
23 llvm_i32_ty, // coord_type_z
24 llvm_i32_ty], // coord_type_w
25 [IntrNoMem]
26>;
27
28class TextureIntrinsicInt32Input : Intrinsic<[llvm_v4i32_ty], [
29 llvm_v4i32_ty, // Coord
30 llvm_i32_ty, // offset_x
31 llvm_i32_ty, // offset_y,
32 llvm_i32_ty, // offset_z,
33 llvm_i32_ty, // resource_id
34 llvm_i32_ty, // samplerid
35 llvm_i32_ty, // coord_type_x
36 llvm_i32_ty, // coord_type_y
37 llvm_i32_ty, // coord_type_z
38 llvm_i32_ty], // coord_type_w
39 [IntrNoMem]
40>;
Matt Arsenault648e4222016-07-14 05:23:23 +000041
42let TargetPrefix = "r600", isTarget = 1 in {
Vincent Lejeuned3eed662013-05-17 16:50:20 +000043
Matt Arsenault82e5e1e2016-07-15 21:27:08 +000044def int_r600_store_swizzle :
45 Intrinsic<[], [llvm_v4f32_ty, llvm_i32_ty, llvm_i32_ty], []
46>;
Matt Arsenault59bd3012016-01-22 19:00:09 +000047
Matt Arsenault82e5e1e2016-07-15 21:27:08 +000048def int_r600_store_stream_output : Intrinsic<
49 [], [llvm_v4f32_ty, llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], []
50>;
Matt Arsenaultca7f5702016-07-14 05:47:17 +000051
Matt Arsenault82e5e1e2016-07-15 21:27:08 +000052def int_r600_tex : TextureIntrinsicFloatInput;
53def int_r600_texc : TextureIntrinsicFloatInput;
54def int_r600_txl : TextureIntrinsicFloatInput;
55def int_r600_txlc : TextureIntrinsicFloatInput;
56def int_r600_txb : TextureIntrinsicFloatInput;
57def int_r600_txbc : TextureIntrinsicFloatInput;
58def int_r600_txf : TextureIntrinsicInt32Input;
59def int_r600_txq : TextureIntrinsicInt32Input;
60def int_r600_ddx : TextureIntrinsicFloatInput;
61def int_r600_ddy : TextureIntrinsicFloatInput;
62
63def int_r600_dot4 : Intrinsic<[llvm_float_ty],
64 [llvm_v4f32_ty, llvm_v4f32_ty], [IntrNoMem]
65>;
66
Matt Arsenaultbee75752016-01-26 04:49:24 +000067} // End TargetPrefix = "r600", isTarget = 1