Revision e9c71dd1 target-mips/op.c

b/target-mips/op.c
781 781
    FORCE_RET();
782 782
}
783 783

  
784
/* Multiplication variants of the vr54xx. */
785
void op_muls (void)
786
{
787
    CALL_FROM_TB0(do_muls);
788
    FORCE_RET();
789
}
790

  
791
void op_mulsu (void)
792
{
793
    CALL_FROM_TB0(do_mulsu);
794
    FORCE_RET();
795
}
796

  
797
void op_macc (void)
798
{
799
    CALL_FROM_TB0(do_macc);
800
    FORCE_RET();
801
}
802

  
803
void op_macchi (void)
804
{
805
    CALL_FROM_TB0(do_macchi);
806
    FORCE_RET();
807
}
808

  
809
void op_maccu (void)
810
{
811
    CALL_FROM_TB0(do_maccu);
812
    FORCE_RET();
813
}
814
void op_macchiu (void)
815
{
816
    CALL_FROM_TB0(do_macchiu);
817
    FORCE_RET();
818
}
819

  
820
void op_msac (void)
821
{
822
    CALL_FROM_TB0(do_msac);
823
    FORCE_RET();
824
}
825

  
826
void op_msachi (void)
827
{
828
    CALL_FROM_TB0(do_msachi);
829
    FORCE_RET();
830
}
831

  
832
void op_msacu (void)
833
{
834
    CALL_FROM_TB0(do_msacu);
835
    FORCE_RET();
836
}
837

  
838
void op_msachiu (void)
839
{
840
    CALL_FROM_TB0(do_msachiu);
841
    FORCE_RET();
842
}
843

  
844
void op_mulhi (void)
845
{
846
    CALL_FROM_TB0(do_mulhi);
847
    FORCE_RET();
848
}
849

  
850
void op_mulhiu (void)
851
{
852
    CALL_FROM_TB0(do_mulhiu);
853
    FORCE_RET();
854
}
855

  
856
void op_mulshi (void)
857
{
858
    CALL_FROM_TB0(do_mulshi);
859
    FORCE_RET();
860
}
861

  
862
void op_mulshiu (void)
863
{
864
    CALL_FROM_TB0(do_mulshiu);
865
    FORCE_RET();
866
}
867

  
784 868
#else /* TARGET_LONG_BITS > HOST_LONG_BITS */
785 869

  
786 870
static always_inline uint64_t get_HILO (void)
......
795 879
    env->HI[0][env->current_tc] = (int32_t)(HILO >> 32);
796 880
}
797 881

  
882
static always_inline void set_HIT0_LO (uint64_t HILO)
883
{
884
    env->LO[0][env->current_tc] = (int32_t)(HILO & 0xFFFFFFFF);
885
    T0 = env->HI[0][env->current_tc] = (int32_t)(HILO >> 32);
886
}
887

  
888
static always_inline void set_HI_LOT0 (uint64_t HILO)
889
{
890
    T0 = env->LO[0][env->current_tc] = (int32_t)(HILO & 0xFFFFFFFF);
891
    env->HI[0][env->current_tc] = (int32_t)(HILO >> 32);
892
}
893

  
798 894
void op_mult (void)
799 895
{
800 896
    set_HILO((int64_t)(int32_t)T0 * (int64_t)(int32_t)T1);
......
842 938
    set_HILO(get_HILO() - tmp);
843 939
    FORCE_RET();
844 940
}
941

  
942
/* Multiplication variants of the vr54xx. */
943
void op_muls (void)
944
{
945
    set_HI_LOT0(0 - ((int64_t)(int32_t)T0 * (int64_t)(int32_t)T1));
946
    FORCE_RET();
947
}
948

  
949
void op_mulsu (void)
950
{
951
    set_HI_LOT0(0 - ((uint64_t)(uint32_t)T0 * (uint64_t)(uint32_t)T1));
952
    FORCE_RET();
953
}
954

  
955
void op_macc (void)
956
{
957
    set_HI_LOT0(get_HILO() + ((int64_t)(int32_t)T0 * (int64_t)(int32_t)T1));
958
    FORCE_RET();
959
}
960

  
961
void op_macchi (void)
962
{
963
    set_HIT0_LO(get_HILO() + ((int64_t)(int32_t)T0 * (int64_t)(int32_t)T1));
964
    FORCE_RET();
965
}
966

  
967
void op_maccu (void)
968
{
969
    set_HI_LOT0(get_HILO() + ((uint64_t)(uint32_t)T0 * (uint64_t)(uint32_t)T1));
970
    FORCE_RET();
971
}
972

  
973
void op_macchiu (void)
974
{
975
    set_HIT0_LO(get_HILO() + ((uint64_t)(uint32_t)T0 * (uint64_t)(uint32_t)T1));
976
    FORCE_RET();
977
}
978

  
979
void op_msac (void)
980
{
981
    set_HI_LOT0(get_HILO() - ((int64_t)(int32_t)T0 * (int64_t)(int32_t)T1));
982
    FORCE_RET();
983
}
984

  
985
void op_msachi (void)
986
{
987
    set_HIT0_LO(get_HILO() - ((int64_t)(int32_t)T0 * (int64_t)(int32_t)T1));
988
    FORCE_RET();
989
}
990

  
991
void op_msacu (void)
992
{
993
    set_HI_LOT0(get_HILO() - ((uint64_t)(uint32_t)T0 * (uint64_t)(uint32_t)T1));
994
    FORCE_RET();
995
}
996

  
997
void op_msachiu (void)
998
{
999
    set_HIT0_LO(get_HILO() - ((uint64_t)(uint32_t)T0 * (uint64_t)(uint32_t)T1));
1000
    FORCE_RET();
1001
}
1002

  
1003
void op_mulhi (void)
1004
{
1005
    set_HIT0_LO((int64_t)(int32_t)T0 * (int64_t)(int32_t)T1);
1006
    FORCE_RET();
1007
}
1008

  
1009
void op_mulhiu (void)
1010
{
1011
    set_HIT0_LO((uint64_t)(uint32_t)T0 * (uint64_t)(uint32_t)T1);
1012
    FORCE_RET();
1013
}
1014

  
1015
void op_mulshi (void)
1016
{
1017
    set_HIT0_LO(0 - ((int64_t)(int32_t)T0 * (int64_t)(int32_t)T1));
1018
    FORCE_RET();
1019
}
1020

  
1021
void op_mulshiu (void)
1022
{
1023
    set_HIT0_LO(0 - ((uint64_t)(uint32_t)T0 * (uint64_t)(uint32_t)T1));
1024
    FORCE_RET();
1025
}
1026

  
845 1027
#endif /* TARGET_LONG_BITS > HOST_LONG_BITS */
846 1028

  
847 1029
#if defined(TARGET_MIPS64)

Also available in: Unified diff