Slide 13
Slide 13 text
Model: Synthesis
float X::a(int p, float *q);
LIBRARY FUNCTION + SIGNATURE
SKETCH PROGRAM
● Enumerative search for solutions
● Constraints on type propagation
● Test results using I/O examples
define void @gemv(i32 %M, i32 %N, float %alpha, fl
float %beta, float* %y) {
entry:
br label %header
exit:
ret void
header:
br label %loop_check
body_pre:
%0 = getelementptr float, float* %y, i32 %iter
%1 = load float, float* %0
%2 = fmul float %beta, %1
%3 = fsub float %alpha, %1
%4 = fmul float %3, %9
br label %header1
body_post:
%5 = getelementptr float, float* %y, i32 %iter
%6 = fmul float %1, %1
%7 = fsub float %1, %beta
%8 = fmul float %3, %20
store float %20, float* %5
br label %loop_check
loop_exit:
br label %exit
loop_check:
%body_post
%9 = phi float [ %alpha, %header ], [ %2, %body_
%iter = phi i32 [ 0, %header ], [ %next_iter, %b
%next_iter = add i32 %iter, 1
%10 = icmp slt i32 %iter, %M
br i1 %10, label %body_pre, label %loop_exit
header1:
br label %loop_check5
body_pre2:
%11 = getelementptr float, float* %x, i32 %iter6
%12 = load float, float* %11
%13 = mul i32 %iter, %N
%14 = add i32 %iter6, %13
%15 = getelementptr float, float* %A, i32 %14
%16 = load float, float* %15
%17 = fmul float %alpha, %12
%18 = fmul float %17, %16
%19 = fadd float %18, %20
br label %body_post3
body_post3:
br label %loop_check5
loop_exit4:
br label %body_post