107a5e31cSFreddy Ye# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py 23e4caa9dSFreddy Ye# RUN: llc -run-pass x86-domain-reassignment -mtriple=x86_64-unknown-unknown -mattr=+avx512f,+avx512bw,+avx512dq,+ndd -o - %s | FileCheck %s 307a5e31cSFreddy Ye--- | 407a5e31cSFreddy Ye ; ModuleID = '../test/CodeGen/X86/gpr-to-mask.ll' 507a5e31cSFreddy Ye source_filename = "../test/CodeGen/X86/gpr-to-mask.ll" 607a5e31cSFreddy Ye target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" 707a5e31cSFreddy Ye target triple = "x86_64-unknown-unknown" 807a5e31cSFreddy Ye 907a5e31cSFreddy Ye define void @test_fcmp_storefloat(i1 %cond, ptr %fptr, float %f1, float %f2, float %f3, float %f4, float %f5, float %f6) #0 { 1007a5e31cSFreddy Ye entry: 1107a5e31cSFreddy Ye br i1 %cond, label %if, label %else 1207a5e31cSFreddy Ye 1307a5e31cSFreddy Ye if: ; preds = %entry 1407a5e31cSFreddy Ye %cmp1 = fcmp oeq float %f3, %f4 1507a5e31cSFreddy Ye br label %exit 1607a5e31cSFreddy Ye 1707a5e31cSFreddy Ye else: ; preds = %entry 1807a5e31cSFreddy Ye %cmp2 = fcmp oeq float %f5, %f6 1907a5e31cSFreddy Ye br label %exit 2007a5e31cSFreddy Ye 2107a5e31cSFreddy Ye exit: ; preds = %else, %if 2207a5e31cSFreddy Ye %val = phi i1 [ %cmp1, %if ], [ %cmp2, %else ] 2307a5e31cSFreddy Ye %selected = select i1 %val, float %f1, float %f2 2407a5e31cSFreddy Ye store float %selected, ptr %fptr 2507a5e31cSFreddy Ye ret void 2607a5e31cSFreddy Ye } 2707a5e31cSFreddy Ye 2807a5e31cSFreddy Ye define void @test_8bitops() #0 { 2907a5e31cSFreddy Ye ret void 3007a5e31cSFreddy Ye } 3107a5e31cSFreddy Ye define void @test_16bitops() #0 { 3207a5e31cSFreddy Ye ret void 3307a5e31cSFreddy Ye } 3407a5e31cSFreddy Ye define void @test_32bitops() #0 { 3507a5e31cSFreddy Ye ret void 3607a5e31cSFreddy Ye } 3707a5e31cSFreddy Ye define void @test_64bitops() #0 { 3807a5e31cSFreddy Ye ret void 3907a5e31cSFreddy Ye } 4007a5e31cSFreddy Ye define void @test_16bitext() #0 { 4107a5e31cSFreddy Ye ret void 4207a5e31cSFreddy Ye } 4307a5e31cSFreddy Ye define void @test_32bitext() #0 { 4407a5e31cSFreddy Ye ret void 4507a5e31cSFreddy Ye } 4607a5e31cSFreddy Ye define void @test_64bitext() #0 { 4707a5e31cSFreddy Ye ret void 4807a5e31cSFreddy Ye } 4907a5e31cSFreddy Ye ; Note that this function need to be compiled with -global-isel 5007a5e31cSFreddy Ye ; to obtain testable MIR 5107a5e31cSFreddy Ye define void @test_unused(i64 %0) #0 { 5207a5e31cSFreddy Ye %unused = lshr i64 %0, 7 5307a5e31cSFreddy Ye ret void 5407a5e31cSFreddy Ye } 5507a5e31cSFreddy Ye... 5607a5e31cSFreddy Ye--- 5707a5e31cSFreddy Yename: test_fcmp_storefloat 5807a5e31cSFreddy Yealignment: 16 5907a5e31cSFreddy YeexposesReturnsTwice: false 6007a5e31cSFreddy Yelegalized: false 6107a5e31cSFreddy YeregBankSelected: false 6207a5e31cSFreddy Yeselected: false 6307a5e31cSFreddy YetracksRegLiveness: true 6407a5e31cSFreddy Yeregisters: 6507a5e31cSFreddy Ye - { id: 0, class: gr8, preferred-register: '' } 6607a5e31cSFreddy Ye - { id: 1, class: gr8, preferred-register: '' } 6707a5e31cSFreddy Ye - { id: 2, class: gr8, preferred-register: '' } 6807a5e31cSFreddy Ye - { id: 3, class: gr32, preferred-register: '' } 6907a5e31cSFreddy Ye - { id: 4, class: gr64, preferred-register: '' } 7007a5e31cSFreddy Ye - { id: 5, class: vr128x, preferred-register: '' } 7107a5e31cSFreddy Ye - { id: 6, class: fr32x, preferred-register: '' } 7207a5e31cSFreddy Ye - { id: 7, class: fr32x, preferred-register: '' } 7307a5e31cSFreddy Ye - { id: 8, class: fr32x, preferred-register: '' } 7407a5e31cSFreddy Ye - { id: 9, class: fr32x, preferred-register: '' } 7507a5e31cSFreddy Ye - { id: 10, class: fr32x, preferred-register: '' } 7607a5e31cSFreddy Ye - { id: 11, class: gr8, preferred-register: '' } 7707a5e31cSFreddy Ye - { id: 12, class: vk1, preferred-register: '' } 7807a5e31cSFreddy Ye - { id: 13, class: gr32, preferred-register: '' } 7907a5e31cSFreddy Ye - { id: 14, class: vk1, preferred-register: '' } 8007a5e31cSFreddy Ye - { id: 15, class: gr32, preferred-register: '' } 8107a5e31cSFreddy Ye - { id: 16, class: gr32, preferred-register: '' } 8207a5e31cSFreddy Ye - { id: 17, class: gr32, preferred-register: '' } 8307a5e31cSFreddy Ye - { id: 18, class: vk1wm, preferred-register: '' } 8407a5e31cSFreddy Ye - { id: 19, class: vr128x, preferred-register: '' } 8507a5e31cSFreddy Ye - { id: 20, class: vr128, preferred-register: '' } 8607a5e31cSFreddy Ye - { id: 21, class: vr128, preferred-register: '' } 8707a5e31cSFreddy Ye - { id: 22, class: fr32x, preferred-register: '' } 8807a5e31cSFreddy Yeliveins: 8907a5e31cSFreddy Ye - { reg: '$edi', virtual-reg: '%3' } 9007a5e31cSFreddy Ye - { reg: '$rsi', virtual-reg: '%4' } 9107a5e31cSFreddy Ye - { reg: '$xmm0', virtual-reg: '%5' } 9207a5e31cSFreddy Ye - { reg: '$xmm1', virtual-reg: '%6' } 9307a5e31cSFreddy Ye - { reg: '$xmm2', virtual-reg: '%7' } 9407a5e31cSFreddy Ye - { reg: '$xmm3', virtual-reg: '%8' } 9507a5e31cSFreddy Ye - { reg: '$xmm4', virtual-reg: '%9' } 9607a5e31cSFreddy Ye - { reg: '$xmm5', virtual-reg: '%10' } 9707a5e31cSFreddy YeframeInfo: 9807a5e31cSFreddy Ye isFrameAddressTaken: false 9907a5e31cSFreddy Ye isReturnAddressTaken: false 10007a5e31cSFreddy Ye hasStackMap: false 10107a5e31cSFreddy Ye hasPatchPoint: false 10207a5e31cSFreddy Ye stackSize: 0 10307a5e31cSFreddy Ye offsetAdjustment: 0 10407a5e31cSFreddy Ye maxAlignment: 0 10507a5e31cSFreddy Ye adjustsStack: false 10607a5e31cSFreddy Ye hasCalls: false 10707a5e31cSFreddy Ye stackProtector: '' 10807a5e31cSFreddy Ye maxCallFrameSize: 4294967295 10907a5e31cSFreddy Ye hasOpaqueSPAdjustment: false 11007a5e31cSFreddy Ye hasVAStart: false 11107a5e31cSFreddy Ye hasMustTailInVarArgFunc: false 11207a5e31cSFreddy Ye savePoint: '' 11307a5e31cSFreddy Ye restorePoint: '' 11407a5e31cSFreddy YefixedStack: 11507a5e31cSFreddy Yestack: 11607a5e31cSFreddy Yeconstants: 11707a5e31cSFreddy Yebody: | 11807a5e31cSFreddy Ye ; CHECK-LABEL: name: test_fcmp_storefloat 11907a5e31cSFreddy Ye ; CHECK: bb.0.entry: 12007a5e31cSFreddy Ye ; CHECK: successors: %bb.1(0x40000000), %bb.2(0x40000000) 12107a5e31cSFreddy Ye ; CHECK: liveins: $edi, $rsi, $xmm0, $xmm1, $xmm2, $xmm3, $xmm4, $xmm5 12207a5e31cSFreddy Ye ; CHECK: [[COPY:%[0-9]+]]:fr32x = COPY $xmm5 12307a5e31cSFreddy Ye ; CHECK: [[COPY1:%[0-9]+]]:fr32x = COPY $xmm4 12407a5e31cSFreddy Ye ; CHECK: [[COPY2:%[0-9]+]]:fr32x = COPY $xmm3 12507a5e31cSFreddy Ye ; CHECK: [[COPY3:%[0-9]+]]:fr32x = COPY $xmm2 12607a5e31cSFreddy Ye ; CHECK: [[COPY4:%[0-9]+]]:fr32x = COPY $xmm1 12707a5e31cSFreddy Ye ; CHECK: [[COPY5:%[0-9]+]]:vr128x = COPY $xmm0 12807a5e31cSFreddy Ye ; CHECK: [[COPY6:%[0-9]+]]:gr64 = COPY $rsi 12907a5e31cSFreddy Ye ; CHECK: [[COPY7:%[0-9]+]]:gr32 = COPY $edi 13007a5e31cSFreddy Ye ; CHECK: [[COPY8:%[0-9]+]]:gr8 = COPY [[COPY7]].sub_8bit 13107a5e31cSFreddy Ye ; CHECK: TEST8ri killed [[COPY8]], 1, implicit-def $eflags 13207a5e31cSFreddy Ye ; CHECK: JCC_1 %bb.2, 4, implicit $eflags 13307a5e31cSFreddy Ye ; CHECK: JMP_1 %bb.1 13407a5e31cSFreddy Ye ; CHECK: bb.1.if: 13507a5e31cSFreddy Ye ; CHECK: successors: %bb.3(0x80000000) 13607a5e31cSFreddy Ye ; CHECK: [[VCMPSSZrri:%[0-9]+]]:vk1 = VCMPSSZrri [[COPY3]], [[COPY2]], 0 13707a5e31cSFreddy Ye ; CHECK: [[COPY9:%[0-9]+]]:vk32 = COPY [[VCMPSSZrri]] 13807a5e31cSFreddy Ye ; CHECK: [[COPY10:%[0-9]+]]:vk8 = COPY [[COPY9]] 13907a5e31cSFreddy Ye ; CHECK: JMP_1 %bb.3 14007a5e31cSFreddy Ye ; CHECK: bb.2.else: 14107a5e31cSFreddy Ye ; CHECK: successors: %bb.3(0x80000000) 14207a5e31cSFreddy Ye ; CHECK: [[VCMPSSZrri1:%[0-9]+]]:vk1 = VCMPSSZrri [[COPY1]], [[COPY]], 0 14307a5e31cSFreddy Ye ; CHECK: [[COPY11:%[0-9]+]]:vk32 = COPY [[VCMPSSZrri1]] 14407a5e31cSFreddy Ye ; CHECK: [[COPY12:%[0-9]+]]:vk8 = COPY [[COPY11]] 14507a5e31cSFreddy Ye ; CHECK: bb.3.exit: 14607a5e31cSFreddy Ye ; CHECK: [[PHI:%[0-9]+]]:vk8 = PHI [[COPY12]], %bb.2, [[COPY10]], %bb.1 14707a5e31cSFreddy Ye ; CHECK: [[DEF:%[0-9]+]]:vk32 = IMPLICIT_DEF 14807a5e31cSFreddy Ye ; CHECK: [[COPY13:%[0-9]+]]:vk32 = COPY [[PHI]] 14907a5e31cSFreddy Ye ; CHECK: [[COPY14:%[0-9]+]]:vk1wm = COPY [[COPY13]] 15007a5e31cSFreddy Ye ; CHECK: [[COPY15:%[0-9]+]]:vr128x = COPY [[COPY4]] 15107a5e31cSFreddy Ye ; CHECK: [[DEF1:%[0-9]+]]:vr128 = IMPLICIT_DEF 15207a5e31cSFreddy Ye ; CHECK: [[VMOVSSZrrk:%[0-9]+]]:vr128 = VMOVSSZrrk [[COPY15]], killed [[COPY14]], killed [[DEF1]], [[COPY5]] 15307a5e31cSFreddy Ye ; CHECK: [[COPY16:%[0-9]+]]:fr32x = COPY [[VMOVSSZrrk]] 15407a5e31cSFreddy Ye ; CHECK: VMOVSSZmr [[COPY6]], 1, $noreg, 0, $noreg, killed [[COPY16]] :: (store (s32) into %ir.fptr) 15507a5e31cSFreddy Ye ; CHECK: RET 0 15607a5e31cSFreddy Ye bb.0.entry: 15707a5e31cSFreddy Ye successors: %bb.1(0x40000000), %bb.2(0x40000000) 15807a5e31cSFreddy Ye liveins: $edi, $rsi, $xmm0, $xmm1, $xmm2, $xmm3, $xmm4, $xmm5 15907a5e31cSFreddy Ye 16007a5e31cSFreddy Ye %10 = COPY $xmm5 16107a5e31cSFreddy Ye %9 = COPY $xmm4 16207a5e31cSFreddy Ye %8 = COPY $xmm3 16307a5e31cSFreddy Ye %7 = COPY $xmm2 16407a5e31cSFreddy Ye %6 = COPY $xmm1 16507a5e31cSFreddy Ye %5 = COPY $xmm0 16607a5e31cSFreddy Ye %4 = COPY $rsi 16707a5e31cSFreddy Ye %3 = COPY $edi 16807a5e31cSFreddy Ye %11 = COPY %3.sub_8bit 16907a5e31cSFreddy Ye TEST8ri killed %11, 1, implicit-def $eflags 17007a5e31cSFreddy Ye JCC_1 %bb.2, 4, implicit $eflags 17107a5e31cSFreddy Ye JMP_1 %bb.1 17207a5e31cSFreddy Ye 17307a5e31cSFreddy Ye bb.1.if: 17407a5e31cSFreddy Ye successors: %bb.3(0x80000000) 17507a5e31cSFreddy Ye 17607a5e31cSFreddy Ye %14 = VCMPSSZrri %7, %8, 0, implicit $mxcsr 17707a5e31cSFreddy Ye 17807a5e31cSFreddy Ye ; check that cross domain copies are replaced with same domain copies. 17907a5e31cSFreddy Ye 18007a5e31cSFreddy Ye %15 = COPY %14 18107a5e31cSFreddy Ye %0 = COPY %15.sub_8bit 18207a5e31cSFreddy Ye JMP_1 %bb.3 18307a5e31cSFreddy Ye 18407a5e31cSFreddy Ye bb.2.else: 18507a5e31cSFreddy Ye successors: %bb.3(0x80000000) 18607a5e31cSFreddy Ye %12 = VCMPSSZrri %9, %10, 0, implicit $mxcsr 18707a5e31cSFreddy Ye 18807a5e31cSFreddy Ye ; check that cross domain copies are replaced with same domain copies. 18907a5e31cSFreddy Ye 19007a5e31cSFreddy Ye %13 = COPY %12 19107a5e31cSFreddy Ye %1 = COPY %13.sub_8bit 19207a5e31cSFreddy Ye 19307a5e31cSFreddy Ye bb.3.exit: 19407a5e31cSFreddy Ye 19507a5e31cSFreddy Ye ; check PHI, IMPLICIT_DEF, and INSERT_SUBREG replacers. 19607a5e31cSFreddy Ye 19707a5e31cSFreddy Ye %2 = PHI %1, %bb.2, %0, %bb.1 19807a5e31cSFreddy Ye %17 = IMPLICIT_DEF 19907a5e31cSFreddy Ye %16 = INSERT_SUBREG %17, %2, %subreg.sub_8bit_hi 20007a5e31cSFreddy Ye %18 = COPY %16 20107a5e31cSFreddy Ye %19 = COPY %6 20207a5e31cSFreddy Ye %21 = IMPLICIT_DEF 20307a5e31cSFreddy Ye %20 = VMOVSSZrrk %19, killed %18, killed %21, %5 20407a5e31cSFreddy Ye %22 = COPY %20 20507a5e31cSFreddy Ye VMOVSSZmr %4, 1, $noreg, 0, $noreg, killed %22 :: (store (s32) into %ir.fptr) 20607a5e31cSFreddy Ye RET 0 20707a5e31cSFreddy Ye 20807a5e31cSFreddy Ye... 20907a5e31cSFreddy Ye--- 21007a5e31cSFreddy Yename: test_8bitops 21107a5e31cSFreddy Yealignment: 16 21207a5e31cSFreddy YeexposesReturnsTwice: false 21307a5e31cSFreddy Yelegalized: false 21407a5e31cSFreddy YeregBankSelected: false 21507a5e31cSFreddy Yeselected: false 21607a5e31cSFreddy YetracksRegLiveness: true 21707a5e31cSFreddy Yeregisters: 21807a5e31cSFreddy Ye - { id: 0, class: gr64, preferred-register: '' } 21907a5e31cSFreddy Ye - { id: 1, class: vr512, preferred-register: '' } 22007a5e31cSFreddy Ye - { id: 2, class: vr512, preferred-register: '' } 22107a5e31cSFreddy Ye - { id: 3, class: vr512, preferred-register: '' } 22207a5e31cSFreddy Ye - { id: 4, class: vr512, preferred-register: '' } 22307a5e31cSFreddy Ye - { id: 5, class: vk8, preferred-register: '' } 22407a5e31cSFreddy Ye - { id: 6, class: gr32, preferred-register: '' } 22507a5e31cSFreddy Ye - { id: 7, class: gr8, preferred-register: '' } 22607a5e31cSFreddy Ye - { id: 8, class: gr32, preferred-register: '' } 22707a5e31cSFreddy Ye - { id: 9, class: gr32, preferred-register: '' } 22807a5e31cSFreddy Ye - { id: 10, class: vk8wm, preferred-register: '' } 22907a5e31cSFreddy Ye - { id: 11, class: vr512, preferred-register: '' } 23007a5e31cSFreddy Ye - { id: 12, class: gr8, preferred-register: '' } 23107a5e31cSFreddy Ye - { id: 13, class: gr8, preferred-register: '' } 23207a5e31cSFreddy Ye - { id: 14, class: gr8, preferred-register: '' } 23307a5e31cSFreddy Ye - { id: 15, class: gr8, preferred-register: '' } 23407a5e31cSFreddy Ye - { id: 16, class: gr8, preferred-register: '' } 23507a5e31cSFreddy Ye - { id: 17, class: gr8, preferred-register: '' } 23607a5e31cSFreddy Ye - { id: 18, class: gr8, preferred-register: '' } 23707a5e31cSFreddy Yeliveins: 23807a5e31cSFreddy Ye - { reg: '$rdi', virtual-reg: '%0' } 23907a5e31cSFreddy Ye - { reg: '$zmm0', virtual-reg: '%1' } 24007a5e31cSFreddy Ye - { reg: '$zmm1', virtual-reg: '%2' } 24107a5e31cSFreddy Ye - { reg: '$zmm2', virtual-reg: '%3' } 24207a5e31cSFreddy Ye - { reg: '$zmm3', virtual-reg: '%4' } 24307a5e31cSFreddy YeframeInfo: 24407a5e31cSFreddy Ye isFrameAddressTaken: false 24507a5e31cSFreddy Ye isReturnAddressTaken: false 24607a5e31cSFreddy Ye hasStackMap: false 24707a5e31cSFreddy Ye hasPatchPoint: false 24807a5e31cSFreddy Ye stackSize: 0 24907a5e31cSFreddy Ye offsetAdjustment: 0 25007a5e31cSFreddy Ye maxAlignment: 0 25107a5e31cSFreddy Ye adjustsStack: false 25207a5e31cSFreddy Ye hasCalls: false 25307a5e31cSFreddy Ye stackProtector: '' 25407a5e31cSFreddy Ye maxCallFrameSize: 4294967295 25507a5e31cSFreddy Ye hasOpaqueSPAdjustment: false 25607a5e31cSFreddy Ye hasVAStart: false 25707a5e31cSFreddy Ye hasMustTailInVarArgFunc: false 25807a5e31cSFreddy Ye savePoint: '' 25907a5e31cSFreddy Ye restorePoint: '' 26007a5e31cSFreddy YefixedStack: 26107a5e31cSFreddy Yestack: 26207a5e31cSFreddy Yeconstants: 26307a5e31cSFreddy Yebody: | 26407a5e31cSFreddy Ye ; CHECK-LABEL: name: test_8bitops 26507a5e31cSFreddy Ye ; CHECK: bb.0: 26607a5e31cSFreddy Ye ; CHECK: successors: %bb.1(0x80000000) 26707a5e31cSFreddy Ye ; CHECK: liveins: $rdi, $zmm0, $zmm1, $zmm2, $zmm3 26807a5e31cSFreddy Ye ; CHECK: [[COPY:%[0-9]+]]:gr64 = COPY $rdi 26907a5e31cSFreddy Ye ; CHECK: [[COPY1:%[0-9]+]]:vr512 = COPY $zmm0 27007a5e31cSFreddy Ye ; CHECK: [[COPY2:%[0-9]+]]:vr512 = COPY $zmm1 27107a5e31cSFreddy Ye ; CHECK: [[COPY3:%[0-9]+]]:vr512 = COPY $zmm2 27207a5e31cSFreddy Ye ; CHECK: [[COPY4:%[0-9]+]]:vr512 = COPY $zmm3 27307a5e31cSFreddy Ye ; CHECK: [[VCMPPDZrri:%[0-9]+]]:vk8 = VCMPPDZrri [[COPY3]], [[COPY4]], 0 27407a5e31cSFreddy Ye ; CHECK: [[COPY5:%[0-9]+]]:vk32 = COPY [[VCMPPDZrri]] 27507a5e31cSFreddy Ye ; CHECK: [[COPY6:%[0-9]+]]:vk8 = COPY [[COPY5]] 276*c91f2a25SSimon Pilgrim ; CHECK: [[KSHIFTRBki:%[0-9]+]]:vk8 = KSHIFTRBki [[COPY6]], 2 277*c91f2a25SSimon Pilgrim ; CHECK: [[KSHIFTLBki:%[0-9]+]]:vk8 = KSHIFTLBki [[KSHIFTRBki]], 1 278*c91f2a25SSimon Pilgrim ; CHECK: [[KNOTBkk:%[0-9]+]]:vk8 = KNOTBkk [[KSHIFTLBki]] 279*c91f2a25SSimon Pilgrim ; CHECK: [[KORBkk:%[0-9]+]]:vk8 = KORBkk [[KNOTBkk]], [[KSHIFTRBki]] 280*c91f2a25SSimon Pilgrim ; CHECK: [[KANDBkk:%[0-9]+]]:vk8 = KANDBkk [[KORBkk]], [[KSHIFTLBki]] 281*c91f2a25SSimon Pilgrim ; CHECK: [[KXORBkk:%[0-9]+]]:vk8 = KXORBkk [[KANDBkk]], [[KSHIFTRBki]] 282*c91f2a25SSimon Pilgrim ; CHECK: [[KADDBkk:%[0-9]+]]:vk8 = KADDBkk [[KXORBkk]], [[KNOTBkk]] 28307a5e31cSFreddy Ye ; CHECK: [[DEF:%[0-9]+]]:vk32 = IMPLICIT_DEF 284*c91f2a25SSimon Pilgrim ; CHECK: [[COPY7:%[0-9]+]]:vk32 = COPY [[KADDBkk]] 28507a5e31cSFreddy Ye ; CHECK: [[COPY8:%[0-9]+]]:vk8wm = COPY [[COPY7]] 28607a5e31cSFreddy Ye ; CHECK: [[VMOVAPDZrrk:%[0-9]+]]:vr512 = VMOVAPDZrrk [[COPY2]], killed [[COPY8]], [[COPY1]] 28707a5e31cSFreddy Ye ; CHECK: VMOVAPDZmr [[COPY]], 1, $noreg, 0, $noreg, killed [[VMOVAPDZrrk]] 28807a5e31cSFreddy Ye ; CHECK: bb.1: 28907a5e31cSFreddy Ye ; CHECK: successors: %bb.2(0x80000000) 29007a5e31cSFreddy Ye ; CHECK: bb.2: 29107a5e31cSFreddy Ye ; CHECK: RET 0 29207a5e31cSFreddy Ye bb.0: 29307a5e31cSFreddy Ye liveins: $rdi, $zmm0, $zmm1, $zmm2, $zmm3 29407a5e31cSFreddy Ye 29507a5e31cSFreddy Ye %0 = COPY $rdi 29607a5e31cSFreddy Ye %1 = COPY $zmm0 29707a5e31cSFreddy Ye %2 = COPY $zmm1 29807a5e31cSFreddy Ye %3 = COPY $zmm2 29907a5e31cSFreddy Ye %4 = COPY $zmm3 30007a5e31cSFreddy Ye 30107a5e31cSFreddy Ye %5 = VCMPPDZrri %3, %4, 0, implicit $mxcsr 30207a5e31cSFreddy Ye %6 = COPY %5 30307a5e31cSFreddy Ye %7 = COPY %6.sub_8bit 30407a5e31cSFreddy Ye 3053e4caa9dSFreddy Ye %12 = SHR8ri_ND %7, 2, implicit-def dead $eflags 3063e4caa9dSFreddy Ye %13 = SHL8ri_ND %12, 1, implicit-def dead $eflags 3073e4caa9dSFreddy Ye %14 = NOT8r_ND %13 3083e4caa9dSFreddy Ye %15 = OR8rr_ND %14, %12, implicit-def dead $eflags 3093e4caa9dSFreddy Ye %16 = AND8rr_ND %15, %13, implicit-def dead $eflags 3103e4caa9dSFreddy Ye %17 = XOR8rr_ND %16, %12, implicit-def dead $eflags 3113e4caa9dSFreddy Ye %18 = ADD8rr_ND %17, %14, implicit-def dead $eflags 31207a5e31cSFreddy Ye 31307a5e31cSFreddy Ye %8 = IMPLICIT_DEF 31407a5e31cSFreddy Ye %9 = INSERT_SUBREG %8, %18, %subreg.sub_8bit_hi 31507a5e31cSFreddy Ye %10 = COPY %9 31607a5e31cSFreddy Ye %11 = VMOVAPDZrrk %2, killed %10, %1 31707a5e31cSFreddy Ye VMOVAPDZmr %0, 1, $noreg, 0, $noreg, killed %11 31807a5e31cSFreddy Ye 31907a5e31cSFreddy Ye ; FIXME We can't replace TEST with KTEST due to flag differences 32007a5e31cSFreddy Ye ; TEST8rr %18, %18, implicit-def $eflags 32107a5e31cSFreddy Ye ; JCC_1 %bb.1, 4, implicit $eflags 32207a5e31cSFreddy Ye ; JMP_1 %bb.2 32307a5e31cSFreddy Ye 32407a5e31cSFreddy Ye bb.1: 32507a5e31cSFreddy Ye 32607a5e31cSFreddy Ye bb.2: 32707a5e31cSFreddy Ye RET 0 32807a5e31cSFreddy Ye 32907a5e31cSFreddy Ye... 33007a5e31cSFreddy Ye--- 33107a5e31cSFreddy Yename: test_16bitops 33207a5e31cSFreddy Yealignment: 16 33307a5e31cSFreddy YeexposesReturnsTwice: false 33407a5e31cSFreddy Yelegalized: false 33507a5e31cSFreddy YeregBankSelected: false 33607a5e31cSFreddy Yeselected: false 33707a5e31cSFreddy YetracksRegLiveness: true 33807a5e31cSFreddy Yeregisters: 33907a5e31cSFreddy Ye - { id: 0, class: gr64, preferred-register: '' } 34007a5e31cSFreddy Ye - { id: 1, class: vr512, preferred-register: '' } 34107a5e31cSFreddy Ye - { id: 2, class: vr512, preferred-register: '' } 34207a5e31cSFreddy Ye - { id: 3, class: vr512, preferred-register: '' } 34307a5e31cSFreddy Ye - { id: 4, class: vr512, preferred-register: '' } 34407a5e31cSFreddy Ye - { id: 5, class: vk16, preferred-register: '' } 34507a5e31cSFreddy Ye - { id: 6, class: gr32, preferred-register: '' } 34607a5e31cSFreddy Ye - { id: 7, class: gr16, preferred-register: '' } 34707a5e31cSFreddy Ye - { id: 8, class: gr32, preferred-register: '' } 34807a5e31cSFreddy Ye - { id: 9, class: gr32, preferred-register: '' } 34907a5e31cSFreddy Ye - { id: 10, class: vk16wm, preferred-register: '' } 35007a5e31cSFreddy Ye - { id: 11, class: vr512, preferred-register: '' } 35107a5e31cSFreddy Ye - { id: 12, class: gr16, preferred-register: '' } 35207a5e31cSFreddy Ye - { id: 13, class: gr16, preferred-register: '' } 35307a5e31cSFreddy Ye - { id: 14, class: gr16, preferred-register: '' } 35407a5e31cSFreddy Ye - { id: 15, class: gr16, preferred-register: '' } 35507a5e31cSFreddy Ye - { id: 16, class: gr16, preferred-register: '' } 35607a5e31cSFreddy Ye - { id: 17, class: gr16, preferred-register: '' } 35707a5e31cSFreddy Yeliveins: 35807a5e31cSFreddy Ye - { reg: '$rdi', virtual-reg: '%0' } 35907a5e31cSFreddy Ye - { reg: '$zmm0', virtual-reg: '%1' } 36007a5e31cSFreddy Ye - { reg: '$zmm1', virtual-reg: '%2' } 36107a5e31cSFreddy Ye - { reg: '$zmm2', virtual-reg: '%3' } 36207a5e31cSFreddy Ye - { reg: '$zmm3', virtual-reg: '%4' } 36307a5e31cSFreddy YeframeInfo: 36407a5e31cSFreddy Ye isFrameAddressTaken: false 36507a5e31cSFreddy Ye isReturnAddressTaken: false 36607a5e31cSFreddy Ye hasStackMap: false 36707a5e31cSFreddy Ye hasPatchPoint: false 36807a5e31cSFreddy Ye stackSize: 0 36907a5e31cSFreddy Ye offsetAdjustment: 0 37007a5e31cSFreddy Ye maxAlignment: 0 37107a5e31cSFreddy Ye adjustsStack: false 37207a5e31cSFreddy Ye hasCalls: false 37307a5e31cSFreddy Ye stackProtector: '' 37407a5e31cSFreddy Ye maxCallFrameSize: 4294967295 37507a5e31cSFreddy Ye hasOpaqueSPAdjustment: false 37607a5e31cSFreddy Ye hasVAStart: false 37707a5e31cSFreddy Ye hasMustTailInVarArgFunc: false 37807a5e31cSFreddy Ye savePoint: '' 37907a5e31cSFreddy Ye restorePoint: '' 38007a5e31cSFreddy YefixedStack: 38107a5e31cSFreddy Yestack: 38207a5e31cSFreddy Yeconstants: 38307a5e31cSFreddy Yebody: | 38407a5e31cSFreddy Ye ; CHECK-LABEL: name: test_16bitops 38507a5e31cSFreddy Ye ; CHECK: bb.0: 38607a5e31cSFreddy Ye ; CHECK: successors: %bb.1(0x80000000) 38707a5e31cSFreddy Ye ; CHECK: liveins: $rdi, $zmm0, $zmm1, $zmm2, $zmm3 38807a5e31cSFreddy Ye ; CHECK: [[COPY:%[0-9]+]]:gr64 = COPY $rdi 38907a5e31cSFreddy Ye ; CHECK: [[COPY1:%[0-9]+]]:vr512 = COPY $zmm0 39007a5e31cSFreddy Ye ; CHECK: [[COPY2:%[0-9]+]]:vr512 = COPY $zmm1 39107a5e31cSFreddy Ye ; CHECK: [[COPY3:%[0-9]+]]:vr512 = COPY $zmm2 39207a5e31cSFreddy Ye ; CHECK: [[COPY4:%[0-9]+]]:vr512 = COPY $zmm3 39307a5e31cSFreddy Ye ; CHECK: [[VCMPPSZrri:%[0-9]+]]:vk16 = VCMPPSZrri [[COPY3]], [[COPY4]], 0 39407a5e31cSFreddy Ye ; CHECK: [[COPY5:%[0-9]+]]:vk32 = COPY [[VCMPPSZrri]] 39507a5e31cSFreddy Ye ; CHECK: [[COPY6:%[0-9]+]]:vk16 = COPY [[COPY5]] 396*c91f2a25SSimon Pilgrim ; CHECK: [[KSHIFTRWki:%[0-9]+]]:vk16 = KSHIFTRWki [[COPY6]], 2 397*c91f2a25SSimon Pilgrim ; CHECK: [[KSHIFTLWki:%[0-9]+]]:vk16 = KSHIFTLWki [[KSHIFTRWki]], 1 398*c91f2a25SSimon Pilgrim ; CHECK: [[KNOTWkk:%[0-9]+]]:vk16 = KNOTWkk [[KSHIFTLWki]] 399*c91f2a25SSimon Pilgrim ; CHECK: [[KORWkk:%[0-9]+]]:vk16 = KORWkk [[KNOTWkk]], [[KSHIFTRWki]] 400*c91f2a25SSimon Pilgrim ; CHECK: [[KANDWkk:%[0-9]+]]:vk16 = KANDWkk [[KORWkk]], [[KSHIFTLWki]] 401*c91f2a25SSimon Pilgrim ; CHECK: [[KXORWkk:%[0-9]+]]:vk16 = KXORWkk [[KANDWkk]], [[KSHIFTRWki]] 40207a5e31cSFreddy Ye ; CHECK: [[DEF:%[0-9]+]]:vk32 = IMPLICIT_DEF 403*c91f2a25SSimon Pilgrim ; CHECK: [[COPY7:%[0-9]+]]:vk32 = COPY [[KXORWkk]] 40407a5e31cSFreddy Ye ; CHECK: [[COPY8:%[0-9]+]]:vk16wm = COPY [[COPY7]] 40507a5e31cSFreddy Ye ; CHECK: [[VMOVAPSZrrk:%[0-9]+]]:vr512 = VMOVAPSZrrk [[COPY2]], killed [[COPY8]], [[COPY1]] 40607a5e31cSFreddy Ye ; CHECK: VMOVAPSZmr [[COPY]], 1, $noreg, 0, $noreg, killed [[VMOVAPSZrrk]] 40707a5e31cSFreddy Ye ; CHECK: bb.1: 40807a5e31cSFreddy Ye ; CHECK: successors: %bb.2(0x80000000) 40907a5e31cSFreddy Ye ; CHECK: bb.2: 41007a5e31cSFreddy Ye ; CHECK: RET 0 41107a5e31cSFreddy Ye bb.0: 41207a5e31cSFreddy Ye liveins: $rdi, $zmm0, $zmm1, $zmm2, $zmm3 41307a5e31cSFreddy Ye 41407a5e31cSFreddy Ye %0 = COPY $rdi 41507a5e31cSFreddy Ye %1 = COPY $zmm0 41607a5e31cSFreddy Ye %2 = COPY $zmm1 41707a5e31cSFreddy Ye %3 = COPY $zmm2 41807a5e31cSFreddy Ye %4 = COPY $zmm3 41907a5e31cSFreddy Ye 42007a5e31cSFreddy Ye %5 = VCMPPSZrri %3, %4, 0, implicit $mxcsr 42107a5e31cSFreddy Ye %6 = COPY %5 42207a5e31cSFreddy Ye %7 = COPY %6.sub_16bit 42307a5e31cSFreddy Ye 4243e4caa9dSFreddy Ye %12 = SHR16ri_ND %7, 2, implicit-def dead $eflags 4253e4caa9dSFreddy Ye %13 = SHL16ri_ND %12, 1, implicit-def dead $eflags 4263e4caa9dSFreddy Ye %14 = NOT16r_ND %13 4273e4caa9dSFreddy Ye %15 = OR16rr_ND %14, %12, implicit-def dead $eflags 4283e4caa9dSFreddy Ye %16 = AND16rr_ND %15, %13, implicit-def dead $eflags 4293e4caa9dSFreddy Ye %17 = XOR16rr_ND %16, %12, implicit-def dead $eflags 43007a5e31cSFreddy Ye 43107a5e31cSFreddy Ye %8 = IMPLICIT_DEF 43207a5e31cSFreddy Ye %9 = INSERT_SUBREG %8, %17, %subreg.sub_16bit 43307a5e31cSFreddy Ye %10 = COPY %9 43407a5e31cSFreddy Ye %11 = VMOVAPSZrrk %2, killed %10, %1 43507a5e31cSFreddy Ye VMOVAPSZmr %0, 1, $noreg, 0, $noreg, killed %11 43607a5e31cSFreddy Ye 43707a5e31cSFreddy Ye ; FIXME We can't replace TEST with KTEST due to flag differences 43807a5e31cSFreddy Ye ; FIXME TEST16rr %17, %17, implicit-def $eflags 43907a5e31cSFreddy Ye ; FIXME JCC_1 %bb.1, 4, implicit $eflags 44007a5e31cSFreddy Ye ; FIXME JMP_1 %bb.2 44107a5e31cSFreddy Ye 44207a5e31cSFreddy Ye bb.1: 44307a5e31cSFreddy Ye 44407a5e31cSFreddy Ye bb.2: 44507a5e31cSFreddy Ye RET 0 44607a5e31cSFreddy Ye 44707a5e31cSFreddy Ye... 44807a5e31cSFreddy Ye--- 44907a5e31cSFreddy Yename: test_32bitops 45007a5e31cSFreddy Yealignment: 16 45107a5e31cSFreddy YeexposesReturnsTwice: false 45207a5e31cSFreddy Yelegalized: false 45307a5e31cSFreddy YeregBankSelected: false 45407a5e31cSFreddy Yeselected: false 45507a5e31cSFreddy YetracksRegLiveness: true 45607a5e31cSFreddy Yeregisters: 45707a5e31cSFreddy Ye - { id: 0, class: gr64, preferred-register: '' } 45807a5e31cSFreddy Ye - { id: 1, class: vr512, preferred-register: '' } 45907a5e31cSFreddy Ye - { id: 2, class: vr512, preferred-register: '' } 46007a5e31cSFreddy Ye - { id: 3, class: vk32wm, preferred-register: '' } 46107a5e31cSFreddy Ye - { id: 4, class: vr512, preferred-register: '' } 46207a5e31cSFreddy Ye - { id: 5, class: gr32, preferred-register: '' } 46307a5e31cSFreddy Ye - { id: 6, class: gr32, preferred-register: '' } 46407a5e31cSFreddy Ye - { id: 7, class: gr32, preferred-register: '' } 46507a5e31cSFreddy Ye - { id: 8, class: gr32, preferred-register: '' } 46607a5e31cSFreddy Ye - { id: 9, class: gr32, preferred-register: '' } 46707a5e31cSFreddy Ye - { id: 10, class: gr32, preferred-register: '' } 46807a5e31cSFreddy Ye - { id: 11, class: gr32, preferred-register: '' } 46907a5e31cSFreddy Ye - { id: 12, class: gr32, preferred-register: '' } 47007a5e31cSFreddy Ye - { id: 13, class: gr32, preferred-register: '' } 47107a5e31cSFreddy Yeliveins: 47207a5e31cSFreddy Ye - { reg: '$rdi', virtual-reg: '%0' } 47307a5e31cSFreddy Ye - { reg: '$zmm0', virtual-reg: '%1' } 47407a5e31cSFreddy Ye - { reg: '$zmm1', virtual-reg: '%2' } 47507a5e31cSFreddy YeframeInfo: 47607a5e31cSFreddy Ye isFrameAddressTaken: false 47707a5e31cSFreddy Ye isReturnAddressTaken: false 47807a5e31cSFreddy Ye hasStackMap: false 47907a5e31cSFreddy Ye hasPatchPoint: false 48007a5e31cSFreddy Ye stackSize: 0 48107a5e31cSFreddy Ye offsetAdjustment: 0 48207a5e31cSFreddy Ye maxAlignment: 0 48307a5e31cSFreddy Ye adjustsStack: false 48407a5e31cSFreddy Ye hasCalls: false 48507a5e31cSFreddy Ye stackProtector: '' 48607a5e31cSFreddy Ye maxCallFrameSize: 4294967295 48707a5e31cSFreddy Ye hasOpaqueSPAdjustment: false 48807a5e31cSFreddy Ye hasVAStart: false 48907a5e31cSFreddy Ye hasMustTailInVarArgFunc: false 49007a5e31cSFreddy Ye savePoint: '' 49107a5e31cSFreddy Ye restorePoint: '' 49207a5e31cSFreddy YefixedStack: 49307a5e31cSFreddy Yestack: 49407a5e31cSFreddy Yeconstants: 49507a5e31cSFreddy Yebody: | 49607a5e31cSFreddy Ye ; CHECK-LABEL: name: test_32bitops 49707a5e31cSFreddy Ye ; CHECK: bb.0: 49807a5e31cSFreddy Ye ; CHECK: successors: %bb.1(0x80000000) 49907a5e31cSFreddy Ye ; CHECK: liveins: $rdi, $zmm0, $zmm1 50007a5e31cSFreddy Ye ; CHECK: [[COPY:%[0-9]+]]:gr64 = COPY $rdi 50107a5e31cSFreddy Ye ; CHECK: [[COPY1:%[0-9]+]]:vr512 = COPY $zmm0 50207a5e31cSFreddy Ye ; CHECK: [[COPY2:%[0-9]+]]:vr512 = COPY $zmm1 50307a5e31cSFreddy Ye ; CHECK: [[KMOVDkm:%[0-9]+]]:vk32 = KMOVDkm [[COPY]], 1, $noreg, 0, $noreg 504*c91f2a25SSimon Pilgrim ; CHECK: [[KSHIFTRDki:%[0-9]+]]:vk32 = KSHIFTRDki [[KMOVDkm]], 2 505*c91f2a25SSimon Pilgrim ; CHECK: [[KSHIFTLDki:%[0-9]+]]:vk32 = KSHIFTLDki [[KSHIFTRDki]], 1 506*c91f2a25SSimon Pilgrim ; CHECK: [[KNOTDkk:%[0-9]+]]:vk32 = KNOTDkk [[KSHIFTLDki]] 507*c91f2a25SSimon Pilgrim ; CHECK: [[KORDkk:%[0-9]+]]:vk32 = KORDkk [[KNOTDkk]], [[KSHIFTRDki]] 508*c91f2a25SSimon Pilgrim ; CHECK: [[KANDDkk:%[0-9]+]]:vk32 = KANDDkk [[KORDkk]], [[KSHIFTLDki]] 509*c91f2a25SSimon Pilgrim ; CHECK: [[KXORDkk:%[0-9]+]]:vk32 = KXORDkk [[KANDDkk]], [[KSHIFTRDki]] 510*c91f2a25SSimon Pilgrim ; CHECK: [[KANDNDkk:%[0-9]+]]:vk32 = KANDNDkk [[KXORDkk]], [[KORDkk]] 511*c91f2a25SSimon Pilgrim ; CHECK: [[KADDDkk:%[0-9]+]]:vk32 = KADDDkk [[KANDNDkk]], [[KXORDkk]] 512*c91f2a25SSimon Pilgrim ; CHECK: [[COPY3:%[0-9]+]]:vk32wm = COPY [[KADDDkk]] 51307a5e31cSFreddy Ye ; CHECK: [[VMOVDQU16Zrrk:%[0-9]+]]:vr512 = VMOVDQU16Zrrk [[COPY2]], killed [[COPY3]], [[COPY1]] 51407a5e31cSFreddy Ye ; CHECK: VMOVDQA32Zmr [[COPY]], 1, $noreg, 0, $noreg, killed [[VMOVDQU16Zrrk]] 51507a5e31cSFreddy Ye ; CHECK: bb.1: 51607a5e31cSFreddy Ye ; CHECK: successors: %bb.2(0x80000000) 51707a5e31cSFreddy Ye ; CHECK: bb.2: 51807a5e31cSFreddy Ye ; CHECK: RET 0 51907a5e31cSFreddy Ye bb.0: 52007a5e31cSFreddy Ye liveins: $rdi, $zmm0, $zmm1 52107a5e31cSFreddy Ye 52207a5e31cSFreddy Ye %0 = COPY $rdi 52307a5e31cSFreddy Ye %1 = COPY $zmm0 52407a5e31cSFreddy Ye %2 = COPY $zmm1 52507a5e31cSFreddy Ye 52607a5e31cSFreddy Ye %5 = MOV32rm %0, 1, $noreg, 0, $noreg 5273e4caa9dSFreddy Ye %6 = SHR32ri_ND %5, 2, implicit-def dead $eflags 5283e4caa9dSFreddy Ye %7 = SHL32ri_ND %6, 1, implicit-def dead $eflags 5293e4caa9dSFreddy Ye %8 = NOT32r_ND %7 5303e4caa9dSFreddy Ye %9 = OR32rr_ND %8, %6, implicit-def dead $eflags 5313e4caa9dSFreddy Ye %10 = AND32rr_ND %9, %7, implicit-def dead $eflags 5323e4caa9dSFreddy Ye %11 = XOR32rr_ND %10, %6, implicit-def dead $eflags 53307a5e31cSFreddy Ye %12 = ANDN32rr %11, %9, implicit-def dead $eflags 5343e4caa9dSFreddy Ye %13 = ADD32rr_ND %12, %11, implicit-def dead $eflags 53507a5e31cSFreddy Ye 53607a5e31cSFreddy Ye %3 = COPY %13 53707a5e31cSFreddy Ye %4 = VMOVDQU16Zrrk %2, killed %3, %1 53807a5e31cSFreddy Ye VMOVDQA32Zmr %0, 1, $noreg, 0, $noreg, killed %4 53907a5e31cSFreddy Ye 54007a5e31cSFreddy Ye ; FIXME We can't replace TEST with KTEST due to flag differences 54107a5e31cSFreddy Ye ; FIXME TEST32rr %13, %13, implicit-def $eflags 54207a5e31cSFreddy Ye ; FIXME JCC_1 %bb.1, 4, implicit $eflags 54307a5e31cSFreddy Ye ; FIXME JMP_1 %bb.2 54407a5e31cSFreddy Ye 54507a5e31cSFreddy Ye bb.1: 54607a5e31cSFreddy Ye 54707a5e31cSFreddy Ye bb.2: 54807a5e31cSFreddy Ye RET 0 54907a5e31cSFreddy Ye 55007a5e31cSFreddy Ye... 55107a5e31cSFreddy Ye--- 55207a5e31cSFreddy Yename: test_64bitops 55307a5e31cSFreddy Yealignment: 16 55407a5e31cSFreddy YeexposesReturnsTwice: false 55507a5e31cSFreddy Yelegalized: false 55607a5e31cSFreddy YeregBankSelected: false 55707a5e31cSFreddy Yeselected: false 55807a5e31cSFreddy YetracksRegLiveness: true 55907a5e31cSFreddy Yeregisters: 56007a5e31cSFreddy Ye - { id: 0, class: gr64, preferred-register: '' } 56107a5e31cSFreddy Ye - { id: 1, class: vr512, preferred-register: '' } 56207a5e31cSFreddy Ye - { id: 2, class: vr512, preferred-register: '' } 56307a5e31cSFreddy Ye - { id: 3, class: vk64wm, preferred-register: '' } 56407a5e31cSFreddy Ye - { id: 4, class: vr512, preferred-register: '' } 56507a5e31cSFreddy Ye - { id: 5, class: gr64, preferred-register: '' } 56607a5e31cSFreddy Ye - { id: 6, class: gr64, preferred-register: '' } 56707a5e31cSFreddy Ye - { id: 7, class: gr64, preferred-register: '' } 56807a5e31cSFreddy Ye - { id: 8, class: gr64, preferred-register: '' } 56907a5e31cSFreddy Ye - { id: 9, class: gr64, preferred-register: '' } 57007a5e31cSFreddy Ye - { id: 10, class: gr64, preferred-register: '' } 57107a5e31cSFreddy Ye - { id: 11, class: gr64, preferred-register: '' } 57207a5e31cSFreddy Ye - { id: 12, class: gr64, preferred-register: '' } 57307a5e31cSFreddy Ye - { id: 13, class: gr64, preferred-register: '' } 57407a5e31cSFreddy Yeliveins: 57507a5e31cSFreddy Ye - { reg: '$rdi', virtual-reg: '%0' } 57607a5e31cSFreddy Ye - { reg: '$zmm0', virtual-reg: '%1' } 57707a5e31cSFreddy Ye - { reg: '$zmm1', virtual-reg: '%2' } 57807a5e31cSFreddy YeframeInfo: 57907a5e31cSFreddy Ye isFrameAddressTaken: false 58007a5e31cSFreddy Ye isReturnAddressTaken: false 58107a5e31cSFreddy Ye hasStackMap: false 58207a5e31cSFreddy Ye hasPatchPoint: false 58307a5e31cSFreddy Ye stackSize: 0 58407a5e31cSFreddy Ye offsetAdjustment: 0 58507a5e31cSFreddy Ye maxAlignment: 0 58607a5e31cSFreddy Ye adjustsStack: false 58707a5e31cSFreddy Ye hasCalls: false 58807a5e31cSFreddy Ye stackProtector: '' 58907a5e31cSFreddy Ye maxCallFrameSize: 4294967295 59007a5e31cSFreddy Ye hasOpaqueSPAdjustment: false 59107a5e31cSFreddy Ye hasVAStart: false 59207a5e31cSFreddy Ye hasMustTailInVarArgFunc: false 59307a5e31cSFreddy Ye savePoint: '' 59407a5e31cSFreddy Ye restorePoint: '' 59507a5e31cSFreddy YefixedStack: 59607a5e31cSFreddy Yestack: 59707a5e31cSFreddy Yeconstants: 59807a5e31cSFreddy Yebody: | 59907a5e31cSFreddy Ye ; CHECK-LABEL: name: test_64bitops 60007a5e31cSFreddy Ye ; CHECK: bb.0: 60107a5e31cSFreddy Ye ; CHECK: successors: %bb.1(0x80000000) 60207a5e31cSFreddy Ye ; CHECK: liveins: $rdi, $zmm0, $zmm1 60307a5e31cSFreddy Ye ; CHECK: [[COPY:%[0-9]+]]:gr64 = COPY $rdi 60407a5e31cSFreddy Ye ; CHECK: [[COPY1:%[0-9]+]]:vr512 = COPY $zmm0 60507a5e31cSFreddy Ye ; CHECK: [[COPY2:%[0-9]+]]:vr512 = COPY $zmm1 60607a5e31cSFreddy Ye ; CHECK: [[KMOVQkm:%[0-9]+]]:vk64 = KMOVQkm [[COPY]], 1, $noreg, 0, $noreg 607*c91f2a25SSimon Pilgrim ; CHECK: [[KSHIFTRQki:%[0-9]+]]:vk64 = KSHIFTRQki [[KMOVQkm]], 2 608*c91f2a25SSimon Pilgrim ; CHECK: [[KSHIFTLQki:%[0-9]+]]:vk64 = KSHIFTLQki [[KSHIFTRQki]], 1 609*c91f2a25SSimon Pilgrim ; CHECK: [[KNOTQkk:%[0-9]+]]:vk64 = KNOTQkk [[KSHIFTLQki]] 610*c91f2a25SSimon Pilgrim ; CHECK: [[KORQkk:%[0-9]+]]:vk64 = KORQkk [[KNOTQkk]], [[KSHIFTRQki]] 611*c91f2a25SSimon Pilgrim ; CHECK: [[KANDQkk:%[0-9]+]]:vk64 = KANDQkk [[KORQkk]], [[KSHIFTLQki]] 612*c91f2a25SSimon Pilgrim ; CHECK: [[KXORQkk:%[0-9]+]]:vk64 = KXORQkk [[KANDQkk]], [[KSHIFTRQki]] 613*c91f2a25SSimon Pilgrim ; CHECK: [[KANDNQkk:%[0-9]+]]:vk64 = KANDNQkk [[KXORQkk]], [[KORQkk]] 614*c91f2a25SSimon Pilgrim ; CHECK: [[KADDQkk:%[0-9]+]]:vk64 = KADDQkk [[KANDNQkk]], [[KXORQkk]] 615*c91f2a25SSimon Pilgrim ; CHECK: [[COPY3:%[0-9]+]]:vk64wm = COPY [[KADDQkk]] 61607a5e31cSFreddy Ye ; CHECK: [[VMOVDQU8Zrrk:%[0-9]+]]:vr512 = VMOVDQU8Zrrk [[COPY2]], killed [[COPY3]], [[COPY1]] 61707a5e31cSFreddy Ye ; CHECK: VMOVDQA32Zmr [[COPY]], 1, $noreg, 0, $noreg, killed [[VMOVDQU8Zrrk]] 61807a5e31cSFreddy Ye ; CHECK: bb.1: 61907a5e31cSFreddy Ye ; CHECK: successors: %bb.2(0x80000000) 62007a5e31cSFreddy Ye ; CHECK: bb.2: 62107a5e31cSFreddy Ye ; CHECK: RET 0 62207a5e31cSFreddy Ye bb.0: 62307a5e31cSFreddy Ye liveins: $rdi, $zmm0, $zmm1 62407a5e31cSFreddy Ye 62507a5e31cSFreddy Ye %0 = COPY $rdi 62607a5e31cSFreddy Ye %1 = COPY $zmm0 62707a5e31cSFreddy Ye %2 = COPY $zmm1 62807a5e31cSFreddy Ye 62907a5e31cSFreddy Ye %5 = MOV64rm %0, 1, $noreg, 0, $noreg 6303e4caa9dSFreddy Ye %6 = SHR64ri_ND %5, 2, implicit-def dead $eflags 6313e4caa9dSFreddy Ye %7 = SHL64ri_ND %6, 1, implicit-def dead $eflags 6323e4caa9dSFreddy Ye %8 = NOT64r_ND %7 6333e4caa9dSFreddy Ye %9 = OR64rr_ND %8, %6, implicit-def dead $eflags 6343e4caa9dSFreddy Ye %10 = AND64rr_ND %9, %7, implicit-def dead $eflags 6353e4caa9dSFreddy Ye %11 = XOR64rr_ND %10, %6, implicit-def dead $eflags 63607a5e31cSFreddy Ye %12 = ANDN64rr %11, %9, implicit-def dead $eflags 6373e4caa9dSFreddy Ye %13 = ADD64rr_ND %12, %11, implicit-def dead $eflags 63807a5e31cSFreddy Ye 63907a5e31cSFreddy Ye %3 = COPY %13 64007a5e31cSFreddy Ye %4 = VMOVDQU8Zrrk %2, killed %3, %1 64107a5e31cSFreddy Ye VMOVDQA32Zmr %0, 1, $noreg, 0, $noreg, killed %4 64207a5e31cSFreddy Ye 64307a5e31cSFreddy Ye ; FIXME We can't replace TEST with KTEST due to flag differences 64407a5e31cSFreddy Ye ; FIXME TEST64rr %13, %13, implicit-def $eflags 64507a5e31cSFreddy Ye ; FIXME JCC_1 %bb.1, 4, implicit $eflags 64607a5e31cSFreddy Ye ; FIXME JMP_1 %bb.2 64707a5e31cSFreddy Ye 64807a5e31cSFreddy Ye bb.1: 64907a5e31cSFreddy Ye 65007a5e31cSFreddy Ye bb.2: 65107a5e31cSFreddy Ye RET 0 65207a5e31cSFreddy Ye 65307a5e31cSFreddy Ye... 65407a5e31cSFreddy Ye--- 65507a5e31cSFreddy Yename: test_16bitext 65607a5e31cSFreddy Yealignment: 16 65707a5e31cSFreddy YeexposesReturnsTwice: false 65807a5e31cSFreddy Yelegalized: false 65907a5e31cSFreddy YeregBankSelected: false 66007a5e31cSFreddy Yeselected: false 66107a5e31cSFreddy YetracksRegLiveness: true 66207a5e31cSFreddy Yeregisters: 66307a5e31cSFreddy Ye - { id: 0, class: gr64, preferred-register: '' } 66407a5e31cSFreddy Ye - { id: 1, class: vr512, preferred-register: '' } 66507a5e31cSFreddy Ye - { id: 2, class: vr512, preferred-register: '' } 66607a5e31cSFreddy Ye - { id: 3, class: vk16wm, preferred-register: '' } 66707a5e31cSFreddy Ye - { id: 4, class: vr512, preferred-register: '' } 66807a5e31cSFreddy Ye - { id: 5, class: gr16, preferred-register: '' } 66907a5e31cSFreddy Ye - { id: 6, class: gr16, preferred-register: '' } 67007a5e31cSFreddy Yeliveins: 67107a5e31cSFreddy Ye - { reg: '$rdi', virtual-reg: '%0' } 67207a5e31cSFreddy Ye - { reg: '$zmm0', virtual-reg: '%1' } 67307a5e31cSFreddy Ye - { reg: '$zmm1', virtual-reg: '%2' } 67407a5e31cSFreddy YeframeInfo: 67507a5e31cSFreddy Ye isFrameAddressTaken: false 67607a5e31cSFreddy Ye isReturnAddressTaken: false 67707a5e31cSFreddy Ye hasStackMap: false 67807a5e31cSFreddy Ye hasPatchPoint: false 67907a5e31cSFreddy Ye stackSize: 0 68007a5e31cSFreddy Ye offsetAdjustment: 0 68107a5e31cSFreddy Ye maxAlignment: 0 68207a5e31cSFreddy Ye adjustsStack: false 68307a5e31cSFreddy Ye hasCalls: false 68407a5e31cSFreddy Ye stackProtector: '' 68507a5e31cSFreddy Ye maxCallFrameSize: 4294967295 68607a5e31cSFreddy Ye hasOpaqueSPAdjustment: false 68707a5e31cSFreddy Ye hasVAStart: false 68807a5e31cSFreddy Ye hasMustTailInVarArgFunc: false 68907a5e31cSFreddy Ye savePoint: '' 69007a5e31cSFreddy Ye restorePoint: '' 69107a5e31cSFreddy YefixedStack: 69207a5e31cSFreddy Yestack: 69307a5e31cSFreddy Yeconstants: 69407a5e31cSFreddy Yebody: | 69507a5e31cSFreddy Ye bb.0: 69607a5e31cSFreddy Ye liveins: $rdi, $zmm0, $zmm1 69707a5e31cSFreddy Ye 69807a5e31cSFreddy Ye ; CHECK-LABEL: name: test_16bitext 69907a5e31cSFreddy Ye ; CHECK: liveins: $rdi, $zmm0, $zmm1 70007a5e31cSFreddy Ye ; CHECK: [[COPY:%[0-9]+]]:gr64 = COPY $rdi 70107a5e31cSFreddy Ye ; CHECK: [[COPY1:%[0-9]+]]:vr512 = COPY $zmm0 70207a5e31cSFreddy Ye ; CHECK: [[COPY2:%[0-9]+]]:vr512 = COPY $zmm1 70307a5e31cSFreddy Ye ; CHECK: [[KMOVBkm:%[0-9]+]]:vk8 = KMOVBkm [[COPY]], 1, $noreg, 0, $noreg 70407a5e31cSFreddy Ye ; CHECK: [[COPY3:%[0-9]+]]:vk16 = COPY [[KMOVBkm]] 705*c91f2a25SSimon Pilgrim ; CHECK: [[KNOTWkk:%[0-9]+]]:vk16 = KNOTWkk [[COPY3]] 706*c91f2a25SSimon Pilgrim ; CHECK: [[COPY4:%[0-9]+]]:vk16wm = COPY [[KNOTWkk]] 70707a5e31cSFreddy Ye ; CHECK: [[VMOVAPSZrrk:%[0-9]+]]:vr512 = VMOVAPSZrrk [[COPY2]], killed [[COPY4]], [[COPY1]] 70807a5e31cSFreddy Ye ; CHECK: VMOVAPSZmr [[COPY]], 1, $noreg, 0, $noreg, killed [[VMOVAPSZrrk]] 70907a5e31cSFreddy Ye ; CHECK: RET 0 71007a5e31cSFreddy Ye %0 = COPY $rdi 71107a5e31cSFreddy Ye %1 = COPY $zmm0 71207a5e31cSFreddy Ye %2 = COPY $zmm1 71307a5e31cSFreddy Ye 71407a5e31cSFreddy Ye %5 = MOVZX16rm8 %0, 1, $noreg, 0, $noreg 7153e4caa9dSFreddy Ye %6 = NOT16r_ND %5 71607a5e31cSFreddy Ye 71707a5e31cSFreddy Ye %3 = COPY %6 71807a5e31cSFreddy Ye %4 = VMOVAPSZrrk %2, killed %3, %1 71907a5e31cSFreddy Ye VMOVAPSZmr %0, 1, $noreg, 0, $noreg, killed %4 72007a5e31cSFreddy Ye RET 0 72107a5e31cSFreddy Ye 72207a5e31cSFreddy Ye... 72307a5e31cSFreddy Ye--- 72407a5e31cSFreddy Yename: test_32bitext 72507a5e31cSFreddy Yealignment: 16 72607a5e31cSFreddy YeexposesReturnsTwice: false 72707a5e31cSFreddy Yelegalized: false 72807a5e31cSFreddy YeregBankSelected: false 72907a5e31cSFreddy Yeselected: false 73007a5e31cSFreddy YetracksRegLiveness: true 73107a5e31cSFreddy Yeregisters: 73207a5e31cSFreddy Ye - { id: 0, class: gr64, preferred-register: '' } 73307a5e31cSFreddy Ye - { id: 1, class: vr512, preferred-register: '' } 73407a5e31cSFreddy Ye - { id: 2, class: vr512, preferred-register: '' } 73507a5e31cSFreddy Ye - { id: 3, class: vk64wm, preferred-register: '' } 73607a5e31cSFreddy Ye - { id: 4, class: vr512, preferred-register: '' } 73707a5e31cSFreddy Ye - { id: 5, class: gr32, preferred-register: '' } 73807a5e31cSFreddy Ye - { id: 6, class: gr32, preferred-register: '' } 73907a5e31cSFreddy Ye - { id: 7, class: gr32, preferred-register: '' } 74007a5e31cSFreddy Yeliveins: 74107a5e31cSFreddy Ye - { reg: '$rdi', virtual-reg: '%0' } 74207a5e31cSFreddy Ye - { reg: '$zmm0', virtual-reg: '%1' } 74307a5e31cSFreddy Ye - { reg: '$zmm1', virtual-reg: '%2' } 74407a5e31cSFreddy YeframeInfo: 74507a5e31cSFreddy Ye isFrameAddressTaken: false 74607a5e31cSFreddy Ye isReturnAddressTaken: false 74707a5e31cSFreddy Ye hasStackMap: false 74807a5e31cSFreddy Ye hasPatchPoint: false 74907a5e31cSFreddy Ye stackSize: 0 75007a5e31cSFreddy Ye offsetAdjustment: 0 75107a5e31cSFreddy Ye maxAlignment: 0 75207a5e31cSFreddy Ye adjustsStack: false 75307a5e31cSFreddy Ye hasCalls: false 75407a5e31cSFreddy Ye stackProtector: '' 75507a5e31cSFreddy Ye maxCallFrameSize: 4294967295 75607a5e31cSFreddy Ye hasOpaqueSPAdjustment: false 75707a5e31cSFreddy Ye hasVAStart: false 75807a5e31cSFreddy Ye hasMustTailInVarArgFunc: false 75907a5e31cSFreddy Ye savePoint: '' 76007a5e31cSFreddy Ye restorePoint: '' 76107a5e31cSFreddy YefixedStack: 76207a5e31cSFreddy Yestack: 76307a5e31cSFreddy Yeconstants: 76407a5e31cSFreddy Yebody: | 76507a5e31cSFreddy Ye bb.0: 76607a5e31cSFreddy Ye liveins: $rdi, $zmm0, $zmm1 76707a5e31cSFreddy Ye 76807a5e31cSFreddy Ye ; CHECK-LABEL: name: test_32bitext 76907a5e31cSFreddy Ye ; CHECK: liveins: $rdi, $zmm0, $zmm1 77007a5e31cSFreddy Ye ; CHECK: [[COPY:%[0-9]+]]:gr64 = COPY $rdi 77107a5e31cSFreddy Ye ; CHECK: [[COPY1:%[0-9]+]]:vr512 = COPY $zmm0 77207a5e31cSFreddy Ye ; CHECK: [[COPY2:%[0-9]+]]:vr512 = COPY $zmm1 77307a5e31cSFreddy Ye ; CHECK: [[KMOVBkm:%[0-9]+]]:vk8 = KMOVBkm [[COPY]], 1, $noreg, 0, $noreg 77407a5e31cSFreddy Ye ; CHECK: [[COPY3:%[0-9]+]]:vk32 = COPY [[KMOVBkm]] 77507a5e31cSFreddy Ye ; CHECK: [[KMOVWkm:%[0-9]+]]:vk16 = KMOVWkm [[COPY]], 1, $noreg, 0, $noreg 77607a5e31cSFreddy Ye ; CHECK: [[COPY4:%[0-9]+]]:vk32 = COPY [[KMOVWkm]] 777*c91f2a25SSimon Pilgrim ; CHECK: [[KADDDkk:%[0-9]+]]:vk32 = KADDDkk [[COPY3]], [[COPY4]] 778*c91f2a25SSimon Pilgrim ; CHECK: [[COPY5:%[0-9]+]]:vk64wm = COPY [[KADDDkk]] 77907a5e31cSFreddy Ye ; CHECK: [[VMOVDQU16Zrrk:%[0-9]+]]:vr512 = VMOVDQU16Zrrk [[COPY2]], killed [[COPY5]], [[COPY1]] 78007a5e31cSFreddy Ye ; CHECK: VMOVDQA32Zmr [[COPY]], 1, $noreg, 0, $noreg, killed [[VMOVDQU16Zrrk]] 78107a5e31cSFreddy Ye ; CHECK: RET 0 78207a5e31cSFreddy Ye %0 = COPY $rdi 78307a5e31cSFreddy Ye %1 = COPY $zmm0 78407a5e31cSFreddy Ye %2 = COPY $zmm1 78507a5e31cSFreddy Ye 78607a5e31cSFreddy Ye %5 = MOVZX32rm8 %0, 1, $noreg, 0, $noreg 78707a5e31cSFreddy Ye %6 = MOVZX32rm16 %0, 1, $noreg, 0, $noreg 7883e4caa9dSFreddy Ye %7 = ADD32rr_ND %5, %6, implicit-def dead $eflags 78907a5e31cSFreddy Ye 79007a5e31cSFreddy Ye %3 = COPY %7 79107a5e31cSFreddy Ye %4 = VMOVDQU16Zrrk %2, killed %3, %1 79207a5e31cSFreddy Ye VMOVDQA32Zmr %0, 1, $noreg, 0, $noreg, killed %4 79307a5e31cSFreddy Ye RET 0 79407a5e31cSFreddy Ye 79507a5e31cSFreddy Ye... 79607a5e31cSFreddy Ye--- 79707a5e31cSFreddy Yename: test_64bitext 79807a5e31cSFreddy Yealignment: 16 79907a5e31cSFreddy YeexposesReturnsTwice: false 80007a5e31cSFreddy Yelegalized: false 80107a5e31cSFreddy YeregBankSelected: false 80207a5e31cSFreddy Yeselected: false 80307a5e31cSFreddy YetracksRegLiveness: true 80407a5e31cSFreddy Yeregisters: 80507a5e31cSFreddy Ye - { id: 0, class: gr64, preferred-register: '' } 80607a5e31cSFreddy Ye - { id: 1, class: vr512, preferred-register: '' } 80707a5e31cSFreddy Ye - { id: 2, class: vr512, preferred-register: '' } 80807a5e31cSFreddy Ye - { id: 3, class: vk64wm, preferred-register: '' } 80907a5e31cSFreddy Ye - { id: 4, class: vr512, preferred-register: '' } 81007a5e31cSFreddy Ye - { id: 5, class: gr64, preferred-register: '' } 81107a5e31cSFreddy Ye - { id: 6, class: gr64, preferred-register: '' } 81207a5e31cSFreddy Ye - { id: 7, class: gr64, preferred-register: '' } 81307a5e31cSFreddy Yeliveins: 81407a5e31cSFreddy Ye - { reg: '$rdi', virtual-reg: '%0' } 81507a5e31cSFreddy Ye - { reg: '$zmm0', virtual-reg: '%1' } 81607a5e31cSFreddy Ye - { reg: '$zmm1', virtual-reg: '%2' } 81707a5e31cSFreddy YeframeInfo: 81807a5e31cSFreddy Ye isFrameAddressTaken: false 81907a5e31cSFreddy Ye isReturnAddressTaken: false 82007a5e31cSFreddy Ye hasStackMap: false 82107a5e31cSFreddy Ye hasPatchPoint: false 82207a5e31cSFreddy Ye stackSize: 0 82307a5e31cSFreddy Ye offsetAdjustment: 0 82407a5e31cSFreddy Ye maxAlignment: 0 82507a5e31cSFreddy Ye adjustsStack: false 82607a5e31cSFreddy Ye hasCalls: false 82707a5e31cSFreddy Ye stackProtector: '' 82807a5e31cSFreddy Ye maxCallFrameSize: 4294967295 82907a5e31cSFreddy Ye hasOpaqueSPAdjustment: false 83007a5e31cSFreddy Ye hasVAStart: false 83107a5e31cSFreddy Ye hasMustTailInVarArgFunc: false 83207a5e31cSFreddy Ye savePoint: '' 83307a5e31cSFreddy Ye restorePoint: '' 83407a5e31cSFreddy YefixedStack: 83507a5e31cSFreddy Yestack: 83607a5e31cSFreddy Yeconstants: 83707a5e31cSFreddy Yebody: | 83807a5e31cSFreddy Ye bb.0: 83907a5e31cSFreddy Ye liveins: $rdi, $zmm0, $zmm1 84007a5e31cSFreddy Ye 84107a5e31cSFreddy Ye ; CHECK-LABEL: name: test_64bitext 84207a5e31cSFreddy Ye ; CHECK: liveins: $rdi, $zmm0, $zmm1 84307a5e31cSFreddy Ye ; CHECK: [[COPY:%[0-9]+]]:gr64 = COPY $rdi 84407a5e31cSFreddy Ye ; CHECK: [[COPY1:%[0-9]+]]:vr512 = COPY $zmm0 84507a5e31cSFreddy Ye ; CHECK: [[COPY2:%[0-9]+]]:vr512 = COPY $zmm1 84607a5e31cSFreddy Ye ; CHECK: [[KMOVBkm:%[0-9]+]]:vk8 = KMOVBkm [[COPY]], 1, $noreg, 0, $noreg 84707a5e31cSFreddy Ye ; CHECK: [[COPY3:%[0-9]+]]:vk64 = COPY [[KMOVBkm]] 84807a5e31cSFreddy Ye ; CHECK: [[KMOVWkm:%[0-9]+]]:vk16 = KMOVWkm [[COPY]], 1, $noreg, 0, $noreg 84907a5e31cSFreddy Ye ; CHECK: [[COPY4:%[0-9]+]]:vk64 = COPY [[KMOVWkm]] 850*c91f2a25SSimon Pilgrim ; CHECK: [[KADDQkk:%[0-9]+]]:vk64 = KADDQkk [[COPY3]], [[COPY4]] 851*c91f2a25SSimon Pilgrim ; CHECK: [[COPY5:%[0-9]+]]:vk64wm = COPY [[KADDQkk]] 85207a5e31cSFreddy Ye ; CHECK: [[VMOVDQU8Zrrk:%[0-9]+]]:vr512 = VMOVDQU8Zrrk [[COPY2]], killed [[COPY5]], [[COPY1]] 85307a5e31cSFreddy Ye ; CHECK: VMOVDQA32Zmr [[COPY]], 1, $noreg, 0, $noreg, killed [[VMOVDQU8Zrrk]] 85407a5e31cSFreddy Ye ; CHECK: RET 0 85507a5e31cSFreddy Ye %0 = COPY $rdi 85607a5e31cSFreddy Ye %1 = COPY $zmm0 85707a5e31cSFreddy Ye %2 = COPY $zmm1 85807a5e31cSFreddy Ye 85907a5e31cSFreddy Ye %5 = MOVZX64rm8 %0, 1, $noreg, 0, $noreg 86007a5e31cSFreddy Ye %6 = MOVZX64rm16 %0, 1, $noreg, 0, $noreg 8613e4caa9dSFreddy Ye %7 = ADD64rr_ND %5, %6, implicit-def dead $eflags 86207a5e31cSFreddy Ye 86307a5e31cSFreddy Ye %3 = COPY %7 86407a5e31cSFreddy Ye %4 = VMOVDQU8Zrrk %2, killed %3, %1 86507a5e31cSFreddy Ye VMOVDQA32Zmr %0, 1, $noreg, 0, $noreg, killed %4 86607a5e31cSFreddy Ye RET 0 86707a5e31cSFreddy Ye 86807a5e31cSFreddy Ye... 86907a5e31cSFreddy Ye--- 87007a5e31cSFreddy Yename: test_unused 87107a5e31cSFreddy Yealignment: 16 87207a5e31cSFreddy YeexposesReturnsTwice: false 87307a5e31cSFreddy Yelegalized: true 87407a5e31cSFreddy YeregBankSelected: true 87507a5e31cSFreddy Yeselected: true 87607a5e31cSFreddy YefailedISel: false 87707a5e31cSFreddy YetracksRegLiveness: true 87807a5e31cSFreddy YehasWinCFI: false 87907a5e31cSFreddy YecallsEHReturn: false 88007a5e31cSFreddy YecallsUnwindInit: false 88107a5e31cSFreddy YehasEHCatchret: false 88207a5e31cSFreddy YehasEHScopes: false 88307a5e31cSFreddy YehasEHFunclets: false 88407a5e31cSFreddy YeisOutlined: false 88507a5e31cSFreddy YedebugInstrRef: false 88607a5e31cSFreddy YefailsVerification: false 88707a5e31cSFreddy YetracksDebugUserValues: false 88807a5e31cSFreddy Yeregisters: 88907a5e31cSFreddy Ye# Note that this test is supposed to have registers without classes 89007a5e31cSFreddy Ye - { id: 0, class: _, preferred-register: '' } 89107a5e31cSFreddy Ye - { id: 1, class: _, preferred-register: '' } 89207a5e31cSFreddy Ye - { id: 2, class: _, preferred-register: '' } 89307a5e31cSFreddy Yeliveins: 89407a5e31cSFreddy Ye - { reg: '$rdi', virtual-reg: '' } 89507a5e31cSFreddy YeframeInfo: 89607a5e31cSFreddy Ye isFrameAddressTaken: false 89707a5e31cSFreddy Ye isReturnAddressTaken: false 89807a5e31cSFreddy Ye hasStackMap: false 89907a5e31cSFreddy Ye hasPatchPoint: false 90007a5e31cSFreddy Ye stackSize: 0 90107a5e31cSFreddy Ye offsetAdjustment: 0 90207a5e31cSFreddy Ye maxAlignment: 1 90307a5e31cSFreddy Ye adjustsStack: false 90407a5e31cSFreddy Ye hasCalls: false 90507a5e31cSFreddy Ye stackProtector: '' 90607a5e31cSFreddy Ye functionContext: '' 90707a5e31cSFreddy Ye maxCallFrameSize: 4294967295 90807a5e31cSFreddy Ye cvBytesOfCalleeSavedRegisters: 0 90907a5e31cSFreddy Ye hasOpaqueSPAdjustment: false 91007a5e31cSFreddy Ye hasVAStart: false 91107a5e31cSFreddy Ye hasMustTailInVarArgFunc: false 91207a5e31cSFreddy Ye hasTailCall: false 91307a5e31cSFreddy Ye localFrameSize: 0 91407a5e31cSFreddy Ye savePoint: '' 91507a5e31cSFreddy Ye restorePoint: '' 91607a5e31cSFreddy YefixedStack: [] 91707a5e31cSFreddy Yestack: [] 91807a5e31cSFreddy Yeentry_values: [] 91907a5e31cSFreddy YecallSites: [] 92007a5e31cSFreddy YedebugValueSubstitutions: [] 92107a5e31cSFreddy Yeconstants: [] 92207a5e31cSFreddy YemachineFunctionInfo: {} 92307a5e31cSFreddy Yebody: | 92407a5e31cSFreddy Ye bb.1 (%ir-block.1): 92507a5e31cSFreddy Ye liveins: $rdi 92607a5e31cSFreddy Ye 92707a5e31cSFreddy Ye RET 0 92807a5e31cSFreddy Ye 92907a5e31cSFreddy Ye... 930