From 290344ae5b1d8b51ddcbd381befbec9705272b4d Mon Sep 17 00:00:00 2001 From: Owen Rummage Date: Sun, 19 Jul 2026 18:28:48 -0500 Subject: [PATCH] Add little-endian PowerPC kernels --- Makefile | 44 +- README.md | 6 + src/kernels/fossbench-ppc32le.S | 2081 +++++++++++++++++++++++++++++++ src/kernels/fossbench-ppc64le.S | 1977 +++++++++++++++++++++++++++++ 4 files changed, 4106 insertions(+), 2 deletions(-) create mode 100644 src/kernels/fossbench-ppc32le.S create mode 100644 src/kernels/fossbench-ppc64le.S diff --git a/Makefile b/Makefile index b19210c..a981538 100644 --- a/Makefile +++ b/Makefile @@ -15,6 +15,8 @@ ASM_AMD64 := src/kernels/fossbench-amd64.S ASM_I386 := src/kernels/fossbench-i386.S ASM_PPC32 := src/kernels/fossbench-ppc32be.S ASM_PPC64 := src/kernels/fossbench-ppc64be.S +ASM_PPC32LE := src/kernels/fossbench-ppc32le.S +ASM_PPC64LE := src/kernels/fossbench-ppc64le.S # Figure out the host CPU. HOST_ARCH := $(shell uname -m) @@ -27,6 +29,12 @@ else ifneq (,$(filter x86_64 amd64,$(HOST_ARCH))) else ifneq (,$(filter i386 i486 i586 i686 x86,$(HOST_ARCH))) HOST_ARCHNAME := i386 HOST_KERNEL := $(ASM_I386) +else ifneq (,$(filter ppc64le powerpc64le,$(HOST_ARCH))) + HOST_ARCHNAME := ppc64le + HOST_KERNEL := $(ASM_PPC64LE) +else ifneq (,$(filter ppcle powerpcle ppc32le powerpc32le,$(HOST_ARCH))) + HOST_ARCHNAME := ppc32le + HOST_KERNEL := $(ASM_PPC32LE) else ifneq (,$(filter ppc powerpc ppc32 powerpc32,$(HOST_ARCH))) HOST_ARCHNAME := ppc32be HOST_KERNEL := $(ASM_PPC32) @@ -45,6 +53,12 @@ endif ifeq ($(HOST_ARCHNAME),ppc64be) CFLAGS += -mcpu=970 -maltivec endif +ifeq ($(HOST_ARCHNAME),ppc64le) + CFLAGS += -mcpu=power8 -maltivec +endif +ifeq ($(HOST_ARCHNAME),ppc32le) + CFLAGS += -m32 +endif ifeq ($(HOST_ARCHNAME),arm64) HOST_KERNEL := $(ASM_ARM64) endif @@ -90,6 +104,16 @@ ifeq ($(HOST_ARCHNAME),ppc64be) else CC_PPC64BE ?= powerpc64-linux-gnu-gcc endif +ifeq ($(HOST_ARCHNAME),ppc32le) + CC_PPC32LE ?= $(CC) +else + CC_PPC32LE ?= powerpc64le-linux-gnu-gcc +endif +ifeq ($(HOST_ARCHNAME),ppc64le) + CC_PPC64LE ?= $(CC) +else + CC_PPC64LE ?= powerpc64le-linux-gnu-gcc +endif # Windows uses MinGW. CC_WINDOWS_AMD64 ?= x86_64-w64-mingw32-gcc CC_WINDOWS_I386 ?= i686-w64-mingw32-gcc @@ -98,10 +122,10 @@ NATIVE_BIN := $(DIST)/fossbench-$(OSNAME)-$(HOST_ARCHNAME) # Plain make builds for this computer. .DEFAULT_GOAL := native -.PHONY: all native linux-arm64 linux-amd64 linux-i386 linux-ppc32be linux-ppc64be macos-arm64 macos-amd64 windows-amd64 windows-i386 bench test clean +.PHONY: all native linux-arm64 linux-amd64 linux-i386 linux-ppc32be linux-ppc64be linux-ppc32le linux-ppc64le macos-arm64 macos-amd64 windows-amd64 windows-i386 bench test clean # Build the release targets. -all: linux-arm64 linux-amd64 linux-i386 linux-ppc32be linux-ppc64be windows-amd64 windows-i386 +all: linux-arm64 linux-amd64 linux-i386 linux-ppc32be linux-ppc64be linux-ppc32le linux-ppc64le windows-amd64 windows-i386 # Build for this computer. native: $(NATIVE_BIN) @@ -111,6 +135,8 @@ linux-amd64: $(DIST)/fossbench-linux-amd64 linux-i386: $(DIST)/fossbench-linux-i386 linux-ppc32be: $(DIST)/fossbench-linux-ppc32be linux-ppc64be: $(DIST)/fossbench-linux-ppc64be +linux-ppc32le: $(DIST)/fossbench-linux-ppc32le +linux-ppc64le: $(DIST)/fossbench-linux-ppc64le macos-arm64: $(DIST)/fossbench-macos-arm64 macos-amd64: $(DIST)/fossbench-macos-amd64 windows-amd64: $(DIST)/fossbench-windows-amd64.exe @@ -136,6 +162,14 @@ $(DIST)/fossbench-linux-ppc64be: $(DRIVER) $(DRIVER_DEPS) $(ASM_PPC64) | $(DIST) $(CC_PPC64BE) -mcpu=970 -maltivec $(CFLAGS) $(PTHREAD) $(LDFLAGS) -o $@ $(DRIVER) $(ASM_PPC64) $(LDLIBS) @echo "built $@" +$(DIST)/fossbench-linux-ppc32le: $(DRIVER) $(DRIVER_DEPS) $(ASM_PPC32LE) | $(DIST) + $(CC_PPC32LE) -m32 $(CFLAGS) $(PTHREAD) $(LDFLAGS) -o $@ $(DRIVER) $(ASM_PPC32LE) $(LDLIBS) + @echo "built $@" + +$(DIST)/fossbench-linux-ppc64le: $(DRIVER) $(DRIVER_DEPS) $(ASM_PPC64LE) | $(DIST) + $(CC_PPC64LE) -mcpu=power8 -maltivec $(CFLAGS) $(PTHREAD) $(LDFLAGS) -o $@ $(DRIVER) $(ASM_PPC64LE) $(LDLIBS) + @echo "built $@" + $(DIST)/fossbench-macos-arm64: $(DRIVER) $(DRIVER_DEPS) $(ASM_ARM64) | $(DIST) $(CC_MACOS_ARM64) -arch arm64 $(CFLAGS) $(PTHREAD) $(LDFLAGS) -o $@ $(DRIVER) $(ASM_ARM64) $(LDLIBS) @echo "built $@" @@ -169,6 +203,12 @@ endif ifeq ($(OSNAME)-$(HOST_ARCHNAME),linux-ppc64be) NATIVE_HAS_RULE := yes endif +ifeq ($(OSNAME)-$(HOST_ARCHNAME),linux-ppc32le) +NATIVE_HAS_RULE := yes +endif +ifeq ($(OSNAME)-$(HOST_ARCHNAME),linux-ppc64le) +NATIVE_HAS_RULE := yes +endif ifeq ($(OSNAME)-$(HOST_ARCHNAME),macos-arm64) NATIVE_HAS_RULE := yes endif diff --git a/README.md b/README.md index 8424b19..3ab6c85 100644 --- a/README.md +++ b/README.md @@ -29,6 +29,8 @@ score weights. Version 0.1 and 0.2 scores are not comparable. | x86 32-bit | i386 with SSE2 | | PowerPC 32-bit, big-endian | scalar fallback with runtime-selected extensions | | PowerPC 64-bit, big-endian | PowerPC 970 with AltiVec | +| PowerPC 32-bit, little-endian | scalar fallback with runtime-selected extensions | +| PowerPC 64-bit, little-endian | POWER8 with AltiVec/VSX | Linux, macOS, and Windows are supported. Send a patch if a supported target fails. @@ -56,6 +58,8 @@ names. Override them when needed: ```sh make linux-arm64 CC_ARM64=aarch64-linux-gnu-gcc make linux-ppc32be CC_PPC32BE=powerpc-linux-gnu-gcc +make linux-ppc64le CC_PPC64LE=powerpc64le-linux-gnu-gcc +make linux-ppc32le CC_PPC32LE=powerpc64le-linux-gnu-gcc make windows-amd64 CC_WINDOWS_AMD64=x86_64-w64-mingw32-gcc ``` @@ -169,5 +173,7 @@ src/kernels/fossbench-amd64.S x86-64 kernels src/kernels/fossbench-i386.S i386 kernels src/kernels/fossbench-ppc32be.S 32-bit big-endian PowerPC kernels src/kernels/fossbench-ppc64be.S 64-bit big-endian PowerPC kernels +src/kernels/fossbench-ppc32le.S 32-bit little-endian PowerPC kernels +src/kernels/fossbench-ppc64le.S 64-bit little-endian PowerPC kernels src/test_kernels.c kernel correctness suite ``` diff --git a/src/kernels/fossbench-ppc32le.S b/src/kernels/fossbench-ppc32le.S new file mode 100644 index 0000000..b35d83f --- /dev/null +++ b/src/kernels/fossbench-ppc32le.S @@ -0,0 +1,2081 @@ + .file "fossbench-ppc32le.S" + .machine ppc + .section ".text" + .align 2 + .type sift, @function +sift: +.LFB14: + .cfi_startproc + slwi 10,5,1 + srwi 11,5,31 + stwu 1,-16(1) + .cfi_def_cfa_offset 16 + addic 10,10,1 + slwi 9,6,1 + adde 11,11,9 + cmplw 0,8,11 + stw 31,12(1) + .cfi_offset 31, -4 + mr 31,8 + ble- 0,.L15 +.L11: + slwi 9,5,2 + lwzx 8,3,9 +.L8: + addic 9,5,1 + slwi 4,10,2 + addze 6,6 + srwi 12,9,31 + lwzx 0,3,4 + slwi 6,6,1 + add 4,3,4 + add 6,12,6 + slwi 9,9,1 + cmplw 0,31,6 + mr 12,4 + bgt- 0,.L4 + bne- 0,.L7 + cmplw 0,7,9 + ble- 0,.L7 +.L4: + lwz 4,4(4) + cmplw 0,4,0 + ble- 0,.L7 + slwi 12,9,2 + lwzx 0,3,12 + add 12,3,12 + cmplw 0,8,0 + bge- 0,.L1 +.L17: + slwi 10,9,1 + srwi 11,9,31 + addic 10,10,1 + slwi 4,6,1 + adde 11,11,4 + slwi 5,5,2 + cmplw 0,31,11 + stwx 0,3,5 + stw 8,0(12) + ble- 0,.L16 + mr 5,9 + b .L8 +.L7: + cmplw 0,8,0 + mr 9,10 + mr 6,11 + blt+ 0,.L17 +.L1: + lwz 31,12(1) + addi 1,1,16 + .cfi_remember_state + .cfi_restore 31 + .cfi_def_cfa_offset 0 + blr +.L16: + .cfi_restore_state + bne- 0,.L1 + cmplw 0,7,10 + ble- 0,.L1 + mr 5,9 + b .L8 +.L15: + bne- 0,.L1 + cmplw 0,7,10 + bgt+ 0,.L11 + b .L1 + .cfi_endproc +.LFE14: + .size sift,.-sift + .align 2 + .globl fb_int_math + .type fb_int_math, @function +fb_int_math: +.LFB1: + .cfi_startproc + stwu 1,-64(1) + .cfi_def_cfa_offset 64 + or. 9,3,4 + stw 29,52(1) + .cfi_offset 29, -12 + mr 29,3 + stw 30,56(1) + .cfi_offset 30, -8 + mr 30,4 + beq- 0,.L18 + mflr 0 + .cfi_register 65, 0 + stw 21,20(1) + .cfi_offset 21, -44 + lis 3,0x1331 + stw 0,68(1) + .cfi_offset 65, 4 + lis 7,0x94d0 + lis 10,0x1ce4 + stw 22,24(1) + .cfi_offset 22, -40 + lis 8,0xbf58 + lis 9,0x7f4a + stw 27,44(1) + .cfi_offset 27, -20 + lis 11,0x9e37 + lis 27,0x2545 + stw 28,48(1) + .cfi_offset 28, -16 + lis 28,0xdead + ori 27,27,0xf491 + stw 31,60(1) + .cfi_offset 31, -4 + lis 31,0x4f6c + ori 10,10,0xe5b9 + stw 23,28(1) + .cfi_offset 23, -36 + ori 31,31,0xdd1d + ori 8,8,0x476d + stw 24,32(1) + .cfi_offset 24, -32 + ori 23,11,0x79b9 + ori 24,9,0x7c15 + stw 25,36(1) + .cfi_offset 25, -28 + ori 28,28,0xbeef + ori 25,7,0x49bb + stw 26,40(1) + .cfi_offset 26, -24 + ori 26,3,0x11eb +.L21: + mulhwu 7,24,28 + lis 5,0xdead + li 6,0 + ori 5,5,0xbeef + mullw 11,23,28 + mullw 9,24,28 + add 11,11,7 + mullw 12,8,28 + mulhwu 7,10,28 + addc 9,9,10 + adde 8,11,8 + mullw 10,10,28 + mullw 3,26,28 + add 12,12,7 + mullw 0,25,28 + addc 4,10,26 + adde 12,12,25 + mulhwu 7,26,28 + addc 3,3,31 + mulhwu 10,31,28 + mullw 11,27,28 + add 0,0,7 + srwi 7,3,29 + adde 27,0,27 + mullw 31,31,28 + slwi 0,27,3 + srwi 23,27,29 + add 0,0,7 + xor 23,23,8 + add 11,11,10 + xor 24,0,9 + srwi 0,24,31 + srwi 26,23,31 + addc 31,31,9 + slwi 7,24,1 + adde 11,11,8 + srwi 9,31,15 + slwi 10,11,17 + slwi 21,31,17 + add 9,9,10 + slwi 10,23,1 + xor 22,9,12 + add 7,7,26 + add 10,10,0 + xor 21,21,4 + xor 25,7,27 + srwi 8,21,7 + xor 26,10,3 + slwi 9,22,25 + add 9,9,8 + srwi 27,22,7 + mr 3,26 + mr 4,25 + xor 31,9,31 + xor 27,27,11 + bl __udivdi3 + lis 5,0xdead + addc 24,3,24 + mr 11,4 + li 6,0 + ori 5,5,0xbeef + mr 3,31 + mr 4,27 + adde 23,11,23 + bl __udivdi3 + addc 10,3,21 + adde 8,4,22 + addic 29,29,-1 + addme 30,30 + or. 9,29,30 + bne+ 0,.L21 + xor 4,25,27 + xor 3,26,31 + lwz 0,68(1) + xor 4,4,23 + xor 3,3,24 + lwz 21,20(1) + .cfi_restore 21 + lwz 22,24(1) + .cfi_restore 22 + xor 4,4,8 + xor 3,3,10 + lwz 23,28(1) + .cfi_restore 23 + mtlr 0 + .cfi_restore 65 + lwz 24,32(1) + .cfi_restore 24 + lwz 25,36(1) + .cfi_restore 25 + lwz 26,40(1) + .cfi_restore 26 + lwz 27,44(1) + .cfi_restore 27 + lwz 28,48(1) + .cfi_restore 28 + lwz 31,60(1) + .cfi_restore 31 +.L18: + lwz 29,52(1) + lwz 30,56(1) + addi 1,1,64 + .cfi_restore 30 + .cfi_restore 29 + .cfi_def_cfa_offset 0 + blr + .cfi_endproc +.LFE1: + .size fb_int_math,.-fb_int_math + .align 2 + .globl fb_fp_math + .type fb_fp_math, @function +fb_fp_math: +.LFB2: + .cfi_startproc + stwu 1,-112(1) + .cfi_def_cfa_offset 112 + or. 9,3,4 + stw 30,48(1) + .cfi_offset 30, -64 + mr 30,4 + stw 31,52(1) + .cfi_offset 31, -60 + mr 31,3 + beq- 0,.L25 + lis 9,.LC5@ha + stfd 31,104(1) + .cfi_offset 63, -8 + lis 10,.LC1@ha + lfs 31,.LC5@l(9) + lis 9,.LC13@ha + mflr 0 + .cfi_register 65, 0 + lfs 12,.LC13@l(9) + lis 6,.LC3@ha + lis 7,.LC7@ha + stfd 29,88(1) + .cfi_offset 61, -24 + lis 8,.LC9@ha + lfs 29,.LC1@l(10) + lis 10,.LC11@ha + stfd 25,56(1) + .cfi_offset 57, -56 + stfd 26,64(1) + .cfi_offset 58, -48 + stfd 30,96(1) + .cfi_offset 62, -16 + stw 0,116(1) + .cfi_offset 65, 4 + stfd 27,72(1) + .cfi_offset 59, -40 + stfd 28,80(1) + .cfi_offset 60, -32 + lfs 30,.LC3@l(6) + lfs 0,.LC7@l(7) + lfs 25,.LC9@l(8) + lfs 26,.LC11@l(10) + stfs 12,24(1) + stw 29,44(1) + .cfi_offset 29, -68 + lis 29,.LC15@ha + la 29,.LC15@l(29) +.L28: + fmadd 1,0,25,26 + lfs 2,24(1) + bl fmin + lfs 2,24(1) + fmr 28,1 + fmadd 1,31,25,26 + bl fmin + lfs 2,24(1) + fmr 27,1 + fmadd 1,30,25,26 + bl fmin + fmr 30,1 + fmr 1,28 + bl sqrt + lfs 2,24(1) + fmr 0,1 + fmadd 1,29,25,26 + fadd 30,30,0 + bl fmin + fmr 31,1 + fmr 1,27 + bl sqrt + fadd 1,31,1 + bl fabs + lfs 31,0(29) + fmr 2,31 + bl fmax + fadd 0,30,31 + addic 31,31,-1 + fadd 12,1,31 + addme 30,30 + or. 9,31,30 + fmr 29,1 + fdiv 0,31,0 + fdiv 31,31,12 + fadd 0,0,28 + fadd 31,31,27 + bne+ 0,.L28 + fadd 0,0,31 + addi 4,1,16 + li 5,8 + addi 3,1,8 + fadd 0,0,30 + fadd 0,0,1 + stfd 0,16(1) + bl memcpy + lwz 0,116(1) + lfd 25,56(1) + .cfi_restore 57 + lfd 26,64(1) + .cfi_restore 58 + mtlr 0 + .cfi_restore 65 + lfd 27,72(1) + .cfi_restore 59 + lfd 28,80(1) + .cfi_restore 60 + lfd 29,88(1) + .cfi_restore 61 + lfd 30,96(1) + .cfi_restore 62 + lfd 31,104(1) + .cfi_restore 63 + lwz 3,8(1) + lwz 4,12(1) + lwz 29,44(1) + .cfi_restore 29 +.L25: + lwz 30,48(1) + lwz 31,52(1) + addi 1,1,112 + .cfi_restore 31 + .cfi_restore 30 + .cfi_def_cfa_offset 0 + blr + .cfi_endproc +.LFE2: + .size fb_fp_math,.-fb_fp_math + .align 2 + .globl fb_primes + .type fb_primes, @function +fb_primes: +.LFB3: + .cfi_startproc + stwu 1,-48(1) + .cfi_def_cfa_offset 48 + stw 30,40(1) + .cfi_offset 30, -8 + mr. 30,4 + stw 27,28(1) + .cfi_offset 27, -20 + mr 27,5 + stw 29,36(1) + .cfi_offset 29, -12 + mr 29,3 + stw 31,44(1) + .cfi_offset 31, -4 + mfcr 31 + beq- 0,.L54 +.L46: + mflr 0 + .cfi_register 65, 0 + mr 5,29 + stw 24,16(1) + .cfi_offset 24, -32 + li 4,0 + mr 3,27 + stw 25,20(1) + .cfi_offset 25, -28 + stw 0,52(1) + .cfi_offset 65, 4 + bl memset + addic 24,29,-1 + li 9,1 + addme 25,30 + stb 9,1(27) + srwi 10,24,1 + stb 9,0(27) + srwi. 9,25,1 + slwi 9,25,31 + add 9,9,10 + beq- 0,.L55 +.L47: + stw 26,24(1) + .cfi_offset 26, -24 + li 31,2 + li 26,1 + stw 28,32(1) + .cfi_offset 28, -16 + li 28,0 +.L50: + lbzx 9,27,31 + cmpwi 0,9,0 + beq- 0,.L56 +.L37: + addic 31,31,1 + mr 3,24 + addze 28,28 + mr 5,31 + mr 6,28 + mr 4,25 + bl __udivdi3 + cmplw 0,28,4 + bgt- 0,.L53 + bne+ 0,.L50 + cmplw 0,31,3 + ble+ 0,.L50 +.L53: + lwz 26,24(1) + .cfi_restore 26 + lwz 28,32(1) + .cfi_restore 28 +.L43: + addic 8,29,-2 + addi 27,27,1 + addme 9,30 + li 3,0 + li 4,0 +.L45: + lbzu 10,1(27) + cntlzw 10,10 + srwi 10,10,5 + addc 3,10,3 + addze 4,4 + addic 8,8,-1 + addme 9,9 + or. 10,8,9 + bne+ 0,.L45 + lwz 0,52(1) + lwz 24,16(1) + .cfi_restore 24 + lwz 25,20(1) + .cfi_restore 25 + mtlr 0 + .cfi_restore 65 + lwz 27,28(1) + lwz 29,36(1) + lwz 30,40(1) + lwz 31,44(1) + addi 1,1,48 + .cfi_restore 31 + .cfi_restore 30 + .cfi_restore 29 + .cfi_restore 27 + .cfi_def_cfa_offset 0 + blr +.L56: + .cfi_def_cfa_offset 48 + .cfi_offset 24, -32 + .cfi_offset 25, -28 + .cfi_offset 26, -24 + .cfi_offset 27, -20 + .cfi_offset 28, -16 + .cfi_offset 29, -12 + .cfi_offset 30, -8 + .cfi_offset 31, -4 + .cfi_offset 65, 4 + mullw 10,28,31 + mulhwu 8,31,31 + slwi 10,10,1 + mullw 9,31,31 + add 10,10,8 + cmplw 0,30,10 + ble- 0,.L57 +.L49: + addc 8,31,9 + stbx 26,27,9 + adde 10,28,10 + mr 9,8 + cmplw 0,30,10 + bgt+ 0,.L49 + cmplw 7,29,8 + bne- 0,.L37 + bgt+ 7,.L49 + b .L37 +.L54: + .cfi_restore 24 + .cfi_restore 25 + .cfi_restore 26 + .cfi_restore 28 + .cfi_restore 65 + cmplwi 0,3,1 + bgt+ 0,.L46 +.L33: + lwz 27,28(1) + li 3,0 + li 4,0 + lwz 29,36(1) + lwz 30,40(1) + lwz 31,44(1) + addi 1,1,48 + .cfi_restore 31 + .cfi_restore 30 + .cfi_restore 29 + .cfi_restore 27 + .cfi_def_cfa_offset 0 + blr +.L57: + .cfi_def_cfa_offset 48 + .cfi_offset 24, -32 + .cfi_offset 25, -28 + .cfi_offset 26, -24 + .cfi_offset 27, -20 + .cfi_offset 28, -16 + .cfi_offset 29, -12 + .cfi_offset 30, -8 + .cfi_offset 31, -4 + .cfi_offset 65, 4 + bne- 0,.L37 + cmplw 0,29,9 + bgt+ 0,.L49 + b .L37 +.L55: + .cfi_restore 26 + .cfi_restore 28 + cmplwi 0,9,1 + bgt+ 0,.L47 + cmplwi 0,29,2 + bne- 0,.L43 + mtcrf 128,31 + bne- 0,.L43 + lwz 0,52(1) + lwz 24,16(1) + .cfi_restore 24 + lwz 25,20(1) + .cfi_restore 25 + mtlr 0 + .cfi_restore 65 + b .L33 + .cfi_endproc +.LFE3: + .size fb_primes,.-fb_primes + .section .rodata.str1.4,"aMS",@progbits,1 + .align 2 +.LC24: + .string "rb" + .align 2 +.LC25: + .string "/proc/device-tree/compatible" + .align 2 +.LC26: + .string "/sys/firmware/devicetree/base/compatible" + .section ".text" + .align 2 + .globl fb_simd + .type fb_simd, @function +fb_simd: +.LFB7: + .cfi_startproc + or. 9,3,4 + mr 10,3 + mr 11,4 + beqlr- 0 + stwu 1,-80(1) + .cfi_def_cfa_offset 80 + mflr 0 + lis 9,.LANCHOR0@ha + stw 31,76(1) + .cfi_register 65, 0 + .cfi_offset 31, -4 + mr 31,5 + stw 0,84(1) + lwz 8,.LANCHOR0@l(9) + cmpw 0,8,8 + bne- 0,$+4 + isync + cmpwi 0,8,0 + la 8,.LANCHOR0@l(9) + .cfi_offset 65, 4 + beq- 0,.L95 +.L61: + lwz 9,4(8) + cmpwi 0,9,0 + beq- 0,.L96 + mr 3,10 + mr 5,31 + mtctr 9 + mr 4,11 + bctrl + li 8,8 + li 10,0 + mtctr 8 + addi 5,31,-4 +.L72: + lwzu 9,4(5) + xor 10,10,9 + bdnz .L72 + li 11,0 +.L59: + lwz 0,84(1) + mr 3,10 + mr 4,11 + lwz 31,76(1) + addi 1,1,80 + .cfi_remember_state + .cfi_restore 31 + .cfi_def_cfa_offset 0 + mtlr 0 + .cfi_restore 65 + blr +.L95: + .cfi_restore_state + stw 3,40(1) + li 3,16 + stw 29,68(1) + .cfi_offset 29, -12 + stw 30,72(1) + .cfi_offset 30, -8 + stw 4,44(1) + bl getauxval + lis 8,.LC24@ha + mr 7,3 + la 9,.LC24@l(8) + lis 3,.LC25@ha + mr 4,9 + la 3,.LC25@l(3) + mr 29,9 + mr 30,7 + bl fopen + lwz 10,40(1) + mr. 6,3 + lwz 11,44(1) + beq- 0,.L97 +.L62: + addi 3,1,8 + li 5,9 + stw 11,48(1) + li 4,1 + stw 10,44(1) + stw 6,40(1) + bl fread + cmpwi 0,3,9 + lwz 6,40(1) + lwz 10,44(1) + lwz 11,48(1) + beq- 0,.L98 +.L64: + mr 3,6 + stw 11,44(1) + stw 10,40(1) + bl fclose + lis 9,.LANCHOR0@ha + lwz 11,44(1) + lwz 10,40(1) +.L63: + mr 8,30 + lis 7,fb_simd_vsx_kernel@ha + andi. 8,8,0x80 + la 7,fb_simd_vsx_kernel@l(7) + bne- 0,.L65 + andis. 7,30,0x1000 + beq- 0,.L65 + lis 7,fb_simd_altivec_kernel@ha + la 7,fb_simd_altivec_kernel@l(7) +.L65: + la 8,.LANCHOR0@l(9) + stw 7,4(8) + lwsync + li 7,1 + stw 7,.LANCHOR0@l(9) + lwz 29,68(1) + .cfi_remember_state + .cfi_restore 29 + lwz 30,72(1) + .cfi_restore 30 + b .L61 +.L97: + .cfi_restore_state + lis 3,.LC26@ha + mr 4,29 + la 3,.LC26@l(3) + bl fopen + lwz 10,40(1) + lis 9,.LANCHOR0@ha + mr. 6,3 + lwz 11,44(1) + bne+ 0,.L62 + b .L63 +.L96: + .cfi_restore 29 + .cfi_restore 30 + addi 12,1,8 + li 5,32 + stw 11,44(1) + mr 3,12 + mr 4,31 + stw 10,40(1) + bl memcpy + li 9,0 + lwz 10,40(1) + li 5,0 + lwz 11,44(1) + mtlr 9 + addi 12,1,8 +.L68: + addi 3,1,4 + li 9,8 + mr 6,3 + li 7,0 + mtctr 9 +.L69: + mr 8,7 + addi 7,7,1 + lwzu 4,4(6) + rlwinm 0,7,2,27,29 + addi 9,8,3 + lwzx 0,12,0 + addi 8,8,5 + mullw 9,9,0 + add 9,9,4 + rotlw 9,9,8 + stw 9,0(6) + bdnz .L69 + addic 5,5,1 + mflr 9 + cmplw 0,10,5 + addze 9,9 + mtlr 9 + bne+ 0,.L68 + cmplw 0,11,9 + bne+ 0,.L68 + li 9,8 + li 10,0 + mtctr 9 +.L70: + lwzu 9,4(3) + xor 10,10,9 + bdnz .L70 + mr 4,12 + mr 3,31 + stw 10,40(1) + li 5,32 + bl memcpy + lwz 10,40(1) + li 11,0 + b .L59 +.L98: + .cfi_offset 29, -12 + .cfi_offset 30, -8 + lis 4,.LANCHOR1@ha + addi 3,1,8 + la 4,.LANCHOR1@l(4) + li 5,9 + bl memcmp + lis 9,.LANCHOR0@ha + lwz 6,40(1) + cmpwi 0,3,0 + lwz 10,44(1) + mr 29,9 + lwz 11,48(1) + bne- 0,.L64 + mr 3,6 + stw 11,44(1) + stw 10,40(1) + bl fclose + lis 7,fb_simd_ps_kernel@ha + mr 9,29 + lwz 10,40(1) + la 7,fb_simd_ps_kernel@l(7) + lwz 11,44(1) + b .L65 + .cfi_endproc +.LFE7: + .size fb_simd,.-fb_simd + .align 2 + .globl fb_compress + .type fb_compress, @function +fb_compress: +.LFB9: + .cfi_startproc + stwu 1,-96(1) + .cfi_def_cfa_offset 96 + mflr 0 + li 4,0 + stw 25,68(1) + .cfi_register 65, 0 + .cfi_offset 25, -28 + mr 25,5 + lis 5,0x4 + stw 26,72(1) + .cfi_offset 26, -24 + mr 26,6 + stw 28,80(1) + .cfi_offset 28, -16 + mr 28,3 + mr 3,7 + stw 18,40(1) + stw 21,52(1) + stw 29,84(1) + .cfi_offset 18, -56 + .cfi_offset 21, -44 + .cfi_offset 29, -12 + mr 29,7 + stw 0,100(1) + .cfi_offset 65, 4 + bl memset + cmpwi 0,26,0 + addic 21,25,1 + addze 18,26 + beq- 0,.L131 +.L120: + addic 9,25,-12 + stw 24,64(1) + .cfi_offset 24, -32 + lis 24,0x9e37 + stw 14,24(1) + .cfi_offset 14, -72 + ori 24,24,0x79b1 + mr 14,9 + stw 17,36(1) + .cfi_offset 17, -60 + li 17,0 + stw 19,44(1) + .cfi_offset 19, -52 + li 19,0 + stw 20,48(1) + .cfi_offset 20, -48 + li 20,0 + stw 22,56(1) + .cfi_offset 22, -40 + addme 22,26 + stw 23,60(1) + .cfi_offset 23, -36 + li 23,0 + stw 27,76(1) + .cfi_offset 27, -20 + li 27,0 + stw 30,88(1) + .cfi_offset 30, -8 + li 30,0 + stw 31,92(1) + .cfi_offset 31, -4 + li 31,0 + stw 15,28(1) + .cfi_offset 15, -68 + stw 16,32(1) + .cfi_offset 16, -64 + b .L127 +.L121: + subfc 10,16,31 + subfe 9,19,30 + cmpwi 0,9,0 + bne- 0,.L102 + cmplwi 0,10,65535 + bgt- 0,.L102 + li 5,4 + add 4,28,16 + addi 3,1,8 + bl memcpy + lwz 9,8(1) + cmplw 0,15,9 + beq- 0,.L132 +.L102: + addic 31,31,1 + addze 30,30 +.L108: + cmplw 0,22,30 + ble- 0,.L133 +.L127: + li 5,4 + add 4,28,31 + addi 3,1,8 + bl memcpy + lwz 15,8(1) + cmplwi 0,30,0 + mullw 9,15,24 + rlwinm 9,9,18,14,29 + lwzx 16,29,9 + stwx 31,29,9 + bgt+ 0,.L121 + bne- 0,.L102 + cmplw 0,31,16 + bgt+ 0,.L121 + b .L102 +.L133: + bne- 0,.L125 + cmplw 0,14,31 + bgt+ 0,.L127 +.L125: + addc 21,27,21 + lwz 0,100(1) + adde 18,23,18 + subfc 21,20,21 + lwz 14,24(1) + .cfi_remember_state + .cfi_restore 14 + subfe 18,17,18 + mr 3,21 + lwz 15,28(1) + .cfi_restore 15 + mr 4,18 + lwz 16,32(1) + .cfi_restore 16 + mtlr 0 + .cfi_restore 65 + lwz 17,36(1) + .cfi_restore 17 + lwz 19,44(1) + .cfi_restore 19 + lwz 20,48(1) + .cfi_restore 20 + lwz 22,56(1) + .cfi_restore 22 + lwz 23,60(1) + .cfi_restore 23 + lwz 24,64(1) + .cfi_restore 24 + lwz 27,76(1) + .cfi_restore 27 + lwz 30,88(1) + .cfi_restore 30 + lwz 31,92(1) + .cfi_restore 31 + lwz 18,40(1) + lwz 21,52(1) + lwz 25,68(1) + lwz 26,72(1) + lwz 28,80(1) + lwz 29,84(1) + addi 1,1,96 + .cfi_restore 29 + .cfi_restore 28 + .cfi_restore 26 + .cfi_restore 25 + .cfi_restore 21 + .cfi_restore 18 + .cfi_def_cfa_offset 0 + blr +.L132: + .cfi_restore_state + addic 3,31,4 + addze 7,30 + cmplw 0,26,7 + ble- 0,.L134 +.L119: + li 9,4 + li 8,0 + b .L126 +.L112: + addc 3,6,31 + mr 9,6 + adde 7,4,30 + mr 8,4 + cmplw 0,26,7 + ble- 0,.L135 +.L126: + add 10,28,9 + addic 6,9,1 + lbzx 5,10,31 + addze 4,8 + lbzx 10,10,16 + cmpw 0,5,10 + beq+ 0,.L112 + cmpwi 0,8,0 + li 10,1 + beq- 0,.L136 + mr 9,10 +.L129: + li 8,0 +.L107: + subfc 31,20,31 + li 10,1 + subfe 30,17,30 + addic 27,27,3 + cmpwi 0,30,0 + addze 23,23 + addc 27,27,31 + adde 23,23,30 + bne- 0,.L115 + subfic 31,31,14 + subfe 10,10,10 + rlwinm 10,10,0,31,31 +.L115: + addc 27,27,10 + mr 20,3 + addze 23,23 + addc 27,27,9 + mr 17,7 + mr 31,3 + adde 23,23,8 + mr 30,7 + b .L108 +.L131: + .cfi_restore 14 + .cfi_restore 15 + .cfi_restore 16 + .cfi_restore 17 + .cfi_restore 19 + .cfi_restore 20 + .cfi_restore 22 + .cfi_restore 23 + .cfi_restore 24 + .cfi_restore 27 + .cfi_restore 30 + .cfi_restore 31 + cmplwi 0,25,15 + bgt+ 0,.L120 + lwz 0,100(1) + mr 3,21 + mr 4,18 + lwz 18,40(1) + lwz 21,52(1) + mtlr 0 + .cfi_restore 65 + lwz 25,68(1) + lwz 26,72(1) + lwz 28,80(1) + lwz 29,84(1) + addi 1,1,96 + .cfi_restore 29 + .cfi_restore 28 + .cfi_restore 26 + .cfi_restore 25 + .cfi_restore 21 + .cfi_restore 18 + .cfi_def_cfa_offset 0 + blr +.L135: + .cfi_def_cfa_offset 96 + .cfi_offset 14, -72 + .cfi_offset 15, -68 + .cfi_offset 16, -64 + .cfi_offset 17, -60 + .cfi_offset 18, -56 + .cfi_offset 19, -52 + .cfi_offset 20, -48 + .cfi_offset 21, -44 + .cfi_offset 22, -40 + .cfi_offset 23, -36 + .cfi_offset 24, -32 + .cfi_offset 25, -28 + .cfi_offset 26, -24 + .cfi_offset 27, -20 + .cfi_offset 28, -16 + .cfi_offset 29, -12 + .cfi_offset 30, -8 + .cfi_offset 31, -4 + .cfi_offset 65, 4 + cmplw 7,25,3 + bne- 0,.L124 + bgt+ 7,.L126 +.L124: + cmpwi 0,4,0 + li 9,1 + bne- 0,.L129 + subfic 6,6,18 + subfe 10,10,10 + neg 10,10 + neg 10,10 + and 9,9,10 + b .L129 +.L136: + subfic 9,9,18 + subfe 9,9,9 + neg 9,9 + neg 9,9 + and 10,10,9 + mr 9,10 + b .L129 +.L134: + bne- 0,.L123 + cmplw 0,25,3 + bgt+ 0,.L119 +.L123: + li 9,0 + li 8,0 + b .L107 + .cfi_endproc +.LFE9: + .size fb_compress,.-fb_compress + .align 2 + .globl fb_chacha20 + .type fb_chacha20, @function +fb_chacha20: +.LFB12: + .cfi_startproc + stwu 1,-224(1) + .cfi_def_cfa_offset 224 + mr 4,6 + stw 18,168(1) + .cfi_offset 18, -56 + rlwinm 18,5,0,0,25 + or. 8,18,6 + beq- 0,.L137 + stw 26,200(1) + .cfi_offset 26, -24 + mr 26,9 + or. 9,26,10 + stw 25,196(1) + .cfi_offset 25, -28 + mr 25,10 + bne- 0,.L163 + mr 18,26 + lwz 25,196(1) + .cfi_restore 25 + mr 4,10 + lwz 26,200(1) + .cfi_restore 26 +.L137: + mr 3,18 + lwz 18,168(1) + addi 1,1,224 + .cfi_restore 18 + .cfi_def_cfa_offset 0 + blr +.L163: + .cfi_def_cfa_offset 224 + .cfi_offset 18, -56 + .cfi_offset 25, -28 + .cfi_offset 26, -24 + lis 4,.LANCHOR1@ha + stw 21,180(1) + .cfi_offset 21, -44 + mflr 0 + .cfi_register 65, 0 + la 4,.LANCHOR1@l(4) + mr 21,3 + stw 22,184(1) + .cfi_offset 22, -40 + addi 3,1,72 + addi 4,4,12 + stw 23,188(1) + .cfi_offset 23, -36 + li 5,16 + stw 31,220(1) + .cfi_offset 31, -4 + mr 22,6 + stw 0,228(1) + .cfi_offset 65, 4 + mr 31,7 + li 23,8 + stw 14,152(1) + .cfi_offset 14, -72 + stw 15,156(1) + .cfi_offset 15, -68 + stw 16,160(1) + .cfi_offset 16, -64 + stw 17,164(1) + .cfi_offset 17, -60 + stw 19,172(1) + .cfi_offset 19, -52 + stw 20,176(1) + .cfi_offset 20, -48 + stw 24,192(1) + .cfi_offset 24, -32 + stw 27,204(1) + .cfi_offset 27, -20 + stw 28,208(1) + .cfi_offset 28, -16 + stw 29,212(1) + .cfi_offset 29, -12 + stw 30,216(1) + .cfi_offset 30, -8 + bl memcpy + li 9,8 + addi 6,1,84 + mtctr 9 +.L141: + lbz 7,1(31) + addi 23,23,-1 + addi 31,31,4 + lbz 8,-4(31) + lbz 10,-2(31) + lbz 9,-1(31) + rlwimi 8,7,8,0,31-8 + slwi 10,10,16 + or 10,10,8 + slwi 9,9,24 + or 9,9,10 + stwu 9,4(6) + bdnz .L141 + li 29,0 + li 28,0 + stw 23,132(1) + stw 23,128(1) + mr 17,18 + li 27,0 + stw 23,124(1) + mr 18,21 + addi 20,1,4 + stw 29,136(1) + addi 19,1,68 + mr 21,22 + stw 28,140(1) + stw 25,144(1) +.L142: + lwz 24,136(1) + li 25,0 + li 22,0 + mr 14,27 + mr 15,26 +.L156: + li 5,64 + addi 4,1,72 + stw 24,120(1) + addi 3,1,8 + addi 24,24,1 + bl memcpy + li 9,10 + lwz 0,8(1) + mtctr 9 + lwz 4,56(1) + lwz 9,24(1) + lwz 31,40(1) + lwz 29,12(1) + lwz 7,28(1) + lwz 5,60(1) + lwz 28,44(1) + lwz 30,16(1) + lwz 8,32(1) + lwz 6,64(1) + lwz 26,48(1) + lwz 11,20(1) + lwz 10,36(1) + lwz 3,68(1) + lwz 27,52(1) +.L143: + add 0,9,0 + add 29,7,29 + add 30,8,30 + add 11,10,11 + xor 4,0,4 + xor 5,29,5 + xor 6,30,6 + xor 3,11,3 + rotlwi 4,4,16 + rotlwi 5,5,16 + rotlwi 6,6,16 + rotlwi 3,3,16 + add 31,4,31 + add 28,5,28 + add 26,26,6 + add 27,27,3 + xor 9,31,9 + xor 7,28,7 + xor 8,26,8 + xor 10,27,10 + rotlwi 9,9,12 + rotlwi 7,7,12 + rotlwi 8,8,12 + rotlwi 10,10,12 + add 0,0,9 + add 29,29,7 + add 30,30,8 + add 11,11,10 + xor 4,0,4 + xor 5,29,5 + xor 6,30,6 + xor 3,11,3 + rotlwi 4,4,8 + rotlwi 5,5,8 + rotlwi 6,6,8 + rotlwi 3,3,8 + add 31,31,4 + add 28,28,5 + add 26,26,6 + add 27,27,3 + xor 9,31,9 + xor 7,28,7 + xor 8,26,8 + xor 10,27,10 + rotlwi 9,9,7 + rotlwi 7,7,7 + rotlwi 8,8,7 + rotlwi 10,10,7 + add 0,0,7 + add 29,29,8 + add 11,11,9 + add 30,30,10 + xor 4,29,4 + xor 6,11,6 + xor 3,0,3 + xor 5,30,5 + rotlwi 4,4,16 + rotlwi 6,6,16 + rotlwi 3,3,16 + rotlwi 5,5,16 + add 28,28,6 + add 26,26,3 + add 27,27,4 + add 31,31,5 + xor 9,28,9 + xor 7,26,7 + xor 8,27,8 + xor 10,31,10 + rotlwi 9,9,12 + rotlwi 7,7,12 + rotlwi 8,8,12 + rotlwi 10,10,12 + add 11,11,9 + add 0,0,7 + add 29,29,8 + add 30,30,10 + xor 6,11,6 + xor 3,0,3 + xor 4,29,4 + xor 5,30,5 + rotlwi 6,6,8 + rotlwi 3,3,8 + rotlwi 4,4,8 + rotlwi 5,5,8 + add 28,28,6 + add 26,26,3 + add 27,27,4 + add 31,31,5 + xor 9,28,9 + xor 7,26,7 + xor 8,27,8 + xor 10,31,10 + rotlwi 9,9,7 + rotlwi 7,7,7 + rotlwi 8,8,7 + rotlwi 10,10,7 + bdnz .L143 + stw 26,48(1) + mr 16,20 + mr 12,19 + stw 7,28(1) + stw 29,12(1) + stw 4,56(1) + stw 27,52(1) + stw 8,32(1) + stw 30,16(1) + stw 5,60(1) + stw 31,40(1) + stw 10,36(1) + stw 11,20(1) + stw 6,64(1) + stw 28,44(1) + stw 9,24(1) + stw 0,8(1) + li 0,16 + stw 3,68(1) + mtctr 0 + add 3,18,25 +.L144: + lwzu 10,4(12) + addi 3,3,4 + lwzu 9,4(16) + lbz 11,-3(3) + add 9,9,10 + lbz 4,-2(3) + lbz 5,-1(3) + srwi 6,9,8 + srwi 7,9,16 + lbz 10,-4(3) + srwi 8,9,24 + xor 6,6,11 + xor 7,7,4 + xor 8,8,5 + stb 6,-3(3) + xor 10,9,10 + stb 7,-2(3) + xor 23,23,9 + stb 8,-1(3) + stb 10,-4(3) + bdnz .L144 + addic 25,25,64 + addze 22,22 + cmplw 0,21,22 + bgt+ 0,.L156 + bne- 0,.L150 + cmplw 0,17,25 + bgt+ 0,.L156 +.L150: + lwz 8,140(1) + addic 10,17,-1 + mr 26,15 + addme 9,21 + srwi 10,10,6 + addic 28,8,1 + slwi 9,9,26 + cmplw 0,15,28 + add 9,9,10 + lwz 10,136(1) + addi 9,9,1 + stw 28,140(1) + addze 27,14 + add 9,10,9 + stw 9,136(1) + bne+ 0,.L142 + lwz 9,144(1) + cmplw 0,9,27 + bne+ 0,.L142 + lwz 0,228(1) + mr 18,23 + li 4,0 + mr 3,18 + lwz 14,152(1) + .cfi_restore 14 + lwz 15,156(1) + .cfi_restore 15 + mtlr 0 + .cfi_restore 65 + lwz 16,160(1) + .cfi_restore 16 + lwz 17,164(1) + .cfi_restore 17 + lwz 19,172(1) + .cfi_restore 19 + lwz 20,176(1) + .cfi_restore 20 + lwz 21,180(1) + .cfi_restore 21 + lwz 22,184(1) + .cfi_restore 22 + lwz 23,188(1) + .cfi_restore 23 + lwz 24,192(1) + .cfi_restore 24 + lwz 25,196(1) + .cfi_restore 25 + lwz 26,200(1) + .cfi_restore 26 + lwz 27,204(1) + .cfi_restore 27 + lwz 28,208(1) + .cfi_restore 28 + lwz 29,212(1) + .cfi_restore 29 + lwz 30,216(1) + .cfi_restore 30 + lwz 31,220(1) + .cfi_restore 31 + lwz 18,168(1) + addi 1,1,224 + .cfi_restore 18 + .cfi_def_cfa_offset 0 + blr + .cfi_endproc +.LFE12: + .size fb_chacha20,.-fb_chacha20 + .align 2 + .globl fb_physics + .type fb_physics, @function +fb_physics: +.LFB13: + .cfi_startproc + lis 9,.LC28@ha + stwu 1,-160(1) + .cfi_def_cfa_offset 160 + lfs 0,.LC28@l(9) + or. 9,5,6 + stw 23,68(1) + .cfi_offset 23, -92 + mr 23,6 + stfs 0,24(1) + stw 25,76(1) + .cfi_offset 25, -84 + mr 25,5 + lfs 0,24(1) + stfd 0,8(1) + beq- 0,.L177 + or. 9,7,8 + stw 18,48(1) + .cfi_offset 18, -112 + mr 18,8 + stw 20,56(1) + .cfi_offset 20, -104 + mr 20,7 + beq- 0,.L178 + mflr 0 + .cfi_register 65, 0 + lis 9,.LC30@ha + stfd 25,104(1) + .cfi_offset 57, -56 + stw 0,164(1) + .cfi_offset 65, 4 + stw 17,44(1) + .cfi_offset 17, -116 + stw 26,80(1) + .cfi_offset 26, -80 + stw 28,88(1) + .cfi_offset 28, -72 + stw 29,92(1) + .cfi_offset 29, -68 + stw 30,96(1) + .cfi_offset 30, -64 + stw 31,100(1) + .cfi_offset 31, -60 + stfd 26,112(1) + .cfi_offset 58, -48 + stfd 27,120(1) + .cfi_offset 59, -40 + stfd 28,128(1) + .cfi_offset 60, -32 + stfd 29,136(1) + .cfi_offset 61, -24 + stfd 30,144(1) + .cfi_offset 62, -16 + stfd 31,152(1) + .cfi_offset 63, -8 + lfs 25,.LC30@l(9) + stw 22,64(1) + .cfi_offset 22, -96 + lis 22,.LC32@ha + stw 27,84(1) + .cfi_offset 27, -76 + lis 27,.LC15@ha + la 22,.LC32@l(22) + stw 19,52(1) + .cfi_offset 19, -108 + la 27,.LC15@l(27) + li 19,0 + stw 21,60(1) + .cfi_offset 21, -100 + li 21,0 + stw 24,72(1) + .cfi_offset 24, -88 + mr 24,3 +.L168: + mr 28,24 + li 26,0 + li 17,0 +.L175: + lfs 26,24(1) + mr 30,24 + mr 31,25 + mr 29,23 + fmr 27,26 + fmr 28,26 +.L169: + lfd 0,8(30) + addi 30,30,64 + lfd 12,8(28) + fsub 30,0,12 + lfd 0,-64(30) + lfd 12,0(28) + fmul 1,30,30 + fsub 29,0,12 + lfd 0,-48(30) + lfd 12,16(28) + fmadd 1,29,29,1 + fsub 31,0,12 + fmadd 1,31,31,1 + fadd 1,1,25 + bl sqrt + lfs 0,0(27) + addic 31,31,-1 + lfd 12,-40(30) + addme 29,29 + or. 9,31,29 + fdiv 0,0,1 + fmul 1,0,0 + fmul 1,1,0 + fmul 1,1,12 + fmadd 28,29,1,28 + fmadd 27,30,1,27 + fmadd 26,31,1,26 + bne+ 0,.L169 + lis 9,.LC31@ha + lfd 11,32(28) + addic 26,26,1 + lfd 12,.LC31@l(9) + cmplw 0,25,26 + addze 17,17 + lfs 0,0(22) + addi 28,28,64 + fmadd 28,28,12,11 + lfd 11,-24(28) + fmadd 27,27,12,11 + lfd 11,-16(28) + stfd 28,-32(28) + fmadd 26,26,12,11 + stfd 27,-24(28) + stfd 26,-16(28) + bne+ 0,.L175 + cmplw 0,23,17 + bne+ 0,.L175 + mr 9,24 + mtctr 25 +.L172: + lfd 11,0(9) + addi 9,9,64 + lfd 12,-32(9) + lfd 10,-56(9) + fmadd 12,12,0,11 + lfd 11,-24(9) + stfd 12,-64(9) + fmadd 11,11,0,10 + lfd 12,-16(9) + lfd 10,-48(9) + stfd 11,-56(9) + fmadd 12,12,0,10 + stfd 12,-48(9) + bdnz .L172 + addic 21,21,1 + cmplw 0,20,21 + addze 19,19 + bne+ 0,.L168 + cmplw 0,18,19 + bne+ 0,.L168 + andi. 9,25,0x1 + lfd 11,8(1) + addi 9,24,32 + addi 10,25,-1 + beq- 0,.L183 + lfd 0,0(9) + cmpwi 0,10,0 + lfd 10,8(9) + lfd 12,16(9) + addi 9,24,96 + fadd 0,0,10 + fadd 0,0,12 + fadd 11,11,0 + beq- 0,.L189 +.L183: + srwi 10,25,1 + mtctr 10 +.L176: + lfd 0,0(9) + mr 10,9 + addi 9,9,128 + lfd 12,-120(9) + lfd 8,-112(9) + lfd 9,-56(9) + fadd 12,0,12 + lfd 0,-64(9) + lfd 10,80(10) + fadd 12,12,8 + fadd 0,0,9 + fadd 11,11,12 + fadd 0,0,10 + fadd 11,11,0 + bdnz .L176 +.L189: + addi 4,1,8 + addi 3,1,16 + stfd 11,8(1) + li 5,8 + bl memcpy + lwz 0,164(1) + lwz 3,16(1) + lwz 4,20(1) + mtlr 0 + .cfi_restore 65 + lfd 25,104(1) + .cfi_restore 57 + lfd 26,112(1) + .cfi_restore 58 + lfd 27,120(1) + .cfi_restore 59 + lfd 28,128(1) + .cfi_restore 60 + lfd 29,136(1) + .cfi_restore 61 + lfd 30,144(1) + .cfi_restore 62 + lfd 31,152(1) + .cfi_restore 63 + lwz 17,44(1) + .cfi_restore 17 + lwz 18,48(1) + .cfi_restore 18 + lwz 19,52(1) + .cfi_restore 19 + lwz 20,56(1) + .cfi_restore 20 + lwz 21,60(1) + .cfi_restore 21 + lwz 22,64(1) + .cfi_restore 22 + lwz 24,72(1) + .cfi_restore 24 + lwz 26,80(1) + .cfi_restore 26 + lwz 27,84(1) + .cfi_restore 27 + lwz 28,88(1) + .cfi_restore 28 + lwz 29,92(1) + .cfi_restore 29 + lwz 30,96(1) + .cfi_restore 30 + lwz 31,100(1) + .cfi_restore 31 + lwz 23,68(1) + lwz 25,76(1) + addi 1,1,160 + .cfi_restore 25 + .cfi_restore 23 + .cfi_def_cfa_offset 0 + blr +.L178: + .cfi_def_cfa_offset 160 + .cfi_offset 18, -112 + .cfi_offset 20, -104 + .cfi_offset 23, -92 + .cfi_offset 25, -84 + lwz 18,48(1) + .cfi_restore 18 + mr 3,7 + mr 4,8 + lwz 20,56(1) + .cfi_restore 20 + lwz 23,68(1) + lwz 25,76(1) + addi 1,1,160 + .cfi_restore 25 + .cfi_restore 23 + .cfi_def_cfa_offset 0 + blr +.L177: + .cfi_def_cfa_offset 160 + .cfi_offset 23, -92 + .cfi_offset 25, -84 + lwz 23,68(1) + mr 3,5 + mr 4,6 + lwz 25,76(1) + addi 1,1,160 + .cfi_restore 25 + .cfi_restore 23 + .cfi_def_cfa_offset 0 + blr + .cfi_endproc +.LFE13: + .size fb_physics,.-fb_physics + .align 2 + .globl fb_sort + .type fb_sort, @function +fb_sort: +.LFB15: + .cfi_startproc + stwu 1,-32(1) + .cfi_def_cfa_offset 32 + stw 28,16(1) + .cfi_offset 28, -16 + mr. 28,6 + stw 27,12(1) + .cfi_offset 27, -20 + mr 27,3 + stw 29,20(1) + .cfi_offset 29, -12 + mr 29,5 + stw 30,24(1) + stw 31,28(1) + .cfi_offset 30, -8 + .cfi_offset 31, -4 + beq- 0,.L207 +.L194: + mflr 0 + .cfi_register 65, 0 + stw 26,8(1) + .cfi_offset 26, -24 + slwi 31,28,31 + stw 0,36(1) + .cfi_offset 65, 4 + srwi 9,29,1 + srwi 30,28,1 + add 31,31,9 +.L198: + addic 31,31,-1 + mr 7,29 + addme 30,30 + mr 5,31 + mr 6,30 + mr 8,28 + mr 3,27 + bl sift + or. 9,31,30 + bne+ 0,.L198 + addic 30,29,-1 + addi 9,27,4 + slwi 26,30,2 + addme 31,28 + add 26,26,9 +.L199: + lwz 9,0(27) + mr 7,30 + mr 8,31 + lwzu 10,-4(26) + li 6,0 + li 5,0 + mr 3,27 + stw 10,0(27) + stw 9,0(26) + bl sift + addic 30,30,-1 + addme 31,31 + or. 9,30,31 + bne+ 0,.L199 + addi 27,27,-4 +.L200: + srwi 8,30,7 + lwzu 10,4(27) + slwi 9,31,25 + add 9,9,8 + srwi 31,31,7 + xor 9,10,9 + slwi 8,30,25 + addc 30,10,9 + adde 31,8,31 + addic 29,29,-1 + addme 28,28 + or. 9,29,28 + bne+ 0,.L200 + lwz 0,36(1) + mr 3,30 + mr 4,31 + lwz 26,8(1) + .cfi_restore 26 + lwz 27,12(1) + mtlr 0 + .cfi_restore 65 + lwz 28,16(1) + lwz 29,20(1) + lwz 30,24(1) + lwz 31,28(1) + addi 1,1,32 + .cfi_restore 31 + .cfi_restore 30 + .cfi_restore 29 + .cfi_restore 28 + .cfi_restore 27 + .cfi_def_cfa_offset 0 + blr +.L207: + .cfi_def_cfa_offset 32 + .cfi_offset 27, -20 + .cfi_offset 28, -16 + .cfi_offset 29, -12 + .cfi_offset 30, -8 + .cfi_offset 31, -4 + cmplwi 0,5,1 + bgt+ 0,.L194 + cmpwi 0,5,0 + bne- 0,.L208 + li 30,0 + li 31,0 + lwz 27,12(1) + mr 3,30 + mr 4,31 + lwz 28,16(1) + lwz 29,20(1) + lwz 30,24(1) + lwz 31,28(1) + addi 1,1,32 + .cfi_remember_state + .cfi_restore 31 + .cfi_restore 30 + .cfi_restore 29 + .cfi_restore 28 + .cfi_restore 27 + .cfi_def_cfa_offset 0 + blr +.L208: + .cfi_restore_state + lwz 30,0(3) + li 31,0 + mr 4,31 + lwz 27,12(1) + mr 3,30 + lwz 28,16(1) + lwz 29,20(1) + lwz 30,24(1) + lwz 31,28(1) + addi 1,1,32 + .cfi_restore 31 + .cfi_restore 30 + .cfi_restore 29 + .cfi_restore 28 + .cfi_restore 27 + .cfi_def_cfa_offset 0 + blr + .cfi_endproc +.LFE15: + .size fb_sort,.-fb_sort + .align 2 + .globl fb_chase + .type fb_chase, @function +fb_chase: +.LFB16: + .cfi_startproc + or. 9,5,6 + beq- 0,.L213 + mr 9,3 +.L212: + addic 5,5,-1 + lwz 9,0(9) + addme 6,6 + or. 10,5,6 + bne+ 0,.L212 + subf 3,3,9 + li 4,0 + blr +.L213: + mr 3,5 + mr 4,6 + blr + .cfi_endproc +.LFE16: + .size fb_chase,.-fb_chase + .section .rodata.cst4,"aM",@progbits,4 + .align 2 +.LC1: + .long 1056964608 + .align 2 +.LC3: + .long 1080033280 + .align 2 +.LC5: + .long 1075838976 + .align 2 +.LC7: + .long 1069547520 + .align 2 +.LC9: + .long 1065877504 + .align 2 +.LC11: + .long 981467136 + .align 2 +.LC13: + .long 1073741824 + .set .LC15,.LC31+4 + .set .LC28,.LC31 + .align 2 +.LC30: + .long 1031798784 + .section .rodata.cst8,"aM",@progbits,8 + .align 3 +.LC31: + .long 0 + .long 1065353216 + .section .rodata.cst4 + .align 2 +.LC32: + .long 1006632960 + .section .rodata + .align 2 + .set .LANCHOR1,. + 0 + .type prefix.1, @object + .size prefix.1, 10 +prefix.1: + .string "nintendo," + .zero 2 + .type sigma.0, @object + .size sigma.0, 16 +sigma.0: + .long 1634760805 + .long 857760878 + .long 2036477234 + .long 1797285236 + .section ".bss" + .align 2 + .set .LANCHOR0,. + 0 + .type detected.4, @object + .size detected.4, 4 +detected.4: + .zero 4 + .type kernel.3, @object + .size kernel.3, 4 +kernel.3: + .zero 4 + .globl __udivdi3 + .ident "GCC: (GNU) 16.1.1 20260501 (Red Hat Cross 16.1.1-1)" + .gnu_attribute 4, 1 + .section .note.GNU-stack,"",@progbits +/* Optional PPC32 extended-instruction kernels. No instruction in this file + * is reached until fossbench-powerpc.c has checked the device tree or AT_HWCAP. + * Arguments use the PPC32 ABI: iters in r3:r4 and memory in r5. */ + + .text + .align 2 + + .globl fb_simd_ps_kernel + .type fb_simd_ps_kernel,@function +fb_simd_ps_kernel: + /* Raw encodings keep this buildable with standard Linux binutils, whose + * opcode tables do not always name Nintendo's Gekko/Broadway extension. */ + .long 0xe0050000 /* psq_l f0,0(r5),0,0 */ + .long 0xe0250008 /* psq_l f1,8(r5),0,0 */ +1: .long 0x1000082a /* ps_add f0,f0,f1 */ + .long 0x10210032 /* ps_mul f1,f1,f0 */ + .long 0x1000082a /* ps_add f0,f0,f1 */ + .long 0x10210032 /* ps_mul f1,f1,f0 */ + addic. 4,4,-1 + addme 3,3 + or. 6,3,4 + bne 1b + .long 0xf0050000 /* psq_st f0,0(r5),0,0 */ + .long 0xf0250008 /* psq_st f1,8(r5),0,0 */ + blr + .size fb_simd_ps_kernel,.-fb_simd_ps_kernel + + .globl fb_simd_vsx_kernel + .type fb_simd_vsx_kernel,@function +fb_simd_vsx_kernel: + .machine power7 + li 6,0 + lxvw4x 0,6,5 + li 6,16 + lxvw4x 1,6,5 +1: xvaddsp 0,0,1 + xvmulsp 1,1,0 + xvaddsp 0,0,1 + xvmulsp 1,1,0 + addic. 4,4,-1 + addme 3,3 + or. 6,3,4 + bne 1b + li 6,0 + stxvw4x 0,6,5 + li 6,16 + stxvw4x 1,6,5 + blr + .size fb_simd_vsx_kernel,.-fb_simd_vsx_kernel + + .globl fb_simd_altivec_kernel + .type fb_simd_altivec_kernel,@function +fb_simd_altivec_kernel: + .machine altivec + li 6,0 + lvx 0,6,5 + li 6,16 + lvx 1,6,5 +1: vadduwm 0,0,1 + vxor 1,1,0 + vadduwm 0,0,1 + vxor 1,1,0 + addic. 4,4,-1 + addme 3,3 + or. 6,3,4 + bne 1b + li 6,0 + stvx 0,6,5 + li 6,16 + stvx 1,6,5 + blr + .size fb_simd_altivec_kernel,.-fb_simd_altivec_kernel + + .section .note.GNU-stack,"",@progbits diff --git a/src/kernels/fossbench-ppc64le.S b/src/kernels/fossbench-ppc64le.S new file mode 100644 index 0000000..88f27c0 --- /dev/null +++ b/src/kernels/fossbench-ppc64le.S @@ -0,0 +1,1977 @@ + .file "fossbench-ppc64le.S" + .machine power8 + .machine altivec + .abiversion 2 + .section ".text" + .align 2 + .p2align 4,,15 + .type sift, @function +sift: +.LFB11: + .cfi_startproc + sldi 10,4,1 + addi 10,10,1 + cmpld 0,5,10 + blelr 0 + sldi 9,4,2 + lwzx 11,3,9 + b .L4 + .p2align 4,,15 +.L9: + lwzx 7,3,7 + cmplw 0,7,8 + ble 0,.L5 + mr 8,7 + sldi 10,9,1 + cmplw 0,11,8 + addi 10,10,1 + sldi 7,4,2 + cmpld 7,10,5 + mr 6,0 + mr 4,9 + bgelr 0 +.L10: + stwx 8,3,7 + stw 11,0(6) + bgelr 7 +.L4: + addi 9,4,1 + sldi 8,10,2 + sldi 7,9,3 + sldi 9,9,1 + cmpld 0,9,5 + add 6,3,8 + lwzx 8,3,8 + add 0,3,7 + blt 0,.L9 +.L5: + cmplw 0,11,8 + mr 9,10 + sldi 10,9,1 + sldi 7,4,2 + addi 10,10,1 + mr 4,9 + cmpld 7,10,5 + blt 0,.L10 + blr + .long 0 + .byte 0,0,0,0,0,0,0,0 + .cfi_endproc +.LFE11: + .size sift,.-sift + .align 2 + .p2align 4,,15 + .globl fb_int_math + .type fb_int_math, @function +fb_int_math: +.LFB1: + .cfi_startproc + cmpdi 0,3,0 + beq 0,.L14 + mtctr 3 + lis 7,0x4f6c + lis 5,0x2545 + ori 7,7,0xdd1d + ori 5,5,0xf491 + lis 6,0xdfc9 + rldimi 7,5,32,0 + lis 5,0x9327 + lis 8,0x1331 + lis 12,0x94d0 + lis 10,0x1ce4 + lis 0,0xbf58 + lis 9,0x7f4a + lis 4,0x9e37 + lis 11,0xdead + ori 6,6,0x94b + ori 5,5,0x5ab2 + ori 8,8,0x11eb + ori 12,12,0x49bb + ori 10,10,0xe5b9 + ori 0,0,0x476d + ori 9,9,0x7c15 + ori 4,4,0x79b9 + ori 11,11,0xbeef + rldimi 6,5,32,0 + rldimi 8,12,32,0 + rldimi 10,0,32,0 + rldimi 9,4,32,0 + rldicl 11,11,0,32 + mr 3,6 + .p2align 4,,15 +.L13: + mulld 9,9,11 + mulld 6,8,11 + mulld 4,7,11 + mulld 5,10,11 + add 9,9,10 + add 10,6,7 + add 4,4,9 + add 8,5,8 + srdi 6,10,29 + sldi 5,4,17 + xor 6,6,9 + xor 5,5,8 + srdi 7,5,7 + rotldi 8,6,33 + xor 8,8,10 + xor 7,7,4 + mulhdu 10,7,3 + mulhdu 9,8,3 + srdi 10,10,31 + srdi 9,9,31 + add 10,10,5 + add 9,9,6 + bdnz .L13 + xor 3,8,7 + xor 3,3,9 + xor 3,3,10 + blr + .p2align 4,,15 +.L14: + li 3,0 + blr + .long 0 + .byte 0,0,0,0,0,0,0,0 + .cfi_endproc +.LFE1: + .size fb_int_math,.-fb_int_math + .align 2 + .p2align 4,,15 + .globl fb_fp_math + .type fb_fp_math, @function +fb_fp_math: +.LFB2: + .cfi_startproc +.LCF2: +0: addis 2,12,.TOC.-.LCF2@ha + addi 2,2,.TOC.-.LCF2@l + .localentry fb_fp_math,.-fb_fp_math + std 31,-72(1) + .cfi_offset 31, -72 + mr. 31,3 + stdu 1,-128(1) + .cfi_def_cfa_offset 128 + beq 0,.L20 + mflr 0 + .cfi_register 65, 0 + addis 9,2,.LC5@toc@ha + stfd 29,104(1) + .cfi_offset 61, -24 + stfd 30,112(1) + .cfi_offset 62, -16 + stfd 31,120(1) + .cfi_offset 63, -8 + stfd 24,64(1) + .cfi_offset 56, -64 + lfd 29,.LC5@toc@l(9) + addis 9,2,.LC7@toc@ha + stfd 25,72(1) + .cfi_offset 57, -56 + stfd 26,80(1) + .cfi_offset 58, -48 + stfd 27,88(1) + .cfi_offset 59, -40 + stfd 28,96(1) + .cfi_offset 60, -32 + lfd 30,.LC7@toc@l(9) + addis 9,2,.LC9@toc@ha + std 30,48(1) + .cfi_offset 30, -80 + addis 30,2,.LC19@toc@ha + std 0,144(1) + .cfi_offset 65, 16 + addi 30,30,.LC19@toc@l + lfd 31,.LC9@toc@l(9) + addis 9,2,.LC11@toc@ha + lfd 0,.LC11@toc@l(9) + addis 9,2,.LC13@toc@ha + lfd 24,.LC13@toc@l(9) + addis 9,2,.LC15@toc@ha + lfd 25,.LC15@toc@l(9) + addis 9,2,.LC17@toc@ha + lfd 26,.LC17@toc@l(9) + .p2align 4,,15 +.L19: + fmadd 1,0,24,25 + fmr 2,26 + bl fmin + nop + fmr 27,1 + fmr 2,26 + fmadd 1,31,24,25 + bl fmin + nop + fmr 28,1 + fmr 2,26 + fmadd 1,30,24,25 + bl fmin + nop + fmr 30,1 + fmr 1,27 + bl sqrt + nop + fmr 0,1 + fmr 2,26 + fmadd 1,29,24,25 + fadd 30,30,0 + bl fmin + nop + fmr 31,1 + fmr 1,28 + bl sqrt + nop + fadd 1,31,1 + bl fabs + nop + lfd 31,0(30) + fmr 2,31 + bl fmax + nop + addic. 31,31,-1 + fadd 0,30,31 + fadd 12,1,31 + fmr 29,1 + fdiv 0,31,0 + fdiv 31,31,12 + fadd 0,0,27 + fadd 31,31,28 + bne 0,.L19 + fadd 0,0,31 + addi 4,1,40 + li 5,8 + addi 3,1,32 + fadd 0,0,30 + fadd 0,0,1 + stfd 0,40(1) + bl memcpy + nop + ld 0,144(1) + ld 3,32(1) + lfd 24,64(1) + .cfi_restore 56 + lfd 25,72(1) + .cfi_restore 57 + lfd 26,80(1) + .cfi_restore 58 + lfd 27,88(1) + .cfi_restore 59 + ld 30,48(1) + .cfi_restore 30 + lfd 28,96(1) + .cfi_restore 60 + lfd 29,104(1) + .cfi_restore 61 + mtlr 0 + .cfi_restore 65 + lfd 30,112(1) + .cfi_restore 62 + lfd 31,120(1) + .cfi_restore 63 + addi 1,1,128 + .cfi_def_cfa_offset 0 + ld 31,-72(1) + .cfi_restore 31 + blr + .p2align 4,,15 +.L20: + .cfi_def_cfa_offset 128 + .cfi_offset 31, -72 + addi 1,1,128 + .cfi_def_cfa_offset 0 + li 3,0 + ld 31,-72(1) + .cfi_restore 31 + blr + .long 0 + .byte 0,0,2,1,136,2,0,0 + .cfi_endproc +.LFE2: + .size fb_fp_math,.-fb_fp_math + .align 2 + .p2align 4,,15 + .globl fb_primes + .type fb_primes, @function +fb_primes: +.LFB3: + .cfi_startproc +.LCF3: +0: addis 2,12,.TOC.-.LCF3@ha + addi 2,2,.TOC.-.LCF3@l + .localentry fb_primes,.-fb_primes + cmpldi 0,3,1 + ble 0,.L52 + mflr 0 + mr 8,4 + mr 5,3 + li 4,0 + std 0,16(1) + stdu 1,-224(1) + .cfi_def_cfa_offset 224 + .cfi_offset 65, 16 + li 0,48 + stvx 21,1,0 + li 0,64 + stvx 22,1,0 + li 0,80 + stvx 23,1,0 + li 0,96 + stvx 24,1,0 + li 0,112 + stvx 25,1,0 + li 0,128 + stvx 26,1,0 + li 0,144 + stvx 27,1,0 + li 0,160 + stvx 28,1,0 + li 0,176 + stvx 29,1,0 + li 0,192 + stvx 30,1,0 + li 0,208 + stvx 31,1,0 + .cfi_offset 98, -176 + .cfi_offset 99, -160 + .cfi_offset 100, -144 + .cfi_offset 101, -128 + .cfi_offset 102, -112 + .cfi_offset 103, -96 + .cfi_offset 104, -80 + .cfi_offset 105, -64 + .cfi_offset 106, -48 + .cfi_offset 107, -32 + .cfi_offset 108, -16 + std 3,40(1) + mr 3,8 + std 8,32(1) + bl memset + nop + ld 5,40(1) + ld 8,32(1) + li 9,257 + addi 6,5,-1 + sth 9,0(8) + cmpldi 0,6,3 + ble 0,.L25 + li 10,2 + li 7,1 + b .L28 + .p2align 4,,15 +.L26: + addi 10,10,1 + divdu 9,6,10 + cmpld 0,9,10 + blt 0,.L55 +.L28: + lbzx 9,8,10 + cmpwi 0,9,0 + bne 0,.L26 + mulld 9,10,10 + cmpld 0,9,5 + bge 0,.L26 + .p2align 4,,15 +.L27: + stbx 7,8,9 + add 9,9,10 + cmpld 0,5,9 + bgt 0,.L27 + addi 10,10,1 + divdu 9,6,10 + cmpld 0,9,10 + bge 0,.L28 +.L55: + addi 9,5,-3 + cmpldi 0,9,30 + ble 0,.L30 + addi 4,5,-2 + vspltisw 9,0 + vspltish 12,0 + addi 9,8,2 + srdi 7,4,5 + vspltisw 13,0 + vspltisw 10,0 + vspltisb 29,1 + mtctr 7 + xxlor 34,41,41 + xxlor 35,41,41 + mr 10,7 + xxlor 36,41,41 + xxlor 48,41,41 + li 6,16 + xxlor 49,41,41 + xxlor 50,41,41 + xxlor 51,41,41 + xxlor 62,41,41 + xxlor 40,41,41 + xxlor 63,41,41 + xxlor 37,41,41 + xxlor 46,41,41 + xxlor 39,41,41 + xxlor 47,41,41 + xxlor 38,41,41 + .p2align 4,,15 +.L33: + lxvd2x 33,0,9 + lxvd2x 32,9,6 + addi 10,10,-1 + addi 9,9,32 + xxpermdi 33,33,33,2 + xxpermdi 32,32,32,2 + vcmpequb 1,1,10 + vcmpequb 0,0,10 + xxland 33,33,61 + xxland 32,32,61 + vmrglb 11,10,1 + vmrghb 1,10,1 + vmrglb 28,10,0 + vmrghb 0,10,0 + vmrglh 24,12,11 + vmrglh 25,12,1 + vmrghh 11,12,11 + vmrglh 26,12,28 + vmrglh 27,12,0 + xxmrglw 54,45,56 + xxmrglw 55,45,43 + xxmrglw 53,45,57 + vmrghh 1,12,1 + vmrghh 28,12,28 + vmrghh 0,12,0 + xxmrghw 56,45,56 + xxmrghw 43,45,43 + xxmrghw 57,45,57 + vaddudm 6,6,22 + vaddudm 15,15,24 + xxmrglw 54,45,33 + xxmrglw 56,45,58 + xxmrghw 33,45,33 + xxmrghw 58,45,58 + vaddudm 7,7,23 + vaddudm 14,14,11 + xxmrglw 55,45,60 + xxmrglw 43,45,59 + xxmrghw 60,45,60 + xxmrghw 59,45,59 + vaddudm 5,5,21 + xxmrglw 53,45,32 + xxmrghw 32,45,32 + vaddudm 31,31,25 + vaddudm 8,8,22 + vaddudm 30,30,1 + vaddudm 19,19,24 + vaddudm 18,18,26 + vaddudm 17,17,23 + vaddudm 16,16,28 + vaddudm 4,4,11 + vaddudm 3,3,27 + vaddudm 2,2,21 + vaddudm 9,9,0 + bdnz .L33 + vaddudm 0,8,30 + vaddudm 12,5,31 + sldi 7,7,5 + vaddudm 1,7,14 + vaddudm 13,6,15 + cmpld 0,4,7 + vaddudm 0,0,16 + vaddudm 12,12,17 + vaddudm 1,1,18 + vaddudm 13,13,19 + mtvsrd 0,10 + vaddudm 0,0,9 + vaddudm 12,12,2 + vaddudm 1,1,3 + vaddudm 13,13,4 + vaddudm 0,0,12 + vaddudm 1,1,13 + xxpermdi 0,0,0,0 + vaddudm 0,0,1 + xxsldwi 33,0,32,2 + vaddudm 0,1,0 + xxpermdi 0,32,32,3 + mfvsrd 3,0 + beq 0,.L23 + addi 7,7,2 +.L32: + addi 10,7,1 + li 9,1 + subfc 10,10,5 + subfe 10,10,10 + addi 10,10,1 + rlwinm 10,10,0,0xff + cmpwi 0,10,0 + beq 0,.L35 + subf 9,7,5 +.L35: + andi. 10,9,0x1 + addi 8,8,-1 + add 8,8,7 + addi 6,9,-1 + li 7,0 + beq 0,.L42 + lbzu 10,1(8) + cmpdi 0,6,0 + cntlzw 10,10 + srwi 10,10,5 + add 3,3,10 + beq 0,.L48 +.L42: + srdi 9,9,1 + mtctr 9 +.L36: + mr 9,8 + lbz 10,1(8) + addi 8,8,2 + lbz 9,2(9) + cntlzw 10,10 + cntlzw 9,9 + srwi 10,10,5 + add 3,3,10 + srwi 9,9,5 + add 7,7,9 + bdnz .L36 +.L48: + add 3,3,7 +.L23: + addi 1,1,224 + .cfi_def_cfa_offset 0 + li 0,-176 + lvx 21,1,0 + li 0,-160 + lvx 22,1,0 + li 0,-144 + lvx 23,1,0 + li 0,-128 + lvx 24,1,0 + li 0,-112 + lvx 25,1,0 + li 0,-96 + lvx 26,1,0 + li 0,-80 + lvx 27,1,0 + li 0,-64 + lvx 28,1,0 + li 0,-48 + lvx 29,1,0 + li 0,-32 + lvx 30,1,0 + li 0,-16 + lvx 31,1,0 + ld 0,16(1) + mtlr 0 + .cfi_restore 65 + .cfi_restore 108 + .cfi_restore 107 + .cfi_restore 106 + .cfi_restore 105 + .cfi_restore 104 + .cfi_restore 103 + .cfi_restore 102 + .cfi_restore 101 + .cfi_restore 100 + .cfi_restore 99 + .cfi_restore 98 + blr + .p2align 4,,15 +.L52: + li 3,0 + blr +.L25: + .cfi_def_cfa_offset 224 + .cfi_offset 98, -176 + .cfi_offset 99, -160 + .cfi_offset 100, -144 + .cfi_offset 101, -128 + .cfi_offset 102, -112 + .cfi_offset 103, -96 + .cfi_offset 104, -80 + .cfi_offset 105, -64 + .cfi_offset 106, -48 + .cfi_offset 107, -32 + .cfi_offset 108, -16 + .cfi_offset 65, 16 + cmpldi 0,5,2 + li 3,0 + beq 0,.L23 +.L30: + li 3,0 + li 7,2 + b .L32 + .long 0 + .byte 0,0,0,1,128,0,0,0 + .cfi_endproc +.LFE3: + .size fb_primes,.-fb_primes + .align 2 + .p2align 4,,15 + .globl fb_simd + .type fb_simd, @function +fb_simd: +.LFB4: + .cfi_startproc +.LCF4: +0: addis 2,12,.TOC.-.LCF4@ha + addi 2,2,.TOC.-.LCF4@l + .localentry fb_simd,.-fb_simd + mr. 9,3 + bne 0,.L74 + mr 3,9 + blr + .p2align 4,,15 +.L74: + mflr 0 + std 30,-16(1) + std 31,-8(1) + li 5,16 + .cfi_register 65, 0 + .cfi_offset 30, -16 + .cfi_offset 31, -8 + mr 31,4 + std 0,16(1) + stdu 1,-96(1) + .cfi_def_cfa_offset 96 + .cfi_offset 65, 16 + addi 3,1,48 + std 9,64(1) + bl memcpy + nop + addi 9,31,16 + li 5,16 + mr 4,9 + addi 3,1,32 + mr 30,9 + bl memcpy + nop + ld 9,64(1) + li 10,32 + li 8,48 + lxvd2x 32,1,10 + lxvd2x 33,1,8 + andi. 7,9,0x1 + addi 10,9,-1 + beq 0,.L63 + vadduwm 1,1,0 + cmpdi 0,10,0 + xxlxor 32,33,32 + vadduwm 1,1,0 + xxlxor 32,32,33 + beq 0,.L68 +.L63: + srdi 9,9,1 + mtctr 9 +.L58: + vadduwm 1,1,0 + xxlxor 32,33,32 + vadduwm 1,1,0 + xxlxor 32,32,33 + vadduwm 1,1,0 + xxlxor 32,33,32 + vadduwm 1,1,0 + xxlxor 32,32,33 + bdnz .L58 +.L68: + li 10,48 + li 9,32 + addi 4,1,48 + li 5,16 + stxvd2x 33,1,10 + mr 3,31 + stxvd2x 32,1,9 + bl memcpy + nop + addi 4,1,32 + li 5,16 + mr 3,30 + bl memcpy + nop + li 9,16 + lxvd2x 0,0,31 + vspltisw 0,0 + addi 1,1,96 + .cfi_def_cfa_offset 0 + lxvd2x 12,31,9 + ld 0,16(1) + ld 30,-16(1) + ld 31,-8(1) + mtlr 0 + .cfi_restore 65 + xxpermdi 0,0,0,2 + xxpermdi 12,12,12,2 + xxlxor 0,0,12 + xxsldwi 12,32,0,2 + xxlxor 0,12,0 + xxsldwi 32,32,0,3 + xxlxor 32,32,0 + vspltw 0,0,3 + mfvsrwz 9,32 + mr 3,9 + .cfi_restore 31 + .cfi_restore 30 + blr + .long 0 + .byte 0,0,0,1,128,2,0,0 + .cfi_endproc +.LFE4: + .size fb_simd,.-fb_simd + .align 2 + .p2align 4,,15 + .globl fb_compress + .type fb_compress, @function +fb_compress: +.LFB6: + .cfi_startproc +.LCF5: +0: addis 2,12,.TOC.-.LCF5@ha + addi 2,2,.TOC.-.LCF5@l + .localentry fb_compress,.-fb_compress + mflr 0 + std 22,-80(1) + std 25,-56(1) + .cfi_register 65, 0 + .cfi_offset 22, -80 + .cfi_offset 25, -56 + mr 25,4 + std 28,-32(1) + std 29,-24(1) + .cfi_offset 28, -32 + .cfi_offset 29, -24 + mr 28,3 + mr 29,5 + mr 3,5 + li 4,0 + lis 5,0x4 + addi 22,25,1 + std 0,16(1) + stdu 1,-144(1) + .cfi_def_cfa_offset 144 + .cfi_offset 65, 16 + bl memset + nop + cmpldi 0,25,15 + ble 0,.L75 + std 27,104(1) + .cfi_offset 27, -40 + std 30,128(1) + .cfi_offset 30, -16 + std 26,96(1) + .cfi_offset 26, -48 + lis 26,0x9e37 + std 21,56(1) + .cfi_offset 21, -88 + li 21,0 + std 23,72(1) + .cfi_offset 23, -72 + std 24,80(1) + .cfi_offset 24, -64 + ori 26,26,0x79b1 + addi 24,25,-12 + std 31,136(1) + .cfi_offset 31, -8 + li 23,0 + li 31,0 + .p2align 4,,15 +.L82: + li 5,4 + add 4,28,31 + addi 3,1,32 + bl memcpy + nop + lwz 27,32(1) + mullw 9,27,26 + rlwinm 9,9,18,14,29 + lwzx 10,29,9 + stwx 31,29,9 + cmpld 0,10,31 + bge 0,.L77 + subf 9,10,31 + cmpldi 0,9,65535 + bgt 0,.L77 + add 30,28,10 + li 5,4 + mr 4,30 + addi 3,1,32 + bl memcpy + nop + lwz 9,32(1) + cmplw 0,27,9 + beq 0,.L102 +.L77: + addi 31,31,1 +.L80: + cmpld 0,31,24 + blt 0,.L82 + add 23,23,22 + ld 24,80(1) + .cfi_restore 24 + ld 26,96(1) + .cfi_restore 26 + ld 27,104(1) + .cfi_restore 27 + ld 30,128(1) + .cfi_restore 30 + subf 22,21,23 + ld 31,136(1) + .cfi_restore 31 + ld 21,56(1) + .cfi_restore 21 + ld 23,72(1) + .cfi_restore 23 +.L75: + addi 1,1,144 + .cfi_def_cfa_offset 0 + mr 3,22 + ld 0,16(1) + ld 22,-80(1) + ld 25,-56(1) + ld 28,-32(1) + ld 29,-24(1) + mtlr 0 + .cfi_restore 65 + .cfi_restore 29 + .cfi_restore 28 + .cfi_restore 25 + .cfi_restore 22 + blr + .p2align 4,,15 +.L102: + .cfi_def_cfa_offset 144 + .cfi_offset 21, -88 + .cfi_offset 22, -80 + .cfi_offset 23, -72 + .cfi_offset 24, -64 + .cfi_offset 25, -56 + .cfi_offset 26, -48 + .cfi_offset 27, -40 + .cfi_offset 28, -32 + .cfi_offset 29, -24 + .cfi_offset 30, -16 + .cfi_offset 31, -8 + .cfi_offset 65, 16 + addi 9,31,4 + li 10,4 + cmpld 0,25,9 + ble 0,.L97 + lbzx 6,28,9 + lbz 7,4(30) + not 8,9 + add 8,8,25 + rldicl 5,8,0,63 + cmpw 0,6,7 + bne 0,.L98 + addi 9,31,5 + li 10,5 + cmpld 0,9,25 + bge 0,.L98 + cmpdi 0,5,0 + beq 0,.L91 + lbzx 6,28,9 + lbzx 7,30,10 + cmpw 0,6,7 + bne 0,.L98 + addi 9,31,6 + li 10,6 + cmpld 0,9,25 + bge 0,.L98 +.L91: + srdi 8,8,1 + mtctr 8 + b .L78 + .p2align 4,,15 +.L81: + addi 10,10,1 + addi 9,9,1 + lbzx 8,30,10 + lbzx 7,28,9 + cmpw 0,7,8 + bne 0,.L98 + addi 10,10,1 + addi 9,9,1 + bdz .L98 +.L78: + lbzx 7,28,9 + lbzx 8,30,10 + cmpw 0,7,8 + beq 0,.L81 +.L98: + subfic 10,10,18 + subfe 8,8,8 + neg 8,8 +.L79: + subf 31,21,31 + addi 23,23,3 + subfic 10,31,14 + add 23,23,31 + subfe 10,10,10 + mr 21,9 + subf 9,10,23 + mr 31,21 + add 23,9,8 + b .L80 +.L97: + li 8,0 + b .L79 + .long 0 + .byte 0,0,0,1,128,11,0,0 + .cfi_endproc +.LFE6: + .size fb_compress,.-fb_compress + .align 2 + .p2align 4,,15 + .globl fb_chacha20 + .type fb_chacha20, @function +fb_chacha20: +.LFB9: + .cfi_startproc +.LCF6: +0: addis 2,12,.TOC.-.LCF6@ha + addi 2,2,.TOC.-.LCF6@l + .localentry fb_chacha20,.-fb_chacha20 + std 30,-16(1) + stdu 1,-464(1) + .cfi_def_cfa_offset 464 + .cfi_offset 30, -16 + rldicr 30,4,0,57 + li 0,288 + rldicr. 4,4,0,57 + stvx 30,1,0 + li 0,304 + stvx 31,1,0 + std 30,224(1) + .cfi_offset 107, -176 + .cfi_offset 108, -160 + beq 0,.L103 + cmpdi 0,6,0 + std 28,432(1) + .cfi_offset 28, -32 + mr 28,6 + bne 0,.L118 + li 9,0 + ld 28,432(1) + .cfi_restore 28 + std 9,224(1) +.L103: + ld 3,224(1) + li 0,-176 + addi 1,1,464 + .cfi_def_cfa_offset 0 + lvx 30,1,0 + li 0,-160 + ld 30,-16(1) + lvx 31,1,0 + .cfi_restore 30 + .cfi_restore 108 + .cfi_restore 107 + blr +.L118: + .cfi_def_cfa_offset 464 + .cfi_offset 28, -32 + .cfi_offset 30, -16 + .cfi_offset 107, -176 + .cfi_offset 108, -160 + mflr 0 + .cfi_register 65, 0 + addis 4,2,.LANCHOR0@toc@ha + std 24,400(1) + .cfi_offset 24, -64 + std 31,456(1) + .cfi_offset 31, -8 + vspltisw 30,0 + mr 24,3 + mr 31,5 + std 14,320(1) + .cfi_offset 14, -144 + std 15,328(1) + .cfi_offset 15, -136 + li 5,16 + addi 3,1,96 + std 16,336(1) + .cfi_offset 16, -128 + std 17,344(1) + .cfi_offset 17, -120 + addi 4,4,.LANCHOR0@toc@l + std 18,352(1) + .cfi_offset 18, -112 + std 19,360(1) + .cfi_offset 19, -104 + li 18,48 + std 20,368(1) + .cfi_offset 20, -96 + std 21,376(1) + .cfi_offset 21, -88 + addi 20,24,48 + addi 21,24,32 + std 22,384(1) + .cfi_offset 22, -80 + std 23,392(1) + .cfi_offset 23, -72 + li 23,0 + addi 22,24,16 + std 27,424(1) + .cfi_offset 27, -40 + std 29,440(1) + .cfi_offset 29, -24 + li 19,32 + li 29,0 + std 0,480(1) + .cfi_offset 65, 16 + std 25,408(1) + .cfi_offset 25, -56 + li 17,80 + li 16,96 + std 26,416(1) + .cfi_offset 26, -48 + bl memcpy + nop + li 9,16 + lxvd2x 12,0,31 + li 8,112 + std 28,280(1) + li 10,128 + li 6,0 + lxvd2x 0,31,9 + addi 9,30,-1 + li 7,0 + srdi 9,9,6 + stw 6,148(1) + mr 12,23 + addi 27,9,1 + addis 9,2,.LC29@toc@ha + std 7,152(1) + stxvd2x 12,1,8 + addi 9,9,.LC29@toc@l + li 30,0 + stw 27,276(1) + li 15,112 + li 14,128 + stxvd2x 0,1,10 + std 9,232(1) + addis 9,2,.LC30@toc@ha + vspltish 31,8 + addi 9,9,.LC30@toc@l + mr 23,24 + std 9,240(1) + addis 9,2,.LC31@toc@ha + addi 9,9,.LC31@toc@l + std 9,248(1) + addis 9,2,.LC32@toc@ha + addi 9,9,.LC32@toc@l + std 9,256(1) +.L105: + std 30,264(1) + stw 29,272(1) + mr 24,29 + li 25,0 + .p2align 4,,15 +.L107: + stw 24,144(1) + addi 24,24,1 + li 5,64 + stw 12,192(1) + addi 4,1,96 + addi 3,1,32 + bl memcpy + nop + stw 24,160(1) + lwz 0,72(1) + lwz 26,44(1) + li 9,10 + mtctr 9 + lwz 11,76(1) + lwz 30,32(1) + lwz 3,48(1) + lwz 6,80(1) + lwz 29,64(1) + lwz 31,36(1) + lwz 5,52(1) + lwz 8,84(1) + lwz 28,68(1) + lwz 27,40(1) + lwz 7,56(1) + lwz 9,88(1) + lwz 10,60(1) + lwz 4,92(1) + lwz 12,192(1) + std 25,176(1) + mr 25,26 + mr 26,0 + mr 0,11 + .p2align 4,,15 +.L106: + add 30,3,30 + add 31,5,31 + add 27,7,27 + add 25,10,25 + xor 9,27,9 + xor 6,30,6 + xor 8,31,8 + xor 4,25,4 + rotlwi 11,9,16 + rotlwi 6,6,16 + rotlwi 8,8,16 + rotlwi 4,4,16 + add 29,6,29 + add 28,8,28 + add 26,26,11 + add 0,0,4 + xor 3,29,3 + xor 5,28,5 + xor 7,26,7 + xor 10,0,10 + rotlwi 24,3,12 + rotlwi 5,5,12 + rotlwi 7,7,12 + rotlwi 10,10,12 + add 30,30,24 + add 31,31,5 + add 27,27,7 + add 25,25,10 + xor 3,27,11 + xor 6,30,6 + xor 8,31,8 + xor 4,25,4 + rotlwi 6,6,8 + rotlwi 8,8,8 + rotlwi 3,3,8 + rotlwi 4,4,8 + add 29,29,6 + add 28,28,8 + add 26,26,3 + add 0,0,4 + xor 9,29,24 + xor 5,28,5 + xor 7,26,7 + xor 10,0,10 + rotlwi 9,9,7 + rotlwi 5,5,7 + rotlwi 7,7,7 + rotlwi 10,10,7 + add 30,30,5 + add 31,31,7 + add 25,25,9 + add 27,27,10 + xor 3,25,3 + xor 6,31,6 + xor 4,30,4 + xor 8,27,8 + rotlwi 11,3,16 + rotlwi 6,6,16 + rotlwi 4,4,16 + rotlwi 8,8,16 + add 26,26,4 + add 0,0,6 + add 29,29,8 + add 28,28,11 + xor 9,28,9 + xor 5,26,5 + xor 7,0,7 + xor 10,29,10 + rotlwi 24,9,12 + rotlwi 5,5,12 + rotlwi 7,7,12 + rotlwi 10,10,12 + add 30,30,5 + add 31,31,7 + add 27,27,10 + add 25,25,24 + xor 9,25,11 + xor 4,30,4 + xor 6,31,6 + xor 8,27,8 + rotlwi 9,9,8 + rotlwi 4,4,8 + rotlwi 6,6,8 + rotlwi 8,8,8 + add 28,28,9 + add 26,26,4 + add 0,0,6 + add 29,29,8 + xor 3,28,24 + xor 5,26,5 + xor 7,0,7 + xor 10,29,10 + rotlwi 3,3,7 + rotlwi 5,5,7 + rotlwi 7,7,7 + rotlwi 10,10,7 + bdnz .L106 + mr 11,0 + mr 0,26 + stw 4,92(1) + stw 10,60(1) + mr 26,25 + stw 9,88(1) + stw 30,32(1) + addi 9,1,208 + stw 0,72(1) + stw 5,52(1) + li 4,64 + stw 31,36(1) + stw 6,80(1) + stw 11,76(1) + stw 7,56(1) + stw 27,40(1) + stw 8,84(1) + stw 29,64(1) + stw 26,44(1) + stw 28,68(1) + stw 3,48(1) + lvx 0,1,14 + ld 25,176(1) + lvx 9,1,15 + lwz 24,160(1) + lxvd2x 33,23,25 + lxvd2x 38,22,25 + lxvd2x 39,20,25 + xxpermdi 32,32,32,2 + stxvd2x 32,0,9 + ld 9,232(1) + lxvd2x 32,21,25 + xxpermdi 33,33,33,2 + xxpermdi 38,38,38,2 + xxpermdi 39,39,39,2 + xxpermdi 32,32,32,2 + lvx 4,0,9 + ld 9,240(1) + lvx 13,0,9 + ld 9,248(1) + vperm 10,6,1,4 + vperm 4,7,0,4 + lvx 8,0,9 + ld 9,256(1) + vperm 5,7,0,13 + vperm 11,6,1,13 + lvx 12,0,9 + vperm 4,4,10,13 + addi 9,1,160 + ld 10,224(1) + vperm 5,5,11,13 + lvx 13,1,17 + vperm 7,7,0,12 + lvx 0,1,19 + vperm 6,6,1,12 + lvx 1,1,18 + xxpermdi 45,45,45,2 + xxpermdi 32,32,32,2 + xxpermdi 33,33,33,2 + stxvd2x 32,0,9 + addi 9,1,176 + lvx 0,1,16 + stxvd2x 33,0,9 + addi 9,1,192 + lvx 1,1,4 + stxvd2x 45,0,9 + addi 9,1,160 + lvx 13,0,9 + addi 9,1,176 + vadduwm 11,0,13 + lvx 0,0,9 + addi 9,1,208 + lvx 13,0,9 + addi 9,1,144 + xxmrghw 42,43,43 + lxvd2x 0,0,9 + addi 9,1,192 + vsrw 10,10,8 + vadduwm 0,9,0 + vadduwm 12,13,1 + lvx 13,0,9 + xxlxor 12,32,43 + vpkuwum 19,0,11 + xxmrglw 34,32,32 + xxpermdi 33,0,0,2 + vsrh 9,19,31 + vsrw 2,2,8 + vadduwm 13,1,13 + xxmrglw 33,43,43 + xxmrghw 43,32,32 + xxmrglw 32,44,44 + xxlxor 0,45,44 + vpkuwum 18,13,12 + xxmrglw 35,45,45 + xxmrghw 44,44,44 + xxmrghw 45,45,45 + xxlxor 12,12,0 + vsrw 12,12,8 + vsrh 17,18,31 + vsrw 13,13,8 + vsrw 1,1,8 + vsrw 11,11,8 + vsrw 0,0,8 + vsrw 3,3,8 + xxsldwi 0,62,12,2 + vpkuwum 1,10,1 + vpkuwum 11,11,2 + vpkuwum 0,12,0 + vpkuhum 19,18,19 + vpkuwum 12,13,3 + vpkuhum 9,17,9 + xxlxor 0,0,12 + xxlxor 37,37,51 + xxlxor 45,41,36 + vpkuhum 1,11,1 + vpkuhum 0,12,0 + xxsldwi 44,62,0,3 + vmrglb 11,13,5 + xxlxor 33,33,38 + vmrghb 13,13,5 + xxlxor 32,32,39 + xxlxor 44,44,0 + vmrglh 10,1,11 + vmrghh 1,1,11 + vmrglh 11,0,13 + vmrghh 0,0,13 + vspltw 13,12,3 + xxpermdi 42,42,42,2 + xxpermdi 33,33,33,2 + xxpermdi 43,43,43,2 + xxpermdi 32,32,32,2 + stxvd2x 42,23,25 + mfvsrwz 9,45 + stxvd2x 33,22,25 + stxvd2x 43,21,25 + stxvd2x 32,20,25 + addi 25,25,64 + cmpld 0,10,25 + xor 12,12,9 + bgt 0,.L107 + lwz 9,276(1) + lwz 29,272(1) + ld 30,264(1) + add 29,29,9 + ld 9,280(1) + addi 30,30,1 + cmpld 0,9,30 + bne 0,.L105 + rldicl 9,12,0,32 + ld 0,480(1) + ld 14,320(1) + .cfi_restore 14 + ld 15,328(1) + .cfi_restore 15 + ld 16,336(1) + .cfi_restore 16 + ld 17,344(1) + .cfi_restore 17 + ld 18,352(1) + .cfi_restore 18 + ld 19,360(1) + .cfi_restore 19 + ld 20,368(1) + .cfi_restore 20 + std 9,224(1) + ld 21,376(1) + .cfi_restore 21 + ld 22,384(1) + .cfi_restore 22 + mtlr 0 + .cfi_restore 65 + ld 23,392(1) + .cfi_restore 23 + ld 24,400(1) + .cfi_restore 24 + ld 25,408(1) + .cfi_restore 25 + ld 26,416(1) + .cfi_restore 26 + li 0,-176 + ld 27,424(1) + .cfi_restore 27 + ld 28,432(1) + .cfi_restore 28 + ld 29,440(1) + .cfi_restore 29 + ld 31,456(1) + .cfi_restore 31 + ld 3,224(1) + addi 1,1,464 + .cfi_def_cfa_offset 0 + lvx 30,1,0 + li 0,-160 + ld 30,-16(1) + lvx 31,1,0 + .cfi_restore 30 + .cfi_restore 108 + .cfi_restore 107 + blr + .long 0 + .byte 0,0,0,1,128,18,0,0 + .cfi_endproc +.LFE9: + .size fb_chacha20,.-fb_chacha20 + .align 2 + .p2align 4,,15 + .globl fb_physics + .type fb_physics, @function +fb_physics: +.LFB10: + .cfi_startproc +.LCF7: +0: addis 2,12,.TOC.-.LCF7@ha + addi 2,2,.TOC.-.LCF7@l + .localentry fb_physics,.-fb_physics + std 25,-80(1) + stdu 1,-208(1) + .cfi_def_cfa_offset 208 + .cfi_offset 25, -80 + mr. 25,4 + li 0,48 + xxlxor 0,0,0 + stvx 30,1,0 + li 0,64 + stvx 31,1,0 + stfd 0,32(1) + .cfi_offset 107, -160 + .cfi_offset 108, -144 + beq 0,.L127 + cmpdi 0,5,0 + std 20,88(1) + .cfi_offset 20, -120 + std 21,96(1) + .cfi_offset 21, -112 + mr 20,5 + mr 21,3 + li 3,0 + beq 0,.L143 + mflr 0 + .cfi_register 65, 0 + addis 9,2,.LC38@toc@ha + stfd 29,184(1) + .cfi_offset 61, -24 + std 27,144(1) + .cfi_offset 27, -64 + std 29,160(1) + .cfi_offset 29, -48 + std 30,168(1) + .cfi_offset 30, -40 + std 31,176(1) + .cfi_offset 31, -32 + stfd 30,192(1) + .cfi_offset 62, -16 + lfd 29,.LC38@toc@l(9) + stfd 31,200(1) + .cfi_offset 63, -8 + std 23,112(1) + .cfi_offset 23, -96 + addis 23,2,.LC40@toc@ha + std 24,120(1) + .cfi_offset 24, -88 + std 28,152(1) + .cfi_offset 28, -56 + addis 24,2,.LC41@toc@ha + addis 28,2,.LC19@toc@ha + std 0,224(1) + .cfi_offset 65, 16 + std 22,104(1) + .cfi_offset 22, -104 + addi 28,28,.LC19@toc@l + li 22,0 + std 26,136(1) + .cfi_offset 26, -72 + addi 23,23,.LC40@toc@l + addi 24,24,.LC41@toc@l + li 26,32 + .p2align 4,,15 +.L121: + mr 29,21 + li 27,0 + .p2align 4,,15 +.L125: + vspltisw 30,0 + xxlxor 30,30,30 + mr 31,21 + mr 30,25 + .p2align 4,,15 +.L122: + lxvd2x 63,0,31 + lxvd2x 12,0,29 + addi 31,31,64 + lfd 0,16(29) + lfd 31,-48(31) + xvsubdp 63,63,12 + fsub 31,31,0 + xxpermdi 0,63,63,3 + xxlor 1,63,63 + fmul 0,0,0 + fmadd 1,1,1,0 + fmadd 1,31,31,1 + fadd 1,1,29 + bl sqrt + nop + lfd 0,0(28) + lfd 12,-40(31) + addic. 30,30,-1 + fdiv 0,0,1 + fmul 1,0,0 + fmul 1,1,0 + fmul 1,1,12 + xxpermdi 0,1,1,0 + fmadd 30,31,1,30 + xvmaddadp 62,0,63 + bne 0,.L122 + lxvd2x 0,29,26 + lxvd2x 11,0,23 + addi 27,27,1 + lfd 12,48(29) + lfd 10,0(24) + cmpld 0,25,27 + xvmaddadp 0,62,11 + fmadd 30,30,10,12 + stxvd2x 0,29,26 + stfd 30,48(29) + addi 29,29,64 + bne 0,.L125 + mtctr 25 + mr 9,21 + .p2align 4,,15 +.L123: + lxvd2x 12,9,26 + lxvd2x 8,0,9 + lfd 9,16(9) + lfd 0,48(9) + xvmaddmdp 12,11,8 + fmadd 0,0,10,9 + stxvd2x 12,0,9 + stfd 0,16(9) + addi 9,9,64 + bdnz .L123 + addi 22,22,1 + cmpld 0,20,22 + bne 0,.L121 + andi. 9,27,0x1 + lfd 11,32(1) + addi 9,21,32 + addi 10,27,-1 + beq 0,.L134 + lfd 0,0(9) + lfd 10,8(9) + cmpdi 0,10,0 + lfd 12,16(9) + addi 9,21,96 + fadd 0,0,10 + fadd 0,0,12 + fadd 11,11,0 + beq 0,.L139 +.L134: + srdi 10,27,1 + mtctr 10 +.L126: + lfd 12,0(9) + lfd 7,8(9) + mr 10,9 + addi 9,9,128 + lfd 9,-112(9) + lfd 0,-64(9) + lfd 8,72(10) + lfd 10,80(10) + fadd 12,12,7 + fadd 0,0,8 + fadd 12,12,9 + fadd 0,0,10 + fadd 11,11,12 + fadd 11,11,0 + bdnz .L126 +.L139: + addi 4,1,32 + li 5,8 + stfd 11,32(1) + addi 3,1,40 + bl memcpy + nop + ld 0,224(1) + ld 3,40(1) + lfd 29,184(1) + .cfi_restore 61 + lfd 30,192(1) + .cfi_restore 62 + lfd 31,200(1) + .cfi_restore 63 + ld 20,88(1) + .cfi_restore 20 + ld 21,96(1) + .cfi_restore 21 + ld 22,104(1) + .cfi_restore 22 + ld 23,112(1) + .cfi_restore 23 + ld 24,120(1) + .cfi_restore 24 + ld 26,136(1) + .cfi_restore 26 + ld 27,144(1) + .cfi_restore 27 + mtlr 0 + .cfi_restore 65 + ld 28,152(1) + .cfi_restore 28 + ld 29,160(1) + .cfi_restore 29 + ld 30,168(1) + .cfi_restore 30 + ld 31,176(1) + .cfi_restore 31 + li 0,-160 + addi 1,1,208 + .cfi_def_cfa_offset 0 + lvx 30,1,0 + li 0,-144 + ld 25,-80(1) + lvx 31,1,0 + .cfi_restore 25 + .cfi_restore 108 + .cfi_restore 107 + blr +.L143: + .cfi_def_cfa_offset 208 + .cfi_offset 20, -120 + .cfi_offset 21, -112 + .cfi_offset 25, -80 + .cfi_offset 107, -160 + .cfi_offset 108, -144 + ld 20,88(1) + .cfi_restore 20 + ld 21,96(1) + .cfi_restore 21 + li 0,-160 + addi 1,1,208 + .cfi_def_cfa_offset 0 + lvx 30,1,0 + li 0,-144 + ld 25,-80(1) + lvx 31,1,0 + .cfi_restore 25 + .cfi_restore 108 + .cfi_restore 107 + blr +.L127: + .cfi_def_cfa_offset 208 + .cfi_offset 25, -80 + .cfi_offset 107, -160 + .cfi_offset 108, -144 + addi 1,1,208 + .cfi_def_cfa_offset 0 + li 0,-160 + li 3,0 + lvx 30,1,0 + li 0,-144 + ld 25,-80(1) + lvx 31,1,0 + .cfi_restore 25 + .cfi_restore 108 + .cfi_restore 107 + blr + .long 0 + .byte 0,0,2,1,131,12,0,0 + .cfi_endproc +.LFE10: + .size fb_physics,.-fb_physics + .align 2 + .p2align 4,,15 + .globl fb_sort + .type fb_sort, @function +fb_sort: +.LFB12: + .cfi_startproc +.LCF8: +0: addis 2,12,.TOC.-.LCF8@ha + addi 2,2,.TOC.-.LCF8@l + .localentry fb_sort,.-fb_sort + cmpldi 0,4,1 + std 29,-24(1) + std 30,-16(1) + .cfi_offset 29, -24 + .cfi_offset 30, -16 + mr 29,3 + stdu 1,-64(1) + .cfi_def_cfa_offset 64 + mr 30,4 + ble 0,.L165 + mflr 0 + .cfi_register 65, 0 + std 31,56(1) + .cfi_offset 31, -8 + srdi 31,4,1 + std 28,32(1) + .cfi_offset 28, -32 + andi. 9,31,0x1 + addi 9,31,-1 + std 0,80(1) + .cfi_offset 65, 16 + beq 0,.L147 + mr 31,9 + mr 5,4 + mr 4,9 + bl sift + cmpdi 0,31,0 + beq 0,.L168 + .p2align 4,,15 +.L147: + addi 31,31,-1 + mr 5,30 + mr 4,31 + mr 3,29 + bl sift + addi 31,31,-1 + mr 5,30 + mr 4,31 + mr 3,29 + bl sift + cmpdi 0,31,0 + bne 0,.L147 +.L168: + addi 28,30,-1 + sldi 30,30,2 + add 30,30,29 + mr 31,28 + .p2align 4,,15 +.L148: + lwzu 10,-4(30) + lwz 9,0(29) + mr 5,31 + li 4,0 + mr 3,29 + stw 10,0(29) + stw 9,0(30) + bl sift + addic. 31,31,-1 + bne 0,.L148 + andi. 9,28,0x1 + addi 9,29,-4 + bne 0,.L172 +.L156: + srdi 28,28,1 + addi 10,28,1 + mtctr 10 + b .L149 + .p2align 4,,15 +.L173: + lwz 31,4(10) + rotldi 3,3,57 + xor 3,31,3 + add 31,31,3 +.L149: + lwz 3,4(9) + rotldi 31,31,57 + addi 10,9,4 + addi 9,9,8 + xor 31,3,31 + add 3,3,31 + bdnz .L173 + ld 0,80(1) + ld 28,32(1) + .cfi_restore 28 + ld 31,56(1) + .cfi_restore 31 + mtlr 0 + .cfi_restore 65 +.L144: + addi 1,1,64 + .cfi_def_cfa_offset 0 + ld 29,-24(1) + ld 30,-16(1) + .cfi_restore 30 + .cfi_restore 29 + blr + .p2align 4,,15 +.L172: + .cfi_def_cfa_offset 64 + .cfi_offset 28, -32 + .cfi_offset 29, -24 + .cfi_offset 30, -16 + .cfi_offset 31, -8 + .cfi_offset 65, 16 + lwz 31,0(29) + mr 9,29 + sldi 31,31,1 + b .L156 + .p2align 4,,15 +.L165: + .cfi_restore 28 + .cfi_restore 31 + .cfi_restore 65 + cmpdi 0,4,0 + li 3,0 + beq 0,.L144 + addi 1,1,64 + .cfi_def_cfa_offset 0 + lwz 3,0(29) + ld 29,-24(1) + ld 30,-16(1) + .cfi_restore 30 + .cfi_restore 29 + blr + .long 0 + .byte 0,0,0,1,128,4,0,0 + .cfi_endproc +.LFE12: + .size fb_sort,.-fb_sort + .align 2 + .p2align 4,,15 + .globl fb_chase + .type fb_chase, @function +fb_chase: +.LFB13: + .cfi_startproc + cmpdi 0,4,0 + beq 0,.L177 + andi. 8,4,0x3 + mr 9,3 + addi 7,4,-1 + mr 10,4 + beq 0,.L184 + cmpdi 0,8,1 + beq 0,.L188 + cmpdi 0,8,2 + bne 0,.L196 +.L189: + ld 9,0(9) + addi 4,4,-1 +.L188: + cmpdi 0,4,1 + ld 9,0(9) + beq 0,.L194 +.L184: + srdi 10,10,2 + mtctr 10 +.L176: + ld 9,0(9) + ld 9,0(9) + ld 9,0(9) + ld 9,0(9) + bdnz .L176 +.L194: + subf 3,3,9 + blr + .p2align 4,,15 +.L177: + li 3,0 + blr + .p2align 4,,15 +.L196: + ld 9,0(3) + mr 4,7 + b .L189 + .long 0 + .byte 0,0,0,0,0,0,0,0 + .cfi_endproc +.LFE13: + .size fb_chase,.-fb_chase + .section .rodata.cst8,"aM",@progbits,8 + .align 3 +.LC5: + .long 0 + .long 1071644672 + .align 3 +.LC7: + .long 0 + .long 1074528256 + .align 3 +.LC9: + .long 0 + .long 1074003968 + .align 3 +.LC11: + .long 0 + .long 1073217536 + .align 3 +.LC13: + .long 0 + .long 1072758784 + .align 3 +.LC15: + .long 0 + .long 1062207488 + .align 3 +.LC17: + .long 0 + .long 1073741824 + .align 3 +.LC19: + .long 0 + .long 1072693248 + .section .rodata.cst16,"aM",@progbits,16 + .align 4 +.LC29: + .byte 30 + .byte 28 + .byte 26 + .byte 24 + .byte 22 + .byte 20 + .byte 18 + .byte 16 + .byte 14 + .byte 12 + .byte 10 + .byte 8 + .byte 6 + .byte 4 + .byte 2 + .byte 0 + .align 4 +.LC30: + .byte 31 + .byte 29 + .byte 27 + .byte 25 + .byte 23 + .byte 21 + .byte 19 + .byte 17 + .byte 15 + .byte 13 + .byte 11 + .byte 9 + .byte 7 + .byte 5 + .byte 3 + .byte 1 + .align 4 +.LC31: + .long 16 + .long 24 + .long 16 + .long 24 + .align 4 +.LC32: + .byte 29 + .byte 28 + .byte 25 + .byte 24 + .byte 21 + .byte 20 + .byte 17 + .byte 16 + .byte 13 + .byte 12 + .byte 9 + .byte 8 + .byte 5 + .byte 4 + .byte 1 + .byte 0 + .section .rodata.cst8 + .align 3 +.LC38: + .long 0 + .long 1068498944 + .section .rodata.cst16 + .align 4 +.LC40: + .long 0 + .long 1065353216 + .long 0 + .long 1065353216 + .set .LC41,.LC40 + .section .rodata + .align 4 + .set .LANCHOR0,. + 0 + .type sigma.0, @object + .size sigma.0, 16 +sigma.0: + .long 1634760805 + .long 857760878 + .long 2036477234 + .long 1797285236 + .ident "GCC: (GNU) 16.1.1 20260501 (Red Hat Cross 16.1.1-1)" + .gnu_attribute 4, 1 + .section .note.GNU-stack,"",@progbits