145 lines · plain
1# REQUIRES: x86-registered-target2# RUN: llc -mtriple=x86_64-unknown-linux-gnu -run-pass=none -print-mir2vec -mir2vec-vocab-path=%S/Inputs/mir2vec_dummy_3D_vocab.json %s -o /dev/null 2>&1 | FileCheck %s3 4--- |5 target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"6 7 define dso_local i32 @abc(i32 noundef %a, i32 noundef %b) {8 entry:9 %retval = alloca i32, align 410 %a.addr = alloca i32, align 411 %b.addr = alloca i32, align 412 store i32 %a, ptr %a.addr, align 413 store i32 %b, ptr %b.addr, align 414 %0 = load i32, ptr %a.addr, align 415 %1 = load i32, ptr %b.addr, align 416 %cmp = icmp sgt i32 %0, %117 br i1 %cmp, label %if.then, label %if.else18 19 if.then: ; preds = %entry20 %2 = load i32, ptr %b.addr, align 421 store i32 %2, ptr %retval, align 422 br label %return23 24 if.else: ; preds = %entry25 %3 = load i32, ptr %a.addr, align 426 store i32 %3, ptr %retval, align 427 br label %return28 29 return: ; preds = %if.else, %if.then30 %4 = load i32, ptr %retval, align 431 ret i32 %432 }33...34---35name: abc36alignment: 1637exposesReturnsTwice: false38legalized: false39regBankSelected: false40selected: false41failedISel: false42tracksRegLiveness: true43hasWinCFI: false44noPhis: false45isSSA: true46noVRegs: false47hasFakeUses: false48callsEHReturn: false49callsUnwindInit: false50hasEHContTarget: false51hasEHScopes: false52hasEHFunclets: false53isOutlined: false54debugInstrRef: true55failsVerification: false56tracksDebugUserValues: false57registers:58 - { id: 0, class: gr32, preferred-register: '', flags: [ ] }59 - { id: 1, class: gr32, preferred-register: '', flags: [ ] }60 - { id: 2, class: gr32, preferred-register: '', flags: [ ] }61 - { id: 3, class: gr32, preferred-register: '', flags: [ ] }62 - { id: 4, class: gr32, preferred-register: '', flags: [ ] }63 - { id: 5, class: gr32, preferred-register: '', flags: [ ] }64liveins:65 - { reg: '$edi', virtual-reg: '%0' }66 - { reg: '$esi', virtual-reg: '%1' }67frameInfo:68 isFrameAddressTaken: false69 isReturnAddressTaken: false70 hasStackMap: false71 hasPatchPoint: false72 stackSize: 073 offsetAdjustment: 074 maxAlignment: 475 adjustsStack: false76 hasCalls: false77 stackProtector: ''78 functionContext: ''79 maxCallFrameSize: 429496729580 cvBytesOfCalleeSavedRegisters: 081 hasOpaqueSPAdjustment: false82 hasVAStart: false83 hasMustTailInVarArgFunc: false84 hasTailCall: false85 isCalleeSavedInfoValid: false86 localFrameSize: 087fixedStack: []88stack:89 - { id: 0, name: retval, type: default, offset: 0, size: 4, alignment: 4, 90 stack-id: default, callee-saved-register: '', callee-saved-restored: true, 91 debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }92 - { id: 1, name: a.addr, type: default, offset: 0, size: 4, alignment: 4, 93 stack-id: default, callee-saved-register: '', callee-saved-restored: true, 94 debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }95 - { id: 2, name: b.addr, type: default, offset: 0, size: 4, alignment: 4, 96 stack-id: default, callee-saved-register: '', callee-saved-restored: true, 97 debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }98entry_values: []99callSites: []100debugValueSubstitutions: []101constants: []102machineFunctionInfo:103 amxProgModel: None104body: |105 bb.0.entry:106 successors: %bb.1(0x40000000), %bb.2(0x40000000)107 liveins: $edi, $esi108 109 %1:gr32 = COPY $esi110 %0:gr32 = COPY $edi111 MOV32mr %stack.1.a.addr, 1, $noreg, 0, $noreg, %0 :: (store (s32) into %ir.a.addr)112 MOV32mr %stack.2.b.addr, 1, $noreg, 0, $noreg, %1 :: (store (s32) into %ir.b.addr)113 %2:gr32 = SUB32rr %0, %1, implicit-def $eflags114 JCC_1 %bb.2, 14, implicit $eflags115 JMP_1 %bb.1116 117 bb.1.if.then:118 successors: %bb.3(0x80000000)119 120 %4:gr32 = MOV32rm %stack.2.b.addr, 1, $noreg, 0, $noreg :: (dereferenceable load (s32) from %ir.b.addr)121 MOV32mr %stack.0.retval, 1, $noreg, 0, $noreg, killed %4 :: (store (s32) into %ir.retval)122 JMP_1 %bb.3123 124 bb.2.if.else:125 successors: %bb.3(0x80000000)126 127 %3:gr32 = MOV32rm %stack.1.a.addr, 1, $noreg, 0, $noreg :: (dereferenceable load (s32) from %ir.a.addr)128 MOV32mr %stack.0.retval, 1, $noreg, 0, $noreg, killed %3 :: (store (s32) into %ir.retval)129 130 bb.3.return:131 %5:gr32 = MOV32rm %stack.0.retval, 1, $noreg, 0, $noreg :: (dereferenceable load (s32) from %ir.retval)132 $eax = COPY %5133 RET 0, $eax134...135 136# CHECK: Machine basic block vectors:137# CHECK-NEXT: Machine basic block: abc:entry:138# CHECK-NEXT: [ 23.60 24.20 24.80 ]139# CHECK-NEXT: Machine basic block: abc:if.then:140# CHECK-NEXT: [ 7.30 7.60 7.90 ]141# CHECK-NEXT: Machine basic block: abc:if.else:142# CHECK-NEXT: [ 3.40 3.60 3.80 ]143# CHECK-NEXT: Machine basic block: abc:return:144# CHECK-NEXT: [ 8.80 9.10 9.40 ]145