Intel® Quartus® Prime Software
Intel® Quartus® Prime Design Software, Design Entry, Synthesis, Simulation, Verification, Timing Analysis, System Design (Platform Designer, formerly Qsys)
16608 Discussions

Compilation Error: "Failed to map instruction style information."

Altera_Forum
Honored Contributor II
2,084 Views

Hello,  

 

I am new to the Altera OpenCL toolkit. So I do not know if its me or something in the code. Anyway I the log file is as follows 

 

---  

Failed to map instruction style information: inst: %scalarizer.0or = call i32 @llvm.bswap.i32(i32 %scalarizer.0add27053) def id: intrinsic llvm.bswap llvm-type=<int> style: <default>(0) ******* Error: Assert failure at InstStyleInfo.cpp(54) ******* Failed to map instruction style information. style_def != 0 FAILED 0 libLLVM-3.0.so 0x00007f891218bddf 1 libLLVM-3.0.so 0x00007f891218cbe7 2 libpthread.so.0 0x0000003ddfc0f710 3 libLLVM-3.0.so 0x00007f8911a27f03 acl::evaluate_style_info(llvm::Instruction const*, acl::InstStyleInfo*, bool, llvm::Pass*, llvm::TargetData*) + 547 4 libLLVM-3.0.so 0x00007f8911c0cab3 5 libLLVM-3.0.so 0x00007f8911c0fe55 6 libLLVM-3.0.so 0x00007f8911c10fe4 7 libLLVM-3.0.so 0x00007f89115e2468 llvm::FPPassManager::runOnFunction(llvm::Function&) + 520 8 libLLVM-3.0.so 0x00007f89115e25ab llvm::FPPassManager::runOnModule(llvm::Module&) + 75 9 libLLVM-3.0.so 0x00007f89115e1f78 llvm::MPPassManager::runOnModule(llvm::Module&) + 472 10 libLLVM-3.0.so 0x00007f89115e2135 llvm::PassManagerImpl::run(llvm::Module&) + 165 11 libLLVM-3.0.so 0x00007f89115e224d llvm::PassManager::run(llvm::Module&) + 13 12 aocl-opt 0x000000000041c0c5 main + 7045 13 libc.so.6 0x0000003ddf81ed1d __libc_start_main + 253 14 aocl-opt 0x000000000040e5e9 Stack dump: 0. Program arguments: /home/aws4y/altera/13.1/hld/linux64/bin/aocl-opt --acle ljg7wk8o12ectgfpthjmnj8xmgf1qb17frk77qdiyxlkmh8ithkcluu3xxf7nvyzs2kmegdoyxlctgfpt3kmljwxfgpsmvjz82j38uui3xleqtyz23bknyycdrkbmv0ot8vs0r8o1guoldyz2cvorlvc3rafqvyzsrg3ekvm7jlzqd0otthknjwbw2kfq1w7ljg7wudo1xwbmujzechqnq0318a7mzpp8xd70wdi22qqqg07ekh3nj8xbrkhmzpzxrko0yvm7jlzmypo7hhontfxmgdtqb17frkuwwjibgl1mju7atjqllwxz2abmczpyxdtwgdotxqemawzekhznk71wyb3r1em3vbbyw0on2yqqkwokthknuwby2k7lb17frk1wgwoygueqajp03ghll0318a7m8jzrxg1wg8z7xutqgfpttd3mu0318a7mcyz1xgu7uui3rezlg07ekh3nj8xbrkhmzpzx2vs0rjibgezqjwpdtd72tfxm2sbnowoljg7wkvir2wbmg8patk72tfxmgfcl3doggkbekdoyguemy8zq3jzmejxxrzbtijzyrgmegdop2e3lgwzekh3lkpbcrk1mxyzm2hfwwvm7jlzqu8pfcdfnedcfxfomxw7ljg70qyitxyzqsypr3gknt0318a7q3yzgxg70tjip2wtqdypy1bknyvbzga3loype2s7wywo880qqkpoe3j3mjjxmgs1q38zt8vs0rjiorlclgfpthdhlh8cygd33czpyxgu0rdi880qqkwpsth7mtfxmgjsm8vogxd7wqdmire3ndpoetdenlwx8gpsqcwmt8vs0rjiorlclgfpt3fknjjbzrj7qzw7ljg70qyitxyzqsypr3gknt0318a7mzppqgd1wg0z880qqkwpsth7mtfxmgscmzvpaxbbyw0oprlemyy7atjzntwx1rjumippt8vs0rwolglctgfpt3honqvcwghfq10ot8vs0r0z3recnju7atjqllvbyxffmodzgggbwtfmiresqryp83bknywbp2kbmb0zgggzwtfmirezqspo23kfnuwb1rdbtijz3gffwhpom2e3ldjpacvorlvc8xkbqb17frk1wu0o7x713svz33gslkwxz2dunvpzwxbbyw0obglznrvzs3h1nedx1rzbtijz8xdm7qvz7jlzmgyzuckorlvcw2kfq3vpm2s37u0z880qqkjzdth1nuwx8xfbqb17frk70wyitxyuqgpoq3k72tfxm2f1q8dog2jmetfmiretqsjp83bknyvbzga3loype2s38uui3xlzquvoucvorlvcvxafq187frkbew8zoxltmju7atjclgdx0jpsmv8pl2g7whppoxu3nju7atj3myvcwrzbtijzggg7ek0oo2loqddpecvorlvcigjkq187frkceq8z72e3qddpqcvorlvcmxaml88zs2kc7ujo7jlzmyposcdmnr8cygsfqiw7ljg7wu0z7x713svzuck3nt0318a7m8ypaxfh0qyokremqh07ekh3nedxqrj7mi8pu2hs0uvm7jlzquwo23g7mtfxmrdbmb0zljg7wh8zoxyemr8i83k3quu3xxfzqovpu2khwu0o7x713svztthknjwbbgdmnx8zt8vs0r8o1guoldyz2cvorlvc7raznbyi82vs0rpiixlkmsyzy1bknyvby2kuq1ppjxbbyw0oirlolapoecf72tfxmrdzq28olxbbyw0o1retqgfptchhnuwc18a7m80odgfb0uui32qqmrpokhh3mevcqgpsmvyzqxj38uui3reemsdoehdzmtfxmgsfq80zljg70qwiqgu13svz0thorlvcz2acl8ypfrfu0r0z880qqkwpstfoljvcc2aolb17frkc0rdo880qqkwpstfoljvcc2a7l3w7ljg70tjiq2ekluy7atj1mtyxc2jbmczpy2gb0edmirekmswo23gknj8xmxk33czpyrf70tji1guolg0odcvorlvcw2kuq2dm12jzwtfmireolgypshfontfxmgjsm2yzfxdbwudmirezqjwpdtd72tfxmrkmni8pdxdbwh8zbgyctgfpt3gknjwbmxakqvypf2j38uui3xwzqg07ekh3lr8xdgj3nczpygkuwk0o1ru3lu07ekh3lqyx1gabtijz8xfh0qjzw2wonju7atjbmtpbz2dulb17frks0w8zzxlznju7atjmlhwblgsmm30olxfm7wvz1rwbmr8pshh72tfxmxdoliw7ljg7wu0o7x713svz33gslkwxz2dunvpzwxbbyw0opru3nuyotcfqlr8v0jpsmvypfrfc7rwizgekmsyzekh3lljx18a7q2w7ljg70g0o1xlbmu8px3korlvcvgfmnx8zljg70twomgu1qh8z03k3quu3xxf7nvyzs2kmegdoyxlctgfpthkqlfybwgpsmvdzgxd70t0zwructgfptchhngyclxkznz0oyxh38uui3ruzqjwpuhdqldyc0jpsmv0zy2j38uui32e3qkyzy1bknyjcr2a33czpyxj70uvm7jlzqddp3cf3nlyxngssmcw7ljg7wh8zorwoljypekh3nrwxc2f1qo87frkk0udi880qqk0o2thclj8cbgpsmvvzsrgm0tji7jlzqayzf3bknyybqgfzmcw7ljg7wk8zbgykqjwpekh3nq8cyrs33czpyrjoewvm7jlzqu8pfcdfnedcfgpsmvpz3xbbyw0o0re1mju7atjqllwc1rh7n2yz3xfuwwwo880qqkjok3g3nq0318a7q3dorgg7eywir2l13svz8hdqllwb2rzbtijzsrgfwhdmirezldyp8chqlr8v0jpsmv0pyrf77tvm7jlzqayzdthhlk0318a7q28z12ho0svm7jlzmajpscdorlvcqgskq10pggjuetfmiretqkvo33j72tfxm2fmqxdol2fbyw0o1glqqswoucfoluu3xxfcmi0oljg70ryom20qqkpzrhk1mt8b0jpsmvdz12ks0rvi7jlzqkjpahfoljvbzxasq8e7ljg7wu0o7x713svzkhh3qhvccgammzpplxbbyw0ol2wzmrjp23gumty3xxfemcdof2jhwtfmiremlgpokhkqquu3xxfzq2ppt8vs0rpiiru3lkjpfhjqllyc0jpsmv0zy2j38uui3gy1mu8pl3a72tfxm2kbmovp72jbyw0o02wbmgy7atj3qhjxlgd7lb17frkc0rdo880qqkdoehdqlr8v0jpsmv8plgfz0udmirecnuyzw3g3nuwb1rdbtijz8xdfwgdotx713svzwtjoluu3xxfuqijomrkf0e8obgl1mju7atj1mt0bvgs7mb0ol2vs0rjit2yctgfpt3jklljxygfcnc87frk70wpop2wzlk8patkorlvcnxabli0z8xbbyw0oc2wonsyzd3bknywcurkhmzjzrxdfwgvm7jlzmgvzecvorlvcrgdmnzpzxxbbyw0oz2wuqspobtjhnuwx1xk7mzppwxbbyw0ol2wolddzbcvorlvc32jsqb17frkc0rdo880qqkdoehdqlr8v0jpsmvjoy2kh0t8zr2w3qrvz03ghll0318a7mb0zy2j38uui3xlkqkypy1bknywxcxa3nczpyrkf0e8obgl1mju7atjfnevcbrzbtijz72jm7qyokx713svzdthhlky3xxfcl8yp3rkf0kyiw20qqk8zahhhlh8cygd33czpyrkmwhvm7jlzmtyz23gbnf0318a7mzpp8xd70wdi22qqqg07ekh3nrdbxrzbtijz82hkwhjibgwklkdzqcvorlvcbgdmnx8z12jc7k8zix713svz33gslkwxz2dunvpzwxbbyw0oprl7lgpo3tfqlhvcprzbtijzwgdswtfmire3nu8pn3gmlqy3xxfkmb0ohxbbyw0o0re1mju7atj7qjjx2gshmcdot8vs0r0z7xybma8pqhhsntdxyxk33czpygdbwgpin2tctgfpthdoltybmgdbtijz12j77wdzrre1qu07ekh3ltvc1rzbtijz72jm7qyokx713svz23kzqqjxmgfhmz0z8vbbyw0o1xwsqrvo03bknyvbz2hbm8w7ljg70jpibreumju7atj3meyxwrauqxyiygjzwtfmiretqsjoehd3mg8xyxftqb17frkz7qyi880qqkjoshdtnewb1gabtijzgggcegpiirukqkvoekh3lqjxtgdmncdot8vs0r8o1guoldyz2tdzmfwx1rzbtijzggg7ek0oo2loqddpecvorlvc8xfbqb17frkh0edoz20qqkpzuhhtntfxmrkfq80oljg70t0zt2q7msypehhzquu3xxfhmiyzqrfc7w8z7ru3lwwpecvorlvcvxjzqoypfrfbwgjz880qqkpoe3hmlhyclgs1qoypb2j38uui3xwzqg07ekh3nqycbxamn7jomgfb0tdibgl7mju7atjfnl8c8xkcnidolrfc7sji7x713svz0cg1mlyb3rs3n30oljg70tyiirl3ljwoecvorlvcogdmli8zs2vs0r0z7xl1qkwoshd72tfxmrd7mcw7ljg7wjdor2qmqw07ekh3nyjxx2jbq80oljg70qyiw2w7qgpoekh3nqybvrjuq10pg2jm7gvm7jlzqddp3cf3nlyxngssmcw7ljg7wu0o7x713svzuckunhvbygpsmvjoggsb0gvm7jlzmtyz23gbnf0318a7qx8o82jbyw0owgukqhjpathsntwblgs7mczpygjbew0ow2qemsvoy1bknydcuxkbmczpy2kcwu0zege13svzl3fknywbzxasm8w7ljg7wuwiegetqgy7atj7mhyxwgpsmvpz32vs0rdzi2q3nju7atjqllvbyxffmodzgggbwtfmire3qkyzy1bknydcwxfbtijzq2j70wdiyrlzldwokthkluu3xxfuqijomrkf0e8obgl1mju7atjznyyc0jpsmvpz3rkbyw0o3rlqmtyz2tdqnldx18a7q88zargo7tji880qqk8patdzmyjxb2fuqi8zt8vs0rjo32wctgfpthk7myy3xxfcm7ppr2gu0rdmirebma8pqhh72tfxmgssm80oyrgkwrpii2wctgfptck3nt0318a7mxpofxbbyw0ot2qumywpkhkqmtfxm2d3lb17frkc0rdo880qqkposchfntfxmrkuq18zs2hs0uvm7jlzqddp3cf3nlyxngssmcw7ljg7wu0o7x713svz23kznhvc1gpsmv0zlxfbwwjo7glzqgy7atjznevbygfsmv8zt8vs0rjiorlclgfpttdqnq0bvgsom7w7ljg70t8zr2eklgfptcd1medb0jpsmv0pd2kc0gjzogu1quwobcholuu3xxf1qippdxd1wkdo7jlzqayzfckolk0318a7q1dol2vs0rjiorlclgfptcdqlkycvgssmzppwxbbyw0omgyqmju7atjqllvbyxffmodzgggbwtfmire3qkyzy1bknywxcxa3nczpyxfuwhdop2qqqddpqcvorlvcz2a7l3jzd2gm0qyi7x713svzwtjoluu3xxf7nz8p3xguwypp3gw7mju7atjfnljb12k7n2ypmrktwtfmire3qswoekh3nydc3gpsmv0pdrg37uui3xukmyyzd3gknedx3rzbtijzrxjq0k0zw20qqkvokhaonj0318a7q28z12ho0svm7jlzmhwps3jzmedx3rkfmzppmrfc7sji7x713svzthdonuwb1gpsmvjom2khwedmiremmuyze3bknyvcvgj7l38z1rf38uui3gu1qujp7hd3nty3xxf7lzyz12hs0yvm7jlzqjdpathzmuwb1gpsmvwo1rgo0qji7x713svz0cg1mlyb3rs3n30oljg7wh8zbgl3nju7atjbmtpbz2dulb17frkowhwo1gy1mu8pl3a7rlf2 -sweeping-opt=1 -board /home/aws4y/altera/13.1/hld/board/pcie385n/hardware/pcie385n_a7/board_spec.xml -dseon=1 anubis.1.bc -o anubis.unused 1. Running pass 'Function Pass Manager' on module 'anubis.1.bc'. 2. Running pass 'Unnamed pass: implement Pass::getPassName()' on function '@search'  

 

