Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- target datalayout = "E-p:64:64:64-S0-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f16:16:16-f32:32:32-f64:64:64-f128:128:128-v64:64:64-v128:128:128-a0:0:64"
- ; A data buffer and a length
- %Vector = type { i8*, i32 }
- define void @double(%Vector* noalias nocapture %src, %Vector* noalias nocapture %dst, i32 %len) nounwind {
- entry:
- %0 = getelementptr inbounds %Vector* %src, i32 0, i32 0
- %1 = load i8** %0
- %src_data = bitcast i8* %1 to float*
- %2 = getelementptr inbounds %Vector* %dst, i32 0, i32 0
- %3 = load i8** %2
- %dst_data = bitcast i8* %3 to float*
- br label %loop
- loop: ; preds = %loop, %entry
- %i = phi i32 [ 0, %entry ], [ %increment, %loop ]
- %4 = getelementptr float* %src_data, i32 %i
- %src_val = load float* %4, !llvm.mem.parallel_loop_access !0
- %dst_val = fmul float 2.000000e+00, %src_val
- %5 = getelementptr float* %dst_data, i32 %i
- store float %dst_val, float* %5, !llvm.mem.parallel_loop_access !0
- %increment = add i32 %i, 1
- %test = icmp eq i32 %increment, %len
- br i1 %test, label %exit, label %loop, !llvm.loop.parallel !0
- exit: ; preds = %loop
- ret void
- }
- !0 = metadata !{metadata !0}
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement