Skip to content

Commit 032d049

Browse files
ubizjakherbertx
authored andcommitted
crypto: aesni - Use TEST %reg,%reg instead of CMP $0,%reg
CMP $0,%reg can't set overflow flag, so we can use shorter TEST %reg,%reg instruction when only zero and sign flags are checked (E,L,LE,G,GE conditions). Signed-off-by: Uros Bizjak <[email protected]> Cc: Herbert Xu <[email protected]> Cc: Borislav Petkov <[email protected]> Cc: "H. Peter Anvin" <[email protected]> Signed-off-by: Herbert Xu <[email protected]>
1 parent f2d4576 commit 032d049

File tree

2 files changed

+20
-20
lines changed

2 files changed

+20
-20
lines changed

arch/x86/crypto/aesni-intel_asm.S

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -318,7 +318,7 @@ _initial_blocks_\@:
318318

319319
# Main loop - Encrypt/Decrypt remaining blocks
320320

321-
cmp $0, %r13
321+
test %r13, %r13
322322
je _zero_cipher_left_\@
323323
sub $64, %r13
324324
je _four_cipher_left_\@
@@ -437,7 +437,7 @@ _multiple_of_16_bytes_\@:
437437

438438
mov PBlockLen(%arg2), %r12
439439

440-
cmp $0, %r12
440+
test %r12, %r12
441441
je _partial_done\@
442442

443443
GHASH_MUL %xmm8, %xmm13, %xmm9, %xmm10, %xmm11, %xmm5, %xmm6
@@ -474,15 +474,15 @@ _T_8_\@:
474474
add $8, %r10
475475
sub $8, %r11
476476
psrldq $8, %xmm0
477-
cmp $0, %r11
477+
test %r11, %r11
478478
je _return_T_done_\@
479479
_T_4_\@:
480480
movd %xmm0, %eax
481481
mov %eax, (%r10)
482482
add $4, %r10
483483
sub $4, %r11
484484
psrldq $4, %xmm0
485-
cmp $0, %r11
485+
test %r11, %r11
486486
je _return_T_done_\@
487487
_T_123_\@:
488488
movd %xmm0, %eax
@@ -619,7 +619,7 @@ _get_AAD_blocks\@:
619619

620620
/* read the last <16B of AAD */
621621
_get_AAD_rest\@:
622-
cmp $0, %r11
622+
test %r11, %r11
623623
je _get_AAD_done\@
624624

625625
READ_PARTIAL_BLOCK %r10, %r11, \TMP1, \TMP7
@@ -640,7 +640,7 @@ _get_AAD_done\@:
640640
.macro PARTIAL_BLOCK CYPH_PLAIN_OUT PLAIN_CYPH_IN PLAIN_CYPH_LEN DATA_OFFSET \
641641
AAD_HASH operation
642642
mov PBlockLen(%arg2), %r13
643-
cmp $0, %r13
643+
test %r13, %r13
644644
je _partial_block_done_\@ # Leave Macro if no partial blocks
645645
# Read in input data without over reading
646646
cmp $16, \PLAIN_CYPH_LEN
@@ -692,7 +692,7 @@ _no_extra_mask_1_\@:
692692
pshufb %xmm2, %xmm3
693693
pxor %xmm3, \AAD_HASH
694694

695-
cmp $0, %r10
695+
test %r10, %r10
696696
jl _partial_incomplete_1_\@
697697

698698
# GHASH computation for the last <16 Byte block
@@ -727,7 +727,7 @@ _no_extra_mask_2_\@:
727727
pshufb %xmm2, %xmm9
728728
pxor %xmm9, \AAD_HASH
729729

730-
cmp $0, %r10
730+
test %r10, %r10
731731
jl _partial_incomplete_2_\@
732732

733733
# GHASH computation for the last <16 Byte block
@@ -747,7 +747,7 @@ _encode_done_\@:
747747
pshufb %xmm2, %xmm9
748748
.endif
749749
# output encrypted Bytes
750-
cmp $0, %r10
750+
test %r10, %r10
751751
jl _partial_fill_\@
752752
mov %r13, %r12
753753
mov $16, %r13
@@ -2720,7 +2720,7 @@ SYM_FUNC_END(aesni_ctr_enc)
27202720
*/
27212721
SYM_FUNC_START(aesni_xts_crypt8)
27222722
FRAME_BEGIN
2723-
cmpb $0, %cl
2723+
testb %cl, %cl
27242724
movl $0, %ecx
27252725
movl $240, %r10d
27262726
leaq _aesni_enc4, %r11

