Code Monkey home page Code Monkey logo

Comments (3)

rweather avatar rweather commented on September 28, 2024

I didn't have a real armv6m at the time, so I tested it on an armv6 platform pretending to be an armv6m. There may be some differences in how branch instructions work between the two. I have pushed a possible fix - let me know if it works.

from tinyjambu.

NicholasTroutman avatar NicholasTroutman commented on September 28, 2024

It works with the 256-asm-armv6m, however the same issue exists in 192-asm-armv6m: I fixed it with the same conditional branch, unconditional branch syntax.
I can't branch and suggest changes, so here is the entire fixed 192-asm-armv6m backend file, it compiles and works on my Arduino MKR WAN 1310.

There are 3 changes, 1 for each bne/beq in the original.
Thanks for getting back to me so quick!

#include "tinyjambu-backend-select.h"
#if defined(TINYJAMBU_BACKEND_ARMV6M)
/*
 * Copyright (C) 2022 Southern Storm Software, Pty Ltd.
 *
 * Permission is hereby granted, free of charge, to any person obtaining a
 * copy of this software and associated documentation files (the "Software"),
 * to deal in the Software without restriction, including without limitation
 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
 * and/or sell copies of the Software, and to permit persons to whom the
 * Software is furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be included
 * in all copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
 * DEALINGS IN THE SOFTWARE.
 */

	.syntax unified
	.thumb
	.text

	.align	2
	.global	tinyjambu_permutation_192
	.thumb
	.thumb_func
	.type	tinyjambu_permutation_192, %function
