@@ -2312,13 +2312,11 @@ define i1 @length32_eq(i8* %x, i8* %y) nounwind {
2312
2312
;
2313
2313
; X64-AVX1-LABEL: length32_eq:
2314
2314
; X64-AVX1: # %bb.0:
2315
- ; X64-AVX1-NEXT: vmovdqu (%rdi), %xmm0
2316
- ; X64-AVX1-NEXT: vmovdqu 16(%rdi), %xmm1
2317
- ; X64-AVX1-NEXT: vpxor 16(%rsi), %xmm1, %xmm1
2318
- ; X64-AVX1-NEXT: vpxor (%rsi), %xmm0, %xmm0
2319
- ; X64-AVX1-NEXT: vpor %xmm1, %xmm0, %xmm0
2320
- ; X64-AVX1-NEXT: vptest %xmm0, %xmm0
2315
+ ; X64-AVX1-NEXT: vmovups (%rdi), %ymm0
2316
+ ; X64-AVX1-NEXT: vxorps (%rsi), %ymm0, %ymm0
2317
+ ; X64-AVX1-NEXT: vptest %ymm0, %ymm0
2321
2318
; X64-AVX1-NEXT: sete %al
2319
+ ; X64-AVX1-NEXT: vzeroupper
2322
2320
; X64-AVX1-NEXT: retq
2323
2321
;
2324
2322
; X64-AVX2-LABEL: length32_eq:
@@ -2653,13 +2651,11 @@ define i1 @length32_eq_const(i8* %X) nounwind {
2653
2651
;
2654
2652
; X64-AVX1-LABEL: length32_eq_const:
2655
2653
; X64-AVX1: # %bb.0:
2656
- ; X64-AVX1-NEXT: vmovdqu (%rdi), %xmm0
2657
- ; X64-AVX1-NEXT: vmovdqu 16(%rdi), %xmm1
2658
- ; X64-AVX1-NEXT: vpxor {{.*}}(%rip), %xmm1, %xmm1
2659
- ; X64-AVX1-NEXT: vpxor {{.*}}(%rip), %xmm0, %xmm0
2660
- ; X64-AVX1-NEXT: vpor %xmm1, %xmm0, %xmm0
2661
- ; X64-AVX1-NEXT: vptest %xmm0, %xmm0
2654
+ ; X64-AVX1-NEXT: vmovups (%rdi), %ymm0
2655
+ ; X64-AVX1-NEXT: vxorps {{.*}}(%rip), %ymm0, %ymm0
2656
+ ; X64-AVX1-NEXT: vptest %ymm0, %ymm0
2662
2657
; X64-AVX1-NEXT: setne %al
2658
+ ; X64-AVX1-NEXT: vzeroupper
2663
2659
; X64-AVX1-NEXT: retq
2664
2660
;
2665
2661
; X64-AVX2-LABEL: length32_eq_const:
@@ -2814,16 +2810,15 @@ define i1 @length48_eq(i8* %x, i8* %y) nounwind {
2814
2810
;
2815
2811
; X64-AVX1-LABEL: length48_eq:
2816
2812
; X64-AVX1: # %bb.0:
2817
- ; X64-AVX1-NEXT: vmovdqu (%rdi), %xmm0
2818
- ; X64-AVX1-NEXT: vmovdqu 16(%rdi), %xmm1
2819
- ; X64-AVX1-NEXT: vmovdqu 32(%rdi), %xmm2
2820
- ; X64-AVX1-NEXT: vpxor 16(%rsi), %xmm1, %xmm1
2821
- ; X64-AVX1-NEXT: vpxor (%rsi), %xmm0, %xmm0
2822
- ; X64-AVX1-NEXT: vpxor 32(%rsi), %xmm2, %xmm2
2823
- ; X64-AVX1-NEXT: vpor %xmm2, %xmm1, %xmm1
2824
- ; X64-AVX1-NEXT: vpor %xmm1, %xmm0, %xmm0
2825
- ; X64-AVX1-NEXT: vptest %xmm0, %xmm0
2813
+ ; X64-AVX1-NEXT: vmovups (%rdi), %ymm0
2814
+ ; X64-AVX1-NEXT: vmovups 32(%rdi), %xmm1
2815
+ ; X64-AVX1-NEXT: vmovups 32(%rsi), %xmm2
2816
+ ; X64-AVX1-NEXT: vxorps (%rsi), %ymm0, %ymm0
2817
+ ; X64-AVX1-NEXT: vxorps %ymm2, %ymm1, %ymm1
2818
+ ; X64-AVX1-NEXT: vorps %ymm1, %ymm0, %ymm0
2819
+ ; X64-AVX1-NEXT: vptest %ymm0, %ymm0
2826
2820
; X64-AVX1-NEXT: sete %al
2821
+ ; X64-AVX1-NEXT: vzeroupper
2827
2822
; X64-AVX1-NEXT: retq
2828
2823
;
2829
2824
; X64-AVX2-LABEL: length48_eq:
@@ -3144,16 +3139,14 @@ define i1 @length48_eq_const(i8* %X) nounwind {
3144
3139
;
3145
3140
; X64-AVX1-LABEL: length48_eq_const:
3146
3141
; X64-AVX1: # %bb.0:
3147
- ; X64-AVX1-NEXT: vmovdqu (%rdi), %xmm0
3148
- ; X64-AVX1-NEXT: vmovdqu 16(%rdi), %xmm1
3149
- ; X64-AVX1-NEXT: vmovdqu 32(%rdi), %xmm2
3150
- ; X64-AVX1-NEXT: vpxor {{.*}}(%rip), %xmm1, %xmm1
3151
- ; X64-AVX1-NEXT: vpxor {{.*}}(%rip), %xmm0, %xmm0
3152
- ; X64-AVX1-NEXT: vpxor {{.*}}(%rip), %xmm2, %xmm2
3153
- ; X64-AVX1-NEXT: vpor %xmm2, %xmm1, %xmm1
3154
- ; X64-AVX1-NEXT: vpor %xmm1, %xmm0, %xmm0
3155
- ; X64-AVX1-NEXT: vptest %xmm0, %xmm0
3142
+ ; X64-AVX1-NEXT: vmovups (%rdi), %ymm0
3143
+ ; X64-AVX1-NEXT: vmovups 32(%rdi), %xmm1
3144
+ ; X64-AVX1-NEXT: vxorps {{.*}}(%rip), %ymm0, %ymm0
3145
+ ; X64-AVX1-NEXT: vxorps {{.*}}(%rip), %ymm1, %ymm1
3146
+ ; X64-AVX1-NEXT: vorps %ymm1, %ymm0, %ymm0
3147
+ ; X64-AVX1-NEXT: vptest %ymm0, %ymm0
3156
3148
; X64-AVX1-NEXT: setne %al
3149
+ ; X64-AVX1-NEXT: vzeroupper
3157
3150
; X64-AVX1-NEXT: retq
3158
3151
;
3159
3152
; X64-AVX2-LABEL: length48_eq_const:
@@ -3333,19 +3326,14 @@ define i1 @length63_eq(i8* %x, i8* %y) nounwind {
3333
3326
;
3334
3327
; X64-AVX1-LABEL: length63_eq:
3335
3328
; X64-AVX1: # %bb.0:
3336
- ; X64-AVX1-NEXT: vmovdqu (%rdi), %xmm0
3337
- ; X64-AVX1-NEXT: vmovdqu 16(%rdi), %xmm1
3338
- ; X64-AVX1-NEXT: vmovdqu 32(%rdi), %xmm2
3339
- ; X64-AVX1-NEXT: vmovdqu 47(%rdi), %xmm3
3340
- ; X64-AVX1-NEXT: vpxor 47(%rsi), %xmm3, %xmm3
3341
- ; X64-AVX1-NEXT: vpxor 32(%rsi), %xmm2, %xmm2
3342
- ; X64-AVX1-NEXT: vpor %xmm3, %xmm2, %xmm2
3343
- ; X64-AVX1-NEXT: vpxor 16(%rsi), %xmm1, %xmm1
3344
- ; X64-AVX1-NEXT: vpor %xmm2, %xmm1, %xmm1
3345
- ; X64-AVX1-NEXT: vpxor (%rsi), %xmm0, %xmm0
3346
- ; X64-AVX1-NEXT: vpor %xmm1, %xmm0, %xmm0
3347
- ; X64-AVX1-NEXT: vptest %xmm0, %xmm0
3329
+ ; X64-AVX1-NEXT: vmovups (%rdi), %ymm0
3330
+ ; X64-AVX1-NEXT: vmovups 31(%rdi), %ymm1
3331
+ ; X64-AVX1-NEXT: vxorps 31(%rsi), %ymm1, %ymm1
3332
+ ; X64-AVX1-NEXT: vxorps (%rsi), %ymm0, %ymm0
3333
+ ; X64-AVX1-NEXT: vorps %ymm1, %ymm0, %ymm0
3334
+ ; X64-AVX1-NEXT: vptest %ymm0, %ymm0
3348
3335
; X64-AVX1-NEXT: setne %al
3336
+ ; X64-AVX1-NEXT: vzeroupper
3349
3337
; X64-AVX1-NEXT: retq
3350
3338
;
3351
3339
; X64-AVX2-LABEL: length63_eq:
@@ -3542,19 +3530,14 @@ define i1 @length63_eq_const(i8* %X) nounwind {
3542
3530
;
3543
3531
; X64-AVX1-LABEL: length63_eq_const:
3544
3532
; X64-AVX1: # %bb.0:
3545
- ; X64-AVX1-NEXT: vmovdqu (%rdi), %xmm0
3546
- ; X64-AVX1-NEXT: vmovdqu 16(%rdi), %xmm1
3547
- ; X64-AVX1-NEXT: vmovdqu 32(%rdi), %xmm2
3548
- ; X64-AVX1-NEXT: vmovdqu 47(%rdi), %xmm3
3549
- ; X64-AVX1-NEXT: vpxor {{.*}}(%rip), %xmm3, %xmm3
3550
- ; X64-AVX1-NEXT: vpxor {{.*}}(%rip), %xmm2, %xmm2
3551
- ; X64-AVX1-NEXT: vpor %xmm3, %xmm2, %xmm2
3552
- ; X64-AVX1-NEXT: vpxor {{.*}}(%rip), %xmm1, %xmm1
3553
- ; X64-AVX1-NEXT: vpor %xmm2, %xmm1, %xmm1
3554
- ; X64-AVX1-NEXT: vpxor {{.*}}(%rip), %xmm0, %xmm0
3555
- ; X64-AVX1-NEXT: vpor %xmm1, %xmm0, %xmm0
3556
- ; X64-AVX1-NEXT: vptest %xmm0, %xmm0
3533
+ ; X64-AVX1-NEXT: vmovups (%rdi), %ymm0
3534
+ ; X64-AVX1-NEXT: vmovups 31(%rdi), %ymm1
3535
+ ; X64-AVX1-NEXT: vxorps {{.*}}(%rip), %ymm1, %ymm1
3536
+ ; X64-AVX1-NEXT: vxorps {{.*}}(%rip), %ymm0, %ymm0
3537
+ ; X64-AVX1-NEXT: vorps %ymm1, %ymm0, %ymm0
3538
+ ; X64-AVX1-NEXT: vptest %ymm0, %ymm0
3557
3539
; X64-AVX1-NEXT: sete %al
3540
+ ; X64-AVX1-NEXT: vzeroupper
3558
3541
; X64-AVX1-NEXT: retq
3559
3542
;
3560
3543
; X64-AVX2-LABEL: length63_eq_const:
@@ -3734,19 +3717,14 @@ define i1 @length64_eq(i8* %x, i8* %y) nounwind {
3734
3717
;
3735
3718
; X64-AVX1-LABEL: length64_eq:
3736
3719
; X64-AVX1: # %bb.0:
3737
- ; X64-AVX1-NEXT: vmovdqu (%rdi), %xmm0
3738
- ; X64-AVX1-NEXT: vmovdqu 16(%rdi), %xmm1
3739
- ; X64-AVX1-NEXT: vmovdqu 32(%rdi), %xmm2
3740
- ; X64-AVX1-NEXT: vmovdqu 48(%rdi), %xmm3
3741
- ; X64-AVX1-NEXT: vpxor 48(%rsi), %xmm3, %xmm3
3742
- ; X64-AVX1-NEXT: vpxor 32(%rsi), %xmm2, %xmm2
3743
- ; X64-AVX1-NEXT: vpor %xmm3, %xmm2, %xmm2
3744
- ; X64-AVX1-NEXT: vpxor 16(%rsi), %xmm1, %xmm1
3745
- ; X64-AVX1-NEXT: vpor %xmm2, %xmm1, %xmm1
3746
- ; X64-AVX1-NEXT: vpxor (%rsi), %xmm0, %xmm0
3747
- ; X64-AVX1-NEXT: vpor %xmm1, %xmm0, %xmm0
3748
- ; X64-AVX1-NEXT: vptest %xmm0, %xmm0
3720
+ ; X64-AVX1-NEXT: vmovups (%rdi), %ymm0
3721
+ ; X64-AVX1-NEXT: vmovups 32(%rdi), %ymm1
3722
+ ; X64-AVX1-NEXT: vxorps 32(%rsi), %ymm1, %ymm1
3723
+ ; X64-AVX1-NEXT: vxorps (%rsi), %ymm0, %ymm0
3724
+ ; X64-AVX1-NEXT: vorps %ymm1, %ymm0, %ymm0
3725
+ ; X64-AVX1-NEXT: vptest %ymm0, %ymm0
3749
3726
; X64-AVX1-NEXT: setne %al
3727
+ ; X64-AVX1-NEXT: vzeroupper
3750
3728
; X64-AVX1-NEXT: retq
3751
3729
;
3752
3730
; X64-AVX2-LABEL: length64_eq:
@@ -3958,19 +3936,14 @@ define i1 @length64_eq_const(i8* %X) nounwind {
3958
3936
;
3959
3937
; X64-AVX1-LABEL: length64_eq_const:
3960
3938
; X64-AVX1: # %bb.0:
3961
- ; X64-AVX1-NEXT: vmovdqu (%rdi), %xmm0
3962
- ; X64-AVX1-NEXT: vmovdqu 16(%rdi), %xmm1
3963
- ; X64-AVX1-NEXT: vmovdqu 32(%rdi), %xmm2
3964
- ; X64-AVX1-NEXT: vmovdqu 48(%rdi), %xmm3
3965
- ; X64-AVX1-NEXT: vpxor {{.*}}(%rip), %xmm3, %xmm3
3966
- ; X64-AVX1-NEXT: vpxor {{.*}}(%rip), %xmm2, %xmm2
3967
- ; X64-AVX1-NEXT: vpor %xmm3, %xmm2, %xmm2
3968
- ; X64-AVX1-NEXT: vpxor {{.*}}(%rip), %xmm1, %xmm1
3969
- ; X64-AVX1-NEXT: vpor %xmm2, %xmm1, %xmm1
3970
- ; X64-AVX1-NEXT: vpxor {{.*}}(%rip), %xmm0, %xmm0
3971
- ; X64-AVX1-NEXT: vpor %xmm1, %xmm0, %xmm0
3972
- ; X64-AVX1-NEXT: vptest %xmm0, %xmm0
3939
+ ; X64-AVX1-NEXT: vmovups (%rdi), %ymm0
3940
+ ; X64-AVX1-NEXT: vmovups 32(%rdi), %ymm1
3941
+ ; X64-AVX1-NEXT: vxorps {{.*}}(%rip), %ymm1, %ymm1
3942
+ ; X64-AVX1-NEXT: vxorps {{.*}}(%rip), %ymm0, %ymm0
3943
+ ; X64-AVX1-NEXT: vorps %ymm1, %ymm0, %ymm0
3944
+ ; X64-AVX1-NEXT: vptest %ymm0, %ymm0
3973
3945
; X64-AVX1-NEXT: sete %al
3946
+ ; X64-AVX1-NEXT: vzeroupper
3974
3947
; X64-AVX1-NEXT: retq
3975
3948
;
3976
3949
; X64-AVX2-LABEL: length64_eq_const:
@@ -4073,12 +4046,17 @@ define i1 @length96_eq(i8* %x, i8* %y) nounwind {
4073
4046
;
4074
4047
; X64-AVX1-LABEL: length96_eq:
4075
4048
; X64-AVX1: # %bb.0:
4076
- ; X64-AVX1-NEXT: pushq %rax
4077
- ; X64-AVX1-NEXT: movl $96, %edx
4078
- ; X64-AVX1-NEXT: callq memcmp
4079
- ; X64-AVX1-NEXT: testl %eax, %eax
4049
+ ; X64-AVX1-NEXT: vmovups (%rdi), %ymm0
4050
+ ; X64-AVX1-NEXT: vmovups 32(%rdi), %ymm1
4051
+ ; X64-AVX1-NEXT: vmovups 64(%rdi), %ymm2
4052
+ ; X64-AVX1-NEXT: vxorps 32(%rsi), %ymm1, %ymm1
4053
+ ; X64-AVX1-NEXT: vxorps (%rsi), %ymm0, %ymm0
4054
+ ; X64-AVX1-NEXT: vxorps 64(%rsi), %ymm2, %ymm2
4055
+ ; X64-AVX1-NEXT: vorps %ymm2, %ymm1, %ymm1
4056
+ ; X64-AVX1-NEXT: vorps %ymm1, %ymm0, %ymm0
4057
+ ; X64-AVX1-NEXT: vptest %ymm0, %ymm0
4080
4058
; X64-AVX1-NEXT: setne %al
4081
- ; X64-AVX1-NEXT: popq %rcx
4059
+ ; X64-AVX1-NEXT: vzeroupper
4082
4060
; X64-AVX1-NEXT: retq
4083
4061
;
4084
4062
; X64-AVX2-LABEL: length96_eq:
@@ -4233,13 +4211,17 @@ define i1 @length96_eq_const(i8* %X) nounwind {
4233
4211
;
4234
4212
; X64-AVX1-LABEL: length96_eq_const:
4235
4213
; X64-AVX1: # %bb.0:
4236
- ; X64-AVX1-NEXT: pushq %rax
4237
- ; X64-AVX1-NEXT: movl $.L.str, %esi
4238
- ; X64-AVX1-NEXT: movl $96, %edx
4239
- ; X64-AVX1-NEXT: callq memcmp
4240
- ; X64-AVX1-NEXT: testl %eax, %eax
4214
+ ; X64-AVX1-NEXT: vmovups (%rdi), %ymm0
4215
+ ; X64-AVX1-NEXT: vmovups 32(%rdi), %ymm1
4216
+ ; X64-AVX1-NEXT: vmovups 64(%rdi), %ymm2
4217
+ ; X64-AVX1-NEXT: vxorps {{.*}}(%rip), %ymm1, %ymm1
4218
+ ; X64-AVX1-NEXT: vxorps {{.*}}(%rip), %ymm0, %ymm0
4219
+ ; X64-AVX1-NEXT: vxorps {{.*}}(%rip), %ymm2, %ymm2
4220
+ ; X64-AVX1-NEXT: vorps %ymm2, %ymm1, %ymm1
4221
+ ; X64-AVX1-NEXT: vorps %ymm1, %ymm0, %ymm0
4222
+ ; X64-AVX1-NEXT: vptest %ymm0, %ymm0
4241
4223
; X64-AVX1-NEXT: sete %al
4242
- ; X64-AVX1-NEXT: popq %rcx
4224
+ ; X64-AVX1-NEXT: vzeroupper
4243
4225
; X64-AVX1-NEXT: retq
4244
4226
;
4245
4227
; X64-AVX2-LABEL: length96_eq_const:
@@ -4355,12 +4337,20 @@ define i1 @length127_eq(i8* %x, i8* %y) nounwind {
4355
4337
;
4356
4338
; X64-AVX1-LABEL: length127_eq:
4357
4339
; X64-AVX1: # %bb.0:
4358
- ; X64-AVX1-NEXT: pushq %rax
4359
- ; X64-AVX1-NEXT: movl $127, %edx
4360
- ; X64-AVX1-NEXT: callq memcmp
4361
- ; X64-AVX1-NEXT: testl %eax, %eax
4340
+ ; X64-AVX1-NEXT: vmovups (%rdi), %ymm0
4341
+ ; X64-AVX1-NEXT: vmovups 32(%rdi), %ymm1
4342
+ ; X64-AVX1-NEXT: vmovups 64(%rdi), %ymm2
4343
+ ; X64-AVX1-NEXT: vmovups 95(%rdi), %ymm3
4344
+ ; X64-AVX1-NEXT: vxorps 95(%rsi), %ymm3, %ymm3
4345
+ ; X64-AVX1-NEXT: vxorps 64(%rsi), %ymm2, %ymm2
4346
+ ; X64-AVX1-NEXT: vorps %ymm3, %ymm2, %ymm2
4347
+ ; X64-AVX1-NEXT: vxorps 32(%rsi), %ymm1, %ymm1
4348
+ ; X64-AVX1-NEXT: vorps %ymm2, %ymm1, %ymm1
4349
+ ; X64-AVX1-NEXT: vxorps (%rsi), %ymm0, %ymm0
4350
+ ; X64-AVX1-NEXT: vorps %ymm1, %ymm0, %ymm0
4351
+ ; X64-AVX1-NEXT: vptest %ymm0, %ymm0
4362
4352
; X64-AVX1-NEXT: setne %al
4363
- ; X64-AVX1-NEXT: popq %rcx
4353
+ ; X64-AVX1-NEXT: vzeroupper
4364
4354
; X64-AVX1-NEXT: retq
4365
4355
;
4366
4356
; X64-AVX2-LABEL: length127_eq:
@@ -4519,13 +4509,20 @@ define i1 @length127_eq_const(i8* %X) nounwind {
4519
4509
;
4520
4510
; X64-AVX1-LABEL: length127_eq_const:
4521
4511
; X64-AVX1: # %bb.0:
4522
- ; X64-AVX1-NEXT: pushq %rax
4523
- ; X64-AVX1-NEXT: movl $.L.str, %esi
4524
- ; X64-AVX1-NEXT: movl $127, %edx
4525
- ; X64-AVX1-NEXT: callq memcmp
4526
- ; X64-AVX1-NEXT: testl %eax, %eax
4512
+ ; X64-AVX1-NEXT: vmovups (%rdi), %ymm0
4513
+ ; X64-AVX1-NEXT: vmovups 32(%rdi), %ymm1
4514
+ ; X64-AVX1-NEXT: vmovups 64(%rdi), %ymm2
4515
+ ; X64-AVX1-NEXT: vmovups 95(%rdi), %ymm3
4516
+ ; X64-AVX1-NEXT: vxorps {{.*}}(%rip), %ymm3, %ymm3
4517
+ ; X64-AVX1-NEXT: vxorps {{.*}}(%rip), %ymm2, %ymm2
4518
+ ; X64-AVX1-NEXT: vorps %ymm3, %ymm2, %ymm2
4519
+ ; X64-AVX1-NEXT: vxorps {{.*}}(%rip), %ymm1, %ymm1
4520
+ ; X64-AVX1-NEXT: vorps %ymm2, %ymm1, %ymm1
4521
+ ; X64-AVX1-NEXT: vxorps {{.*}}(%rip), %ymm0, %ymm0
4522
+ ; X64-AVX1-NEXT: vorps %ymm1, %ymm0, %ymm0
4523
+ ; X64-AVX1-NEXT: vptest %ymm0, %ymm0
4527
4524
; X64-AVX1-NEXT: sete %al
4528
- ; X64-AVX1-NEXT: popq %rcx
4525
+ ; X64-AVX1-NEXT: vzeroupper
4529
4526
; X64-AVX1-NEXT: retq
4530
4527
;
4531
4528
; X64-AVX2-LABEL: length127_eq_const:
@@ -4648,12 +4645,20 @@ define i1 @length128_eq(i8* %x, i8* %y) nounwind {
4648
4645
;
4649
4646
; X64-AVX1-LABEL: length128_eq:
4650
4647
; X64-AVX1: # %bb.0:
4651
- ; X64-AVX1-NEXT: pushq %rax
4652
- ; X64-AVX1-NEXT: movl $128, %edx
4653
- ; X64-AVX1-NEXT: callq memcmp
4654
- ; X64-AVX1-NEXT: testl %eax, %eax
4648
+ ; X64-AVX1-NEXT: vmovups (%rdi), %ymm0
4649
+ ; X64-AVX1-NEXT: vmovups 32(%rdi), %ymm1
4650
+ ; X64-AVX1-NEXT: vmovups 64(%rdi), %ymm2
4651
+ ; X64-AVX1-NEXT: vmovups 96(%rdi), %ymm3
4652
+ ; X64-AVX1-NEXT: vxorps 96(%rsi), %ymm3, %ymm3
4653
+ ; X64-AVX1-NEXT: vxorps 64(%rsi), %ymm2, %ymm2
4654
+ ; X64-AVX1-NEXT: vorps %ymm3, %ymm2, %ymm2
4655
+ ; X64-AVX1-NEXT: vxorps 32(%rsi), %ymm1, %ymm1
4656
+ ; X64-AVX1-NEXT: vorps %ymm2, %ymm1, %ymm1
4657
+ ; X64-AVX1-NEXT: vxorps (%rsi), %ymm0, %ymm0
4658
+ ; X64-AVX1-NEXT: vorps %ymm1, %ymm0, %ymm0
4659
+ ; X64-AVX1-NEXT: vptest %ymm0, %ymm0
4655
4660
; X64-AVX1-NEXT: setne %al
4656
- ; X64-AVX1-NEXT: popq %rcx
4661
+ ; X64-AVX1-NEXT: vzeroupper
4657
4662
; X64-AVX1-NEXT: retq
4658
4663
;
4659
4664
; X64-AVX2-LABEL: length128_eq:
@@ -4812,13 +4817,20 @@ define i1 @length128_eq_const(i8* %X) nounwind {
4812
4817
;
4813
4818
; X64-AVX1-LABEL: length128_eq_const:
4814
4819
; X64-AVX1: # %bb.0:
4815
- ; X64-AVX1-NEXT: pushq %rax
4816
- ; X64-AVX1-NEXT: movl $.L.str, %esi
4817
- ; X64-AVX1-NEXT: movl $128, %edx
4818
- ; X64-AVX1-NEXT: callq memcmp
4819
- ; X64-AVX1-NEXT: testl %eax, %eax
4820
+ ; X64-AVX1-NEXT: vmovups (%rdi), %ymm0
4821
+ ; X64-AVX1-NEXT: vmovups 32(%rdi), %ymm1
4822
+ ; X64-AVX1-NEXT: vmovups 64(%rdi), %ymm2
4823
+ ; X64-AVX1-NEXT: vmovups 96(%rdi), %ymm3
4824
+ ; X64-AVX1-NEXT: vxorps {{.*}}(%rip), %ymm3, %ymm3
4825
+ ; X64-AVX1-NEXT: vxorps {{.*}}(%rip), %ymm2, %ymm2
4826
+ ; X64-AVX1-NEXT: vorps %ymm3, %ymm2, %ymm2
4827
+ ; X64-AVX1-NEXT: vxorps {{.*}}(%rip), %ymm1, %ymm1
4828
+ ; X64-AVX1-NEXT: vorps %ymm2, %ymm1, %ymm1
4829
+ ; X64-AVX1-NEXT: vxorps {{.*}}(%rip), %ymm0, %ymm0
4830
+ ; X64-AVX1-NEXT: vorps %ymm1, %ymm0, %ymm0
4831
+ ; X64-AVX1-NEXT: vptest %ymm0, %ymm0
4820
4832
; X64-AVX1-NEXT: sete %al
4821
- ; X64-AVX1-NEXT: popq %rcx
4833
+ ; X64-AVX1-NEXT: vzeroupper
4822
4834
; X64-AVX1-NEXT: retq
4823
4835
;
4824
4836
; X64-AVX2-LABEL: length128_eq_const:
0 commit comments