1*9880d681SAndroid Build Coastguard Worker# RUN: llc -march=x86-64 -start-after machine-sink -stop-after machine-sink -o - %s | FileCheck %s 2*9880d681SAndroid Build Coastguard Worker# REQUIRES: global-isel 3*9880d681SAndroid Build Coastguard Worker# This test ensures that the MIR parser parses generic virtual 4*9880d681SAndroid Build Coastguard Worker# register definitions correctly. 5*9880d681SAndroid Build Coastguard Worker 6*9880d681SAndroid Build Coastguard Worker--- | 7*9880d681SAndroid Build Coastguard Worker ; ModuleID = 'generic-virtual-registers-type-error.mir' 8*9880d681SAndroid Build Coastguard Worker target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128" 9*9880d681SAndroid Build Coastguard Worker %type_alias = type <2 x i32> 10*9880d681SAndroid Build Coastguard Worker %structure_alias = type { i32, i16 } 11*9880d681SAndroid Build Coastguard Worker define void @bar() { 12*9880d681SAndroid Build Coastguard Worker entry: 13*9880d681SAndroid Build Coastguard Worker ret void 14*9880d681SAndroid Build Coastguard Worker } 15*9880d681SAndroid Build Coastguard Worker 16*9880d681SAndroid Build Coastguard Worker... 17*9880d681SAndroid Build Coastguard Worker 18*9880d681SAndroid Build Coastguard Worker--- 19*9880d681SAndroid Build Coastguard Workername: bar 20*9880d681SAndroid Build Coastguard WorkerisSSA: true 21*9880d681SAndroid Build Coastguard Worker# CHECK: registers: 22*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: - { id: 0, class: _ } 23*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: - { id: 1, class: _ } 24*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: - { id: 2, class: _ } 25*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: - { id: 3, class: _ } 26*9880d681SAndroid Build Coastguard Worker# CHECK-NEXT: - { id: 4, class: _ } 27*9880d681SAndroid Build Coastguard Workerregisters: 28*9880d681SAndroid Build Coastguard Worker - { id: 0, class: _ } 29*9880d681SAndroid Build Coastguard Worker - { id: 1, class: _ } 30*9880d681SAndroid Build Coastguard Worker - { id: 2, class: _ } 31*9880d681SAndroid Build Coastguard Worker - { id: 3, class: _ } 32*9880d681SAndroid Build Coastguard Worker - { id: 4, class: _ } 33*9880d681SAndroid Build Coastguard Workerbody: | 34*9880d681SAndroid Build Coastguard Worker bb.0.entry: 35*9880d681SAndroid Build Coastguard Worker liveins: %edi 36*9880d681SAndroid Build Coastguard Worker ; CHECK: %0(32) = G_ADD i32 %edi 37*9880d681SAndroid Build Coastguard Worker %0(32) = G_ADD i32 %edi, %edi 38*9880d681SAndroid Build Coastguard Worker ; CHECK: %1(64) = G_ADD <2 x i32> %edi 39*9880d681SAndroid Build Coastguard Worker %1(64) = G_ADD <2 x i32> %edi, %edi 40*9880d681SAndroid Build Coastguard Worker ; CHECK: %2(64) = G_ADD <2 x i32> %edi 41*9880d681SAndroid Build Coastguard Worker %2(64) = G_ADD %type_alias %edi, %edi 42*9880d681SAndroid Build Coastguard Worker ; G_ADD is actually not a valid operand for structure type, 43*9880d681SAndroid Build Coastguard Worker ; but that is the only one we have for now for testing. 44*9880d681SAndroid Build Coastguard Worker ; CHECK: %3(64) = G_ADD { i32, i32 } %edi 45*9880d681SAndroid Build Coastguard Worker %3(64) = G_ADD {i32, i32} %edi, %edi 46*9880d681SAndroid Build Coastguard Worker ; CHECK: %4(48) = G_ADD %structure_alias %edi 47*9880d681SAndroid Build Coastguard Worker %4(48) = G_ADD %structure_alias %edi, %edi 48*9880d681SAndroid Build Coastguard Worker... 49