blob: 9b85cbced685c0837b8df959d6e9b4f25760c7f4 [file] [log] [blame]
Marek Olsak5df00d62014-12-07 12:18:57 +00001//===-- VIInstructions.td - VI Instruction Defintions ---------------------===//
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// Instruction definitions for VI and newer.
10//===----------------------------------------------------------------------===//
11
Tom Stellardd1f0f022015-04-23 19:33:54 +000012let SIAssemblerPredicate = DisableInst, SubtargetPredicate = isVI in {
13
14//===----------------------------------------------------------------------===//
15// VOP1 Instructions
16//===----------------------------------------------------------------------===//
17
18defm V_CVT_F16_U16 : VOP1Inst <vop1<0, 0x39>, "v_cvt_f16_u16", VOP_F16_I16>;
19defm V_CVT_F16_I16 : VOP1Inst <vop1<0, 0x3a>, "v_cvt_f16_i16", VOP_F16_I16>;
20defm V_CVT_U16_F16 : VOP1Inst <vop1<0, 0x3b>, "v_cvt_u16_f16", VOP_I16_F16>;
21defm V_CVT_I16_F16 : VOP1Inst <vop1<0, 0x3c>, "v_cvt_i16_f16", VOP_I16_F16>;
22defm V_RCP_F16 : VOP1Inst <vop1<0, 0x3d>, "v_rcp_f16", VOP_F16_F16>;
23defm V_SQRT_F16 : VOP1Inst <vop1<0, 0x3e>, "v_sqrt_f16", VOP_F16_F16>;
24defm V_RSQ_F16 : VOP1Inst <vop1<0, 0x3f>, "v_rsq_f16", VOP_F16_F16>;
25defm V_LOG_F16 : VOP1Inst <vop1<0, 0x40>, "v_log_f16", VOP_F16_F16>;
26defm V_EXP_F16 : VOP1Inst <vop1<0, 0x41>, "v_exp_f16", VOP_F16_F16>;
27defm V_FREXP_MANT_F16 : VOP1Inst <vop1<0, 0x42>, "v_frexp_mant_f16",
28 VOP_F16_F16
29>;
30defm V_FREXP_EXP_I16_F16 : VOP1Inst <vop1<0, 0x43>, "v_frexp_exp_i16_f16",
31 VOP_I16_F16
32>;
33defm V_FLOOR_F16 : VOP1Inst <vop1<0, 0x44>, "v_floor_f16", VOP_F16_F16>;
34defm V_CEIL_F16 : VOP1Inst <vop1<0, 0x45>, "v_ceil_f16", VOP_F16_F16>;
35defm V_TRUNC_F16 : VOP1Inst <vop1<0, 0x46>, "v_trunc_f16", VOP_F16_F16>;
36defm V_RNDNE_F16 : VOP1Inst <vop1<0, 0x47>, "v_rndne_f16", VOP_F16_F16>;
37defm V_FRACT_F16 : VOP1Inst <vop1<0, 0x48>, "v_fract_f16", VOP_F16_F16>;
38defm V_SIN_F16 : VOP1Inst <vop1<0, 0x49>, "v_sin_f16", VOP_F16_F16>;
39defm V_COS_F16 : VOP1Inst <vop1<0, 0x4a>, "v_cos_f16", VOP_F16_F16>;
40
41} // End SIAssemblerPredicate = DisableInst, SubtargetPredicate = isVI
Marek Olsak5df00d62014-12-07 12:18:57 +000042
43//===----------------------------------------------------------------------===//
Marek Olsak58f61a82014-12-07 17:17:38 +000044// SMEM Patterns
45//===----------------------------------------------------------------------===//
46
Marek Olsakf0b130a2015-01-15 18:43:06 +000047let Predicates = [isVI] in {
48
Marek Olsakee98b112015-01-27 17:24:58 +000049// 1. Offset as 20bit DWORD immediate
Marek Olsak58f61a82014-12-07 17:17:38 +000050def : Pat <
51 (SIload_constant v4i32:$sbase, IMM20bit:$offset),
52 (S_BUFFER_LOAD_DWORD_IMM $sbase, (as_i32imm $offset))
53>;
54
Marek Olsak5df00d62014-12-07 12:18:57 +000055} // End Predicates = [isVI]