xref: /freebsd/contrib/llvm-project/llvm/lib/Target/X86/X86InstrGISel.td (revision 700637cbb5e582861067a11aaca4d053546871d2)
1//===- X86InstrGISel.td - X86 GISel target specific opcodes -*- tablegen -*===//
2//
3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4// See https://llvm.org/LICENSE.txt for license information.
5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6//
7//===----------------------------------------------------------------------===//
8//
9// X86 GlobalISel target pseudo instruction definitions. This is kept
10// separately from the other tablegen files for organizational purposes, but
11// share the same infrastructure.
12//
13//===----------------------------------------------------------------------===//
14
15class X86GenericInstruction : GenericInstruction { let Namespace = "X86"; }
16
17def G_FILD : X86GenericInstruction {
18  let OutOperandList = (outs type0:$dst);
19  let InOperandList = (ins ptype1:$src);
20  let hasSideEffects = false;
21  let mayLoad = true;
22}
23def G_FIST : X86GenericInstruction {
24  let OutOperandList = (outs);
25  let InOperandList = (ins type0:$src1, ptype1:$src2);
26  let hasSideEffects = false;
27  let mayStore = true;
28}
29
30def G_FNSTCW16 : X86GenericInstruction {
31  let OutOperandList = (outs);
32  let InOperandList = (ins ptype0:$dst);
33  let hasSideEffects = true;
34  let mayStore = true;
35}
36
37def : GINodeEquiv<G_FILD, X86fild>;
38def : GINodeEquiv<G_FIST, X86fp_to_mem>;
39def : GINodeEquiv<G_FNSTCW16, X86fp_cwd_get16>;
40