47 lines · plain
1; RUN: opt -passes='print<ir2vec>' -o /dev/null -ir2vec-vocab-path=%S/Inputs/dummy_3D_nonzero_opc_vocab.json %s 2>&1 | FileCheck %s2 3define dso_local i32 @abc(i32 noundef %a, i32 noundef %b) #0 {4entry:5 %retval = alloca i32, align 46 %a.addr = alloca i32, align 47 %b.addr = alloca i32, align 48 store i32 %a, ptr %a.addr, align 49 store i32 %b, ptr %b.addr, align 410 %0 = load i32, ptr %a.addr, align 411 %1 = load i32, ptr %b.addr, align 412 %cmp = icmp sgt i32 %0, %113 br i1 %cmp, label %if.then, label %if.else14 15if.then: ; preds = %entry16 %2 = load i32, ptr %b.addr, align 417 store i32 %2, ptr %retval, align 418 br label %return19 20if.else: ; preds = %entry21 %3 = load i32, ptr %a.addr, align 422 store i32 %3, ptr %retval, align 423 br label %return24 25unreachable: ; Unreachable26 store i32 0, ptr %retval, align 427 br label %return28 29return: ; preds = %if.else, %if.then30 %4 = load i32, ptr %retval, align 431 ret i32 %432}33; We'll get individual basic block embeddings for all blocks in the function.34; But unreachable blocks are not counted for computing the function embedding.35; CHECK: Function vector: [ 1301.20 1318.20 1335.20 ]36; CHECK-NEXT: Basic block vectors:37; CHECK-NEXT: Basic block: entry:38; CHECK-NEXT: [ 816.20 825.20 834.20 ]39; CHECK-NEXT: Basic block: if.then:40; CHECK-NEXT: [ 195.00 198.00 201.00 ]41; CHECK-NEXT: Basic block: if.else:42; CHECK-NEXT: [ 195.00 198.00 201.00 ]43; CHECK-NEXT: Basic block: unreachable:44; CHECK-NEXT: [ 101.00 103.00 105.00 ]45; CHECK-NEXT: Basic block: return:46; CHECK-NEXT: [ 95.00 97.00 99.00 ]47