blob: 0fdcc812c6b28e8eacaf07af317f64d1c82e49ef [file] [log] [blame] [edit]
# REQUIRES: x86-registered-target
# 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 %s
--- |
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"
define dso_local noundef i32 @add_function(i32 noundef %a, i32 noundef %b) {
entry:
%sum = add nsw i32 %a, %b
%result = mul nsw i32 %sum, 2
ret i32 %result
}
define dso_local void @simple_function() {
entry:
ret void
}
...
---
name: add_function
alignment: 16
tracksRegLiveness: true
registers:
- { id: 0, class: gr32 }
- { id: 1, class: gr32 }
- { id: 2, class: gr32 }
- { id: 3, class: gr32 }
liveins:
- { reg: '$edi', virtual-reg: '%0' }
- { reg: '$esi', virtual-reg: '%1' }
body: |
bb.0.entry:
liveins: $edi, $esi
%1:gr32 = COPY $esi
%0:gr32 = COPY $edi
%2:gr32 = nsw ADD32rr %0, %1, implicit-def dead $eflags
%3:gr32 = ADD32rr %2, %2, implicit-def dead $eflags
$eax = COPY %3
RET 0, $eax
---
name: simple_function
alignment: 16
tracksRegLiveness: true
body: |
bb.0.entry:
RET 0
# CHECK: MIR2Vec embeddings for machine function add_function:
# CHECK: Function vector: [ 26.50 27.10 27.70 ]
# CHECK-NEXT: Machine basic block vectors:
# CHECK-NEXT: Machine basic block: add_function:entry:
# CHECK-NEXT: [ 26.50 27.10 27.70 ]
# CHECK-NEXT: Machine instruction vectors:
# CHECK-NEXT: Machine instruction: %1:gr32 = COPY $esi
# CHECK-NEXT: [ 6.00 6.10 6.20 ]
# CHECK-NEXT: Machine instruction: %0:gr32 = COPY $edi
# CHECK-NEXT: [ 6.00 6.10 6.20 ]
# CHECK-NEXT: Machine instruction: %2:gr32 = nsw ADD32rr %0:gr32(tied-def 0), %1:gr32, implicit-def dead $eflags
# CHECK-NEXT: [ 3.70 3.80 3.90 ]
# CHECK-NEXT: Machine instruction: %3:gr32 = ADD32rr %2:gr32(tied-def 0), %2:gr32, implicit-def dead $eflags
# CHECK-NEXT: [ 3.70 3.80 3.90 ]
# CHECK-NEXT: Machine instruction: $eax = COPY %3:gr32
# CHECK-NEXT: [ 6.00 6.10 6.20 ]
# CHECK-NEXT: Machine instruction: RET 0, $eax
# CHECK-NEXT: [ 1.10 1.20 1.30 ]
# CHECK: MIR2Vec embeddings for machine function simple_function:
# CHECK-NEXT:Function vector: [ 1.10 1.20 1.30 ]
# CHECK-NEXT: Machine basic block vectors:
# CHECK-NEXT: Machine basic block: simple_function:entry:
# CHECK-NEXT: [ 1.10 1.20 1.30 ]
# CHECK-NEXT: Machine instruction vectors:
# CHECK-NEXT: Machine instruction: RET 0
# CHECK-NEXT: [ 1.10 1.20 1.30 ]