LLVM 20.0.0git
Enumerations
llvm::LegacyLegalizeActions Namespace Reference

Enumerations

enum  LegacyLegalizeAction : std::uint8_t {
  Legal , NarrowScalar , WidenScalar , FewerElements ,
  MoreElements , Bitcast , Lower , Libcall ,
  Custom , Unsupported , NotFound
}
 

Enumeration Type Documentation

◆ LegacyLegalizeAction

Enumerator
Legal 

The operation is expected to be selectable directly by the target, and no transformation is necessary.

NarrowScalar 

The operation should be synthesized from multiple instructions acting on a narrower scalar base-type.

For example a 64-bit add might be implemented in terms of 32-bit add-with-carry.

WidenScalar 

The operation should be implemented in terms of a wider scalar base-type.

For example a <2 x s8> add could be implemented as a <2 x s32> add (ignoring the high bits).

FewerElements 

The (vector) operation should be implemented by splitting it into sub-vectors where the operation is legal.

For example a <8 x s64> add might be implemented as 4 separate <2 x s64> adds.

MoreElements 

The (vector) operation should be implemented by widening the input vector and ignoring the lanes added by doing so.

For example <2 x i8> is rarely legal, but you might perform an <8 x i8> and then only look at the first two results.

Bitcast 

Perform the operation on a different, but equivalently sized type.

Lower 

The operation itself must be expressed in terms of simpler actions on this target.

E.g. a SREM replaced by an SDIV and subtraction.

Libcall 

The operation should be implemented as a call to some kind of runtime support library.

For example this usually happens on machines that don't support floating-point operations natively.

Custom 

The target wants to do something special with this combination of operand and type.

A callback will be issued when it is needed.

Unsupported 

This operation is completely unsupported on the target.

A programming error has occurred.

NotFound 

Sentinel value for when no action was found in the specified table.

Definition at line 28 of file LegacyLegalizerInfo.h.