1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-21 03:53:04 +02:00

[GlobalISel] Don't legalize non-generic instructions.

They don't have types and should be legal.

llvm-svn: 277446
This commit is contained in:
Ahmed Bougacha 2016-08-02 11:41:09 +00:00
parent 3f45126272
commit d7d1c64f3d
2 changed files with 42 additions and 0 deletions

View File

@ -54,6 +54,12 @@ bool MachineLegalizePass::runOnMachineFunction(MachineFunction &MF) {
// Get the next Instruction before we try to legalize, because there's a
// good chance MI will be deleted.
NextMI = std::next(MI);
// Only legalize pre-isel generic instructions: others don't have types
// and are assumed to be legal.
if (!isPreISelGenericOpcode(MI->getOpcode()))
continue;
auto Res = Helper.legalizeInstr(*MI, Legalizer);
// Error out if we couldn't legalize this instruction. We may want to fall

View File

@ -0,0 +1,36 @@
# RUN: llc -O0 -run-pass=legalize-mir -global-isel %s -o - | FileCheck %s
# REQUIRES: global-isel
--- |
target datalayout = "e-m:o-i64:64-i128:128-n32:64-S128"
target triple = "aarch64--"
define void @test_copy() { ret void }
define void @test_targetspecific() { ret void }
...
---
name: test_copy
isSSA: true
registers:
- { id: 0, class: _ }
body: |
bb.0:
liveins: %x0
; CHECK-LABEL: name: test_copy
; CHECK: %0(64) = COPY %x0
; CHECK-NEXT: %x0 = COPY %0
%0(64) = COPY %x0
%x0 = COPY %0
...
---
name: test_targetspecific
isSSA: true
body: |
bb.0:
; CHECK-LABEL: name: test_targetspecific
; CHECK: RET_ReallyLR
RET_ReallyLR
...