Has anyone seen this error before? 

 

-Aaron Smith
0 Kudos
6 Replies
Altera_Forum
Honored Contributor II
741 Views

Ensure that your code does not perform any operations that are documented as unsupported. You can find that infromation in appendix A of this document: http://www.altera.com/literature/hb/opencl-sdk/aocl_programming_guide.pdf 

 

Unfortunately from that message I can't tell what is happening. I have seen a similar message to that one where I was trying to pass an unsupported variable type to an OpenCL API. So if you are using OpenCL built-in functions double check the spec to make sure what you are passing into it is supported.
0 Kudos
Altera_Forum
Honored Contributor II
741 Views

 

--- Quote Start ---  

Ensure that your code does not perform any operations that are documented as unsupported. You can find that infromation in appendix A of this document: http://www.altera.com/literature/hb/opencl-sdk/aocl_programming_guide.pdf 

 

Unfortunately from that message I can't tell what is happening. I have seen a similar message to that one where I was trying to pass an unsupported variable type to an OpenCL API. So if you are using OpenCL built-in functions double check the spec to make sure what you are passing into it is supported. 

--- Quote End ---  

 

 

 

I think I found my problem, but I want to be sure, is it the case that 4 dimesional vectors are not supported, since there is only preliminary support for three-element vectors?
0 Kudos
Altera_Forum
Honored Contributor II
741 Views

