http://d.puremagic.com/issues/show_bug.cgi?id=7953
Summary: DMD Error: variable r used before set when compiling with -O Product: D Version: D2 Platform: x86_64 OS/Version: Linux Status: NEW Severity: normal Priority: P2 Component: DMD AssignedTo: nob...@puremagic.com ReportedBy: suicide...@xited.de --- Comment #0 from Zoadian <suicide...@xited.de> 2012-04-20 12:30:21 PDT --- When compiling this code with dmd -O it says: test.d(55) Error: variable r used before set i might have overlooked something, but shouldn't that compile? dmd 2.059 here. import std.stdio; import std.math; import core.simd; import std.datetime; import std.conv; /** Benchmarks: suicide@zoaHTPC /media/code $ dmd test.d _VEC: [TickDuration(2014413920)] SIMD: [TickDuration(2057610817)] suicide@zoaHTPC /media/code $ dmd test.d -O _VEC: [TickDuration(1589025986)] SIMD: [TickDuration(2050198165)] suicide@zoaHTPC /media/code $ dmd test.d -O -release _VEC: [TickDuration(1738538836)] SIMD: [TickDuration(1172608340)] suicide@zoaHTPC /media/code $ dmd test.d -O -release -inline _VEC: [TickDuration(1570424587)] SIMD: [TickDuration(1184942170)] suicide@zoaHTPC /media/code $ dmd test.d -O -release -noboundscheck _VEC: [TickDuration(752330929)] SIMD: [TickDuration(1128528117)] */ string gen(int D) { string s; for(size_t i = 0; i < D-1; i+=4) { s ~= "v1.array = a1["~to!string(i)~".."~to!string(i+4)~"];"; s ~= "v2.array = a2["~to!string(i)~".."~to!string(i+4)~"];"; s ~= "r = __simd(XMM.ADDPS, v1,v2);"; //~ s ~= "res["~to!string(i)~".."~to!string(i+4)~"] = r.array;"; s ~= "res.ptr["~to!string(i)~"] = r.ptr["~to!string(i)~"];"; s ~= "res.ptr["~to!string(i+1)~"] = r.ptr["~to!string(i+1)~"];"; s ~= "res.ptr["~to!string(i+2)~"] = r.ptr["~to!string(i+2)~"];"; s ~= "res.ptr["~to!string(i+3)~"] = r.ptr["~to!string(i+3)~"];"; } return s; } T[D] simdAdd(T, int D)(T[D] a1, T[D] a2) { T[D] res; float4 v1; float4 v2; float4 r; //writeln(gen(D)); mixin(gen(D)); return res; } T[D] addV(T, int D)(T[D] a1, T[D] a2) { T[D] r; //foreach(x;0..10) foreach(i;0..D) r[i] = a1[i]+a2[i]; return r; } void main() { float[8] v1 = [1,2,3,4,1,2,3,4]; float[8] v2 = [1,2,3,4,1,2,3,4]; void test1(){addV(v1,v2);} void test2(){simdAdd(v1,v2);} // test2(); //~ writeln("STD: ", benchmark!(addS!(int,4)([1,2,3,4],[1,2,3,4]))(10_000_000)); writeln("_VEC: ", benchmark!(test1)(10_000_000)); writeln("SIMD: ", benchmark!(test2)(10_000_000)); } -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------