@@ -338,10 +338,8 @@ FIELD _rsp, 8, 8
338
338
%define %%Z % 3
339
339
; I > 16 return (x & y) | (x & z) | (y & z)
340
340
; Same as (x & y) | (z & (x | y))
341
- vporq TMP0 , %%X , %%Y
342
- vpandq TMP0 , %%Z
343
- vpandq TMP1 , %%X , %%Y
344
- vporq TMP0 , TMP1
341
+ vmovdqa32 TMP0 , %%X
342
+ vpternlogd TMP0 , %%Y , %%Z , 0xE8 ; Majority function
345
343
%endmacro
346
344
347
345
@@ -364,9 +362,8 @@ FIELD _rsp, 8, 8
364
362
%define %%Z % 3
365
363
366
364
; I > 16 return (x & y) | ((~x) & z)
367
- vpandq TMP0 , %%X , %%Y
368
- vpandnd TMP1 , %%X , %%Z
369
- vporq TMP0 , TMP1
365
+ vmovdqa32 TMP0 , %%X
366
+ vpternlogd TMP0 , %%Y , %%Z , 0xCA ; X? Y : Z
370
367
%endmacro
371
368
372
369
;; void sm3_mb_x16_avx512(ISAL_SM3_MB_ARGS_X8, uint32_t size)
@@ -517,13 +514,11 @@ lloop:
517
514
; F = E
518
515
; E = P(TT2)
519
516
vmovups D , C
520
- vprold B , 9
521
- vmovups C , B
517
+ vprold C , B , 9
522
518
vmovups B , A
523
519
vmovups A , TMP3
524
520
vmovups H , G
525
- vprold F , 19
526
- vmovups G , F
521
+ vprold G , F , 19
527
522
vmovups F , E
528
523
P TMP2
529
524
vmovups E , TMP0
@@ -552,14 +547,12 @@ lloop:
552
547
553
548
; clac WB(I+4)
554
549
vprold APPEND(WB , J) , APPEND(WB , J_3) , 15
555
- vpxord APPEND(WB , J) , APPEND(WB , J_16)
556
- vpxord APPEND(WB , J) , APPEND(WB , J_9)
550
+ vpternlogd APPEND(WB , J) , APPEND(WB , J_9) , APPEND(WB , J_16) , 0x96 ; 3-way XOR
557
551
558
552
P1 APPEND(WB , J)
559
553
560
554
vprold APPEND(WB , J) , APPEND(WB , J_13) , 7
561
- vpxord APPEND(WB , J) , TMP0
562
- vpxord APPEND(WB , J) , APPEND(WB , J_6)
555
+ vpternlogd APPEND(WB , J) , APPEND(WB , J_6) , TMP0 , 0x96 ; 3-way XOR
563
556
564
557
; (A <<< 12)
565
558
; store in TMP0
@@ -602,13 +595,11 @@ lloop:
602
595
; F = E
603
596
; E = P(TT2)
604
597
vmovups D , C
605
- vprold B , 9
606
- vmovups C , B
598
+ vprold C , B , 9
607
599
vmovups B , A
608
600
vmovups A , TMP3
609
601
vmovups H , G
610
- vprold F , 19
611
- vmovups G , F
602
+ vprold G , F , 19
612
603
vmovups F , E
613
604
P TMP2
614
605
vmovups E , TMP0
@@ -629,14 +620,12 @@ lloop:
629
620
%assign J (((I + 4 ) % 20 ))
630
621
631
622
vprold APPEND(WB , J) , APPEND(WB , J_3) , 15
632
- vpxord APPEND(WB , J) , APPEND(WB , J_16)
633
- vpxord APPEND(WB , J) , APPEND(WB , J_9)
623
+ vpternlogd APPEND(WB , J) , APPEND(WB , J_9) , APPEND(WB , J_16) , 0x96 ; 3-way XOR
634
624
635
625
P1 APPEND(WB , J)
636
626
637
627
vprold APPEND(WB , J) , APPEND(WB , J_13) , 7
638
- vpxord APPEND(WB , J) , TMP0
639
- vpxord APPEND(WB , J) , APPEND(WB , J_6)
628
+ vpternlogd APPEND(WB , J) , APPEND(WB , J_6) , TMP0 , 0x96 ; 3-way XOR
640
629
641
630
; (A <<< 12)
642
631
; store in TMP0
@@ -679,13 +668,11 @@ lloop:
679
668
; F = E
680
669
; E = P(TT2)
681
670
vmovups D , C
682
- vprold B , 9
683
- vmovups C , B
671
+ vprold C , B , 9
684
672
vmovups B , A
685
673
vmovups A , TMP3
686
674
vmovups H , G
687
- vprold F , 19
688
- vmovups G , F
675
+ vprold G , F , 19
689
676
vmovups F , E
690
677
P TMP2
691
678
vmovups E , TMP0
@@ -704,9 +691,7 @@ lloop:
704
691
705
692
%assign cur_loop cur_loop + 1
706
693
sub SIZE , 1
707
- je last_loop
708
-
709
- jmp lloop
694
+ jnz lloop
710
695
711
696
712
697
last_loop:
0 commit comments