LLVM 22.0.0git
AVRShiftExpand.cpp File Reference

Expand non-8-bit and non-16-bit shift instructions (shl, lshr, ashr) to inline loops, just like avr-gcc. More...

#include "AVR.h"
#include "llvm/IR/IRBuilder.h"
#include "llvm/IR/InstIterator.h"

Go to the source code of this file.

Functions

 INITIALIZE_PASS (AVRShiftExpand, "avr-shift-expand", "AVR Shift Expansion", false, false) Pass *llvm

Detailed Description

Expand non-8-bit and non-16-bit shift instructions (shl, lshr, ashr) to inline loops, just like avr-gcc.

This must be done in IR because otherwise the type legalizer will turn 32-bit shifts into (non-existing) library calls such as __ashlsi3.

Definition in file AVRShiftExpand.cpp.

Function Documentation

◆ INITIALIZE_PASS()

INITIALIZE_PASS ( AVRShiftExpand ,
"avr-shift-expand" ,
"AVR Shift Expansion" ,
false ,
false  )

Definition at line 43 of file AVRShiftExpand.cpp.

References llvm::createAVRShiftExpandPass().