Is there any guy help me to re-send to Mr. Andreas Pinkert ? I do not know his 
email address.

发件人: Zwinkau Andreas (CC-AD/ESW1) [mailto:andreas.zwin...@de.bosch.com]
发送时间: 2018年8月28日 22:41
收件人: Wuweijia <wuwei...@huawei.com>
主题: Automatische Antwort: hi, there is a quesion about fp16 running in arm 
server

Thank you for your message.

I am not in the office till September 9. Emails are not read and not forwarded 
until then. In case of need please contact Mr. Andreas Pinkert (CC-AD/ESW1).

Vielen Dank für Ihre Nachricht.

Ich bin bis 9. September nicht im Haus. Emails werden bis dann nicht gelesen 
und nicht weitergeleitet. In dringenden Fällen wenden Sie sich bitte an Herrn 
Andreas Pinkert (CC-AD/ESW1).


发件人: Wuweijia [mailto:wuwei...@huawei.com]
发送时间: 2018年8月28日 22:40
收件人: valgrind-users@lists.sourceforge.net
抄送: Fanbohao <fanbo...@huawei.com>
主题: [Valgrind-users] hi, there is a quesion about fp16 running in arm server

Hi:
                I wrote the program running in the arm64 server. There is 
something difference with other program. I use fp16 to compute the result;
                The fp16 program can run successfully without valgrind.  But 
with valgrind,  it ran failed.

                There is call stack, and last word:


t135 = GET:F16(722)
vex: the `impossible' happened:
   iselStmt
vex storage: T total 4464272856 bytes allocated
vex storage: P total 0 bytes allocated

valgrind: the 'impossible' happened:
   LibVEX called failure_exit().

host stacktrace:
==2201==    at 0x380453C4: show_sched_status_wrk (m_libcassert.c:355)
==2201==    by 0x3804572B: report_and_quit (m_libcassert.c:426)
==2201==    by 0x380457CB: panic (m_libcassert.c:502)
==2201==    by 0x3804576F: vgPlain_core_panic_at (m_libcassert.c:507)
==2201==    by 0x380457DB: vgPlain_core_panic (m_libcassert.c:512)
==2201==    by 0x38060C6B: failure_exit (m_translate.c:740)
==2201==    by 0x38109AAB: vpanic (main_util.c:231)
==2201==    by 0x3816C30F: iselStmt (host_arm64_isel.c:4003)
==2201==    by 0x3816A7DB: iselSB_ARM64 (host_arm64_isel.c:4201)
==2201==    by 0x38107D93: libvex_BackEnd (main_main.c:1047)
==2201==    by 0x38107D93: LibVEX_Translate (main_main.c:1174)
==2201==    by 0x38060A23: vgPlain_translate (m_translate.c:1794)
==2201==    by 0x38093F47: handle_chain_me (scheduler.c:1084)
==2201==    by 0x3809227F: vgPlain_scheduler (scheduler.c:0)
==2201==    by 0x380A0607: thread_wrapper (syswrap-linux.c:103)
==2201==    by 0x380A0607: run_a_thread_NORETURN (syswrap-linux.c:156)
==2201==    by 0x380A051F: vgModuleLocal_start_thread_NORETURN 
(syswrap-linux.c:320)
==2201==    by 0x380C2E37: ??? (in /system/lib64/valgrind/memcheck-arm64-linux)


        I check the code that valgrind analyze the instruction.

        In the Ist_WrTmp case, there is no statement to handle fp16 case.

        I want to know how to fixed the bug,  and support  fp16 type.


Host_arm64_isel.c   iselStmt function code as below:

   /* --------- TMP --------- */
   /* assign value to temporary */
   case Ist_WrTmp: {
      IRTemp tmp = stmt->Ist.WrTmp.tmp;
      IRType ty  = typeOfIRTemp(env->type_env, tmp);

      if (ty == Ity_I64 || ty == Ity_I32 || ty == Ity_I16 || ty == Ity_I8) {
         /* We could do a lot better here.  But for the time being: */
         HReg dst = lookupIRTemp(env, tmp);
         HReg rD  = iselIntExpr_R(env, stmt->Ist.WrTmp.data);
         addInstr(env, ARM64Instr_MovI(dst, rD));
         return;
      }
      if (ty == Ity_I1) {
         /* Here, we are generating a I1 value into a 64 bit register.
            Make sure the value in the register is only zero or one,
            but no other.  This allows optimisation of the
            1Uto64(tmp:I1) case, by making it simply a copy of the
            register holding 'tmp'.  The point being that the value in
            the register holding 'tmp' can only have been created
            here.  LATER: that seems dangerous; safer to do 'tmp & 1'
            in that case.  Also, could do this just with a single CINC
            insn. */
         /* CLONE-01 */
         HReg zero = newVRegI(env);
         HReg one  = newVRegI(env);
         HReg dst  = lookupIRTemp(env, tmp);
         addInstr(env, ARM64Instr_Imm64(zero, 0));
         addInstr(env, ARM64Instr_Imm64(one,  1));
         ARM64CondCode cc = iselCondCode(env, stmt->Ist.WrTmp.data);
         addInstr(env, ARM64Instr_CSel(dst, one, zero, cc));
         return;
      }
      if (ty == Ity_F64) {
         HReg src = iselDblExpr(env, stmt->Ist.WrTmp.data);
         HReg dst = lookupIRTemp(env, tmp);
         addInstr(env, ARM64Instr_VMov(8, dst, src));
         return;
      }
      if (ty == Ity_F32) {
         HReg src = iselFltExpr(env, stmt->Ist.WrTmp.data);
         HReg dst = lookupIRTemp(env, tmp);
         addInstr(env, ARM64Instr_VMov(8/*yes, really*/, dst, src));
         return;
      }
      if (ty == Ity_V128) {
         HReg src = iselV128Expr(env, stmt->Ist.WrTmp.data);
         HReg dst = lookupIRTemp(env, tmp);
         addInstr(env, ARM64Instr_VMov(16, dst, src));
         return;
      }
      if (ty == Ity_V256) {
         HReg srcHi, srcLo, dstHi, dstLo;
         iselV256Expr(&srcHi,&srcLo, env, stmt->Ist.WrTmp.data);
         lookupIRTempPair( &dstHi, &dstLo, env, tmp);
         addInstr(env, ARM64Instr_VMov(16, dstHi, srcHi));
         addInstr(env, ARM64Instr_VMov(16, dstLo, srcLo));
         return;
      }
      break;
   }

   /* --------- Call to DIRTY helper --------- */
   /* call complex ("dirty") helper function */
   case Ist_Dirty: {

valgrind vesoin 3.13.

BR
Owen

------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Valgrind-users mailing list
Valgrind-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/valgrind-users
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Valgrind-users mailing list
Valgrind-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/valgrind-users

Reply via email to