LLVM  7.0.0svn
Functions
AArch64LegalizerInfo.cpp File Reference

This file implements the targeting of the Machinelegalizer class for AArch64. More...

#include "AArch64LegalizerInfo.h"
#include "AArch64Subtarget.h"
#include "llvm/CodeGen/GlobalISel/MachineIRBuilder.h"
#include "llvm/CodeGen/MachineInstr.h"
#include "llvm/CodeGen/MachineRegisterInfo.h"
#include "llvm/CodeGen/TargetOpcodes.h"
#include "llvm/CodeGen/ValueTypes.h"
#include "llvm/IR/DerivedTypes.h"
#include "llvm/IR/Type.h"
Include dependency graph for AArch64LegalizerInfo.cpp:

Go to the source code of this file.

Functions

static void addAndInterleaveWithUnsupported (LegalizerInfo::SizeAndActionsVec &result, const LegalizerInfo::SizeAndActionsVec &v)
 FIXME: The following static functions are SizeChangeStrategy functions that are meant to temporarily mimic the behaviour of the old legalization based on doubling/halving non-legal types as closely as possible. More...
 
static LegalizerInfo::SizeAndActionsVec widen_1_narrow_128_ToLargest (const LegalizerInfo::SizeAndActionsVec &v)
 
static LegalizerInfo::SizeAndActionsVec widen_16 (const LegalizerInfo::SizeAndActionsVec &v)
 
static LegalizerInfo::SizeAndActionsVec widen_1_8 (const LegalizerInfo::SizeAndActionsVec &v)
 
static LegalizerInfo::SizeAndActionsVec widen_1_8_16 (const LegalizerInfo::SizeAndActionsVec &v)
 
static LegalizerInfo::SizeAndActionsVec widen_1_8_16_narrowToLargest (const LegalizerInfo::SizeAndActionsVec &v)
 
static LegalizerInfo::SizeAndActionsVec widen_1_8_16_32 (const LegalizerInfo::SizeAndActionsVec &v)
 

Detailed Description

This file implements the targeting of the Machinelegalizer class for AArch64.

Todo:
This should be generated by TableGen.

Definition in file AArch64LegalizerInfo.cpp.

Function Documentation

◆ addAndInterleaveWithUnsupported()

static void addAndInterleaveWithUnsupported ( LegalizerInfo::SizeAndActionsVec result,
const LegalizerInfo::SizeAndActionsVec v 
)
static

FIXME: The following static functions are SizeChangeStrategy functions that are meant to temporarily mimic the behaviour of the old legalization based on doubling/halving non-legal types as closely as possible.

This is not entirly possible as only legalizing the types that are exactly a power of 2 times the size of the legal types would require specifying all those sizes explicitly. In practice, not specifying those isn't a problem, and the below functions should disappear quickly as we add support for legalizing non-power-of-2 sized types further.

Definition at line 37 of file AArch64LegalizerInfo.cpp.

References first.

Referenced by widen_16(), widen_1_8(), widen_1_8_16(), widen_1_8_16_32(), widen_1_8_16_narrowToLargest(), and widen_1_narrow_128_ToLargest().

◆ widen_16()

◆ widen_1_8()

◆ widen_1_8_16()

◆ widen_1_8_16_32()

◆ widen_1_8_16_narrowToLargest()

static LegalizerInfo::SizeAndActionsVec widen_1_8_16_narrowToLargest ( const LegalizerInfo::SizeAndActionsVec v)
static

◆ widen_1_narrow_128_ToLargest()

static LegalizerInfo::SizeAndActionsVec widen_1_narrow_128_ToLargest ( const LegalizerInfo::SizeAndActionsVec v)
static