poly1305/asm/poly1305-armv4.pl: replace ambiguous instruction.
authorAndy Polyakov <appro@openssl.org>
Mon, 22 Feb 2016 16:39:00 +0000 (17:39 +0100)
committerAndy Polyakov <appro@openssl.org>
Tue, 23 Feb 2016 20:14:25 +0000 (21:14 +0100)
Different assembler versions disagree on how to interpret #-1 as
argument to vmov.i64, as 0xffffffffffffffff or 0x00000000ffffffff.
So replace it with something they can't disagree on.

Reviewed-by: Rich Salz <rsalz@openssl.org>
crypto/poly1305/asm/poly1305-armv4.pl

index 2cce9dfee88b4fcdcee6340c1ea55a24926de0eb..65b79cf124d7f27568432ff544ef960eebfff9c2 100755 (executable)
@@ -1004,7 +1004,7 @@ poly1305_blocks_neon:
        vmlal.u32       $D2,$H4#hi,$S3
 
        vmlal.u32       $D3,$H4#hi,$S4
-        vmov.u64       $MASK,#-1               @ can be redundant
+        vorn           $MASK,$MASK,$MASK       @ all-ones, can be redundant
        vmlal.u32       $D0,$H1#hi,$S4
         vshr.u64       $MASK,$MASK,#38
        vmlal.u32       $D4,$H0#hi,$R4
@@ -1048,7 +1048,7 @@ poly1305_blocks_neon:
        vmlal.u32       $D2,$H4#lo,$S3
 
        vmlal.u32       $D3,$H4#lo,$S4
-        vmov.u64       $MASK,#-1
+        vorn           $MASK,$MASK,$MASK       @ all-ones
        vmlal.u32       $D0,$H1#lo,$S4
         vshr.u64       $MASK,$MASK,#38
        vmlal.u32       $D4,$H0#lo,$R4