Просмотр исходного кода

Merge branch source:main into main

Curtis Hamilton 1 месяц назад
Родитель
Сommit
7fa04008d5

+ 2 - 1
compiler/powerpc64/cpubase.pas

@@ -104,7 +104,8 @@ type
     A_MFXER,
     A_FCTID, A_FCTID_, A_FCTIDZ, A_FCTIDZ_,
     A_EXTRDI, A_EXTRDI_, A_INSRDI, A_INSRDI_,
-    A_LWSYNC);
+    A_LWSYNC,
+    A_YIELD);
 
   {# This should define the array of instructions as string }
   op2strtable = array[tasmop] of string[8];

+ 2 - 1
compiler/powerpc64/itcpugas.pas

@@ -94,7 +94,8 @@ const
     'mfxer',
     'fctid', 'fctid.', 'fctidz', 'fctidz.',
     'extrdi', 'extrdi.', 'insrdi', 'insrdi.',
-    'lwsync');
+    'lwsync',
+    'yield');
 
 function gas_regnum_search(const s: string): Tregister;
 function gas_regname(r: Tregister): string;

+ 6 - 1
compiler/ppcgen/ngppcinl.pas

@@ -102,7 +102,12 @@ implementation
        begin
          case inlinenumber of
            in_ppc_yield:
-             current_asmdata.CurrAsmList.concat(taicpu.op_reg_reg_reg(A_OR,NR_R27,NR_R27,NR_R27));
+{$ifdef powerpc64}
+             if current_settings.cputype >= cpu_power7 then
+               current_asmdata.CurrAsmList.concat(taicpu.op_none(A_YIELD))
+             else
+{$endif powerpc64}
+               current_asmdata.CurrAsmList.concat(taicpu.op_reg_reg_reg(A_OR,NR_R27,NR_R27,NR_R27));
            else
              inherited pass_generate_code_cpu;
          end;

+ 1 - 1
rtl/amiga/Makefile

@@ -931,7 +931,7 @@ ifeq ($(ARCH),powerpc)
 override LOADERS=
 RESUNIT=$(FPINTRESUNIT)
 SYSINIT_UNITS=si_prc
-EXEUNITS=$(LINEINFOUNIT) $(EXEINFOUNIT)
+EXEUNITS=$(LINEINFOUNIT) $(EXEINFOUNIT) $(INTRINSICSUNIT)
 endif
 ifeq ($(CPU_OS_TARGET),m68k-amiga)
 override TARGET_UNITS+=$(SYSTEMUNIT) $(RESUNIT) $(HEAPTRCUNIT) $(UUCHARUNIT) $(OBJPASUNIT) $(MACPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) buildrtl $(CPALLUNIT)

+ 1 - 1
rtl/amiga/Makefile.fpc

@@ -54,7 +54,7 @@ ifeq ($(ARCH),powerpc)
 override LOADERS=
 RESUNIT=$(FPINTRESUNIT)
 SYSINIT_UNITS=si_prc
-EXEUNITS=$(LINEINFOUNIT) $(EXEINFOUNIT)
+EXEUNITS=$(LINEINFOUNIT) $(EXEINFOUNIT) $(INTRINSICSUNIT)
 endif
 
 [rules]

+ 6 - 0
rtl/darwin/Makefile

@@ -922,6 +922,12 @@ endif
 ifeq ($(ARCH),aarch64)
 CPU_UNITS=$(INTRINSICSUNIT)
 endif
+ifeq ($(ARCH),powerpc)
+CPU_UNITS=$(INTRINSICSUNIT)
+endif
+ifeq ($(ARCH),powerpc64)
+CPU_UNITS=$(INTRINSICSUNIT)
+endif
 RTL=..
 INC=$(RTL)/inc
 COMMON=$(RTL)/common

+ 8 - 0
rtl/darwin/Makefile.fpc

@@ -59,6 +59,14 @@ ifeq ($(ARCH),aarch64)
 CPU_UNITS=$(INTRINSICSUNIT)
 endif
 
+ifeq ($(ARCH),powerpc)
+CPU_UNITS=$(INTRINSICSUNIT)
+endif
+
+ifeq ($(ARCH),powerpc64)
+CPU_UNITS=$(INTRINSICSUNIT)
+endif
+
 RTL=..
 INC=$(RTL)/inc
 COMMON=$(RTL)/common

