diff options
-rw-r--r-- | runtime/Makefile | 10 | ||||
-rw-r--r-- | runtime/powerpc/ppc64/i64_dtou.s | 4 | ||||
-rw-r--r-- | test/regression/Results/builtins-powerpc | 2 | ||||
-rw-r--r-- | test/regression/builtins-powerpc.c | 2 |
4 files changed, 15 insertions, 3 deletions
diff --git a/runtime/Makefile b/runtime/Makefile index 2fe32881..99eeaa54 100644 --- a/runtime/Makefile +++ b/runtime/Makefile @@ -9,7 +9,15 @@ LIB=libcompcert.a INCLUDES=include/float.h include/stdarg.h include/stdbool.h \ include/stddef.h include/varargs.h -VPATH=$(ARCH)/$(MODEL) $(ARCH) +VPATH=$(ARCH) + +ifeq ($(ARCH),powerpc) +ifeq ($(MODEL),ppc64) +VPATH=powerpc/ppc64 $(ARCH) +else ifeq ($(MODEL),e5500) +VPATH=powerpc/ppc64 $(ARCH) +endif +endif ifeq ($(strip $(HAS_RUNTIME_LIB)),true) all: $(LIB) diff --git a/runtime/powerpc/ppc64/i64_dtou.s b/runtime/powerpc/ppc64/i64_dtou.s index 665037ea..60d5c9bf 100644 --- a/runtime/powerpc/ppc64/i64_dtou.s +++ b/runtime/powerpc/ppc64/i64_dtou.s @@ -44,7 +44,7 @@ __i64_dtou: lis r0, 0x5f00 # 0x5f00_0000 = 2^63 in binary32 format stwu r0, -16(r1) lfs f2, 0(r1) # f2 = 2^63 - fcmpu f1, f2 # crbit 0 is f1 < f2 + fcmpu cr0, f1, f2 # crbit 0 is f1 < f2 bf 0, 1f # branch if f1 >= 2^63 (or f1 is NaN) fctidz f1, f1 # convert as signed stfd f1, 0(r1) @@ -63,4 +63,4 @@ __i64_dtou: .type __i64_dtou, @function .size __i64_dtou, .-__i64_dtou -
\ No newline at end of file + diff --git a/test/regression/Results/builtins-powerpc b/test/regression/Results/builtins-powerpc index 0fd07f69..b131e543 100644 --- a/test/regression/Results/builtins-powerpc +++ b/test/regression/Results/builtins-powerpc @@ -15,6 +15,8 @@ fsel(-3.141590, 2.718000, 1.414000) = 1.414000 fcti(3.141590) = 3 fcti(2.718000) = 3 fcti(1.414000) = 1 +isel(0, 305419896, -559038737) = -559038737 +isel(42, 305419896, -559038737) = 305419896 read_16_rev = 3412 read_32_rev = efbeadde after write_16_rev: 9a78 diff --git a/test/regression/builtins-powerpc.c b/test/regression/builtins-powerpc.c index 90030737..5cb2e293 100644 --- a/test/regression/builtins-powerpc.c +++ b/test/regression/builtins-powerpc.c @@ -41,6 +41,8 @@ int main(int argc, char ** argv) __builtin_eieio(); __builtin_sync(); __builtin_isync(); + printf("isel(%d, %d, %d) = %d\n", 0, x, y, __builtin_isel(0, x, y)); + printf("isel(%d, %d, %d) = %d\n", 42, x, y, __builtin_isel(42, x, y)); printf ("read_16_rev = %x\n", __builtin_read16_reversed(&s)); printf ("read_32_rev = %x\n", __builtin_read32_reversed(&y)); __builtin_write16_reversed(&s, 0x789A); |