![Page 1: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/1.jpg)
LLVM DevMtg October 2017
Ahmed Bougacha Quentin Colombet
GlobalISel Past, Present, and Future
![Page 2: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/2.jpg)
GlobalISel Recap
![Page 3: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/3.jpg)
GlobalISel Recap
Revamp of our instruction selection framework
![Page 4: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/4.jpg)
GlobalISel Recap
Revamp of our instruction selection framework
LLVM Dev Meeting talks: https://www.youtube.com/watch?v=F6GGbYtae3g https://www.youtube.com/watch?v=6tfb344A7w8
![Page 5: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/5.jpg)
GlobalISel Recap
Revamp of our instruction selection framework
LLVM Dev Meeting talks: https://www.youtube.com/watch?v=F6GGbYtae3g https://www.youtube.com/watch?v=6tfb344A7w8
LLVM Dev RFCs: http://lists.llvm.org/pipermail/llvm-dev/2013-August/064696.html http://lists.llvm.org/pipermail/llvm-dev/2015-November/092566.html
![Page 6: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/6.jpg)
GlobalISel Pipeline
(G)MI Legalizer RegBank Select
Instruction SelectIRTranslatorLLVM IR MI
GenericMachineInstr MachineInstr
![Page 7: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/7.jpg)
Past
![Page 8: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/8.jpg)
Generic MachineInstr More Concise Type System
![Page 9: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/9.jpg)
Generic MachineInstr More Concise Type System
Displacement%0(_,p0) = COPY %x0 %1(_,s64) = G_CONSTANT 4
%5(_,s32) = G_LOAD %4(_,p0)
%2(_,s64) = G_PTRTOINT %0 %3(_,s64) = G_ADD %2, %1 %4(_,p0) = G_INTTOPTR %3
![Page 10: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/10.jpg)
Generic MachineInstr More Concise Type System
Displacement%0(_,p0) = COPY %x0 %1(_,s64) = G_CONSTANT 4
%5(_,s32) = G_LOAD %4(_,p0)
%2(_,s64) = G_PTRTOINT %0 %3(_,s64) = G_ADD %2, %1 %4(_,p0) = G_INTTOPTR %3
![Page 11: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/11.jpg)
Generic MachineInstr More Concise Type System
Displacement%0(_,p0) = COPY %x0 %1(_,s64) = G_CONSTANT 4
%5(_,s32) = G_LOAD %4(_,p0)
%2(_,s64) = G_PTRTOINT %0 %3(_,s64) = G_ADD %2, %1 %4(_,p0) = G_INTTOPTR %3
![Page 12: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/12.jpg)
Generic MachineInstr More Concise Type System
Displacement%0(_,p0) = COPY %x0 %1(_,s64) = G_CONSTANT 4
%5(_,s32) = G_LOAD %4(_,p0)
%2(_,s64) = G_PTRTOINT %0 %3(_,s64) = G_ADD %2, %1 %4(_,p0) = G_INTTOPTR %3
![Page 13: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/13.jpg)
Generic MachineInstr More Concise Type System
Displacement%0(_,p0) = COPY %x0 %1(_,s64) = G_CONSTANT 4
%5(_,s32) = G_LOAD %4(_,p0)
%2(_,s64) = G_PTRTOINT %0 %3(_,s64) = G_ADD %2, %1 %4(_,p0) = G_INTTOPTR %3
![Page 14: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/14.jpg)
Generic MachineInstr More Concise Type System
Displacement%0(_,p0) = COPY %x0 %1(_,s64) = G_CONSTANT 4
%5(_,s32) = G_LOAD %4(_,p0)
%2(_,s64) = G_PTRTOINT %0 %3(_,s64) = G_ADD %2, %1 %4(_,p0) = G_INTTOPTR %3
![Page 15: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/15.jpg)
Generic MachineInstr More Concise Type System
Displacement%0(_,p0) = COPY %x0 %1(_,s64) = G_CONSTANT 4
%5(_,s32) = G_LOAD %4(_,p0)
%2(_,s64) = G_PTRTOINT %0 %3(_,s64) = G_ADD %2, %1 %4(_,p0) = G_INTTOPTR %3
![Page 16: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/16.jpg)
Generic MachineInstr More Concise Type System
Displacement%0(_,p0) = COPY %x0 %1(_,s64) = G_CONSTANT 4
%5(_,s32) = G_LOAD %4(_,p0)
%2(_,s64) = G_PTRTOINT %0 %3(_,s64) = G_ADD %2, %1 %4(_,p0) = G_INTTOPTR %3
![Page 17: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/17.jpg)
Generic MachineInstr More Concise Type System
Displacement%0(_,p0) = COPY %x0 %1(_,s64) = G_CONSTANT 4
%5(_,s32) = G_LOAD %4(_,p0)%4(_,p0) = G_GEP %0, %1
![Page 18: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/18.jpg)
Generic MachineInstr More Concise Type System
Displacement%0(_,p0) = COPY %x0 %1(_,s64) = G_CONSTANT 4
%5(_,s32) = G_LOAD %4(_,p0)%4(_,p0) = G_GEP %0, %1
Alignment%0(_,p0) = COPY %x0
%2(_,s64) = G_PTRTOINT %0 %3(_,s64) = G_AND %2, %1 %4(_,p0) = G_INTTOPTR %3
%1(_,s64) = G_CONSTANT ~3
![Page 19: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/19.jpg)
Generic MachineInstr More Concise Type System
Displacement%0(_,p0) = COPY %x0 %1(_,s64) = G_CONSTANT 4
%5(_,s32) = G_LOAD %4(_,p0)%4(_,p0) = G_GEP %0, %1
Alignment%0(_,p0) = COPY %x0
%2(_,s64) = G_PTRTOINT %0 %3(_,s64) = G_AND %2, %1 %4(_,p0) = G_INTTOPTR %3
%1(_,s64) = G_CONSTANT ~3
![Page 20: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/20.jpg)
Generic MachineInstr More Concise Type System
Displacement%0(_,p0) = COPY %x0 %1(_,s64) = G_CONSTANT 4
%5(_,s32) = G_LOAD %4(_,p0)%4(_,p0) = G_GEP %0, %1
Alignment %0(_,p0) = COPY %x0%4(_,p0) = G_PTR_MASK %0, 2
![Page 21: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/21.jpg)
Generic MachineInstr More Concise Type System
Displacement%0(_,p0) = COPY %x0 %1(_,s64) = G_CONSTANT 4
%5(_,s32) = G_LOAD %4(_,p0)%4(_,p0) = G_GEP %0, %1
Alignment %0(_,p0) = COPY %x0%4(_,p0) = G_PTR_MASK %0, 2
%0(_,p0) = COPY %x0 %1(_,s64) = G_PTRTOINT %0 %2(_,s64) = G_CONSTANT 4 %3(_,s64) = G_ADD %1, %2 %4(_,p0) = G_INTTOPTR %3 %5(_,s32) = G_LOAD %4(_,p0)
%0(_,p0) = COPY %x0 %1(_,s64) = G_PTRTOINT %0 %2(_,s64) = G_CONSTANT ~3 %3(_,s64) = G_AND %1, %2 %4(_,p0) = G_INTTOPTR %3
![Page 22: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/22.jpg)
Fallback to SelectionDAG Easier Bring Up
(G)MIIRTranslatorLLVM IR Legalizer RegBank Select MIInstruction
Select
![Page 23: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/23.jpg)
Fallback to SelectionDAG Easier Bring Up
(G)MIIRTranslatorLLVM IR Legalizer RegBank Select MIInstruction
Select
@fct1 ... @fctI ... @fctN
![Page 24: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/24.jpg)
Fallback to SelectionDAG Easier Bring Up
(G)MIIRTranslatorLLVM IR Legalizer RegBank Select MIInstruction
Select
@fct1 ... @fctI ... @fctN
✓
![Page 25: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/25.jpg)
Fallback to SelectionDAG Easier Bring Up
(G)MIIRTranslatorLLVM IR Legalizer RegBank Select MIInstruction
Select
@fct1 ... @fctI ... @fctN
✓✓
![Page 26: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/26.jpg)
Fallback to SelectionDAG Easier Bring Up
(G)MIIRTranslatorLLVM IR Legalizer RegBank Select MIInstruction
Select
@fct1 ... @fctI ... @fctN
✓✓𐄂
![Page 27: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/27.jpg)
Fallback to SelectionDAG Easier Bring Up
(G)MIIRTranslatorLLVM IR Legalizer RegBank Select MIInstruction
Select
@fct1 ... @fctI ... @fctN
✓✓𐄂
![Page 28: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/28.jpg)
Fallback to SelectionDAG Easier Bring Up
(G)MIIRTranslatorLLVM IR Legalizer RegBank Select MIInstruction
Select
@fct1 ... @fctI ... @fctN
✓✓
![Page 29: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/29.jpg)
Fallback to SelectionDAG Easier Bring Up
(G)MIIRTranslatorLLVM IR Legalizer RegBank Select MIInstruction
Select
@fct1 ... @fctI ... @fctN
✓✓✓ Fallback
![Page 30: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/30.jpg)
Fallback to SelectionDAG Easier Bring Up
(G)MIIRTranslatorLLVM IR Legalizer RegBank Select MIInstruction
Select
@fct1 ... @fctI ... @fctN
✓✓✓✓
Fallback
![Page 31: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/31.jpg)
Fallback to SelectionDAG Easier Bring Up
(G)MIIRTranslatorLLVM IR Legalizer RegBank Select MIInstruction
Select
@fct1 ... @fctI ... @fctN
✓✓✓✓✓
Fallback
![Page 32: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/32.jpg)
Fallback to SelectionDAG Easier Bring Up
(G)MIIRTranslatorLLVM IR Legalizer RegBank Select MIInstruction
Select
@fct1 ... @fctI ... @fctN
✓✓✓✓✓
Fallback
-global-isel-abort=0 or -global-isel-abort=2 (for warnings)
![Page 33: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/33.jpg)
Fallback to SelectionDAG Easier Bring Up
(G)MIIRTranslatorLLVM IR Legalizer RegBank Select MIInstruction
Select SDISelReset
Machine Function
@fct1 ... @fctI ... @fctN
✓✓✓✓✓
Fallback
-global-isel-abort=0 or -global-isel-abort=2 (for warnings)
![Page 34: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/34.jpg)
Fallback to SelectionDAG Easier Bring Up
(G)MIIRTranslatorLLVM IR Legalizer RegBank Select MIInstruction
Select SDISelReset
Machine Function
fctI:
![Page 35: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/35.jpg)
Fallback to SelectionDAG Easier Bring Up
(G)MIIRTranslatorLLVM IR Legalizer RegBank Select MIInstruction
Select SDISelReset
Machine Function
fctI:... = op1 ......... = opN ...
![Page 36: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/36.jpg)
Fallback to SelectionDAG Easier Bring Up
(G)MIIRTranslatorLLVM IR Legalizer RegBank Select MIInstruction
Select SDISelReset
Machine Function
fctI:
✓
... = op1 ...
...
... = opN ...
![Page 37: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/37.jpg)
Fallback to SelectionDAG Easier Bring Up
(G)MIIRTranslatorLLVM IR Legalizer RegBank Select MIInstruction
Select SDISelReset
Machine Function
fctI:
✓
... = op1 ...
...
... = opN ...
![Page 38: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/38.jpg)
Fallback to SelectionDAG Easier Bring Up
(G)MIIRTranslatorLLVM IR Legalizer RegBank Select MIInstruction
Select SDISelReset
Machine Function
fctI:
✓
... = legOp1 ...
...
... = legOpN ...
![Page 39: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/39.jpg)
Fallback to SelectionDAG Easier Bring Up
(G)MIIRTranslatorLLVM IR Legalizer RegBank Select MIInstruction
Select SDISelReset
Machine Function
fctI:
✓
... = legOp1 ...
...
... = legOpN ...
✓
![Page 40: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/40.jpg)
Fallback to SelectionDAG Easier Bring Up
(G)MIIRTranslatorLLVM IR Legalizer RegBank Select MIInstruction
Select SDISelReset
Machine Function
fctI:
✓
... = legOp1 ...
...
... = legOpN ...
✓
![Page 41: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/41.jpg)
Fallback to SelectionDAG Easier Bring Up
(G)MIIRTranslatorLLVM IR Legalizer RegBank Select MIInstruction
Select SDISelReset
Machine Function
fctI:
✓
... = legOp1 ...
...
... = legOpN ...
✓ 𐄂
![Page 42: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/42.jpg)
Fallback to SelectionDAG Easier Bring Up
(G)MIIRTranslatorLLVM IR Legalizer RegBank Select MIInstruction
Select SDISelReset
Machine Function
fctI:
✓
... = legOp1 ...
...
... = legOpN ...
✓ 𐄂
𐄂
![Page 43: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/43.jpg)
Fallback to SelectionDAG Easier Bring Up
(G)MIIRTranslatorLLVM IR Legalizer RegBank Select MIInstruction
Select SDISelReset
Machine Function
fctI:
✓
... = legOp1 ...
...
... = legOpN ...
✓ 𐄂
𐄂
![Page 44: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/44.jpg)
Fallback to SelectionDAG Easier Bring Up
(G)MIIRTranslatorLLVM IR Legalizer RegBank Select MIInstruction
Select SDISelReset
Machine Function
fctI:
✓
... = legOp1 ...
...
... = legOpN ...
✓ 𐄂
𐄂
-
![Page 45: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/45.jpg)
Fallback to SelectionDAG Easier Bring Up
(G)MIIRTranslatorLLVM IR Legalizer RegBank Select MIInstruction
Select SDISelReset
Machine Function
✓ ✓ 𐄂 -
fctI:... = legOp1 ... ... ... = legOpN ...
𐄂
![Page 46: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/46.jpg)
Fallback to SelectionDAG Easier Bring Up
(G)MIIRTranslatorLLVM IR Legalizer RegBank Select MIInstruction
Select SDISelReset
Machine Function
✓ ✓ 𐄂 -
fctI:... = legOp1 ... ... ... = legOpN ...
𐄂
![Page 47: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/47.jpg)
Fallback to SelectionDAG Easier Bring Up
(G)MIIRTranslatorLLVM IR Legalizer RegBank Select MIInstruction
Select SDISelReset
Machine Function
✓ ✓ 𐄂 -
fctI:
![Page 48: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/48.jpg)
Fallback to SelectionDAG Easier Bring Up
(G)MIIRTranslatorLLVM IR Legalizer RegBank Select MIInstruction
Select SDISelReset
Machine Function
✓ ✓ 𐄂 -
fctI:
![Page 49: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/49.jpg)
Fallback to SelectionDAG Easier Bring Up
(G)MIIRTranslatorLLVM IR Legalizer RegBank Select MIInstruction
Select SDISelReset
Machine Function
✓ ✓ 𐄂 -
fctI:... = tgtOp1 ......... = tgtOpN ...
![Page 50: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/50.jpg)
(G)MI Legalizer RegBank Select
Instruction SelectIRTranslatorLLVM IR MI
![Page 51: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/51.jpg)
(G)MI Legalizer RegBank Select
Instruction SelectIRTranslatorLLVM IR MI
![Page 52: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/52.jpg)
(G)MI Legalizer RegBank Select
Instruction SelectIRTranslatorLLVM IR MI
What Changed?
![Page 53: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/53.jpg)
(G)MI Legalizer RegBank Select
Instruction SelectIRTranslatorLLVM IR MI
CallLowering API More instructions supported
What Changed?
![Page 54: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/54.jpg)
(G)MI Legalizer RegBank Select
Instruction SelectIRTranslatorLLVM IR MI
![Page 55: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/55.jpg)
Legalizer Fundamentals
%6(_,s128) G_OR %4, %5=%6(_,s128) G_OR %4, %5=
![Page 56: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/56.jpg)
Legalizer Fundamentals
.low%6 (_,s64) = G_OR %4.low, %5.low
.high%6 (_,s64) = G_OR %4.high, %5.high
![Page 57: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/57.jpg)
Legalizer Fundamentals
%6(_,s128) =
%7(_,s64) = G_OR %4.low, %5.low%8(_,s64) = G_OR %4.high, %5.high
G_SEQUENCE %7 %8
![Page 58: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/58.jpg)
Legalizer Fundamentals
%6(_,s128) =
%7(_,s64) = G_OR %4.low, %5.low%8(_,s64) = G_OR %4.high, %5.high
G_SEQUENCE %7, %8
![Page 59: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/59.jpg)
Legalizer Fundamentals
%6(_,s128) =
%7(_,s64) = G_OR %4.low, %5.low%8(_,s64) = G_OR .high, .high
G_SEQUENCE %7, %8
![Page 60: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/60.jpg)
Legalizer Fundamentals
%6(_,s128)=
%7(_,s64) = G_OR %0, %2%8(_,s64) = G_OR %1, %3
G_SEQUENCE %7, %8
%0(_,s64), %1(_,s64) = G_EXTRACT , 0, 64%4%2(_,s64), %3(_,s64) = G_EXTRACT , 0, 64%5
![Page 61: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/61.jpg)
Legalizer Fundamentals
%6(_,s128)=
%7(_,s64) = G_OR %0, %2%8(_,s64) = G_OR %1, %3
G_SEQUENCE %7, %8
%0(_,s64), %1(_,s64) = G_EXTRACT , 0, 64%4%2(_,s64), %3(_,s64) = G_EXTRACT , 0, 64%5
![Page 62: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/62.jpg)
%6(_,s128)=
%7(_,s64) = G_OR %0, %2%8(_,s64) = G_OR %1, %3
G_SEQUENCE %7, %8
%0(_,s64), %1(_,s64) = G_EXTRACT , 0, 64%4%2(_,s64), %3(_,s64) = G_EXTRACT , 0, 64%5
Legalization Artifacts Simpler More Regular Semantic
![Page 63: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/63.jpg)
%6(_,s128)=
%7(_,s64) = G_OR %0, %2%8(_,s64) = G_OR %1, %3
G_SEQUENCE
%0(_,s64), %1(_,s64) = G_EXTRACT , 0, 64%4%2(_,s64), %3(_,s64) = G_EXTRACT , 0, 64%5
Legalization Artifacts Simpler More Regular Semantic
%7, %8
![Page 64: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/64.jpg)
%6(_,s128)=
%7(_,s64) = G_OR %0, %2%8(_,s64) = G_OR %1, %3
G_SEQUENCE
%0(_,s64), %1(_,s64) = G_EXTRACT , 0, 64%4%2(_,s64), %3(_,s64) = G_EXTRACT , 0, 64%5
Legalization Artifacts Simpler More Regular Semantic
%7, %8
![Page 65: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/65.jpg)
%6(_,s128)=
%7(_,s64) = G_OR %0, %2%8(_,s64) = G_OR %1, %3
G_MERGE_VALUES
%0(_,s64), %1(_,s64) = G_EXTRACT , 0, 64%4%2(_,s64), %3(_,s64) = G_EXTRACT , 0, 64%5
Legalization Artifacts Simpler More Regular Semantic
%7, %8
![Page 66: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/66.jpg)
%6(_,s128)=
%7(_,s64) = G_OR %0, %2%8(_,s64) = G_OR %1, %3
G_MERGE_VALUES
%0(_,s64), %1(_,s64) = G_EXTRACT , 0, 64%4%2(_,s64), %3(_,s64) = G_EXTRACT , 0, 64%5
Legalization Artifacts Simpler More Regular Semantic
%7, %8
Same type
![Page 67: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/67.jpg)
%6(_,s128)=
%7(_,s64) = G_OR %0, %2%8(_,s64) = G_OR %1, %3
G_MERGE_VALUES
G_EXTRACT , 0, 64%4%2(_,s64), %3(_,s64) = G_EXTRACT , 0, 64%5
Legalization Artifacts Simpler More Regular Semantic
%7, %8
%0(_,s64), %1(_,s64) =
![Page 68: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/68.jpg)
%6(_,s128)=
%7(_,s64) = G_OR %0, %2%8(_,s64) = G_OR %1, %3
G_MERGE_VALUES
G_EXTRACT , 0, 64%4%2(_,s64), %3(_,s64) = G_EXTRACT , 0, 64%5
Legalization Artifacts Simpler More Regular Semantic
%7, %8
%0(_,s64), %1(_,s64) =
![Page 69: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/69.jpg)
%6(_,s128)=
%7(_,s64) = G_OR %0, %2%8(_,s64) = G_OR %1, %3
G_MERGE_VALUES
G_UNMERGE_VALUES %4%2(_,s64), %3(_,s64) = G_EXTRACT , 0, 64%5
Legalization Artifacts Simpler More Regular Semantic
Same type
%7, %8
%0(_,s64), %1(_,s64) = G_UNMERGE_VALUES
![Page 70: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/70.jpg)
%6(_,s128)=
%7(_,s64) = G_OR %0, %2%8(_,s64) = G_OR %1, %3
G_MERGE_VALUES
G_UNMERGE_VALUES %4%2(_,s64), %3(_,s64) = G_UNMERGE_VALUES %5
Legalization Artifacts Simpler More Regular Semantic
%7, %8
%0(_,s64), %1(_,s64) =
![Page 71: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/71.jpg)
%6(_,s128)=
%7(_,s64) = G_OR %0, %2%8(_,s64) = G_OR %1, %3
G_MERGE_VALUES
G_UNMERGE_VALUES %4%2(_,s64), %3(_,s64) = G_UNMERGE_VALUES %5
Legalization Artifacts Simpler More Regular Semantic
%7, %8
%0(_,s64), %1(_,s64) =
• G_SEQUENCEs are gone
![Page 72: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/72.jpg)
%6(_,s128)=
%7(_,s64) = G_OR %0, %2%8(_,s64) = G_OR %1, %3
G_MERGE_VALUES
G_UNMERGE_VALUES %4%2(_,s64), %3(_,s64) = G_UNMERGE_VALUES %5
Legalization Artifacts Simpler More Regular Semantic
%7, %8
%0(_,s64), %1(_,s64) =
• G_SEQUENCEs are gone
• G_EXTRACTs still exist but have only one result
![Page 73: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/73.jpg)
%6(_,s128)=
%7(_,s64) = G_OR %0, %2%8(_,s64) = G_OR %1, %3
G_MERGE_VALUES
G_UNMERGE_VALUES %4%2(_,s64), %3(_,s64) = G_UNMERGE_VALUES %5
Legalization Artifacts Simpler More Regular Semantic
%7, %8
%0(_,s64), %1(_,s64) =
• G_SEQUENCEs are gone
• G_EXTRACTs still exist but have only one result
• G_[UN]MERGE_VALUES is used instead for these uses cases
![Page 74: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/74.jpg)
Legalization Algorithm How Does It Work?
![Page 75: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/75.jpg)
Legalization Algorithm How Does It Work?
setAction({Opcode, [OpIdx,] Type}, Action)
![Page 76: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/76.jpg)
Legalization Algorithm How Does It Work?
setAction({Opcode, [OpIdx,] Type}, Action)
Legal
![Page 77: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/77.jpg)
Legalization Algorithm How Does It Work?
setAction({Opcode, [OpIdx,] Type}, Action)
LegalNarrowScalar
![Page 78: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/78.jpg)
Legalization Algorithm How Does It Work?
setAction({Opcode, [OpIdx,] Type}, Action)
LegalNarrowScalarWidenScalar
![Page 79: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/79.jpg)
Legalization Algorithm How Does It Work?
setAction({Opcode, [OpIdx,] Type}, Action)
LegalNarrowScalarWidenScalarFewerElementsMoreElements
LowerLibcallCustomUnsupportedNotFound
![Page 80: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/80.jpg)
Legalization Algorithm How Does It Work?
Legal NarrowScalar WidenScalar FewerElements MoreElements
Lower Libcall Custom Unsupported NotFound
setAction({Opcode, [OpIdx,] Type}, Action)
%0(_,s16) = G_UREM %1 %2,
![Page 81: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/81.jpg)
Legalization Algorithm How Does It Work?
Legal NarrowScalar WidenScalar FewerElements MoreElements
Lower Libcall Custom Unsupported NotFound
setAction({G_UREM, 0, s16}, LegalizerInfo::WidenScalar)
setAction({Opcode, [OpIdx,] Type}, Action)
%0(_,s16) = G_UREM %1 %2,
![Page 82: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/82.jpg)
Legalization Algorithm How Does It Work?
Legal NarrowScalar WidenScalar FewerElements MoreElements
Lower Libcall Custom Unsupported NotFound
setAction({G_UREM, 0, s16}, LegalizerInfo::WidenScalar)
setAction({Opcode, [OpIdx,] Type}, Action)
%0(_,s16)= G_UREM
%1%2
%3(_,s32) = G_ZEXT%4(_,s32) = G_ZEXT%5(_,s32)
= G_TRUNC %5%3 %4,
![Page 83: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/83.jpg)
Legalization Algorithm How Does It Work?
Legal NarrowScalar WidenScalar FewerElements MoreElements
Lower Libcall Custom Unsupported NotFound
setAction({Opcode, [OpIdx,] Type}, Action)
%0(_,s16)= G_UREM
%1%2
%3(_,s32) = G_ZEXT%4(_,s32) = G_ZEXT%5(_,s32)
= G_TRUNC %5%3 %4, %4%3
![Page 84: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/84.jpg)
Legalization Algorithm How Does It Work?
Legal NarrowScalar WidenScalar FewerElements MoreElements
Lower Libcall Custom Unsupported NotFound
setAction({Opcode, [OpIdx,] Type}, Action)
%0(_,s16)= G_UREM
%1%2
%3(_,s32) = G_ZEXT%4(_,s32) = G_ZEXT%5(_,s32)
= G_TRUNC %5%3 %4,
setAction({G_UREM, 0, s32}, LegalizerInfo::Lower) %4%3
![Page 85: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/85.jpg)
Legalization Algorithm How Does It Work?
Legal NarrowScalar WidenScalar FewerElements MoreElements
Lower Libcall Custom Unsupported NotFound
setAction({Opcode, [OpIdx,] Type}, Action)
%0(_,s16)
%1%2
%3(_,s32) = G_ZEXT%4(_,s32) = G_ZEXT
%5(_,s32)= G_TRUNC %5
%3 %4,setAction({G_UREM, 0, s32}, LegalizerInfo::Lower) = G_UDIV
%7(_,s32) = G_MUL %6, = G_SUB , %7
%6(_,s32)
%3%4
![Page 86: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/86.jpg)
Legalization Algorithm How Does It Work?
Legal NarrowScalar WidenScalar FewerElements MoreElements
Lower Libcall Custom Unsupported NotFound
setAction({Opcode, [OpIdx,] Type}, Action)
%0(_,s16)
%1%2
%3(_,s32) = G_ZEXT%4(_,s32) = G_ZEXT
%5(_,s32)= G_TRUNC %5
%3 %4,= G_UDIV%7(_,s32) = G_MUL %6,
= G_SUB , %7
%6(_,s32)
%3%4
![Page 87: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/87.jpg)
Legalization Algorithm How Does It Work?
Legal NarrowScalar WidenScalar FewerElements MoreElements
Lower Libcall Custom Unsupported NotFound
setAction({Opcode, [OpIdx,] Type}, Action)
%0(_,s16)
%1%2
%3(_,s32) = G_ZEXT%4(_,s32) = G_ZEXT
%5(_,s32)= G_TRUNC %5
%3 %4,= G_UDIV%7(_,s32) = G_MUL %6,
= G_SUB , %7
%6(_,s32)
%3%4
setAction({G_SUB, 0, s32}, LegalizerInfo::Legal)
![Page 88: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/88.jpg)
Legalization Algorithm How Does It Work?
Legal NarrowScalar WidenScalar FewerElements MoreElements
Lower Libcall Custom Unsupported NotFound
setAction({Opcode, [OpIdx,] Type}, Action)
%0(_,s16)
%1%2
%3(_,s32) = G_ZEXT%4(_,s32) = G_ZEXT
%5(_,s32)= G_TRUNC %5
%3 %4,= G_UDIV%7(_,s32) = G_MUL %6,
= G_SUB , %7
%6(_,s32)
%3%4
![Page 89: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/89.jpg)
Legalization Algorithm How Does It Work?
Legal NarrowScalar WidenScalar FewerElements MoreElements
Lower Libcall Custom Unsupported NotFound
setAction({Opcode, [OpIdx,] Type}, Action)
%0(_,s16)
%1%2
%3(_,s32) = G_ZEXT%4(_,s32) = G_ZEXT
%5(_,s32)= G_TRUNC %5
%3 %4,= G_UDIV%7(_,s32) = G_MUL %6,
= G_SUB , %7
%6(_,s32)
%3%4
setAction({G_MUL, 0, s32}, LegalizerInfo::Legal)
![Page 90: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/90.jpg)
Legalization Algorithm How Does It Work?
Legal NarrowScalar WidenScalar FewerElements MoreElements
Lower Libcall Custom Unsupported NotFound
setAction({Opcode, [OpIdx,] Type}, Action)
%0(_,s16)
%1%2
%3(_,s32) = G_ZEXT%4(_,s32) = G_ZEXT
%5(_,s32)= G_TRUNC %5
%3 %4,= G_UDIV%7(_,s32) = G_MUL %6,
= G_SUB , %7
%6(_,s32)
%3%4
![Page 91: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/91.jpg)
Legalization Algorithm How Does It Work?
Legal NarrowScalar WidenScalar FewerElements MoreElements
Lower Libcall Custom Unsupported NotFound
setAction({Opcode, [OpIdx,] Type}, Action)
%0(_,s16)
%1%2
%3(_,s32) = G_ZEXT%4(_,s32) = G_ZEXT
%5(_,s32)= G_TRUNC %5
%3 %4,= G_UDIV%7(_,s32) = G_MUL %6,
= G_SUB , %7
%6(_,s32)
%3%4
setAction({G_UDIV, 0, s32}, LegalizerInfo::LibCall)
![Page 92: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/92.jpg)
Legalization Algorithm How Does It Work?
Legal NarrowScalar WidenScalar FewerElements MoreElements
Lower Libcall Custom Unsupported NotFound
setAction({Opcode, [OpIdx,] Type}, Action)
%0(_,s16)
%1%2
%3(_,s32) = G_ZEXT%4(_,s32) = G_ZEXT
%5(_,s32)= G_TRUNC %5
%3
%7(_,s32) = G_MUL %6, = G_SUB , %7
%6(_,s32)
%3%4
setAction({G_UDIV, 0, s32}, LegalizerInfo::LibCall)
%r0 = COPY%4%r1 = COPY
= COPY %r0%r0 = BLX uidivmod %r0, %r1
![Page 93: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/93.jpg)
Legalization Algorithm How Does It Work?
Legal NarrowScalar WidenScalar FewerElements MoreElements
Lower Libcall Custom Unsupported NotFound
setAction({Opcode, [OpIdx,] Type}, Action)
%0(_,s16)
%1%2
%3(_,s32) = G_ZEXT%4(_,s32) = G_ZEXT
%5(_,s32)= G_TRUNC %5
%3
%7(_,s32) = G_MUL %6, = G_SUB , %7
%6(_,s32)
%3%4
%r0 = COPY%4%r1 = COPY
= COPY %r0%r0 = BLX uidivmod %r0, %r1
%0(_,s16) = G_UREM %1 %2,
![Page 94: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/94.jpg)
(G)MI Legalizer RegBank Select
Instruction SelectIRTranslatorLLVM IR MI
![Page 95: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/95.jpg)
(G)MILegalizer RegBank Select
Instruction SelectIRTranslatorLLVM IR MI
![Page 96: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/96.jpg)
(G)MILegalizer RegBank Select
Instruction SelectIRTranslatorLLVM IR MI
What Changed?
![Page 97: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/97.jpg)
(G)MILegalizer RegBank Select
Instruction SelectIRTranslatorLLVM IR MI
Partial TableGen support Statically allocated structures
What Changed?
![Page 98: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/98.jpg)
(G)MILegalizer RegBank Select
Instruction SelectIRTranslatorLLVM IR MI
![Page 99: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/99.jpg)
Instruction Select TableGen Support
[SD].td CodeGenDAG Patterns
DAGISel Emitter [SD].inc
![Page 100: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/100.jpg)
Instruction Select TableGen Support
[SD].td CodeGenDAG Patterns
DAGISel Emitter
GlobalISel Emitter
[SD].inc
[GI].inc
![Page 101: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/101.jpg)
Instruction Select TableGen Support
[SD].td CodeGenDAG Patterns
GlobalISel Emitter [GI].inc
/*ADDWri Pattern*/ ADDWri : [( , ( , :$imm))]
set GPR32sp:$Rdadd GPR32sp:$Rn
addsub_shifted_imm32
![Page 102: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/102.jpg)
Instruction Select TableGen Support
[SD].td CodeGenDAG Patterns
GlobalISel Emitter [GI].inc
/*ADDWri Pattern*/ ADDWri : [( , ( , :$imm))]
set GPR32sp:$Rdadd GPR32sp:$Rn
addsub_shifted_imm32
![Page 103: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/103.jpg)
Instruction Select TableGen Support
[SD].td CodeGenDAG Patterns
GlobalISel Emitter [GI].inc
Selection DAG
Compat.td
/*ADDWri Pattern*/ ADDWri : [( , ( , :$imm))]
set GPR32sp:$Rdadd GPR32sp:$Rn
addsub_shifted_imm32
![Page 104: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/104.jpg)
Instruction Select TableGen Support
[SD].td CodeGenDAG Patterns
GlobalISel Emitter [GI].inc
Selection DAG
Compat.td
/*ADDWri Pattern*/ ADDWri : [( , ( , :$imm))]
set GPR32sp:$Rdadd GPR32sp:$Rn
addsub_shifted_imm32
def : GINodeEquiv<G_ADD, add>;
![Page 105: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/105.jpg)
Instruction Select TableGen Support
[SD].td CodeGenDAG Patterns
GlobalISel Emitter [GI].inc
Selection DAG
Compat.td
/*ADDWri Pattern*/ ADDWri : [( , ( , :$imm))]
set GPR32sp:$Rdadd GPR32sp:$Rn
addsub_shifted_imm32
def : GINodeEquiv<G_ADD, add>;
![Page 106: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/106.jpg)
Instruction Select TableGen Support
[SD].td CodeGenDAG Patterns
GlobalISel Emitter [GI].inc
/*ADDWri Pattern*/ ADDWri : [( , ( , :$imm))]
set GPR32sp:$Rdadd GPR32sp:$Rn
addsub_shifted_imm32
![Page 107: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/107.jpg)
Instruction Select TableGen Support
[SD].td CodeGenDAG Patterns
GlobalISel Emitter [GI].inc
/*ADDWri Pattern*/ ADDWri : [( , ( , :$imm))]
set GPR32sp:$Rdadd GPR32sp:$Rn
class addsub_shifted_imm<i32> : Operand<i32>, ComplexPattern<i32, 2, “SelectArithImmed", [imm]>
addsub_shifted_imm32
![Page 108: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/108.jpg)
Instruction Select TableGen Support
[SD].td CodeGenDAG Patterns
GlobalISel Emitter [GI].inc
/*ADDWri Pattern*/ ADDWri : [( , ( , :$imm))]
set GPR32sp:$Rdadd GPR32sp:$Rn
class addsub_shifted_imm<i32> : Operand<i32>, ComplexPattern<i32, 2, “SelectArithImmed", [imm]>
addsub_shifted_imm32
![Page 109: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/109.jpg)
Instruction Select TableGen Support
[SD].td CodeGenDAG Patterns
GlobalISel Emitter [GI].inc
/*ADDWri Pattern*/ ADDWri : [( , ( , :$imm))]
set GPR32sp:$Rdadd GPR32sp:$Rn
class addsub_shifted_imm<i32> : Operand<i32>, ComplexPattern<i32, 2, “SelectArithImmed", [imm]>
XXXInstr Info.td
addsub_shifted_imm32
def gi_addsub_shifted_imm32:
![Page 110: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/110.jpg)
Instruction Select TableGen Support
[SD].td CodeGenDAG Patterns
GlobalISel Emitter [GI].inc
/*ADDWri Pattern*/ ADDWri : [( , ( , :$imm))]
set GPR32sp:$Rdadd GPR32sp:$Rn
class addsub_shifted_imm<i32> : Operand<i32>, ComplexPattern<i32, 2, “SelectArithImmed", [imm]>
addsub_shifted_imm32
XXXInstr Info.td
def gi_addsub_shifted_imm32:GIComplexOperandMatcher <s32, “selectArithImmed”>,
![Page 111: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/111.jpg)
Instruction Select TableGen Support
[SD].td CodeGenDAG Patterns
GlobalISel Emitter [GI].inc
/*ADDWri Pattern*/ ADDWri : [( , ( , :$imm))]
set GPR32sp:$Rdadd GPR32sp:$Rn
class addsub_shifted_imm<i32> : Operand<i32>, ComplexPattern<i32, 2, “SelectArithImmed", [imm]>
def gi_addsub_shifted_imm32:GIComplexOperandMatcher <s32, “selectArithImmed”>,GIComplexPatternEquiv <addsub_shifted_imm32>;
addsub_shifted_imm32
XXXInstr Info.td
![Page 112: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/112.jpg)
Instruction Select TableGen Support
[SD].td CodeGenDAG Patterns
GlobalISel Emitter [GI].inc
/*ADDWri Pattern*/ ADDWri : [( , ( , :$imm))]
set GPR32sp:$Rdadd GPR32sp:$Rn
class addsub_shifted_imm<i32> : Operand<i32>, ComplexPattern<i32, 2, “SelectArithImmed", [imm]>
def gi_addsub_shifted_imm32:GIComplexOperandMatcher <s32, “selectArithImmed”>,GIComplexPatternEquiv <addsub_shifted_imm32>;
addsub_shifted_imm32
XXXInstr Info.td
![Page 113: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/113.jpg)
Instruction Select TableGen Support
[SD].td CodeGenDAG Patterns
GlobalISel Emitter [GI].inc
/*ADDWri Pattern*/ ADDWri : [( , ( , :$imm))]
set GPR32sp:$Rdadd GPR32sp:$Rn
addsub_shifted_imm32
class addsub_shifted_imm<i32> : Operand<i32>, ComplexPattern<i32, 2, “SelectArithImmed", [imm]>
![Page 114: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/114.jpg)
Instruction Select TableGen Support
[SD].td CodeGenDAG Patterns
GlobalISel Emitter [GI].inc
/*ADDWri Pattern*/ ADDWri : [( , ( , :$imm))]
set GPR32sp:$Rdadd GPR32sp:$Rn
addsub_shifted_imm32
class addsub_shifted_imm<i32> : Operand<i32>, ComplexPattern<i32, 2, “SelectArithImmed", [imm]>
bool AArch64DAGToDAGISel:: SelectArithImmed( SDValue N, [...])
![Page 115: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/115.jpg)
Instruction Select TableGen Support
[SD].td CodeGenDAG Patterns
GlobalISel Emitter [GI].inc
/*ADDWri Pattern*/ ADDWri : [( , ( , :$imm))]
set GPR32sp:$Rdadd GPR32sp:$Rn
addsub_shifted_imm32
class addsub_shifted_imm<i32> : Operand<i32>, ComplexPattern<i32, 2, “SelectArithImmed", [imm]>
bool AArch64DAGToDAGISel:: SelectArithImmed( SDValue N, [...])
![Page 116: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/116.jpg)
Instruction Select TableGen Support
[SD].td CodeGenDAG Patterns
GlobalISel Emitter [GI].inc
/*ADDWri Pattern*/ ADDWri : [( , ( , :$imm))]
set GPR32sp:$Rdadd GPR32sp:$Rn
addsub_shifted_imm32
class addsub_shifted_imm<i32> : Operand<i32>, ComplexPattern<i32, 2, “SelectArithImmed", [imm]>
bool AArch64DAGToDAGISel:: SelectArithImmed( SDValue N, [...])
InstructionSelector::ComplexRendererFn AArch64InstructionSelector:: selectArithImmed( MachineOperand &Root) const
![Page 117: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/117.jpg)
Instruction Select TableGen Support
[SD].td CodeGenDAG Patterns
GlobalISel Emitter [GI].inc
/*ADDWri Pattern*/ ADDWri : [( , ( , :$imm))]
set GPR32sp:$Rdadd GPR32sp:$Rn
addsub_shifted_imm32
![Page 118: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/118.jpg)
Instruction Select TableGen Support
[SD].td CodeGenDAG Patterns
GlobalISel Emitter [GI].inc
/*ADDWri Pattern*/ ADDWri : [( , ( , :$imm))]
set GPR32sp:$Rdadd GPR32sp:$Rn
addsub_shifted_imm32
_Try, /*On fail goto*//*Label 478*/ 30417,_CheckNumOperands, /*MI*/0, /*Expected*/3,
_CheckOpcode, /*MI*/0, TargetOpcode::G_ADD, _CheckRegBankForClass, [...]GPR32spRegClassID,
_CheckComplexPattern, /*MI*/0, /*Op*/1, /*Renderer*/0, GICP_gi_addsub_shifted_imm32,
GIR_BuildMI, [...] /*Opcode*/AArch64::ADDWri,
GIR_ComplexRenderer, [...]GIR_EraseFromParent, /*InsnID*/0,
GIR_Done
[...]
[...]
[...]
[...]
GIMGIMGIMGIM
GIM
![Page 119: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/119.jpg)
Instruction Select TableGen Support
[SD].td CodeGenDAG Patterns
GlobalISel Emitter [GI].inc
/*ADDWri Pattern*/ ADDWri : [( , ( , :$imm))]
set GPR32sp:$Rdadd GPR32sp:$Rn
addsub_shifted_imm32
_Try, /*On fail goto*//*Label 478*/ 30417,_CheckNumOperands, /*MI*/0, /*Expected*/3,
_CheckOpcode, /*MI*/0, TargetOpcode::G_ADD, _CheckRegBankForClass, [...]GPR32spRegClassID,
_CheckComplexPattern, /*MI*/0, /*Op*/1, /*Renderer*/0, GICP_gi_addsub_shifted_imm32,
GIR_BuildMI, [...] /*Opcode*/AArch64::ADDWri,
GIR_ComplexRenderer, [...]GIR_EraseFromParent, /*InsnID*/0,
GIR_Done
[...]
[...]
[...]
[...]
GIMGIMGIMGIM
GIM
![Page 120: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/120.jpg)
Instruction Select TableGen Support
[SD].td CodeGenDAG Patterns
GlobalISel Emitter [GI].inc
/*ADDWri Pattern*/ ADDWri : [( , ( , :$imm))]
set GPR32sp:$Rdadd GPR32sp:$Rn
addsub_shifted_imm32
_Try, /*On fail goto*//*Label 478*/ 30417,_CheckNumOperands, /*MI*/0, /*Expected*/3,
_CheckOpcode, /*MI*/0, TargetOpcode::G_ADD, _CheckRegBankForClass, [...]GPR32spRegClassID,
_CheckComplexPattern, /*MI*/0, /*Op*/1, /*Renderer*/0, GICP_gi_addsub_shifted_imm32,
GIR_BuildMI, [...] /*Opcode*/AArch64::ADDWri,
GIR_ComplexRenderer, [...]GIR_EraseFromParent, /*InsnID*/0,
GIR_Done
[...]
[...]
[...]
[...]
GIMGIMGIMGIM
GIM
![Page 121: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/121.jpg)
Instruction Select TableGen Support
[SD].td CodeGenDAG Patterns
GlobalISel Emitter [GI].inc
/*ADDWri Pattern*/ ADDWri : [( , ( , :$imm))]
set GPR32sp:$Rdadd GPR32sp:$Rn
addsub_shifted_imm32
_Try, /*On fail goto*//*Label 478*/ 30417,_CheckNumOperands, /*MI*/0, /*Expected*/3,
_CheckOpcode, /*MI*/0, TargetOpcode::G_ADD, _CheckRegBankForClass, [...]GPR32spRegClassID,
_CheckComplexPattern, /*MI*/0, /*Op*/1, /*Renderer*/0, GICP_gi_addsub_shifted_imm32,
_BuildMI, [...] /*Opcode*/AArch64::ADDWri,
_ComplexRenderer, [...] _EraseFromParent, /*InsnID*/0,
_Done
[...]
[...]
[...]
[...]
GIMGIMGIMGIM
GIM
GIR
GIRGIR
GIR
![Page 122: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/122.jpg)
Instruction Select TableGen Support
[SD].td CodeGenDAG Patterns
GlobalISel Emitter [GI].inc
/*ADDWri Pattern*/ ADDWri : [( , ( , :$imm))]
set GPR32sp:$Rdadd GPR32sp:$Rn
addsub_shifted_imm32
_Try, /*On fail goto*//*Label 478*/ 30417,_CheckNumOperands, /*MI*/0, /*Expected*/3,
_CheckOpcode, /*MI*/0, TargetOpcode::G_ADD, _CheckRegBankForClass, [...]GPR32spRegClassID,
_CheckComplexPattern, /*MI*/0, /*Op*/1, /*Renderer*/0, GICP_gi_addsub_shifted_imm32,
_BuildMI, [...] /*Opcode*/AArch64::ADDWri,
_ComplexRenderer, [...] _EraseFromParent, /*InsnID*/0,
_Done
[...]
[...]
[...]
[...]
GIMGIMGIMGIM
GIM
GIR
GIRGIR
GIR
![Page 123: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/123.jpg)
Instruction Select TableGen Support
[SD].td CodeGenDAG Patterns
GlobalISel Emitter [GI].inc
/*ADDWri Pattern*/ ADDWri : [( , ( , :$imm))]
set GPR32sp:$Rdadd GPR32sp:$Rn
addsub_shifted_imm32
_Try, /*On fail goto*//*Label 478*/ 30417,_CheckNumOperands, /*MI*/0, /*Expected*/3,
_CheckOpcode, /*MI*/0, TargetOpcode::G_ADD, _CheckRegBankForClass, [...]GPR32spRegClassID,
_CheckComplexPattern, /*MI*/0, /*Op*/1, /*Renderer*/0, GICP_gi_addsub_shifted_imm32,
_BuildMI, [...] /*Opcode*/AArch64::ADDWri,
_ComplexRenderer, [...] _EraseFromParent, /*InsnID*/0,
_Done
[...]
[...]
[...]
[...]
GIMGIMGIMGIM
GIM
GIR
GIRGIR
GIR
![Page 124: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/124.jpg)
Instruction Select TableGen Support
[SD].td CodeGenDAG Patterns
GlobalISel Emitter [GI].inc
/*ADDWri Pattern*/ ADDWri : [( , ( , :$imm))]
set GPR32sp:$Rdadd GPR32sp:$Rn
addsub_shifted_imm32
_Try, /*On fail goto*//*Label 478*/ 30417,_CheckNumOperands, /*MI*/0, /*Expected*/3,
_CheckOpcode, /*MI*/0, TargetOpcode::G_ADD, _CheckRegBankForClass, [...]GPR32spRegClassID,
_CheckComplexPattern, /*MI*/0, /*Op*/1, /*Renderer*/0, GICP_gi_addsub_shifted_imm32,
_BuildMI, [...] /*Opcode*/AArch64::ADDWri,
_ComplexRenderer, [...] _EraseFromParent, /*InsnID*/0,
_Done
[...]
[...]
[...]
[...]
GIMGIMGIMGIM
GIM
GIR
GIRGIR
GIR
![Page 125: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/125.jpg)
Instruction Select TableGen Support
[SD].td CodeGenDAG Patterns
GlobalISel Emitter [GI].inc
/*ADDWri Pattern*/ ADDWri : [( , ( , :$imm))]
set GPR32sp:$Rdadd GPR32sp:$Rn
addsub_shifted_imm32
_Try, /*On fail goto*//*Label 478*/ 30417,_CheckNumOperands, /*MI*/0, /*Expected*/3,
_CheckOpcode, /*MI*/0, TargetOpcode::G_ADD, _CheckRegBankForClass, [...]GPR32spRegClassID,
_CheckComplexPattern, /*MI*/0, /*Op*/1, /*Renderer*/0, GICP_gi_addsub_shifted_imm32,
_BuildMI, [...] /*Opcode*/AArch64::ADDWri,
_ComplexRenderer, [...] _EraseFromParent, /*InsnID*/0,
_Done
[...]
[...]
[...]
[...]
GIMGIMGIMGIM
GIM
GIR
GIRGIR
GIR
![Page 126: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/126.jpg)
Instruction Select TableGen Support
[SD].td CodeGenDAG Patterns
GlobalISel Emitter [GI].inc
_Try, /*On fail goto*//*Label 478*/ 30417,_CheckNumOperands, /*MI*/0, /*Expected*/3,
_CheckOpcode, /*MI*/0, TargetOpcode::G_ADD, _CheckRegBankForClass, [...]GPR32spRegClassID,
_CheckComplexPattern, /*MI*/0, /*Op*/1, /*Renderer*/0, GICP_gi_addsub_shifted_imm32,
_BuildMI, [...] /*Opcode*/AArch64::ADDWri,
_ComplexRenderer, [...] _EraseFromParent, /*InsnID*/0,
_Done
[...]
[...]
[...]
[...]
GIMGIMGIMGIM
GIM
GIR
GIRGIR
GIR
![Page 127: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/127.jpg)
Present
![Page 128: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/128.jpg)
Present Status
![Page 129: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/129.jpg)
• Non-optional library
Present Status
![Page 130: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/130.jpg)
• Non-optional library
• Ports in progress:
Present Status
![Page 131: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/131.jpg)
• Non-optional library
• Ports in progress:
Present Status
X86 AMDGPU AArch64 ARM Hexagon PowerPC Mips SystemZ WebAssembly AVR NVPTX Sparc
BPF XCore Lanai RISCV MSP430 Nios2 ARC
![Page 132: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/132.jpg)
• Non-optional library
• Ports in progress:
Present Status
X86 AMDGPU AArch64 ARM Hexagon PowerPC Mips SystemZ WebAssembly AVR NVPTX Sparc
BPF XCore Lanai RISCV MSP430 Nios2 ARC
![Page 133: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/133.jpg)
• Non-optional library
• Ports in progress:
Present Status
X86 AMDGPU AArch64 ARM Hexagon PowerPC Mips SystemZ WebAssembly AVR NVPTX Sparc
BPF XCore Lanai RISCV MSP430 Nios2 ARC
![Page 134: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/134.jpg)
Present Status: AArch64 -O0
![Page 135: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/135.jpg)
• Test Suite + SPEC
Present Status: AArch64 -O0
![Page 136: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/136.jpg)
• Test Suite + SPEC
Present Status: AArch64 -O0
% Instructions handled without fallback
![Page 137: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/137.jpg)
• Test Suite + SPEC
• Clang self-host
Present Status: AArch64 -O0
% Instructions handled without fallback
![Page 138: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/138.jpg)
• Test Suite + SPEC
• Clang self-host
Present Status: AArch64 -O0
% Instructions handled without fallback
![Page 139: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/139.jpg)
• Test Suite + SPEC
• Clang self-host
• Our internal software
Present Status: AArch64 -O0
% Instructions handled without fallback
![Page 140: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/140.jpg)
• Test Suite + SPEC
• Clang self-host
• Our internal software
Present Status: AArch64 -O0
% Instructions handled without fallback
![Page 141: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/141.jpg)
Present Status: Select TableGen
![Page 142: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/142.jpg)
• AArch64
Present Status: Select TableGen
![Page 143: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/143.jpg)
• AArch64
Present Status: Select TableGen
% Imported patterns
![Page 144: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/144.jpg)
• AArch64
Present Status: Select TableGen
Lots of vectors
% Imported patterns
![Page 145: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/145.jpg)
• AArch64
• ARM
Present Status: Select TableGen
Lots of vectors
% Imported patterns
![Page 146: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/146.jpg)
• AArch64
• ARM
Present Status: Select TableGen
Lots of vectors
% Imported patterns
![Page 147: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/147.jpg)
• AArch64
• ARM
• X86
Present Status: Select TableGen
Lots of vectors
% Imported patterns
![Page 148: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/148.jpg)
• AArch64
• ARM
• X86
Present Status: Select TableGen
Lots of vectors
% Imported patterns
![Page 149: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/149.jpg)
• AArch64
• ARM
• X86
Present Status: Select TableGen
Lots of vectors
Even more vectors% Imported patterns
![Page 150: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/150.jpg)
PresentPerformance
![Page 151: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/151.jpg)
Performance Code size
![Page 152: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/152.jpg)
Performance Code size
80%
90%
100%
110%
120%
130%
140%
kc
SPASS
tramp3
d-v4
cons
umer-
types
et
bulle
t
lenco
d
pairlo
calal
ign
clamsc
an
7zip-
benc
hmark
sqlite
3
![Page 153: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/153.jpg)
FastISel
Performance Code size
80%
90%
100%
110%
120%
130%
140%
kc
SPASS
tramp3
d-v4
cons
umer-
types
et
bulle
t
lenco
d
pairlo
calal
ign
clamsc
an
7zip-
benc
hmark
sqlite
3
![Page 154: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/154.jpg)
Performance Constant placement
%5(_,s64) = G_ADD %2, %6%4(_,s64) = G_MUL %1, %6
%6(_,s64) = G_CONSTANT 10
![Page 155: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/155.jpg)
Performance Constant placement: -regalloc=fast
%9(_,s64) = G_LOAD %fi%5(_,s64) = G_ADD %2, %9
%8(_,s64) = G_LOAD %fi%4(_,s64) = G_MUL %1, %8
%6(_,s64) = G_CONSTANT 10G_STORE %6, %fi Spill
![Page 156: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/156.jpg)
Performance Constant placement: Localizer
%9(_,s64) = G_CONSTANT 10%5(_,s64) = G_ADD %2, %9
%8(_,s64) = G_CONSTANT 10%4(_,s64) = G_MUL %1, %8
![Page 157: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/157.jpg)
FastISel
Performance Code size: before
80%
90%
100%
110%
120%
130%
140%
kc
SPASS
tramp3
d-v4
cons
umer-
types
et
bulle
t
lenco
d
pairlo
calal
ign
clamsc
an
7zip-
benc
hmark
sqlite
3
![Page 158: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/158.jpg)
FastISel
Performance Code size: with localizer
80%
90%
100%
110%
120%
130%
140%
kc
SPASS
tramp3
d-v4
cons
umer-
types
et
bulle
t
lenco
d
pairlo
calal
ign
clamsc
an
7zip-
benc
hmark
sqlite
3
![Page 159: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/159.jpg)
Performance Compile time
![Page 160: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/160.jpg)
Performance Compile time
80%
90%
100%
110%
120%
130%
140%
kc
SPASS
tramp3
d-v4
cons
umer-
types
et
bulle
t
lenco
d
pairlo
calal
ign
clamsc
an
7zip-
benc
hmark
sqlite
3
![Page 161: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/161.jpg)
FastISel
Performance Compile time
80%
90%
100%
110%
120%
130%
140%
kc
SPASS
tramp3
d-v4
cons
umer-
types
et
bulle
t
lenco
d
pairlo
calal
ign
clamsc
an
7zip-
benc
hmark
sqlite
3
![Page 162: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/162.jpg)
FastISel
Performance Compile time
80%
90%
100%
110%
120%
130%
140%
kc
SPASS
tramp3
d-v4
cons
umer-
types
et
bulle
t
lenco
d
pairlo
calal
ign
clamsc
an
7zip-
benc
hmark
sqlite
3
GlobalISelSelectionDAG
157% 152% 203%
![Page 163: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/163.jpg)
Performance Compile time: per pass
![Page 164: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/164.jpg)
Performance Compile time: per pass
0%
25%
50%
75%
100%
125%
150%
kc
SPASS
tramp3
d-v4
cons
umer-
types
et
bulle
t
lenco
d
pairlo
calal
ign
clamsc
an
7zip-
benc
hmark
sqlite
3
IRTranslatorRegBankSelectLegalizerLocalizerInstructionSelect
![Page 165: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/165.jpg)
FastISel
Performance Compile time: per pass
0%
25%
50%
75%
100%
125%
150%
kc
SPASS
tramp3
d-v4
cons
umer-
types
et
bulle
t
lenco
d
pairlo
calal
ign
clamsc
an
7zip-
benc
hmark
sqlite
3
IRTranslatorRegBankSelectLegalizerLocalizerInstructionSelect
![Page 166: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/166.jpg)
FastISel
Performance Compile time: per pass
0%
25%
50%
75%
100%
125%
150%
kc
SPASS
tramp3
d-v4
cons
umer-
types
et
bulle
t
lenco
d
pairlo
calal
ign
clamsc
an
7zip-
benc
hmark
sqlite
3
IRTranslatorRegBankSelectLegalizerLocalizerInstructionSelectSelectionDAG
![Page 167: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/167.jpg)
Performance Compile time: per pass, normalized
0%
20%
40%
60%
80%
100%
kc
SPASS
tramp3
d-v4
cons
umer-
types
et
bulle
t
lenco
d
pairlo
calal
ign
clamsc
an
7zip-
benc
hmark
sqlite
3
IRTranslatorRegBankSelectLegalizerLocalizerInstructionSelect
GlobalISel
![Page 168: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/168.jpg)
Performance Runtime: SPEC2006
![Page 169: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/169.jpg)
Performance Runtime: SPEC2006
100%
125%
150%
175%
200%
470.l
bm46
2.libq
uantu
m43
3.milc
482.s
phinx
346
4.h26
4ref
429.m
cf44
7.dea
lII44
4.nam
d45
6.hmmer
471.o
mnetpp
483.x
alanc
bmk
401.b
zip2
473.a
star
450.s
oplex
453.p
ovray
445.g
obmk
458.s
jeng
403.g
cc40
0.perl
benc
h
![Page 170: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/170.jpg)
Performance Runtime: SPEC2006
100%
125%
150%
175%
200%
470.l
bm46
2.libq
uantu
m43
3.milc
482.s
phinx
346
4.h26
4ref
429.m
cf44
7.dea
lII44
4.nam
d45
6.hmmer
471.o
mnetpp
483.x
alanc
bmk
401.b
zip2
473.a
star
450.s
oplex
453.p
ovray
445.g
obmk
458.s
jeng
403.g
cc40
0.perl
benc
h
FastISel
![Page 171: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/171.jpg)
Performance Runtime: Test Suite
100%
125%
150%
175%
200%
FastISel
![Page 172: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/172.jpg)
Future
![Page 173: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/173.jpg)
Future Beyond -O0
![Page 174: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/174.jpg)
• Flesh out the pass pipeline
Future Beyond -O0
![Page 175: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/175.jpg)
• Flesh out the pass pipeline
• Kill Localizer
Future Beyond -O0
![Page 176: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/176.jpg)
• Flesh out the pass pipeline
• Kill Localizer
• Kill CodeGenPrepare
Future Beyond -O0
![Page 177: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/177.jpg)
Future Beyond the SelectionDAG GlobalISelEmitter
![Page 178: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/178.jpg)
• Emit legality info
Future Beyond the SelectionDAG GlobalISelEmitter
![Page 179: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/179.jpg)
• Emit legality info
Future Beyond the SelectionDAG GlobalISelEmitter
def : Pat< (i32 (mul (GPR32:$Rn, GPR32:$Rm))), (...) >;
![Page 180: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/180.jpg)
• Emit legality info
Future Beyond the SelectionDAG GlobalISelEmitter
setAction({G_MUL, 0, s32}, Legal)
def : Pat< (i32 (mul (GPR32:$Rn, GPR32:$Rm))), (...) >;
![Page 181: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/181.jpg)
• Emit legality info
• Emit register bank mapping
Future Beyond the SelectionDAG GlobalISelEmitter
![Page 182: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/182.jpg)
• Emit legality info
• Emit register bank mapping
• Support pure GlobalISel patterns
Future Beyond the SelectionDAG GlobalISelEmitter
![Page 183: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/183.jpg)
Future Beyond SelectionDAG
![Page 184: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/184.jpg)
• Feature parity (remember vectors?)
Future Beyond SelectionDAG
![Page 185: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/185.jpg)
• Feature parity (remember vectors?)
• Improved performance
Future Beyond SelectionDAG
![Page 186: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/186.jpg)
• Feature parity (remember vectors?)
• Improved performance
• More testing!
Future Beyond SelectionDAG
![Page 187: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/187.jpg)
Future Combines: Leveraging Patterns
![Page 188: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/188.jpg)
Future Combines: Leveraging Patterns
def : Pat< (f32 (fma (fneg (FPR32:$Rn), FPR32:$Rm, FPR32:$Ra)), (FMSUBSrrr FPR32:$Rn, FPR32:$Rm, FPR32:$Ra) >;
![Page 189: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/189.jpg)
Future Combines: Leveraging Patterns
def Mul2ToShl1 : Combine< (mul type0:$src0, 2), (shl type0:$src0, 1), >;
![Page 190: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/190.jpg)
Future Combines: Leveraging Patterns
TableGen Backend
def Mul2ToShl1 : Combine< (mul type0:$src0, 2), (shl type0:$src0, 1), >;
![Page 191: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/191.jpg)
Future Combines: Leveraging Patterns
TableGen Backend
Inst Combine .incdef Mul2ToShl1 : Combine<
(mul type0:$src0, 2), (shl type0:$src0, 1), >;
![Page 192: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/192.jpg)
Future Combines: Leveraging Patterns
TableGen Backend
Inst Combine .inc
GISel Combine .inc
def Mul2ToShl1 : Combine< (mul type0:$src0, 2), (shl type0:$src0, 1), >;
![Page 193: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/193.jpg)
Future Combines: Leveraging Patterns
TableGen Backend
Inst Combine .inc
GISel Combine .inc
def Mul2ToShl1 : Combine< (mul type0:$src0, 2), (shl type0:$src0, 1), >;
![Page 194: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/194.jpg)
Future Combines: Leveraging Patterns
TableGen Backend
Inst Combine .inc
GISel Combine .inc
def Mul2ToShl1 : Combine< (mul type0:$src0, 2), (shl type0:$src0, 1), >;
Target Config .td Target
Combine .inc
def : RunWhen<Mul2ToShl1, [BeforeLegalized, AfterLegalized]>
def MyPattern : (MyOp(...)); def : RunWhen<MyPattern, [AfterRegBankSelect]>
![Page 195: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/195.jpg)
Future Tools to Help the Transition
![Page 196: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/196.jpg)
• Better .mir test format
Future Tools to Help the Transition
![Page 197: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/197.jpg)
• Better .mir test format
• Better MachineInstr API
Future Tools to Help the Transition
![Page 198: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/198.jpg)
• Better .mir test format
• Better MachineInstr API
• Regression tests generator
Future Tools to Help the Transition
![Page 199: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/199.jpg)
• Better .mir test format
• Better MachineInstr API
• Regression tests generator
• SDNode to GMIR migrator
Future Tools to Help the Transition
![Page 200: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/200.jpg)
Contributions Welcome!
![Page 201: GISel status 2017 final - LLVMllvm.org/devmtg/2017-10/slides/Bougacha-Colombet-GlobalISel.pdf · LLVM DevMtg October 2017 Ahmed Bougacha Quentin Colombet GlobalISel Past, Present,](https://reader036.vdocuments.mx/reader036/viewer/2022071001/5fbe405a01237973903e0c16/html5/thumbnails/201.jpg)
Questions?