Lines Matching +full:op +full:- +full:tee

1 // WebAssemblyInstrInfo.td-Describe the WebAssembly Instructions-*- tablegen -*-
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
7 //===----------------------------------------------------------------------===//
12 //===----------------------------------------------------------------------===//
14 //===----------------------------------------------------------------------===//
16 //===----------------------------------------------------------------------===//
21 def HasAddr32 : Predicate<"!Subtarget->hasAddr64()">;
23 def HasAddr64 : Predicate<"Subtarget->hasAddr64()">;
26 Predicate<"Subtarget->hasAtomics()">,
30 Predicate<"Subtarget->hasBulkMemory()">,
31 AssemblerPredicate<(all_of FeatureBulkMemory), "bulk-memory">;
34 Predicate<"Subtarget->hasExceptionHandling()">,
35 AssemblerPredicate<(all_of FeatureExceptionHandling), "exception-handling">;
38 Predicate<"Subtarget->hasExtendedConst()">,
39 AssemblerPredicate<(all_of FeatureExtendedConst), "extended-const">;
42 Predicate<"Subtarget->hasHalfPrecision()">,
43 AssemblerPredicate<(all_of FeatureHalfPrecision), "half-precision">;
46 Predicate<"Subtarget->hasMultiMemory()">,
50 Predicate<"Subtarget->hasMultivalue()">,
54 Predicate<"Subtarget->hasMutableGlobals()">,
55 AssemblerPredicate<(all_of FeatureMutableGlobals), "mutable-globals">;
58 Predicate<"Subtarget->hasNontrappingFPToInt()">,
60 "nontrapping-fptoint">;
63 Predicate<"!Subtarget->hasNontrappingFPToInt()">,
65 "nontrapping-fptoint">;
68 Predicate<"Subtarget->hasReferenceTypes()">,
69 AssemblerPredicate<(all_of FeatureReferenceTypes), "reference-types">;
72 Predicate<"Subtarget->hasRelaxedSIMD()">,
73 AssemblerPredicate<(all_of FeatureRelaxedSIMD), "relaxed-simd">;
76 Predicate<"Subtarget->hasSignExt()">,
77 AssemblerPredicate<(all_of FeatureSignExt), "sign-ext">;
80 Predicate<"Subtarget->hasSIMD128()">,
84 Predicate<"Subtarget->hasTailCall()">,
85 AssemblerPredicate<(all_of FeatureTailCall), "tail-call">;
87 //===----------------------------------------------------------------------===//
88 // WebAssembly-specific DAG Node Types.
89 //===----------------------------------------------------------------------===//
95 def SDT_WebAssemblyBrTable : SDTypeProfile<0, -1, [SDTCisPtrTy<0>]>;
99 def SDT_WebAssemblyReturn : SDTypeProfile<0, -1, []>;
105 //===----------------------------------------------------------------------===//
106 // WebAssembly-specific DAG Nodes.
107 //===----------------------------------------------------------------------===//
140 //===----------------------------------------------------------------------===//
141 // WebAssembly-specific Operands.
142 //===----------------------------------------------------------------------===//
164 // The operand to global instructions is always a 32-bit index.
168 // pretend we use a 64-bit index for it.
230 return CurDAG->computeKnownBits(SDValue(N, 0)).countMinLeadingZeros() == 31;
233 //===----------------------------------------------------------------------===//
235 //===----------------------------------------------------------------------===//
246 //===----------------------------------------------------------------------===//
248 //===----------------------------------------------------------------------===//
259 //===----------------------------------------------------------------------===//
260 // WebAssembly 32 to 64-bit instruction mapping
261 //===----------------------------------------------------------------------===//
272 //===----------------------------------------------------------------------===//
274 //===----------------------------------------------------------------------===//
278 //===----------------------------------------------------------------------===//
280 //===----------------------------------------------------------------------===//
303 // is actually a no-op because all the work is done in the implied local.get
310 // TEE is similar to COPY, but writes two copies of its result. Typically
315 "local.tee\t$res, $also, $src", "local.tee">;
333 // This is the actual local.tee instruction in wasm. TEEs are turned into
339 "local.tee\t$res, $local, $src", "local.tee\t$local",
373 defm "" : LOCAL<I64, global_op64>; // 64-bit only needed for pointers.
441 //===----------------------------------------------------------------------===//
443 //===----------------------------------------------------------------------===//