+ 1 - 1
rtl/morphos/Makefile

@@ -926,7 +926,7 @@ ifeq ($(CPU_OS_TARGET),powerpc-morphos)
 override TARGET_UNITS+=$(SYSTEMUNIT) $(HEAPTRCUNIT) $(UUCHARUNIT) $(OBJPASUNIT) $(MACPASUNIT) $(ISO7185UNIT) $(EXTPASUNIT) buildrtl $(CPALLUNIT)
 endif
 ifeq ($(CPU_OS_TARGET),powerpc-morphos)
-override TARGET_IMPLICITUNITS+=$(SYSINIT_UNITS) athreads $(FPINTRESUNIT) $(DOSUNIT) $(SYSUTILSUNIT) $(CTYPESUNIT) $(STRINGSUNIT) $(RTLCONSTSUNIT) $(SYSCONSTUNIT) $(MATHUNIT) $(TYPESUNIT) $(TYPINFOUNIT) $(SORTBASEUNIT) $(FGLUNIT) $(CLASSESUNIT) $(CHARSETUNIT) $(CHARACTERUNIT) $(GETOPTSUNIT) $(FPWIDESTRINGUNIT) $(EXEINFOUNIT) $(LINEINFOUNIT) $(CP_UNITS) $(UNICODEDATAUNIT) $(SOFTFPUUNIT) $(SFPUX80UNIT) $(UFLOATX80UNIT) $(SFPU128UNIT)  $(UFLOAT128UNIT)
+override TARGET_IMPLICITUNITS+=$(SYSINIT_UNITS) athreads $(FPINTRESUNIT) $(DOSUNIT) $(SYSUTILSUNIT) $(CTYPESUNIT) $(STRINGSUNIT) $(RTLCONSTSUNIT) $(SYSCONSTUNIT) $(MATHUNIT) $(TYPESUNIT) $(TYPINFOUNIT) $(SORTBASEUNIT) $(FGLUNIT) $(CLASSESUNIT) $(CHARSETUNIT) $(CHARACTERUNIT) $(GETOPTSUNIT) $(FPWIDESTRINGUNIT) $(EXEINFOUNIT) $(LINEINFOUNIT) $(INTRINSICSUNIT) $(CP_UNITS) $(UNICODEDATAUNIT) $(SOFTFPUUNIT) $(SFPUX80UNIT) $(UFLOATX80UNIT) $(SFPU128UNIT)  $(UFLOAT128UNIT)
 endif
 ifeq ($(CPU_OS_TARGET),powerpc-morphos)
 override TARGET_RSTS+=$(MATHUNIT) $(RTLCONSTSUNIT) $(TYPINFOUNIT) $(CLASSESUNIT) $(SYSCONSTUNIT) $(UNICODEDATAUNIT)

+ 1 - 1
rtl/morphos/Makefile.fpc

@@ -11,7 +11,7 @@ units=$(SYSTEMUNIT) $(HEAPTRCUNIT) $(UUCHARUNIT) $(OBJPASUNIT) $(MACPASUNIT) $(I
 implicitunits=$(SYSINIT_UNITS) athreads $(FPINTRESUNIT) $(DOSUNIT) $(SYSUTILSUNIT) \
                $(CTYPESUNIT) $(STRINGSUNIT) $(RTLCONSTSUNIT) $(SYSCONSTUNIT) $(MATHUNIT) $(TYPESUNIT) \
                $(TYPINFOUNIT) $(SORTBASEUNIT) $(FGLUNIT) $(CLASSESUNIT) $(CHARSETUNIT) $(CHARACTERUNIT) $(GETOPTSUNIT) \
-               $(FPWIDESTRINGUNIT) $(EXEINFOUNIT) $(LINEINFOUNIT) \
+               $(FPWIDESTRINGUNIT) $(EXEINFOUNIT) $(LINEINFOUNIT) $(INTRINSICSUNIT) \
                $(CP_UNITS) $(UNICODEDATAUNIT) \
                $(SOFTFPUUNIT) $(SFPUX80UNIT) $(UFLOATX80UNIT) $(SFPU128UNIT)  $(UFLOAT128UNIT)