tinyjambu_permutation_192:
	push	{r4, r5, r6, r7, lr}
	ldr	r2, [r0, #0]
	ldr	r3, [r0, #4]
	ldr	r4, [r0, #8]
	ldr	r5, [r0, #12]
.L1921:
	mov	ip, r1
	lsrs	r6, r3, #15
	lsls	r7, r4, #17
	eors	r2, r6
	eors	r2, r7
	lsrs	r6, r4, #27
	lsls	r7, r5, #5
	eors	r2, r6
	eors	r2, r7
	lsrs	r6, r4, #6
	lsls	r7, r5, #26
	eors	r6, r7
	lsrs	r7, r4, #21
	lsls	r1, r5, #11
	eors	r7, r1
	ands	r6, r7
	eors	r2, r6
	ldr	r6, [r0, #16]
	eors	r2, r6
	lsrs	r6, r4, #15
	lsls	r7, r5, #17
	eors	r3, r6
	eors	r3, r7
	lsrs	r6, r5, #27
	lsls	r7, r2, #5
	eors	r3, r6
	eors	r3, r7
	lsrs	r6, r5, #6
	lsls	r7, r2, #26
	eors	r6, r7
	lsrs	r7, r5, #21
	lsls	r1, r2, #11
	eors	r7, r1
	ands	r6, r7
	eors	r3, r6
	ldr	r6, [r0, #20]
	eors	r3, r6
	lsrs	r6, r5, #15
	lsls	r7, r2, #17
	eors	r4, r6
	eors	r4, r7
	lsrs	r6, r2, #27
	lsls	r7, r3, #5
	eors	r4, r6
	eors	r4, r7
	lsrs	r6, r2, #6
	lsls	r7, r3, #26
	eors	r6, r7
	lsrs	r7, r2, #21
	lsls	r1, r3, #11
	eors	r7, r1
	ands	r6, r7
	eors	r4, r6
	ldr	r6, [r0, #24]
	eors	r4, r6
	lsrs	r6, r2, #15
	lsls	r7, r3, #17
	eors	r5, r6
	eors	r5, r7
	lsrs	r6, r3, #27
	lsls	r7, r4, #5
	eors	r5, r6
	eors	r5, r7
	lsrs	r6, r3, #6
	lsls	r7, r4, #26
	eors	r6, r7
	lsrs	r7, r3, #21
	lsls	r1, r4, #11
	eors	r7, r1
	ands	r6, r7
	eors	r5, r6
	ldr	r6, [r0, #28]
	eors	r5, r6
	mov	r1, ip
	subs	r1, r1, #1
	bne		.L1
	b		.L1922
	
.L1:	
	mov	ip, r1
	lsrs	r6, r3, #15
	lsls	r7, r4, #17
	eors	r2, r6
	eors	r2, r7
	lsrs	r6, r4, #27
	lsls	r7, r5, #5
	eors	r2, r6
	eors	r2, r7
	lsrs	r6, r4, #6
	lsls	r7, r5, #26
	eors	r6, r7
	lsrs	r7, r4, #21
	lsls	r1, r5, #11
	eors	r7, r1
	ands	r6, r7
	eors	r2, r6
	ldr	r6, [r0, #32]
	eors	r2, r6
	lsrs	r6, r4, #15
	lsls	r7, r5, #17
	eors	r3, r6
	eors	r3, r7
	lsrs	r6, r5, #27
	lsls	r7, r2, #5
	eors	r3, r6
	eors	r3, r7
	lsrs	r6, r5, #6
	lsls	r7, r2, #26
	eors	r6, r7
	lsrs	r7, r5, #21
	lsls	r1, r2, #11
	eors	r7, r1
	ands	r6, r7
	eors	r3, r6
	ldr	r6, [r0, #36]
	eors	r3, r6
	lsrs	r6, r5, #15
	lsls	r7, r2, #17
	eors	r4, r6
	eors	r4, r7
	lsrs	r6, r2, #27
	lsls	r7, r3, #5
	eors	r4, r6
	eors	r4, r7
	lsrs	r6, r2, #6
	lsls	r7, r3, #26
	eors	r6, r7
	lsrs	r7, r2, #21
	lsls	r1, r3, #11
	eors	r7, r1
	ands	r6, r7
	eors	r4, r6
	ldr	r6, [r0, #16]
	eors	r4, r6
	lsrs	r6, r2, #15
	lsls	r7, r3, #17
	eors	r5, r6
	eors	r5, r7
	lsrs	r6, r3, #27
	lsls	r7, r4, #5
	eors	r5, r6
	eors	r5, r7
	lsrs	r6, r3, #6
	lsls	r7, r4, #26
	eors	r6, r7
	lsrs	r7, r3, #21
	lsls	r1, r4, #11
	eors	r7, r1
	ands	r6, r7
	eors	r5, r6
	ldr	r6, [r0, #20]
	eors	r5, r6
	mov	r1, ip
	subs	r1, r1, #1
	bne		.L2
	b		.L1922
	
.L2:	
	mov	ip, r1
	lsrs	r6, r3, #15
	lsls	r7, r4, #17
	eors	r2, r6
	eors	r2, r7
	lsrs	r6, r4, #27
	lsls	r7, r5, #5
	eors	r2, r6
	eors	r2, r7
	lsrs	r6, r4, #6
	lsls	r7, r5, #26
	eors	r6, r7
	lsrs	r7, r4, #21
	lsls	r1, r5, #11
	eors	r7, r1
	ands	r6, r7
	eors	r2, r6
	ldr	r6, [r0, #24]
	eors	r2, r6
	lsrs	r6, r4, #15
	lsls	r7, r5, #17
	eors	r3, r6
	eors	r3, r7
	lsrs	r6, r5, #27
	lsls	r7, r2, #5
	eors	r3, r6
	eors	r3, r7
	lsrs	r6, r5, #6
	lsls	r7, r2, #26
	eors	r6, r7
	lsrs	r7, r5, #21
	lsls	r1, r2, #11
	eors	r7, r1
	ands	r6, r7
	eors	r3, r6
	ldr	r6, [r0, #28]
	eors	r3, r6
	lsrs	r6, r5, #15
	lsls	r7, r2, #17
	eors	r4, r6
	eors	r4, r7
	lsrs	r6, r2, #27
	lsls	r7, r3, #5
	eors	r4, r6
	eors	r4, r7
	lsrs	r6, r2, #6
	lsls	r7, r3, #26
	eors	r6, r7
	lsrs	r7, r2, #21
	lsls	r1, r3, #11
	eors	r7, r1
	ands	r6, r7
	eors	r4, r6
	ldr	r6, [r0, #32]
	eors	r4, r6
	lsrs	r6, r2, #15
	lsls	r7, r3, #17
	eors	r5, r6
	eors	r5, r7
	lsrs	r6, r3, #27
	lsls	r7, r4, #5
	eors	r5, r6
	eors	r5, r7
	lsrs	r6, r3, #6
	lsls	r7, r4, #26
	eors	r6, r7
	lsrs	r7, r3, #21
	lsls	r1, r4, #11
	eors	r7, r1
	ands	r6, r7
	eors	r5, r6
	ldr	r6, [r0, #36]
	eors	r5, r6
	mov	r1, ip
	subs	r1, r1, #1
	beq 	.L1922
	b		.L1921
.L1922:
	str	r2, [r0, #0]
	str	r3, [r0, #4]
	str	r4, [r0, #8]
	str	r5, [r0, #12]
	pop	{r4, r5, r6, r7, pc}
	.size	tinyjambu_permutation_192, .-tinyjambu_permutation_192

#endif

from tinyjambu.

rweather avatar rweather commented on September 28, 2024

Thanks. I have fixed the 192-bit version in the repository also.

from tinyjambu.

Related Issues (1)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.