소스 검색

+ Xtensa: use extui for and with constants

git-svn-id: trunk@46664 -
florian 5 년 전
부모
커밋
ea2ae3b8f0
1개의 변경된 파일2개의 추가작업 그리고 0개의 파일을 삭제
  1. 2 0
      compiler/xtensa/cgcpu.pas

+ 2 - 0
compiler/xtensa/cgcpu.pas

@@ -527,6 +527,8 @@ implementation
           list.concat(taicpu.op_reg_reg_const(A_SRLI,dst,src,a))
         else if (op=OP_SHR) and (a>15) and (a<=31) then
           list.concat(taicpu.op_reg_reg_const_const(A_EXTUI,dst,src,a,32-a))
+        else if (op=OP_AND) and (63-BsrQWord(a)+PopCnt(QWord(a))=64) and (PopCnt(QWord(a))<=16) then
+          list.concat(taicpu.op_reg_reg_const_const(A_EXTUI,dst,src,0,PopCnt(QWord(a))))
         else
           begin
             tmpreg:=getintregister(list,size);