亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? out-sparc.c

?? 這是完整的gcc源代碼
?? C
?? 第 1 頁 / 共 4 頁
字號:
      if (lucky2)	{	  if (REGNO (operands[1]) == REGNO (operands[2]))	    {	      if (REGNO (operands[1]) == 8)		output_asm_insn ("mov %%o0,%%o1");	      else		output_asm_insn ("mov %%o1,%%o0");	    }	  output_asm_insn ("call .mul,2\n\tnop", operands);	}      else	{	  rtx xoperands[2];	  xoperands[0] = gen_rtx (REG, SImode,				  8 ^ (REGNO (operands[1]) == 8));	  xoperands[1] = operands[2];	  output_asm_insn ("call .mul,2\n\tmov %1,%0", xoperands);	}    }  else if (lucky2)    {      rtx xoperands[2];      xoperands[0] = gen_rtx (REG, SImode,			      8 ^ (REGNO (operands[2]) == 8));      xoperands[1] = operands[1];      output_asm_insn ("call .mul,2\n\tmov %1,%0", xoperands);    }  else    {      output_asm_insn ("mov %1,%%o0\n\tcall .mul,2\n\tmov %2,%%o1",		       operands);    }  if (REGNO (operands[0]) == 8)    return "";  return "mov %%o0,%0";}/* Make floating point register f0 contain 0.   SIZE is the number of registers (including f0)   which should contain 0.  */voidmake_f0_contain_0 (size)     int size;{  if (size == 1)    {      if ((cc_status.flags & (CC_F0_IS_0)) == 0)	output_asm_insn ("ld [%%fp-16],%%f0", 0);      cc_status.flags |= CC_F0_IS_0;    }  else if (size == 2)    {      if ((cc_status.flags & CC_F0_IS_0) == 0)	output_asm_insn ("ld [%%fp-16],%%f0", 0);      if ((cc_status.flags & (CC_F1_IS_0)) == 0)	output_asm_insn ("ld [%%fp-12],%%f1", 0);      cc_status.flags |= CC_F0_IS_0 | CC_F1_IS_0;    }}/* Since condition codes don't have logical links, we need to keep   their setting and use together for set-cc insns.  */voidgen_scc_insn (code, mode, operands)     enum rtx_code code;     enum machine_mode mode;     rtx *operands;{  extern rtx sequence_stack;  rtx last_insn = XEXP (XEXP (sequence_stack, 1), 0);  rtx last_pat;  /* Skip back over the CLOBBERs that may precede this insn.  */  while (last_insn && GET_CODE (last_insn) == INSN	 && GET_CODE (PATTERN (last_insn)) == CLOBBER)    last_insn = PREV_INSN (last_insn);  /* We should have found the preceding compare.  */  if (last_insn == 0 || GET_CODE (last_insn) != INSN)    abort ();  last_pat = PATTERN (last_insn);  if (GET_CODE (last_pat) != SET      || GET_CODE (SET_DEST (last_pat)) != CC0)    abort ();  /* Turn off that previous insn, now that we have got the data out of it.  */  PUT_CODE (last_insn, NOTE);  NOTE_LINE_NUMBER (last_insn) = NOTE_INSN_DELETED;  /* Emit one replacement insn to compare operands and store result.  */  emit_insn (gen_rtx (SET, VOIDmode, operands[0],		      gen_rtx (code, mode, SET_SRC (last_pat), const0_rtx)));}/* Output reasonable peephole for set-on-condition-code insns.   Note that these insns assume a particular way of defining   labels.  Therefore, *both* tm-sparc.h and this function must   be changed if a new syntax is needed.  */char *output_scc_insn (code, operand)     enum rtx_code code;     rtx operand;{  rtx xoperands[2];  rtx label = gen_label_rtx ();  int cc_in_fccr = cc_status.flags & CC_IN_FCCR;  int antisymmetric = 0;  xoperands[0] = operand;  xoperands[1] = label;  switch (code)    {    case NE:      if (cc_in_fccr)	output_asm_insn ("fbne,a %l0", &label);      else	output_asm_insn ("bne,a %l0", &label);      break;    case EQ:      if (cc_in_fccr)	output_asm_insn ("fbe,a %l0", &label);      else	output_asm_insn ("be,a %l0", &label);      break;    case GE:      if (cc_in_fccr)	output_asm_insn ("fbge,a %l0", &label);      else	output_asm_insn ("bge,a %l0", &label);      antisymmetric = 1;      break;    case GT:      if (cc_in_fccr)	output_asm_insn ("fbg,a %l0", &label);      else	output_asm_insn ("bg,a %l0", &label);      antisymmetric = 1;      break;    case LE:      if (cc_in_fccr)	output_asm_insn ("fble,a %l0", &label);      else	output_asm_insn ("ble,a %l0", &label);      antisymmetric = 1;      break;    case LT:      if (cc_in_fccr)	output_asm_insn ("fbl,a %l0", &label);      else	output_asm_insn ("bl,a %l0", &label);      antisymmetric = 1;      break;    case GEU:      if (cc_in_fccr)	abort ();      else	output_asm_insn ("bgeu,a %l0", &label);      antisymmetric = 1;      break;    case GTU:      if (cc_in_fccr)	abort ();      else	output_asm_insn ("bgu,a %l0", &label);      antisymmetric = 1;      break;    case LEU:      if (cc_in_fccr)	abort ();      else	output_asm_insn ("bleu,a %l0", &label);      antisymmetric = 1;      break;    case LTU:      if (cc_in_fccr)	abort ();      else	output_asm_insn ("blu,a %l0", &label);      antisymmetric = 1;      break;    default:      abort ();    }  if (antisymmetric      && (cc_status.flags & CC_REVERSED))    output_asm_insn ("orcc %%g0,0,%0\n\torcc %%g0,1,%0\n%l1:", xoperands);  else    output_asm_insn ("orcc %%g0,1,%0\n\torcc %%g0,0,%0\n%l1:", xoperands);  cc_status.flags &= ~CC_IN_FCCR;  return "";}/* Output a delayed branch insn with the delay insn in its   branch slot.  The delayed branch insn template is in TEMPLATE,   with operands OPERANDS.  The insn in its delay slot is INSN.   As a special case, since we know that all memory transfers are via   ld/st insns, if we see a (MEM (SYMBOL_REF ...)) we divide the memory   reference around the branch as	sethi %hi(x),%%g1	b ...	ld/st [%g1+%lo(x)],...   As another special case, we handle loading (SYMBOL_REF ...) and   other large constants around branches as well:	sethi %hi(x),%0	b ...	or %0,%lo(x),%1   */char *output_delayed_branch (template, operands, insn)     char *template;     rtx *operands;     rtx insn;{  extern rtx recog_operand[];  rtx src = XVECEXP (PATTERN (insn), 0, 1);  rtx dest = XVECEXP (PATTERN (insn), 0, 0);  if (GET_CODE (src) == SYMBOL_REF      || (GET_CODE (src) == CONST_INT	  && !(SMALL_INT (src) || (INTVAL (src) & 0x3ff) == 0)))    {      rtx xoperands[2];      xoperands[0] = dest;      xoperands[1] = src;      /* Output the `sethi' insn.  */      output_asm_insn ("sethi %%hi(%1),%0", xoperands);      /* Output the branch instruction next.  */      output_asm_insn (template, operands);      /* Now output the `or' insn.  */      output_asm_insn ("or %0,%%lo(%1),%0", xoperands);    }  else if ((GET_CODE (src) == MEM	    && CONSTANT_ADDRESS_P (XEXP (src, 0)))	   || (GET_CODE (dest) == MEM	       && CONSTANT_ADDRESS_P (XEXP (dest, 0))))    {      rtx xoperands[2];      char *split_template;      xoperands[0] = dest;      xoperands[1] = src;      /* Output the `sethi' insn.  */      if (GET_CODE (src) == MEM)	{	  if (! ((cc_prev_status.flags & CC_KNOW_HI_G1)		 && cc_prev_status.mdep == XEXP (operands[1], 0)))	    output_asm_insn ("sethi %%hi(%m1),%%g1", xoperands);	  split_template = "ld [%%g1+%%lo(%m1)],%0";	}      else	{	  if (! ((cc_prev_status.flags & CC_KNOW_HI_G1)		 && cc_prev_status.mdep == XEXP (operands[0], 0)))	    output_asm_insn ("sethi %%hi(%m0),%%g1", xoperands);	  split_template = "st %r1,[%%g1+%%lo(%m0)]";	}      /* Output the branch instruction next.  */      output_asm_insn (template, operands);      /* Now output the load or store.	 No need to do a CC_STATUS_INIT, because we are branching anyway.  */      output_asm_insn (split_template, xoperands);    }  else    {      extern char *insn_template[];      extern char *(*insn_outfun[])();      int insn_code_number;      rtx pat = gen_rtx (SET, VOIDmode, dest, src);      rtx delay_insn = gen_rtx (INSN, VOIDmode, 0, 0, 0, pat, -1, 0, 0);      int i;      extern rtx alter_subreg();      extern int insn_n_operands[];      /* Output the branch instruction first.  */      output_asm_insn (template, operands);      /* Now recognize the insn which we put in its delay slot.	 We must do this after outputing the branch insn,	 since operands may just be a pointer to `recog_operand'.  */      insn_code_number = recog (pat, delay_insn);      if (insn_code_number == -1)	abort ();      for (i = 0; i < insn_n_operands[insn_code_number]; i++)	{	  if (GET_CODE (recog_operand[i]) == SUBREG)	    recog_operand[i] = alter_subreg (recog_operand[i]);	}      /* Now get the template for what this insn would	 have been, without the branch.  Its operands are	 exactly the same as they would be, so we don't	 need to do an insn_extract.  */      template = insn_template[insn_code_number];      if (template == 0)	template = (*insn_outfun[insn_code_number]) (recog_operand, delay_insn);      output_asm_insn (template, recog_operand);    }  CC_STATUS_INIT;  return "";}/* Output a newly constructed insn DELAY_INSN.  */char *output_delay_insn (delay_insn)     rtx delay_insn;{  char *template;  extern rtx recog_operand[];  extern char call_used_regs[];  extern char *insn_template[];  extern int insn_n_operands[];  extern char *(*insn_outfun[])();  extern rtx alter_subreg();  int insn_code_number;  extern int insn_n_operands[];  int i;  /* Now recognize the insn which we put in its delay slot.     We must do this after outputing the branch insn,     since operands may just be a pointer to `recog_operand'.  */  insn_code_number = recog_memoized (delay_insn);  if (insn_code_number == -1)    abort ();  /* Extract the operands of this delay insn.  */  INSN_CODE (delay_insn) = insn_code_number;  insn_extract (delay_insn);  /* It is possible that this insn has not been properly scaned by final     yet.  If this insn's operands don't appear in the peephole's     actual operands, then they won't be fixed up by final, so we     make sure they get fixed up here.  -- This is a kludge.  */  for (i = 0; i < insn_n_operands[insn_code_number]; i++)    {      if (GET_CODE (recog_operand[i]) == SUBREG)	recog_operand[i] = alter_subreg (recog_operand[i]);    }#ifdef REGISTER_CONSTRAINTS  if (! constrain_operands (insn_code_number))    abort ();#endif  cc_prev_status = cc_status;  /* Update `cc_status' for this instruction.     The instruction's output routine may change it further.     If the output routine for a jump insn needs to depend     on the cc status, it should look at cc_prev_status.  */  NOTICE_UPDATE_CC (PATTERN (delay_insn), delay_insn);  /* Now get the template for what this insn would     have been, without the branch.  */  template = insn_template[insn_code_number];  if (template == 0)    template = (*insn_outfun[insn_code_number]) (recog_operand, delay_insn);  output_asm_insn (template, recog_operand);  return "";}/* Output the insn HEAD, keeping OPERANDS protected (wherever they are).   HEAD comes from the target of some branch, so before we output it,   we delete it from the target, lest we execute it twice.  The caller   of this function promises that such code motion is permissable.  */char *output_eager_then_insn (head, operands)     rtx head;     rtx *operands;{  extern rtx alter_subreg ();  extern int insn_n_operands[];  extern rtx recog_operand[];  rtx xoperands[MAX_RECOG_OPERANDS];  int insn_code_number, i, nbytes;  rtx nhead;  /* Micro-hack: run peephole on head if it looks like a good idea.     Right now there's only one such case worth doing...     This could be made smarter if the peephole for ``2-insn combine''     were also made smarter.  */  if (GET_CODE (PATTERN (head)) == SET      && REG_P (SET_SRC (PATTERN (head)))      && REG_P (SET_DEST (PATTERN (head)))      && (nhead = next_real_insn_no_labels (head))      && GET_CODE (nhead) == INSN      && GET_CODE (PATTERN (nhead)) == SET      && GET_CODE (SET_DEST (PATTERN (nhead))) == CC0      && (SET_SRC (PATTERN (nhead)) == SET_SRC (PATTERN (head))	  || SET_SRC (PATTERN (nhead)) == SET_DEST (PATTERN (head))))    /* Something's wrong if this does not fly.  */    if (! peephole (head))      abort ();  /* Save our contents of `operands', since output_delay_insn sets them.  */  insn_code_number = recog_memoized (head);  nbytes = insn_n_operands[insn_code_number] * sizeof (rtx);  bcopy (operands, xoperands, nbytes);  /* Output the delay insn, and prevent duplication later.  */  delete_insn (head);  output_delay_insn (head);  /* Restore this insn's operands.  */  bcopy (xoperands, operands, nbytes);}/* Return the next INSN, CALL_INSN or JUMP_INSN after LABEL;   or 0, if there is none.  Also return 0 if we cross a label.  */rtxnext_real_insn_no_labels (label)     rtx label;{  register rtx insn = NEXT_INSN (label);  register RTX_CODE code;  while (insn)    {      code = GET_CODE (insn);      if (code == INSN)	{	  if (GET_CODE (PATTERN (insn)) != CLOBBER	      && GET_CODE (PATTERN (insn)) != USE)	    return insn;	}      if (code == CALL_INSN || code == JUMP_INSN)	return insn;      if (code == CODE_LABEL)	return 0;      insn = NEXT_INSN (insn);    }  return 0;}intoperands_satisfy_eager_branch_peephole (operands, conditional)     rtx *operands;     int conditional;{  rtx label;  if (conditional)    {      if (GET_CODE (operands[0]) != IF_THEN_ELSE)	return 0;      if (GET_CODE (XEXP (operands[0], 1)) == LABEL_REF)	label = XEXP (XEXP (operands[0], 1), 0);      else if (GET_CODE (XEXP (operands[0], 2)) == LABEL_REF)	label = XEXP (XEXP (operands[0], 2), 0);      else return 0;    }  else    {      label = operands[0];    }  if (LABEL_NUSES (label) == 1)    {      rtx prev = PREV_INSN (label);      while (prev && GET_CODE (prev) == NOTE)	prev = PREV_INSN (prev);      if (prev == 0	  || GET_CODE (prev) == BARRIER)	{	  rtx head = next_real_insn_no_labels (label);	  if (head	      && ! INSN_DELETED_P (head)	      && GET_CODE (head) == INSN	      && GET_CODE (PATTERN (head)) == SET	      && strict_single_insn_op_p (SET_SRC (PATTERN (head)),					  GET_MODE (SET_DEST (PATTERN (head))))	      && strict_single_insn_op_p (SET_DEST (PATTERN (head)),					  GET_MODE (SET_DEST (PATTERN (head))))	      /* Moves between FP regs and CPU regs are two insns.  */	      && !(GET_CODE (SET_SRC (PATTERN (head))) == REG		   && GET_CODE (SET_DEST (PATTERN (head))) == REG		   && (FP_REG_P (SET_SRC (PATTERN (head)))		       != FP_REG_P (SET_DEST (PATTERN (head))))))	    {	      if (conditional == 2)		return (GET_CODE (operands[1]) != PC			&& safe_insn_src_p (operands[2], VOIDmode)			&& strict_single_insn_op_p (operands[2], VOIDmode)			&& operand_clobbered_before_used_after (operands[1], label));	      return 1;	    }	}    }  if (conditional == 1      && GET_CODE (operands[1]) != PC      && safe_insn_src_p (operands[2], VOIDmode)      && strict_single_insn_op_p (operands[2], VOIDmode)      && operand_clobbered_before_used_after (operands[1], label))    return 1;  return 0;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
视频一区视频二区中文字幕| 亚洲精品日韩综合观看成人91| 色综合中文字幕| 青青草国产成人av片免费| 国产精品少妇自拍| 日韩午夜激情电影| 日本韩国欧美三级| 国产a级毛片一区| 蜜臀av性久久久久蜜臀aⅴ四虎| 亚洲欧洲www| 日韩午夜电影在线观看| 色老头久久综合| 成人动漫视频在线| 久久99国产精品久久| 亚洲国产精品一区二区久久 | 国产精品一区二区男女羞羞无遮挡 | 一本大道久久a久久综合| 久久精品国产一区二区三区免费看| 国产真实精品久久二三区| 亚洲欧美aⅴ...| 中文字幕亚洲综合久久菠萝蜜| 欧美成人精品1314www| 欧美日韩国产欧美日美国产精品| 暴力调教一区二区三区| 国产精品1区二区.| 强制捆绑调教一区二区| 日韩精品三区四区| 一区二区三区精品| 国产精品全国免费观看高清 | 国产人妖乱国产精品人妖| 欧美中文字幕一区二区三区亚洲| 91在线一区二区| 懂色av一区二区三区免费看| 久久国产福利国产秒拍| 麻豆精品视频在线| 久久99久久久久久久久久久| 视频一区视频二区在线观看| 亚洲一区二区三区免费视频| 亚洲女同一区二区| 成人欧美一区二区三区视频网页 | 欧美色图天堂网| 91免费小视频| aaa亚洲精品一二三区| 成人不卡免费av| 成人h精品动漫一区二区三区| 成人激情综合网站| eeuss鲁片一区二区三区在线观看 eeuss鲁片一区二区三区在线看 | 日韩激情一二三区| 日韩电影在线免费观看| 日韩中文欧美在线| 激情综合网天天干| 国产乱国产乱300精品| 国产寡妇亲子伦一区二区| 国产盗摄精品一区二区三区在线 | 九九精品视频在线看| 久久er精品视频| 国产黄色91视频| caoporn国产一区二区| 日本丰满少妇一区二区三区| 欧美视频一区二区三区| 777久久久精品| 日韩欧美亚洲一区二区| 欧美激情资源网| 亚洲欧美色图小说| 午夜视频在线观看一区| 美女网站一区二区| 国产精品一线二线三线| 波多野结衣91| 欧美精品久久99| 久久综合99re88久久爱| 国产免费成人在线视频| 一区二区三区四区国产精品| 三级精品在线观看| 激情综合色播五月| 成人av在线一区二区三区| 在线观看欧美精品| 日韩女优av电影在线观看| 欧美韩日一区二区三区| 亚洲综合色在线| 精品中文字幕一区二区小辣椒| av一区二区三区在线| 欧美日韩中文精品| 久久久久久久久久久久久夜| 一区二区三区视频在线看| 麻豆一区二区三| 94色蜜桃网一区二区三区| 欧美v亚洲v综合ⅴ国产v| 亚洲人成电影网站色mp4| 奇米色一区二区三区四区| 99久久精品免费观看| 欧美一级片在线看| 亚洲欧美日韩中文字幕一区二区三区 | 日韩一区二区三区视频| 国产精品高潮呻吟久久| 日韩黄色在线观看| 99久久精品免费看国产免费软件| 欧美一区二区在线免费观看| 中文字幕亚洲视频| 美女网站色91| 欧美日韩国产一二三| 国产精品每日更新在线播放网址| 日本美女视频一区二区| 91香蕉视频在线| 久久久久高清精品| 免费av网站大全久久| 一本到高清视频免费精品| 久久午夜羞羞影院免费观看| 香蕉久久夜色精品国产使用方法 | 日本欧美在线观看| 一本色道久久综合精品竹菊| 国产欧美日韩三区| 麻豆国产欧美日韩综合精品二区 | 色偷偷成人一区二区三区91| 国产亚洲va综合人人澡精品| 奇米色一区二区三区四区| 99久久精品情趣| 国产欧美一区二区三区网站| 日本最新不卡在线| 欧美日韩黄色一区二区| 一区二区国产视频| 91在线视频18| 国产精品剧情在线亚洲| 国产一区二区不卡在线| 欧美xfplay| 久久精品国产一区二区| 日韩美女一区二区三区四区| 偷拍与自拍一区| 在线视频国内自拍亚洲视频| 亚洲欧洲av色图| 99精品黄色片免费大全| 精品入口麻豆88视频| 久久精品噜噜噜成人88aⅴ| 欧美一区二区三区四区五区| 五月天中文字幕一区二区| 在线观看免费视频综合| 亚洲精品免费在线播放| 91美女片黄在线观看91美女| 国产精品第13页| 91伊人久久大香线蕉| 亚洲视频在线一区观看| 91浏览器入口在线观看| 亚洲免费观看高清完整版在线观看 | 一区二区三区色| 丰满白嫩尤物一区二区| 欧美国产综合色视频| 国产黄色91视频| 中文字幕亚洲欧美在线不卡| 91免费国产视频网站| 亚洲免费在线播放| 欧美日韩一级二级| 丝袜美腿亚洲一区| 欧美一区二区三区啪啪| 国模一区二区三区白浆| 国产欧美一区二区精品性| 成人一级视频在线观看| 成人免费小视频| 色94色欧美sute亚洲线路二| 亚洲一区二区不卡免费| 91精品国产综合久久香蕉的特点| 欧美亚洲另类激情小说| 性感美女极品91精品| 日韩欧美一区二区视频| 国产精品资源网| 亚洲素人一区二区| 7777精品伊人久久久大香线蕉最新版| 蜜臀av国产精品久久久久| 国产精品理伦片| 成人高清免费观看| 亚洲精品欧美综合四区| 日韩三级电影网址| 丁香激情综合五月| 亚洲高清不卡在线| 久久男人中文字幕资源站| 91麻豆自制传媒国产之光| 亚洲高清视频中文字幕| 欧美精品一区二| 色综合一个色综合亚洲| 秋霞影院一区二区| 国产精品美女久久久久久2018| 欧美色大人视频| 国产精品一区二区久久不卡| 亚洲理论在线观看| 2021国产精品久久精品| 在线一区二区三区四区五区| 精品亚洲成a人| 亚洲综合在线五月| 精品99一区二区三区| 色呦呦国产精品| 国内精品写真在线观看| 亚洲资源中文字幕| 中文字幕欧美日本乱码一线二线| 欧美优质美女网站| 成人丝袜视频网| 人人超碰91尤物精品国产| 亚洲视频中文字幕| 国产日产精品1区| 日韩天堂在线观看| 中文字幕av一区二区三区| 91啪在线观看| 成人综合婷婷国产精品久久|