Four element vectors are supported. The wording of the three-element vectors has more to do with if you look at the 1.0 spec you will not see three element vectors. Three element vectors showed up in either the 1.1 or 1.2 specs.

0 Kudos
Altera_Forum
Honored Contributor II
741 Views

After doing a little digging I am now thoroughly confused. There is one line in my __kernel function causing the error it is: 

 

foo(&ostate0,&ostate1, pad0^0x5C5C5C5CU, pad1^0x5C5C5C5CU, 0x5C5C5C5CU, 0x5C5C5C5CU); 

 

What makes this maddening is the following line: 

 

foo(&tstate0,&tstate1, pad0^0x36363636U, pad1^0x36363636U, 0x36363636U, 0x36363636U); 

 

all of the variables are declared in the same line in the kernel function:  

 

uint4 tstate0, tstate1, ostate0, ostate1, tmp0, tmp1; 

 

here is the code for "foo": 

 

void foo(uint4*restrict state0,uint4*restrict state1, const uint4 block0, const uint4 block1, const uint4 block2, const uint4 block3) { # define A (*state0).x # define B (*state0).y # define C (*state0).z # define D (*state0).w # define E (*state1).x # define F (*state1).y # define G (*state1).z # define H (*state1).w uint4 W; W.x = block0.x; D=0x98c7e2a2U+W.x; H=0xfc08884dU+W.x; W.y = block0.y; C=0xcd2a11aeU+Tr1(D)+Ch(D,0x510e527fU,0x9b05688cU)+W.y; G=0xC3910C8EU+C+Tr2(H)+Ch(H,0xfb6feee7U,0x2a01a605U); W.z = block0.z; B=0x0c2e12e0U+Tr1(C)+Ch(C,D,0x510e527fU)+W.z; F=0x4498517BU+B+Tr2(G)+Maj(G,H,0x6a09e667U); W.w = block0.w; A=0xa4ce148bU+Tr1(B)+Ch(B,C,D)+W.w; E=0x95F61999U+A+Tr2(F)+Maj(F,G,H); W.x = block1.x; RND(E,F,G,H,A,B,C,D, W.x+0x3956c25bU); W.y = block1.y; RND(D,E,F,G,H,A,B,C, W.y+0x59f111f1U); W.z = block1.z; RND(C,D,E,F,G,H,A,B, W.z+0x923f82a4U); W.w = block1.w; RND(B,C,D,E,F,G,H,A, W.w+0xab1c5ed5U); W.x = block2.x; RND(A,B,C,D,E,F,G,H, W.x+0xd807aa98U); W.y = block2.y; RND(H,A,B,C,D,E,F,G, W.y+0x12835b01U); W.z = block2.z; RND(G,H,A,B,C,D,E,F, W.z+0x243185beU); W.w = block2.w; RND(F,G,H,A,B,C,D,E, W.w+0x550c7dc3U); W.x = block3.x; RND(E,F,G,H,A,B,C,D, W.x+0x72be5d74U); W.y = block3.y; RND(D,E,F,G,H,A,B,C, W.y+0x80deb1feU); W.z = block3.z; RND(C,D,E,F,G,H,A,B, W.z+0x9bdc06a7U); W.w = block3.w; RND(B,C,D,E,F,G,H,A, W.w+0xc19bf174U); W.x += Wr1(W.z) + W.y + Wr2(W.y); RND(A,B,C,D,E,F,G,H, W.x+0xe49b69c1U); W.y += Wr1(W.w) + W.z + Wr2(W.z); RND(H,A,B,C,D,E,F,G, W.y+0xefbe4786U); W.z += Wr1(W.x) + W.w + Wr2(W.w); RND(G,H,A,B,C,D,E,F, W.z+0x0fc19dc6U); W.w += Wr1(W.y) + W.x + Wr2(W.x); RND(F,G,H,A,B,C,D,E, W.w+0x240ca1ccU); W.x += Wr1(W.z) + W.y + Wr2(W.y); RND(E,F,G,H,A,B,C,D, W.x+0x2de92c6fU); W.y += Wr1(W.w) + W.z + Wr2(W.z); RND(D,E,F,G,H,A,B,C, W.y+0x4a7484aaU); W.z += Wr1(W.x) + W.w + Wr2(W.w); RND(C,D,E,F,G,H,A,B, W.z+0x5cb0a9dcU); W.w += Wr1(W.y) + W.x + Wr2(W.x); RND(B,C,D,E,F,G,H,A, W.w+0x76f988daU); W.x += Wr1(W.z) + W.y + Wr2(W.y); RND(A,B,C,D,E,F,G,H, W.x+0x983e5152U); W.y += Wr1(W.w) + W.z + Wr2(W.z); RND(H,A,B,C,D,E,F,G, W.y+0xa831c66dU); W.z += Wr1(W.x) + W.w + Wr2(W.w); RND(G,H,A,B,C,D,E,F, W.z+0xb00327c8U); W.w += Wr1(W.y) + W.x + Wr2(W.x); RND(F,G,H,A,B,C,D,E, W.w+0xbf597fc7U); W.x += Wr1(W.z) + W.y + Wr2(W.y); RND(E,F,G,H,A,B,C,D, W.x+0xc6e00bf3U); W.y += Wr1(W.w) + W.z + Wr2(W.z); RND(D,E,F,G,H,A,B,C, W.y+0xd5a79147U); W.z += Wr1(W.x) + W.w + Wr2(W.w); RND(C,D,E,F,G,H,A,B, W.z+0x06ca6351U); W.w += Wr1(W.y) + W.x + Wr2(W.x); RND(B,C,D,E,F,G,H,A, W.w+0x14292967U); W.x += Wr1(W.z) + W.y + Wr2(W.y); RND(A,B,C,D,E,F,G,H, W.x+0x27b70a85U); W.y += Wr1(W.w) + W.z + Wr2(W.z); RND(H,A,B,C,D,E,F,G, W.y+0x2e1b2138U); W.z += Wr1(W.x) + W.w + Wr2(W.w); RND(G,H,A,B,C,D,E,F, W.z+0x4d2c6dfcU); W.w += Wr1(W.y) + W.x + Wr2(W.x); RND(F,G,H,A,B,C,D,E, W.w+0x53380d13U); W.x += Wr1(W.z) + W.y + Wr2(W.y); RND(E,F,G,H,A,B,C,D, W.x+0x650a7354U); W.y += Wr1(W.w) + W.z + Wr2(W.z); RND(D,E,F,G,H,A,B,C, W.y+0x766a0abbU); W.z += Wr1(W.x) + W.w + Wr2(W.w); RND(C,D,E,F,G,H,A,B, W.z+0x81c2c92eU); W.w += Wr1(W.y) + W.x + Wr2(W.x); RND(B,C,D,E,F,G,H,A, W.w+0x92722c85U); W.x += Wr1(W.z) + W.y + Wr2(W.y); RND(A,B,C,D,E,F,G,H, W.x+0xa2bfe8a1U); W.y += Wr1(W.w) + W.z + Wr2(W.z); RND(H,A,B,C,D,E,F,G, W.y+0xa81a664bU); W.z += Wr1(W.x) + W.w + Wr2(W.w); RND(G,H,A,B,C,D,E,F, W.z+0xc24b8b70U); W.w += Wr1(W.y) + W.x + Wr2(W.x); RND(F,G,H,A,B,C,D,E, W.w+0xc76c51a3U); W.x += Wr1(W.z) + W.y + Wr2(W.y); RND(E,F,G,H,A,B,C,D, W.x+0xd192e819U); W.y += Wr1(W.w) + W.z + Wr2(W.z); RND(D,E,F,G,H,A,B,C, W.y+0xd6990624U); W.z += Wr1(W.x) + W.w + Wr2(W.w); RND(C,D,E,F,G,H,A,B, W.z+0xf40e3585U); W.w += Wr1(W.y) + W.x + Wr2(W.x); RND(B,C,D,E,F,G,H,A, W.w+0x106aa070U); W.x += Wr1(W.z) + W.y + Wr2(W.y); RND(A,B,C,D,E,F,G,H, W.x+0x19a4c116U); W.y += Wr1(W.w) + W.z + Wr2(W.z); RND(H,A,B,C,D,E,F,G, W.y+0x1e376c08U); W.z += Wr1(W.x) + W.w + Wr2(W.w); RND(G,H,A,B,C,D,E,F, W.z+0x2748774cU); W.w += Wr1(W.y) + W.x + Wr2(W.x); RND(F,G,H,A,B,C,D,E, W.w+0x34b0bcb5U); W.x += Wr1(W.z) + W.y + Wr2(W.y); RND(E,F,G,H,A,B,C,D, W.x+0x391c0cb3U); W.y += Wr1(W.w) + W.z + Wr2(W.z); RND(D,E,F,G,H,A,B,C, W.y+0x4ed8aa4aU); W.z += Wr1(W.x) + W.w + Wr2(W.w); RND(C,D,E,F,G,H,A,B, W.z+0x5b9cca4fU); W.w += Wr1(W.y) + W.x + Wr2(W.x); RND(B,C,D,E,F,G,H,A, W.w+0x682e6ff3U); W.x += Wr1(W.z) + W.y + Wr2(W.y); RND(A,B,C,D,E,F,G,H, W.x+0x748f82eeU); W.y += Wr1(W.w) + W.z + Wr2(W.z); RND(H,A,B,C,D,E,F,G, W.y+0x78a5636fU); W.z += Wr1(W.x) + W.w + Wr2(W.w); RND(G,H,A,B,C,D,E,F, W.z+0x84c87814U); W.w += Wr1(W.y) + W.x + Wr2(W.x); RND(F,G,H,A,B,C,D,E, W.w+0x8cc70208U); W.x += Wr1(W.z) + W.y + Wr2(W.y); RND(E,F,G,H,A,B,C,D, W.x+0x90befffaU); W.y += Wr1(W.w) + W.z + Wr2(W.z); RND(D,E,F,G,H,A,B,C, W.y+0xa4506cebU); W.z += Wr1(W.x) + W.w + Wr2(W.w); RND(C,D,E,F,G,H,A,B, W.z+0xbef9a3f7U); W.w += Wr1(W.y) + W.x + Wr2(W.x); RND(B,C,D,E,F,G,H,A, W.w+0xc67178f2U); # undef A # undef B # undef C # undef D # undef E # undef F # undef G # undef H *state0 += (uint4)(0x6A09E667U,0xBB67AE85U,0x3C6EF372U,0xA54FF53AU); *state1 += (uint4)(0x510E527FU,0x9B05688CU,0x1F83D9ABU,0x5BE0CD19U); } 

 

I don't understand why the first line does not work but when I comment it out the program compiles. :mad:
0 Kudos
Altera_Forum
Honored Contributor II
741 Views

I'm a little unsure what you are trying to achieve with those first two code lines. Your foo function is coded to accept six unsigned int vectors each containing four elements but the way you are calling foo you are using scalar values in some cases. 

 

So for the last two kernel arguments you are passing scalars when the function is expecting vectors. For the 3rd and 4th kernel arguments you are either passing a scalar and the function is expecting a vector, or those pad0 and pad1 variables are vectors and you are performing an XOR with a scalar (I can't tell since I don't see you define pad0 or pad1 in your post). 

 

If you intention was to perform a vector XOR using the same value for all the elements you would do this instead: pad0^(0x5C5C5C5CU, 0x5C5C5C5CU, 0x5C5C5C5CU, 0x5C5C5C5CU) 

 

Again I'm just guessing what the intension is since I'm not entirely sure what you intended the code to do.
0 Kudos
Altera_Forum
Honored Contributor II
741 Views

According to http://www.informit.com/articles/article.aspx?p=1732873&seqnum=10 (http://www.informit.com/articles/article.aspx?p=1732873&seqnum=10) the way in which vector and scalar bitwise operation are supposed to work is that the scalar element is to be converted to the vector format "in the usual arithmetic way." Does anyone know what the usual arithmetic way is. Thank you Bad Omen for the help.

0 Kudos
Reply