[PATCH] MergeFuncs should handle dynamic GEPs
Stepan Dyatkovskiy
stpworld at narod.ru
Mon Feb 2 06:40:47 PST 2015
Hello Pete,
I've looked at this patch. You add support for dynamic GEPs. I was on non-llvm project for a while, and dynamic GEP is quite new thing, at least when you can use arrays as indices. It also a bit strange, that we can use only splat arrays.. Anyways, I suppose we should get vector of pointers in this case, right? Can you provide me with links, where I can read more about?
I've left few inline comments.
Also, I've launched test-suite for it..
================
Comment at: test/Transforms/MergeFunc/gep.ll:63
@@ +62,3 @@
+ %bc_ptr = bitcast %vector_char4_ptr %this to %vector_char4_ptr
+ %offset_i = getelementptr %vector_char4_ptr %bc_ptr, <4 x i32><i32 0, i32 0, i32 0, i32 0>, <4 x i32><i32 1, i32 1, i32 1, i32 1>, <4 x i64> %i, <4 x i32><i32 2, i32 2, i32 2, i32 2>
+ %ext_i = extractelement <4 x i8*> %offset_i, i32 0
----------------
Dynamic GEP is quite new thing. Do we have specs for dynamic GEPs somewhere already? In particular rule definition for splat values?
================
Comment at: test/Transforms/MergeFunc/gep2.ll:54
@@ +53,3 @@
+ %bc_ptr = bitcast %vector_char4_ptr %this to %vector_char4_ptr
+ %offset_i = getelementptr %vector_char4_ptr %bc_ptr, <4 x i32><i32 0, i32 0, i32 0, i32 0>, <4 x i32><i32 1, i32 1, i32 1, i32 1>, <4 x i64> %i, <4 x i32><i32 0, i32 2, i32 2, i32 2>
+ %ext_i = extractelement <4 x i8*> %offset_i, i32 0
----------------
What would happen, if I'll create same method, but change this line to:
%offset_i = getelementptr %vector_char4_ptr %bc_ptr, <4 x i32><i32 0, i32 0, i32 0, i32 0>, <4 x i32><i32 1, i32 1, i32 1, i32 1>, <4 x i64> %i, <4 x i32><i32 2, i32 2, i32 2, i32 0>
It looks like your patch gonna merge such functions. Is it right?
http://reviews.llvm.org/D7170
EMAIL PREFERENCES
http://reviews.llvm.org/settings/panel/emailpreferences/
More information about the llvm-commits
mailing list