Revision f3f478a7 tcg/ppc/tcg-target.c
b/tcg/ppc/tcg-target.c | ||
---|---|---|
866 | 866 |
int imm; |
867 | 867 |
uint32_t op; |
868 | 868 |
|
869 |
imm = const_arg2 ? ((int16_t) arg2 == arg2) : 0; |
|
870 | 869 |
switch (cond) { |
871 |
case TCG_COND_EQ: op = imm ? CMPLI : CMPL; break; |
|
872 |
case TCG_COND_NE: op = imm ? CMPLI : CMPL; break; |
|
873 |
case TCG_COND_LT: op = imm ? CMPI : CMP; break; |
|
874 |
case TCG_COND_GE: op = imm ? CMPI : CMP; break; |
|
875 |
case TCG_COND_LE: op = imm ? CMPI : CMP; break; |
|
876 |
case TCG_COND_GT: op = imm ? CMPI : CMP; break; |
|
877 |
case TCG_COND_LTU: op = imm ? CMPLI : CMPL; break; |
|
878 |
case TCG_COND_GEU: op = imm ? CMPLI : CMPL; break; |
|
879 |
case TCG_COND_LEU: op = imm ? CMPLI : CMPL; break; |
|
880 |
case TCG_COND_GTU: op = imm ? CMPLI : CMPL; break; |
|
870 |
case TCG_COND_EQ: |
|
871 |
case TCG_COND_NE: |
|
872 |
if (const_arg2) { |
|
873 |
if ((int16_t) arg2 == arg2) { |
|
874 |
op = CMPI; |
|
875 |
imm = 1; |
|
876 |
break; |
|
877 |
} |
|
878 |
else if ((uint16_t) arg2 == arg2) { |
|
879 |
op = CMPLI; |
|
880 |
imm = 1; |
|
881 |
break; |
|
882 |
} |
|
883 |
} |
|
884 |
op = CMPL; |
|
885 |
imm = 0; |
|
886 |
break; |
|
887 |
|
|
888 |
case TCG_COND_LT: |
|
889 |
case TCG_COND_GE: |
|
890 |
case TCG_COND_LE: |
|
891 |
case TCG_COND_GT: |
|
892 |
if (const_arg2) { |
|
893 |
if ((int16_t) arg2 == arg2) { |
|
894 |
op = CMPI; |
|
895 |
imm = 1; |
|
896 |
break; |
|
897 |
} |
|
898 |
} |
|
899 |
op = CMP; |
|
900 |
imm = 0; |
|
901 |
break; |
|
902 |
|
|
903 |
case TCG_COND_LTU: |
|
904 |
case TCG_COND_GEU: |
|
905 |
case TCG_COND_LEU: |
|
906 |
case TCG_COND_GTU: |
|
907 |
if (const_arg2) { |
|
908 |
if ((uint16_t) arg2 == arg2) { |
|
909 |
op = CMPLI; |
|
910 |
imm = 1; |
|
911 |
break; |
|
912 |
} |
|
913 |
} |
|
914 |
op = CMPL; |
|
915 |
imm = 0; |
|
916 |
break; |
|
917 |
|
|
881 | 918 |
default: |
882 | 919 |
tcg_abort (); |
883 | 920 |
} |
Also available in: Unified diff