src/cpu/sparc/vm/sparc.ad
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File 6909839 Sdiff src/cpu/sparc/vm

src/cpu/sparc/vm/sparc.ad

Print this page




6651 %}
6652 
6653 instruct cmovII_reg(cmpOp cmp, flagsReg icc, iRegI dst, iRegI src) %{
6654   match(Set dst (CMoveI (Binary cmp icc) (Binary dst src)));
6655   ins_cost(150);
6656   size(4);
6657   format %{ "MOV$cmp  $icc,$src,$dst" %}
6658   ins_encode( enc_cmov_reg(cmp,dst,src, (Assembler::icc)) );
6659   ins_pipe(ialu_reg);
6660 %}
6661 
6662 instruct cmovII_imm(cmpOp cmp, flagsReg icc, iRegI dst, immI11 src) %{
6663   match(Set dst (CMoveI (Binary cmp icc) (Binary dst src)));
6664   ins_cost(140);
6665   size(4);
6666   format %{ "MOV$cmp  $icc,$src,$dst" %}
6667   ins_encode( enc_cmov_imm(cmp,dst,src, (Assembler::icc)) );
6668   ins_pipe(ialu_imm);
6669 %}
6670 
6671 instruct cmovII_U_reg(cmpOpU cmp, flagsRegU icc, iRegI dst, iRegI src) %{
6672   match(Set dst (CMoveI (Binary cmp icc) (Binary dst src)));
6673   ins_cost(150);
6674   size(4);
6675   format %{ "MOV$cmp  $icc,$src,$dst" %}
6676   ins_encode( enc_cmov_reg(cmp,dst,src, (Assembler::icc)) );
6677   ins_pipe(ialu_reg);
6678 %}
6679 
6680 instruct cmovII_U_imm(cmpOpU cmp, flagsRegU icc, iRegI dst, immI11 src) %{
6681   match(Set dst (CMoveI (Binary cmp icc) (Binary dst src)));
6682   ins_cost(140);
6683   size(4);
6684   format %{ "MOV$cmp  $icc,$src,$dst" %}
6685   ins_encode( enc_cmov_imm(cmp,dst,src, (Assembler::icc)) );
6686   ins_pipe(ialu_imm);
6687 %}
6688 
6689 instruct cmovIF_reg(cmpOpF cmp, flagsRegF fcc, iRegI dst, iRegI src) %{
6690   match(Set dst (CMoveI (Binary cmp fcc) (Binary dst src)));
6691   ins_cost(150);
6692   size(4);
6693   format %{ "MOV$cmp $fcc,$src,$dst" %}
6694   ins_encode( enc_cmov_reg_f(cmp,dst,src, fcc) );
6695   ins_pipe(ialu_reg);
6696 %}
6697 
6698 instruct cmovIF_imm(cmpOpF cmp, flagsRegF fcc, iRegI dst, immI11 src) %{
6699   match(Set dst (CMoveI (Binary cmp fcc) (Binary dst src)));
6700   ins_cost(140);


6706 
6707 // Conditional move for RegN. Only cmov(reg,reg).
6708 instruct cmovNP_reg(cmpOpP cmp, flagsRegP pcc, iRegN dst, iRegN src) %{
6709   match(Set dst (CMoveN (Binary cmp pcc) (Binary dst src)));
6710   ins_cost(150);
6711   format %{ "MOV$cmp $pcc,$src,$dst" %}
6712   ins_encode( enc_cmov_reg(cmp,dst,src, (Assembler::ptr_cc)) );
6713   ins_pipe(ialu_reg);
6714 %}
6715 
6716 // This instruction also works with CmpN so we don't need cmovNN_reg.
6717 instruct cmovNI_reg(cmpOp cmp, flagsReg icc, iRegN dst, iRegN src) %{
6718   match(Set dst (CMoveN (Binary cmp icc) (Binary dst src)));
6719   ins_cost(150);
6720   size(4);
6721   format %{ "MOV$cmp  $icc,$src,$dst" %}
6722   ins_encode( enc_cmov_reg(cmp,dst,src, (Assembler::icc)) );
6723   ins_pipe(ialu_reg);
6724 %}
6725 










6726 instruct cmovNF_reg(cmpOpF cmp, flagsRegF fcc, iRegN dst, iRegN src) %{
6727   match(Set dst (CMoveN (Binary cmp fcc) (Binary dst src)));
6728   ins_cost(150);
6729   size(4);
6730   format %{ "MOV$cmp $fcc,$src,$dst" %}
6731   ins_encode( enc_cmov_reg_f(cmp,dst,src, fcc) );
6732   ins_pipe(ialu_reg);
6733 %}
6734 
6735 // Conditional move
6736 instruct cmovPP_reg(cmpOpP cmp, flagsRegP pcc, iRegP dst, iRegP src) %{
6737   match(Set dst (CMoveP (Binary cmp pcc) (Binary dst src)));
6738   ins_cost(150);
6739   format %{ "MOV$cmp $pcc,$src,$dst\t! ptr" %}
6740   ins_encode( enc_cmov_reg(cmp,dst,src, (Assembler::ptr_cc)) );
6741   ins_pipe(ialu_reg);
6742 %}
6743 
6744 instruct cmovPP_imm(cmpOpP cmp, flagsRegP pcc, iRegP dst, immP0 src) %{
6745   match(Set dst (CMoveP (Binary cmp pcc) (Binary dst src)));
6746   ins_cost(140);
6747   format %{ "MOV$cmp $pcc,$src,$dst\t! ptr" %}
6748   ins_encode( enc_cmov_imm(cmp,dst,src, (Assembler::ptr_cc)) );
6749   ins_pipe(ialu_imm);
6750 %}
6751 
6752 // This instruction also works with CmpN so we don't need cmovPN_reg.
6753 instruct cmovPI_reg(cmpOp cmp, flagsReg icc, iRegP dst, iRegP src) %{
6754   match(Set dst (CMoveP (Binary cmp icc) (Binary dst src)));
6755   ins_cost(150);
6756 
6757   size(4);
6758   format %{ "MOV$cmp  $icc,$src,$dst\t! ptr" %}
6759   ins_encode( enc_cmov_reg(cmp,dst,src, (Assembler::icc)) );
6760   ins_pipe(ialu_reg);
6761 %}
6762 










6763 instruct cmovPI_imm(cmpOp cmp, flagsReg icc, iRegP dst, immP0 src) %{
6764   match(Set dst (CMoveP (Binary cmp icc) (Binary dst src)));
6765   ins_cost(140);
6766 
6767   size(4);
6768   format %{ "MOV$cmp  $icc,$src,$dst\t! ptr" %}
6769   ins_encode( enc_cmov_imm(cmp,dst,src, (Assembler::icc)) );
6770   ins_pipe(ialu_imm);
6771 %}
6772 










6773 instruct cmovPF_reg(cmpOpF cmp, flagsRegF fcc, iRegP dst, iRegP src) %{
6774   match(Set dst (CMoveP (Binary cmp fcc) (Binary dst src)));
6775   ins_cost(150);
6776   size(4);
6777   format %{ "MOV$cmp $fcc,$src,$dst" %}
6778   ins_encode( enc_cmov_reg_f(cmp,dst,src, fcc) );
6779   ins_pipe(ialu_imm);
6780 %}
6781 
6782 instruct cmovPF_imm(cmpOpF cmp, flagsRegF fcc, iRegP dst, immP0 src) %{
6783   match(Set dst (CMoveP (Binary cmp fcc) (Binary dst src)));
6784   ins_cost(140);
6785   size(4);
6786   format %{ "MOV$cmp $fcc,$src,$dst" %}
6787   ins_encode( enc_cmov_imm_f(cmp,dst,src, fcc) );
6788   ins_pipe(ialu_imm);
6789 %}
6790 
6791 // Conditional move
6792 instruct cmovFP_reg(cmpOpP cmp, flagsRegP pcc, regF dst, regF src) %{
6793   match(Set dst (CMoveF (Binary cmp pcc) (Binary dst src)));
6794   ins_cost(150);
6795   opcode(0x101);
6796   format %{ "FMOVD$cmp $pcc,$src,$dst" %}
6797   ins_encode( enc_cmovf_reg(cmp,dst,src, (Assembler::ptr_cc)) );
6798   ins_pipe(int_conditional_float_move);
6799 %}
6800 
6801 instruct cmovFI_reg(cmpOp cmp, flagsReg icc, regF dst, regF src) %{
6802   match(Set dst (CMoveF (Binary cmp icc) (Binary dst src)));
6803   ins_cost(150);
6804 
6805   size(4);
6806   format %{ "FMOVS$cmp $icc,$src,$dst" %}
6807   opcode(0x101);
6808   ins_encode( enc_cmovf_reg(cmp,dst,src, (Assembler::icc)) );
6809   ins_pipe(int_conditional_float_move);
6810 %}
6811 











6812 // Conditional move,
6813 instruct cmovFF_reg(cmpOpF cmp, flagsRegF fcc, regF dst, regF src) %{
6814   match(Set dst (CMoveF (Binary cmp fcc) (Binary dst src)));
6815   ins_cost(150);
6816   size(4);
6817   format %{ "FMOVF$cmp $fcc,$src,$dst" %}
6818   opcode(0x1);
6819   ins_encode( enc_cmovff_reg(cmp,fcc,dst,src) );
6820   ins_pipe(int_conditional_double_move);
6821 %}
6822 
6823 // Conditional move
6824 instruct cmovDP_reg(cmpOpP cmp, flagsRegP pcc, regD dst, regD src) %{
6825   match(Set dst (CMoveD (Binary cmp pcc) (Binary dst src)));
6826   ins_cost(150);
6827   size(4);
6828   opcode(0x102);
6829   format %{ "FMOVD$cmp $pcc,$src,$dst" %}
6830   ins_encode( enc_cmovf_reg(cmp,dst,src, (Assembler::ptr_cc)) );
6831   ins_pipe(int_conditional_double_move);
6832 %}
6833 
6834 instruct cmovDI_reg(cmpOp cmp, flagsReg icc, regD dst, regD src) %{
6835   match(Set dst (CMoveD (Binary cmp icc) (Binary dst src)));
6836   ins_cost(150);
6837 
6838   size(4);
6839   format %{ "FMOVD$cmp $icc,$src,$dst" %}
6840   opcode(0x102);
6841   ins_encode( enc_cmovf_reg(cmp,dst,src, (Assembler::icc)) );
6842   ins_pipe(int_conditional_double_move);
6843 %}
6844 











6845 // Conditional move,
6846 instruct cmovDF_reg(cmpOpF cmp, flagsRegF fcc, regD dst, regD src) %{
6847   match(Set dst (CMoveD (Binary cmp fcc) (Binary dst src)));
6848   ins_cost(150);
6849   size(4);
6850   format %{ "FMOVD$cmp $fcc,$src,$dst" %}
6851   opcode(0x2);
6852   ins_encode( enc_cmovff_reg(cmp,fcc,dst,src) );
6853   ins_pipe(int_conditional_double_move);
6854 %}
6855 
6856 // Conditional move
6857 instruct cmovLP_reg(cmpOpP cmp, flagsRegP pcc, iRegL dst, iRegL src) %{
6858   match(Set dst (CMoveL (Binary cmp pcc) (Binary dst src)));
6859   ins_cost(150);
6860   format %{ "MOV$cmp $pcc,$src,$dst\t! long" %}
6861   ins_encode( enc_cmov_reg(cmp,dst,src, (Assembler::ptr_cc)) );
6862   ins_pipe(ialu_reg);
6863 %}
6864 
6865 instruct cmovLP_imm(cmpOpP cmp, flagsRegP pcc, iRegL dst, immI11 src) %{
6866   match(Set dst (CMoveL (Binary cmp pcc) (Binary dst src)));
6867   ins_cost(140);
6868   format %{ "MOV$cmp $pcc,$src,$dst\t! long" %}
6869   ins_encode( enc_cmov_imm(cmp,dst,src, (Assembler::ptr_cc)) );
6870   ins_pipe(ialu_imm);
6871 %}
6872 
6873 instruct cmovLI_reg(cmpOp cmp, flagsReg icc, iRegL dst, iRegL src) %{
6874   match(Set dst (CMoveL (Binary cmp icc) (Binary dst src)));
6875   ins_cost(150);











6876 
6877   size(4);
6878   format %{ "MOV$cmp  $icc,$src,$dst\t! long" %}
6879   ins_encode( enc_cmov_reg(cmp,dst,src, (Assembler::icc)) );
6880   ins_pipe(ialu_reg);
6881 %}
6882 
6883 
6884 instruct cmovLF_reg(cmpOpF cmp, flagsRegF fcc, iRegL dst, iRegL src) %{
6885   match(Set dst (CMoveL (Binary cmp fcc) (Binary dst src)));
6886   ins_cost(150);
6887 
6888   size(4);
6889   format %{ "MOV$cmp  $fcc,$src,$dst\t! long" %}
6890   ins_encode( enc_cmov_reg_f(cmp,dst,src, fcc) );
6891   ins_pipe(ialu_reg);
6892 %}
6893 
6894 
6895 




6651 %}
6652 
6653 instruct cmovII_reg(cmpOp cmp, flagsReg icc, iRegI dst, iRegI src) %{
6654   match(Set dst (CMoveI (Binary cmp icc) (Binary dst src)));
6655   ins_cost(150);
6656   size(4);
6657   format %{ "MOV$cmp  $icc,$src,$dst" %}
6658   ins_encode( enc_cmov_reg(cmp,dst,src, (Assembler::icc)) );
6659   ins_pipe(ialu_reg);
6660 %}
6661 
6662 instruct cmovII_imm(cmpOp cmp, flagsReg icc, iRegI dst, immI11 src) %{
6663   match(Set dst (CMoveI (Binary cmp icc) (Binary dst src)));
6664   ins_cost(140);
6665   size(4);
6666   format %{ "MOV$cmp  $icc,$src,$dst" %}
6667   ins_encode( enc_cmov_imm(cmp,dst,src, (Assembler::icc)) );
6668   ins_pipe(ialu_imm);
6669 %}
6670 
6671 instruct cmovIIu_reg(cmpOpU cmp, flagsRegU icc, iRegI dst, iRegI src) %{
6672   match(Set dst (CMoveI (Binary cmp icc) (Binary dst src)));
6673   ins_cost(150);
6674   size(4);
6675   format %{ "MOV$cmp  $icc,$src,$dst" %}
6676   ins_encode( enc_cmov_reg(cmp,dst,src, (Assembler::icc)) );
6677   ins_pipe(ialu_reg);
6678 %}
6679 
6680 instruct cmovIIu_imm(cmpOpU cmp, flagsRegU icc, iRegI dst, immI11 src) %{
6681   match(Set dst (CMoveI (Binary cmp icc) (Binary dst src)));
6682   ins_cost(140);
6683   size(4);
6684   format %{ "MOV$cmp  $icc,$src,$dst" %}
6685   ins_encode( enc_cmov_imm(cmp,dst,src, (Assembler::icc)) );
6686   ins_pipe(ialu_imm);
6687 %}
6688 
6689 instruct cmovIF_reg(cmpOpF cmp, flagsRegF fcc, iRegI dst, iRegI src) %{
6690   match(Set dst (CMoveI (Binary cmp fcc) (Binary dst src)));
6691   ins_cost(150);
6692   size(4);
6693   format %{ "MOV$cmp $fcc,$src,$dst" %}
6694   ins_encode( enc_cmov_reg_f(cmp,dst,src, fcc) );
6695   ins_pipe(ialu_reg);
6696 %}
6697 
6698 instruct cmovIF_imm(cmpOpF cmp, flagsRegF fcc, iRegI dst, immI11 src) %{
6699   match(Set dst (CMoveI (Binary cmp fcc) (Binary dst src)));
6700   ins_cost(140);


6706 
6707 // Conditional move for RegN. Only cmov(reg,reg).
6708 instruct cmovNP_reg(cmpOpP cmp, flagsRegP pcc, iRegN dst, iRegN src) %{
6709   match(Set dst (CMoveN (Binary cmp pcc) (Binary dst src)));
6710   ins_cost(150);
6711   format %{ "MOV$cmp $pcc,$src,$dst" %}
6712   ins_encode( enc_cmov_reg(cmp,dst,src, (Assembler::ptr_cc)) );
6713   ins_pipe(ialu_reg);
6714 %}
6715 
6716 // This instruction also works with CmpN so we don't need cmovNN_reg.
6717 instruct cmovNI_reg(cmpOp cmp, flagsReg icc, iRegN dst, iRegN src) %{
6718   match(Set dst (CMoveN (Binary cmp icc) (Binary dst src)));
6719   ins_cost(150);
6720   size(4);
6721   format %{ "MOV$cmp  $icc,$src,$dst" %}
6722   ins_encode( enc_cmov_reg(cmp,dst,src, (Assembler::icc)) );
6723   ins_pipe(ialu_reg);
6724 %}
6725 
6726 // This instruction also works with CmpN so we don't need cmovNN_reg.
6727 instruct cmovNIu_reg(cmpOpU cmp, flagsRegU icc, iRegN dst, iRegN src) %{
6728   match(Set dst (CMoveN (Binary cmp icc) (Binary dst src)));
6729   ins_cost(150);
6730   size(4);
6731   format %{ "MOV$cmp  $icc,$src,$dst" %}
6732   ins_encode( enc_cmov_reg(cmp,dst,src, (Assembler::icc)) );
6733   ins_pipe(ialu_reg);
6734 %}
6735 
6736 instruct cmovNF_reg(cmpOpF cmp, flagsRegF fcc, iRegN dst, iRegN src) %{
6737   match(Set dst (CMoveN (Binary cmp fcc) (Binary dst src)));
6738   ins_cost(150);
6739   size(4);
6740   format %{ "MOV$cmp $fcc,$src,$dst" %}
6741   ins_encode( enc_cmov_reg_f(cmp,dst,src, fcc) );
6742   ins_pipe(ialu_reg);
6743 %}
6744 
6745 // Conditional move
6746 instruct cmovPP_reg(cmpOpP cmp, flagsRegP pcc, iRegP dst, iRegP src) %{
6747   match(Set dst (CMoveP (Binary cmp pcc) (Binary dst src)));
6748   ins_cost(150);
6749   format %{ "MOV$cmp $pcc,$src,$dst\t! ptr" %}
6750   ins_encode( enc_cmov_reg(cmp,dst,src, (Assembler::ptr_cc)) );
6751   ins_pipe(ialu_reg);
6752 %}
6753 
6754 instruct cmovPP_imm(cmpOpP cmp, flagsRegP pcc, iRegP dst, immP0 src) %{
6755   match(Set dst (CMoveP (Binary cmp pcc) (Binary dst src)));
6756   ins_cost(140);
6757   format %{ "MOV$cmp $pcc,$src,$dst\t! ptr" %}
6758   ins_encode( enc_cmov_imm(cmp,dst,src, (Assembler::ptr_cc)) );
6759   ins_pipe(ialu_imm);
6760 %}
6761 
6762 // This instruction also works with CmpN so we don't need cmovPN_reg.
6763 instruct cmovPI_reg(cmpOp cmp, flagsReg icc, iRegP dst, iRegP src) %{
6764   match(Set dst (CMoveP (Binary cmp icc) (Binary dst src)));
6765   ins_cost(150);
6766 
6767   size(4);
6768   format %{ "MOV$cmp  $icc,$src,$dst\t! ptr" %}
6769   ins_encode( enc_cmov_reg(cmp,dst,src, (Assembler::icc)) );
6770   ins_pipe(ialu_reg);
6771 %}
6772 
6773 instruct cmovPIu_reg(cmpOpU cmp, flagsRegU icc, iRegP dst, iRegP src) %{
6774   match(Set dst (CMoveP (Binary cmp icc) (Binary dst src)));
6775   ins_cost(150);
6776 
6777   size(4);
6778   format %{ "MOV$cmp  $icc,$src,$dst\t! ptr" %}
6779   ins_encode( enc_cmov_reg(cmp,dst,src, (Assembler::icc)) );
6780   ins_pipe(ialu_reg);
6781 %}
6782 
6783 instruct cmovPI_imm(cmpOp cmp, flagsReg icc, iRegP dst, immP0 src) %{
6784   match(Set dst (CMoveP (Binary cmp icc) (Binary dst src)));
6785   ins_cost(140);
6786 
6787   size(4);
6788   format %{ "MOV$cmp  $icc,$src,$dst\t! ptr" %}
6789   ins_encode( enc_cmov_imm(cmp,dst,src, (Assembler::icc)) );
6790   ins_pipe(ialu_imm);
6791 %}
6792 
6793 instruct cmovPIu_imm(cmpOpU cmp, flagsRegU icc, iRegP dst, immP0 src) %{
6794   match(Set dst (CMoveP (Binary cmp icc) (Binary dst src)));
6795   ins_cost(140);
6796 
6797   size(4);
6798   format %{ "MOV$cmp  $icc,$src,$dst\t! ptr" %}
6799   ins_encode( enc_cmov_imm(cmp,dst,src, (Assembler::icc)) );
6800   ins_pipe(ialu_imm);
6801 %}
6802 
6803 instruct cmovPF_reg(cmpOpF cmp, flagsRegF fcc, iRegP dst, iRegP src) %{
6804   match(Set dst (CMoveP (Binary cmp fcc) (Binary dst src)));
6805   ins_cost(150);
6806   size(4);
6807   format %{ "MOV$cmp $fcc,$src,$dst" %}
6808   ins_encode( enc_cmov_reg_f(cmp,dst,src, fcc) );
6809   ins_pipe(ialu_imm);
6810 %}
6811 
6812 instruct cmovPF_imm(cmpOpF cmp, flagsRegF fcc, iRegP dst, immP0 src) %{
6813   match(Set dst (CMoveP (Binary cmp fcc) (Binary dst src)));
6814   ins_cost(140);
6815   size(4);
6816   format %{ "MOV$cmp $fcc,$src,$dst" %}
6817   ins_encode( enc_cmov_imm_f(cmp,dst,src, fcc) );
6818   ins_pipe(ialu_imm);
6819 %}
6820 
6821 // Conditional move
6822 instruct cmovFP_reg(cmpOpP cmp, flagsRegP pcc, regF dst, regF src) %{
6823   match(Set dst (CMoveF (Binary cmp pcc) (Binary dst src)));
6824   ins_cost(150);
6825   opcode(0x101);
6826   format %{ "FMOVD$cmp $pcc,$src,$dst" %}
6827   ins_encode( enc_cmovf_reg(cmp,dst,src, (Assembler::ptr_cc)) );
6828   ins_pipe(int_conditional_float_move);
6829 %}
6830 
6831 instruct cmovFI_reg(cmpOp cmp, flagsReg icc, regF dst, regF src) %{
6832   match(Set dst (CMoveF (Binary cmp icc) (Binary dst src)));
6833   ins_cost(150);
6834 
6835   size(4);
6836   format %{ "FMOVS$cmp $icc,$src,$dst" %}
6837   opcode(0x101);
6838   ins_encode( enc_cmovf_reg(cmp,dst,src, (Assembler::icc)) );
6839   ins_pipe(int_conditional_float_move);
6840 %}
6841 
6842 instruct cmovFIu_reg(cmpOpU cmp, flagsRegU icc, regF dst, regF src) %{
6843   match(Set dst (CMoveF (Binary cmp icc) (Binary dst src)));
6844   ins_cost(150);
6845 
6846   size(4);
6847   format %{ "FMOVS$cmp $icc,$src,$dst" %}
6848   opcode(0x101);
6849   ins_encode( enc_cmovf_reg(cmp,dst,src, (Assembler::icc)) );
6850   ins_pipe(int_conditional_float_move);
6851 %}
6852 
6853 // Conditional move,
6854 instruct cmovFF_reg(cmpOpF cmp, flagsRegF fcc, regF dst, regF src) %{
6855   match(Set dst (CMoveF (Binary cmp fcc) (Binary dst src)));
6856   ins_cost(150);
6857   size(4);
6858   format %{ "FMOVF$cmp $fcc,$src,$dst" %}
6859   opcode(0x1);
6860   ins_encode( enc_cmovff_reg(cmp,fcc,dst,src) );
6861   ins_pipe(int_conditional_double_move);
6862 %}
6863 
6864 // Conditional move
6865 instruct cmovDP_reg(cmpOpP cmp, flagsRegP pcc, regD dst, regD src) %{
6866   match(Set dst (CMoveD (Binary cmp pcc) (Binary dst src)));
6867   ins_cost(150);
6868   size(4);
6869   opcode(0x102);
6870   format %{ "FMOVD$cmp $pcc,$src,$dst" %}
6871   ins_encode( enc_cmovf_reg(cmp,dst,src, (Assembler::ptr_cc)) );
6872   ins_pipe(int_conditional_double_move);
6873 %}
6874 
6875 instruct cmovDI_reg(cmpOp cmp, flagsReg icc, regD dst, regD src) %{
6876   match(Set dst (CMoveD (Binary cmp icc) (Binary dst src)));
6877   ins_cost(150);
6878 
6879   size(4);
6880   format %{ "FMOVD$cmp $icc,$src,$dst" %}
6881   opcode(0x102);
6882   ins_encode( enc_cmovf_reg(cmp,dst,src, (Assembler::icc)) );
6883   ins_pipe(int_conditional_double_move);
6884 %}
6885 
6886 instruct cmovDIu_reg(cmpOpU cmp, flagsRegU icc, regD dst, regD src) %{
6887   match(Set dst (CMoveD (Binary cmp icc) (Binary dst src)));
6888   ins_cost(150);
6889 
6890   size(4);
6891   format %{ "FMOVD$cmp $icc,$src,$dst" %}
6892   opcode(0x102);
6893   ins_encode( enc_cmovf_reg(cmp,dst,src, (Assembler::icc)) );
6894   ins_pipe(int_conditional_double_move);
6895 %}
6896 
6897 // Conditional move,
6898 instruct cmovDF_reg(cmpOpF cmp, flagsRegF fcc, regD dst, regD src) %{
6899   match(Set dst (CMoveD (Binary cmp fcc) (Binary dst src)));
6900   ins_cost(150);
6901   size(4);
6902   format %{ "FMOVD$cmp $fcc,$src,$dst" %}
6903   opcode(0x2);
6904   ins_encode( enc_cmovff_reg(cmp,fcc,dst,src) );
6905   ins_pipe(int_conditional_double_move);
6906 %}
6907 
6908 // Conditional move
6909 instruct cmovLP_reg(cmpOpP cmp, flagsRegP pcc, iRegL dst, iRegL src) %{
6910   match(Set dst (CMoveL (Binary cmp pcc) (Binary dst src)));
6911   ins_cost(150);
6912   format %{ "MOV$cmp $pcc,$src,$dst\t! long" %}
6913   ins_encode( enc_cmov_reg(cmp,dst,src, (Assembler::ptr_cc)) );
6914   ins_pipe(ialu_reg);
6915 %}
6916 
6917 instruct cmovLP_imm(cmpOpP cmp, flagsRegP pcc, iRegL dst, immI11 src) %{
6918   match(Set dst (CMoveL (Binary cmp pcc) (Binary dst src)));
6919   ins_cost(140);
6920   format %{ "MOV$cmp $pcc,$src,$dst\t! long" %}
6921   ins_encode( enc_cmov_imm(cmp,dst,src, (Assembler::ptr_cc)) );
6922   ins_pipe(ialu_imm);
6923 %}
6924 
6925 instruct cmovLI_reg(cmpOp cmp, flagsReg icc, iRegL dst, iRegL src) %{
6926   match(Set dst (CMoveL (Binary cmp icc) (Binary dst src)));
6927   ins_cost(150);
6928 
6929   size(4);
6930   format %{ "MOV$cmp  $icc,$src,$dst\t! long" %}
6931   ins_encode( enc_cmov_reg(cmp,dst,src, (Assembler::icc)) );
6932   ins_pipe(ialu_reg);
6933 %}
6934 
6935 
6936 instruct cmovLIu_reg(cmpOpU cmp, flagsRegU icc, iRegL dst, iRegL src) %{
6937   match(Set dst (CMoveL (Binary cmp icc) (Binary dst src)));
6938   ins_cost(150);
6939 
6940   size(4);
6941   format %{ "MOV$cmp  $icc,$src,$dst\t! long" %}
6942   ins_encode( enc_cmov_reg(cmp,dst,src, (Assembler::icc)) );
6943   ins_pipe(ialu_reg);
6944 %}
6945 
6946 
6947 instruct cmovLF_reg(cmpOpF cmp, flagsRegF fcc, iRegL dst, iRegL src) %{
6948   match(Set dst (CMoveL (Binary cmp fcc) (Binary dst src)));
6949   ins_cost(150);
6950 
6951   size(4);
6952   format %{ "MOV$cmp  $fcc,$src,$dst\t! long" %}
6953   ins_encode( enc_cmov_reg_f(cmp,dst,src, fcc) );
6954   ins_pipe(ialu_reg);
6955 %}
6956 
6957 
6958 


src/cpu/sparc/vm/sparc.ad
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File