File tree 2 files changed +58
-52
lines changed
2 files changed +58
-52
lines changed Original file line number Diff line number Diff line change @@ -171,7 +171,7 @@ IXAMAXKERNEL = izamax.S
171
171
endif
172
172
173
173
ifndef ISAMINKERNEL
174
- ISAMINKERNEL = iamax_sse .S
174
+ ISAMINKERNEL = iamax .S
175
175
endif
176
176
177
177
ifndef IDAMINKERNEL
@@ -207,7 +207,7 @@ IQMAXKERNEL = iamax.S
207
207
endif
208
208
209
209
ifndef ISMINKERNEL
210
- ISMINKERNEL = iamax_sse .S
210
+ ISMINKERNEL = iamax .S
211
211
endif
212
212
213
213
ifndef IDMINKERNEL
Original file line number Diff line number Diff line change 36
36
/* or implied, of The University of Texas at Austin. */
37
37
/*********************************************************************/
38
38
39
+ /* This kernel was found to give wrong results when used for ISMIN/ISAMIN
40
+ with increment != 1, although it appears to be correct for corresponding
41
+ MAX operations. See issue 2116 */
42
+
39
43
#define ASSEMBLER
40
44
#include "common.h"
41
45
48
52
#define XX %r10
49
53
#define MM %r11
50
54
55
+ #define MAXPS maxps
56
+ #define MAXSS maxss
51
57
#ifdef USE_MIN
52
- #define maxps minps
53
- #define maxss minss
58
+ #define MAXPS minps
59
+ #define MAXSS minss
54
60
#endif
55
61
56
62
#include "l1param.h"
103
109
#ifdef USE_ABS
104
110
andps %xmm15 , %xmm4
105
111
#endif
106
- maxss %xmm4 , %xmm0
112
+ MAXSS %xmm4 , %xmm0
107
113
decq M
108
114
addq $SIZE, X
109
115
ALIGN_3
117
123
#ifdef USE_ABS
118
124
andps %xmm15 , %xmm4
119
125
#endif
120
- maxps %xmm4 , %xmm1
126
+ MAXPS %xmm4 , %xmm1
121
127
subq $2 , M
122
128
addq $2 * SIZE, X
123
129
ALIGN_3
137
143
#ifdef USE_ABS
138
144
andps %xmm15 , %xmm4
139
145
#endif
140
- maxps %xmm4 , %xmm0
146
+ MAXPS %xmm4 , %xmm0
141
147
142
148
movaps 4 * SIZE(X), %xmm5
143
149
#ifdef USE_ABS
144
150
andps %xmm15 , %xmm5
145
151
#endif
146
- maxps %xmm5 , %xmm1
152
+ MAXPS %xmm5 , %xmm1
147
153
148
154
movaps 8 * SIZE(X), %xmm6
149
155
#ifdef USE_ABS
150
156
andps %xmm15 , %xmm6
151
157
#endif
152
- maxps %xmm6 , %xmm2
158
+ MAXPS %xmm6 , %xmm2
153
159
154
160
movaps 12 * SIZE(X), %xmm7
155
161
#ifdef USE_ABS
156
162
andps %xmm15 , %xmm7
157
163
#endif
158
- maxps %xmm7 , %xmm3
164
+ MAXPS %xmm7 , %xmm3
159
165
160
166
addq $16 * SIZE, X
161
167
decq I
173
179
#ifdef USE_ABS
174
180
andps %xmm15 , %xmm4
175
181
#endif
176
- maxps %xmm4 , %xmm0
182
+ MAXPS %xmm4 , %xmm0
177
183
178
184
movaps 4 * SIZE(X), %xmm5
179
185
#ifdef USE_ABS
180
186
andps %xmm15 , %xmm5
181
187
#endif
182
- maxps %xmm5 , %xmm1
188
+ MAXPS %xmm5 , %xmm1
183
189
addq $8 * SIZE, X
184
190
ALIGN_3
185
191
191
197
#ifdef USE_ABS
192
198
andps %xmm15 , %xmm6
193
199
#endif
194
- maxps %xmm6 , %xmm2
200
+ MAXPS %xmm6 , %xmm2
195
201
addq $4 * SIZE, X
196
202
ALIGN_3
197
203
204
210
#ifdef USE_ABS
205
211
andps %xmm15 , %xmm7
206
212
#endif
207
- maxps %xmm7 , %xmm3
213
+ MAXPS %xmm7 , %xmm3
208
214
addq $2 * SIZE, X
209
215
210
216
.L18:
215
221
#ifdef USE_ABS
216
222
andps %xmm15 , %xmm4
217
223
#endif
218
- maxss %xmm4 , %xmm0
224
+ MAXSS %xmm4 , %xmm0
219
225
ALIGN_3
220
226
221
227
.L20:
222
228
movq XX, X
223
229
movq MM, M
224
230
225
- maxps %xmm1 , %xmm0
226
- maxps %xmm3 , %xmm2
227
- maxps %xmm2 , %xmm0
231
+ MAXPS %xmm1 , %xmm0
232
+ MAXPS %xmm3 , %xmm2
233
+ MAXPS %xmm2 , %xmm0
228
234
movaps %xmm0 , %xmm1
229
235
movhlps %xmm0 , %xmm0
230
- maxps %xmm1 , %xmm0
236
+ MAXPS %xmm1 , %xmm0
231
237
movaps %xmm0 , %xmm1
232
238
shufps $1 , %xmm0 , %xmm0
233
- maxss %xmm1 , %xmm0
239
+ MAXSS %xmm1 , %xmm0
234
240
shufps $0 , %xmm0 , %xmm0
235
241
236
242
testq $4 , X
427
433
#ifdef USE_ABS
428
434
andps %xmm15 , %xmm4
429
435
#endif
430
- maxps %xmm4 , %xmm0
436
+ MAXPS %xmm4 , %xmm0
431
437
432
438
movsd 4 * SIZE(X), %xmm5
433
439
movhps 6 * SIZE(X), %xmm5
434
440
#ifdef USE_ABS
435
441
andps %xmm15 , %xmm5
436
442
#endif
437
- maxps %xmm5 , %xmm1
443
+ MAXPS %xmm5 , %xmm1
438
444
439
445
movsd 8 * SIZE(X), %xmm6
440
446
movhps 10 * SIZE(X), %xmm6
441
447
#ifdef USE_ABS
442
448
andps %xmm15 , %xmm6
443
449
#endif
444
- maxps %xmm6 , %xmm2
450
+ MAXPS %xmm6 , %xmm2
445
451
446
452
movsd 12 * SIZE(X), %xmm7
447
453
movhps 14 * SIZE(X), %xmm7
448
454
#ifdef USE_ABS
449
455
andps %xmm15 , %xmm7
450
456
#endif
451
- maxps %xmm7 , %xmm3
457
+ MAXPS %xmm7 , %xmm3
452
458
453
459
addq $16 * SIZE, X
454
460
decq I
467
473
#ifdef USE_ABS
468
474
andps %xmm15 , %xmm4
469
475
#endif
470
- maxps %xmm4 , %xmm0
476
+ MAXPS %xmm4 , %xmm0
471
477
472
478
movsd 4 * SIZE(X), %xmm5
473
479
movhps 6 * SIZE(X), %xmm5
474
480
#ifdef USE_ABS
475
481
andps %xmm15 , %xmm5
476
482
#endif
477
- maxps %xmm5 , %xmm1
483
+ MAXPS %xmm5 , %xmm1
478
484
479
485
addq $8 * SIZE, X
480
486
ALIGN_3
488
494
#ifdef USE_ABS
489
495
andps %xmm15 , %xmm6
490
496
#endif
491
- maxps %xmm6 , %xmm2
497
+ MAXPS %xmm6 , %xmm2
492
498
addq $4 * SIZE, X
493
499
ALIGN_3
494
500
501
507
#ifdef USE_ABS
502
508
andps %xmm15 , %xmm7
503
509
#endif
504
- maxps %xmm7 , %xmm3
510
+ MAXPS %xmm7 , %xmm3
505
511
addq $2 * SIZE, X
506
512
507
513
.L38:
512
518
#ifdef USE_ABS
513
519
andps %xmm15 , %xmm4
514
520
#endif
515
- maxss %xmm4 , %xmm0
521
+ MAXSS %xmm4 , %xmm0
516
522
jmp .L40
517
523
ALIGN_4
518
524
519
525
.L40:
520
526
movq XX, X
521
527
movq MM, M
522
528
523
- maxps %xmm1 , %xmm0
524
- maxps %xmm3 , %xmm2
525
- maxps %xmm2 , %xmm0
529
+ MAXPS %xmm1 , %xmm0
530
+ MAXPS %xmm3 , %xmm2
531
+ MAXPS %xmm2 , %xmm0
526
532
movaps %xmm0 , %xmm1
527
533
movhlps %xmm0 , %xmm0
528
- maxps %xmm1 , %xmm0
534
+ MAXPS %xmm1 , %xmm0
529
535
movaps %xmm0 , %xmm1
530
536
shufps $1 , %xmm0 , %xmm0
531
- maxss %xmm1 , %xmm0
537
+ MAXSS %xmm1 , %xmm0
532
538
shufps $0 , %xmm0 , %xmm0
533
539
534
540
movq M, I
687
693
#ifdef USE_ABS
688
694
andps %xmm15 , %xmm4
689
695
#endif
690
- maxss %xmm4 , %xmm0
696
+ MAXSS %xmm4 , %xmm0
691
697
692
698
movss 0 * SIZE(X), %xmm5
693
699
addq INCX, X
694
700
#ifdef USE_ABS
695
701
andps %xmm15 , %xmm5
696
702
#endif
697
- maxss %xmm5 , %xmm1
703
+ MAXSS %xmm5 , %xmm1
698
704
699
705
movss 0 * SIZE(X), %xmm6
700
706
addq INCX, X
701
707
#ifdef USE_ABS
702
708
andps %xmm15 , %xmm6
703
709
#endif
704
- maxss %xmm6 , %xmm2
710
+ MAXSS %xmm6 , %xmm2
705
711
706
712
movss 0 * SIZE(X), %xmm7
707
713
addq INCX, X
708
714
#ifdef USE_ABS
709
715
andps %xmm15 , %xmm7
710
716
#endif
711
- maxss %xmm7 , %xmm3
717
+ MAXSS %xmm7 , %xmm3
712
718
713
719
movss 0 * SIZE(X), %xmm4
714
720
addq INCX, X
715
721
#ifdef USE_ABS
716
722
andps %xmm15 , %xmm4
717
723
#endif
718
- maxss %xmm4 , %xmm0
724
+ MAXSS %xmm4 , %xmm0
719
725
720
726
movss 0 * SIZE(X), %xmm5
721
727
addq INCX, X
722
728
#ifdef USE_ABS
723
729
andps %xmm15 , %xmm5
724
730
#endif
725
- maxss %xmm5 , %xmm1
731
+ MAXSS %xmm5 , %xmm1
726
732
727
733
movss 0 * SIZE(X), %xmm6
728
734
addq INCX, X
729
735
#ifdef USE_ABS
730
736
andps %xmm15 , %xmm6
731
737
#endif
732
- maxss %xmm6 , %xmm2
738
+ MAXSS %xmm6 , %xmm2
733
739
734
740
movss 0 * SIZE(X), %xmm7
735
741
addq INCX, X
736
742
#ifdef USE_ABS
737
743
andps %xmm15 , %xmm7
738
744
#endif
739
- maxss %xmm7 , %xmm3
745
+ MAXSS %xmm7 , %xmm3
740
746
741
747
decq I
742
748
jg .L81
754
760
#ifdef USE_ABS
755
761
andps %xmm15 , %xmm4
756
762
#endif
757
- maxss %xmm4 , %xmm0
763
+ MAXSS %xmm4 , %xmm0
758
764
759
765
movss 0 * SIZE(X), %xmm5
760
766
addq INCX, X
761
767
#ifdef USE_ABS
762
768
andps %xmm15 , %xmm5
763
769
#endif
764
- maxss %xmm5 , %xmm1
770
+ MAXSS %xmm5 , %xmm1
765
771
766
772
movss 0 * SIZE(X), %xmm6
767
773
addq INCX, X
768
774
#ifdef USE_ABS
769
775
andps %xmm15 , %xmm6
770
776
#endif
771
- maxss %xmm6 , %xmm2
777
+ MAXSS %xmm6 , %xmm2
772
778
773
779
movss 0 * SIZE(X), %xmm7
774
780
addq INCX, X
775
781
#ifdef USE_ABS
776
782
andps %xmm15 , %xmm7
777
783
#endif
778
- maxss %xmm7 , %xmm3
784
+ MAXSS %xmm7 , %xmm3
779
785
ALIGN_3
780
786
781
787
.L86:
787
793
#ifdef USE_ABS
788
794
andps %xmm15 , %xmm4
789
795
#endif
790
- maxss %xmm4 , %xmm0
796
+ MAXSS %xmm4 , %xmm0
791
797
792
798
movss 0 * SIZE(X), %xmm5
793
799
addq INCX, X
794
800
#ifdef USE_ABS
795
801
andps %xmm15 , %xmm5
796
802
#endif
797
- maxss %xmm5 , %xmm1
803
+ MAXSS %xmm5 , %xmm1
798
804
ALIGN_3
799
805
800
806
.L87:
806
812
#ifdef USE_ABS
807
813
andps %xmm15 , %xmm6
808
814
#endif
809
- maxss %xmm6 , %xmm2
815
+ MAXSS %xmm6 , %xmm2
810
816
ALIGN_4
811
817
812
818
.L90:
813
819
movq XX, X
814
820
movq MM, M
815
821
816
- maxss %xmm1 , %xmm0
817
- maxss %xmm3 , %xmm2
818
- maxss %xmm2 , %xmm0
822
+ MAXSS %xmm1 , %xmm0
823
+ MAXSS %xmm3 , %xmm2
824
+ MAXSS %xmm2 , %xmm0
819
825
shufps $0 , %xmm0 , %xmm0
820
826
821
827
movq M, I
You can’t perform that action at this time.
0 commit comments