arch/x86/crypto/aesni-intel_avx-x86_64.S

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -369,7 +369,7 @@ _initial_num_blocks_is_0\@:
369369

370370

371371
_initial_blocks_encrypted\@:
372-
cmp $0, %r13
372+
test %r13, %r13
373373
je _zero_cipher_left\@
374374

375375
sub $128, %r13
@@ -528,7 +528,7 @@ _multiple_of_16_bytes\@:
528528
vmovdqu HashKey(arg2), %xmm13
529529

530530
mov PBlockLen(arg2), %r12
531-
cmp $0, %r12
531+
test %r12, %r12
532532
je _partial_done\@
533533

534534
#GHASH computation for the last <16 Byte block
@@ -573,15 +573,15 @@ _T_8\@:
573573
add $8, %r10
574574
sub $8, %r11
575575
vpsrldq $8, %xmm9, %xmm9
576-
cmp $0, %r11
576+
test %r11, %r11
577577
je _return_T_done\@
578578
_T_4\@:
579579
vmovd %xmm9, %eax
580580
mov %eax, (%r10)
581581
add $4, %r10
582582
sub $4, %r11
583583
vpsrldq $4, %xmm9, %xmm9
584-
cmp $0, %r11
584+
test %r11, %r11
585585
je _return_T_done\@
586586
_T_123\@:
587587
vmovd %xmm9, %eax
@@ -625,7 +625,7 @@ _get_AAD_blocks\@:
625625
cmp $16, %r11
626626
jge _get_AAD_blocks\@
627627
vmovdqu \T8, \T7
628-
cmp $0, %r11
628+
test %r11, %r11
629629
je _get_AAD_done\@
630630

631631
vpxor \T7, \T7, \T7
@@ -644,7 +644,7 @@ _get_AAD_rest8\@:
644644
vpxor \T1, \T7, \T7
645645
jmp _get_AAD_rest8\@
646646
_get_AAD_rest4\@:
647-
cmp $0, %r11
647+
test %r11, %r11
648648
jle _get_AAD_rest0\@
649649
mov (%r10), %eax
650650
movq %rax, \T1
@@ -749,7 +749,7 @@ _done_read_partial_block_\@:
749749
.macro PARTIAL_BLOCK GHASH_MUL CYPH_PLAIN_OUT PLAIN_CYPH_IN PLAIN_CYPH_LEN DATA_OFFSET \
750750
AAD_HASH ENC_DEC
751751
mov PBlockLen(arg2), %r13
752-
cmp $0, %r13
752+
test %r13, %r13
753753
je _partial_block_done_\@ # Leave Macro if no partial blocks
754754
# Read in input data without over reading
755755
cmp $16, \PLAIN_CYPH_LEN
@@ -801,7 +801,7 @@ _no_extra_mask_1_\@:
801801
vpshufb %xmm2, %xmm3, %xmm3
802802
vpxor %xmm3, \AAD_HASH, \AAD_HASH
803803

804-
cmp $0, %r10
804+
test %r10, %r10
805805
jl _partial_incomplete_1_\@
806806

807807
# GHASH computation for the last <16 Byte block
@@ -836,7 +836,7 @@ _no_extra_mask_2_\@:
836836
vpshufb %xmm2, %xmm9, %xmm9
837837
vpxor %xmm9, \AAD_HASH, \AAD_HASH
838838

839-
cmp $0, %r10
839+
test %r10, %r10
840840
jl _partial_incomplete_2_\@
841841

842842
# GHASH computation for the last <16 Byte block
@@ -856,7 +856,7 @@ _encode_done_\@:
856856
vpshufb %xmm2, %xmm9, %xmm9
857857
.endif
858858
# output encrypted Bytes
859-
cmp $0, %r10
859+
test %r10, %r10
860860
jl _partial_fill_\@
861861
mov %r13, %r12
862862
mov $16, %r13

0 commit comments

Comments
 (0)