@@ -4068,10 +4068,8 @@ define i32 @bextr32_c0(i32 %val, i32 %numskipbits, i32 %numlowbits) nounwind {
4068
4068
; X86-BMI2-NEXT: movzbl {{[0-9]+}}(%esp), %ebx
4069
4069
; X86-BMI2-NEXT: movzbl {{[0-9]+}}(%esp), %eax
4070
4070
; X86-BMI2-NEXT: shrxl %eax, {{[0-9]+}}(%esp), %esi
4071
- ; X86-BMI2-NEXT: movl %ebx, %eax
4072
- ; X86-BMI2-NEXT: negb %al
4073
- ; X86-BMI2-NEXT: movl $-1, %ecx
4074
- ; X86-BMI2-NEXT: shrxl %eax, %ecx, %eax
4071
+ ; X86-BMI2-NEXT: movl $-1, %eax
4072
+ ; X86-BMI2-NEXT: bzhil %ebx, %eax, %eax
4075
4073
; X86-BMI2-NEXT: movl %eax, (%esp)
4076
4074
; X86-BMI2-NEXT: calll use32@PLT
4077
4075
; X86-BMI2-NEXT: bzhil %ebx, %esi, %eax
@@ -4131,10 +4129,8 @@ define i32 @bextr32_c0(i32 %val, i32 %numskipbits, i32 %numlowbits) nounwind {
4131
4129
; X64-BMI2-NEXT: pushq %rax
4132
4130
; X64-BMI2-NEXT: movl %edx, %ebx
4133
4131
; X64-BMI2-NEXT: shrxl %esi, %edi, %ebp
4134
- ; X64-BMI2-NEXT: movl %ebx, %eax
4135
- ; X64-BMI2-NEXT: negb %al
4136
- ; X64-BMI2-NEXT: movl $-1, %ecx
4137
- ; X64-BMI2-NEXT: shrxl %eax, %ecx, %edi
4132
+ ; X64-BMI2-NEXT: movl $-1, %eax
4133
+ ; X64-BMI2-NEXT: bzhil %edx, %eax, %edi
4138
4134
; X64-BMI2-NEXT: callq use32@PLT
4139
4135
; X64-BMI2-NEXT: bzhil %ebx, %ebp, %eax
4140
4136
; X64-BMI2-NEXT: addq $8, %rsp
@@ -4202,10 +4198,8 @@ define i32 @bextr32_c1_indexzext(i32 %val, i8 %numskipbits, i8 %numlowbits) noun
4202
4198
; X86-BMI2-NEXT: movzbl {{[0-9]+}}(%esp), %ebx
4203
4199
; X86-BMI2-NEXT: movzbl {{[0-9]+}}(%esp), %eax
4204
4200
; X86-BMI2-NEXT: shrxl %eax, {{[0-9]+}}(%esp), %esi
4205
- ; X86-BMI2-NEXT: movl %ebx, %eax
4206
- ; X86-BMI2-NEXT: negb %al
4207
- ; X86-BMI2-NEXT: movl $-1, %ecx
4208
- ; X86-BMI2-NEXT: shrxl %eax, %ecx, %eax
4201
+ ; X86-BMI2-NEXT: movl $-1, %eax
4202
+ ; X86-BMI2-NEXT: bzhil %ebx, %eax, %eax
4209
4203
; X86-BMI2-NEXT: movl %eax, (%esp)
4210
4204
; X86-BMI2-NEXT: calll use32@PLT
4211
4205
; X86-BMI2-NEXT: bzhil %ebx, %esi, %eax
@@ -4265,10 +4259,8 @@ define i32 @bextr32_c1_indexzext(i32 %val, i8 %numskipbits, i8 %numlowbits) noun
4265
4259
; X64-BMI2-NEXT: pushq %rax
4266
4260
; X64-BMI2-NEXT: movl %edx, %ebx
4267
4261
; X64-BMI2-NEXT: shrxl %esi, %edi, %ebp
4268
- ; X64-BMI2-NEXT: movl %ebx, %eax
4269
- ; X64-BMI2-NEXT: negb %al
4270
- ; X64-BMI2-NEXT: movl $-1, %ecx
4271
- ; X64-BMI2-NEXT: shrxl %eax, %ecx, %edi
4262
+ ; X64-BMI2-NEXT: movl $-1, %eax
4263
+ ; X64-BMI2-NEXT: bzhil %edx, %eax, %edi
4272
4264
; X64-BMI2-NEXT: callq use32@PLT
4273
4265
; X64-BMI2-NEXT: bzhil %ebx, %ebp, %eax
4274
4266
; X64-BMI2-NEXT: addq $8, %rsp
@@ -4341,10 +4333,8 @@ define i32 @bextr32_c2_load(ptr %w, i32 %numskipbits, i32 %numlowbits) nounwind
4341
4333
; X86-BMI2-NEXT: movl {{[0-9]+}}(%esp), %eax
4342
4334
; X86-BMI2-NEXT: movzbl {{[0-9]+}}(%esp), %ecx
4343
4335
; X86-BMI2-NEXT: shrxl %ecx, (%eax), %esi
4344
- ; X86-BMI2-NEXT: movl %ebx, %eax
4345
- ; X86-BMI2-NEXT: negb %al
4346
- ; X86-BMI2-NEXT: movl $-1, %ecx
4347
- ; X86-BMI2-NEXT: shrxl %eax, %ecx, %eax
4336
+ ; X86-BMI2-NEXT: movl $-1, %eax
4337
+ ; X86-BMI2-NEXT: bzhil %ebx, %eax, %eax
4348
4338
; X86-BMI2-NEXT: movl %eax, (%esp)
4349
4339
; X86-BMI2-NEXT: calll use32@PLT
4350
4340
; X86-BMI2-NEXT: bzhil %ebx, %esi, %eax
@@ -4404,10 +4394,8 @@ define i32 @bextr32_c2_load(ptr %w, i32 %numskipbits, i32 %numlowbits) nounwind
4404
4394
; X64-BMI2-NEXT: pushq %rax
4405
4395
; X64-BMI2-NEXT: movl %edx, %ebx
4406
4396
; X64-BMI2-NEXT: shrxl %esi, (%rdi), %ebp
4407
- ; X64-BMI2-NEXT: movl %ebx, %eax
4408
- ; X64-BMI2-NEXT: negb %al
4409
- ; X64-BMI2-NEXT: movl $-1, %ecx
4410
- ; X64-BMI2-NEXT: shrxl %eax, %ecx, %edi
4397
+ ; X64-BMI2-NEXT: movl $-1, %eax
4398
+ ; X64-BMI2-NEXT: bzhil %edx, %eax, %edi
4411
4399
; X64-BMI2-NEXT: callq use32@PLT
4412
4400
; X64-BMI2-NEXT: bzhil %ebx, %ebp, %eax
4413
4401
; X64-BMI2-NEXT: addq $8, %rsp
@@ -4479,10 +4467,8 @@ define i32 @bextr32_c3_load_indexzext(ptr %w, i8 %numskipbits, i8 %numlowbits) n
4479
4467
; X86-BMI2-NEXT: movl {{[0-9]+}}(%esp), %eax
4480
4468
; X86-BMI2-NEXT: movzbl {{[0-9]+}}(%esp), %ecx
4481
4469
; X86-BMI2-NEXT: shrxl %ecx, (%eax), %esi
4482
- ; X86-BMI2-NEXT: movl %ebx, %eax
4483
- ; X86-BMI2-NEXT: negb %al
4484
- ; X86-BMI2-NEXT: movl $-1, %ecx
4485
- ; X86-BMI2-NEXT: shrxl %eax, %ecx, %eax
4470
+ ; X86-BMI2-NEXT: movl $-1, %eax
4471
+ ; X86-BMI2-NEXT: bzhil %ebx, %eax, %eax
4486
4472
; X86-BMI2-NEXT: movl %eax, (%esp)
4487
4473
; X86-BMI2-NEXT: calll use32@PLT
4488
4474
; X86-BMI2-NEXT: bzhil %ebx, %esi, %eax
@@ -4542,10 +4528,8 @@ define i32 @bextr32_c3_load_indexzext(ptr %w, i8 %numskipbits, i8 %numlowbits) n
4542
4528
; X64-BMI2-NEXT: pushq %rax
4543
4529
; X64-BMI2-NEXT: movl %edx, %ebx
4544
4530
; X64-BMI2-NEXT: shrxl %esi, (%rdi), %ebp
4545
- ; X64-BMI2-NEXT: movl %ebx, %eax
4546
- ; X64-BMI2-NEXT: negb %al
4547
- ; X64-BMI2-NEXT: movl $-1, %ecx
4548
- ; X64-BMI2-NEXT: shrxl %eax, %ecx, %edi
4531
+ ; X64-BMI2-NEXT: movl $-1, %eax
4532
+ ; X64-BMI2-NEXT: bzhil %edx, %eax, %edi
4549
4533
; X64-BMI2-NEXT: callq use32@PLT
4550
4534
; X64-BMI2-NEXT: bzhil %ebx, %ebp, %eax
4551
4535
; X64-BMI2-NEXT: addq $8, %rsp
@@ -4616,10 +4600,8 @@ define i32 @bextr32_c4_commutative(i32 %val, i32 %numskipbits, i32 %numlowbits)
4616
4600
; X86-BMI2-NEXT: movzbl {{[0-9]+}}(%esp), %ebx
4617
4601
; X86-BMI2-NEXT: movzbl {{[0-9]+}}(%esp), %eax
4618
4602
; X86-BMI2-NEXT: shrxl %eax, {{[0-9]+}}(%esp), %esi
4619
- ; X86-BMI2-NEXT: movl %ebx, %eax
4620
- ; X86-BMI2-NEXT: negb %al
4621
- ; X86-BMI2-NEXT: movl $-1, %ecx
4622
- ; X86-BMI2-NEXT: shrxl %eax, %ecx, %eax
4603
+ ; X86-BMI2-NEXT: movl $-1, %eax
4604
+ ; X86-BMI2-NEXT: bzhil %ebx, %eax, %eax
4623
4605
; X86-BMI2-NEXT: movl %eax, (%esp)
4624
4606
; X86-BMI2-NEXT: calll use32@PLT
4625
4607
; X86-BMI2-NEXT: bzhil %ebx, %esi, %eax
@@ -4679,10 +4661,8 @@ define i32 @bextr32_c4_commutative(i32 %val, i32 %numskipbits, i32 %numlowbits)
4679
4661
; X64-BMI2-NEXT: pushq %rax
4680
4662
; X64-BMI2-NEXT: movl %edx, %ebx
4681
4663
; X64-BMI2-NEXT: shrxl %esi, %edi, %ebp
4682
- ; X64-BMI2-NEXT: movl %ebx, %eax
4683
- ; X64-BMI2-NEXT: negb %al
4684
- ; X64-BMI2-NEXT: movl $-1, %ecx
4685
- ; X64-BMI2-NEXT: shrxl %eax, %ecx, %edi
4664
+ ; X64-BMI2-NEXT: movl $-1, %eax
4665
+ ; X64-BMI2-NEXT: bzhil %edx, %eax, %edi
4686
4666
; X64-BMI2-NEXT: callq use32@PLT
4687
4667
; X64-BMI2-NEXT: bzhil %ebx, %ebp, %eax
4688
4668
; X64-BMI2-NEXT: addq $8, %rsp
@@ -4761,10 +4741,8 @@ define i32 @bextr32_c5_skipextrauses(i32 %val, i32 %numskipbits, i32 %numlowbits
4761
4741
; X86-BMI2-NEXT: movzbl {{[0-9]+}}(%esp), %ebx
4762
4742
; X86-BMI2-NEXT: movl {{[0-9]+}}(%esp), %edi
4763
4743
; X86-BMI2-NEXT: shrxl %edi, {{[0-9]+}}(%esp), %esi
4764
- ; X86-BMI2-NEXT: movl %ebx, %eax
4765
- ; X86-BMI2-NEXT: negb %al
4766
- ; X86-BMI2-NEXT: movl $-1, %ecx
4767
- ; X86-BMI2-NEXT: shrxl %eax, %ecx, %eax
4744
+ ; X86-BMI2-NEXT: movl $-1, %eax
4745
+ ; X86-BMI2-NEXT: bzhil %ebx, %eax, %eax
4768
4746
; X86-BMI2-NEXT: movl %eax, (%esp)
4769
4747
; X86-BMI2-NEXT: calll use32@PLT
4770
4748
; X86-BMI2-NEXT: bzhil %ebx, %esi, %esi
@@ -4833,10 +4811,8 @@ define i32 @bextr32_c5_skipextrauses(i32 %val, i32 %numskipbits, i32 %numlowbits
4833
4811
; X64-BMI2-NEXT: movl %edx, %ebx
4834
4812
; X64-BMI2-NEXT: movl %esi, %ebp
4835
4813
; X64-BMI2-NEXT: shrxl %esi, %edi, %r14d
4836
- ; X64-BMI2-NEXT: movl %ebx, %eax
4837
- ; X64-BMI2-NEXT: negb %al
4838
- ; X64-BMI2-NEXT: movl $-1, %ecx
4839
- ; X64-BMI2-NEXT: shrxl %eax, %ecx, %edi
4814
+ ; X64-BMI2-NEXT: movl $-1, %eax
4815
+ ; X64-BMI2-NEXT: bzhil %edx, %eax, %edi
4840
4816
; X64-BMI2-NEXT: callq use32@PLT
4841
4817
; X64-BMI2-NEXT: bzhil %ebx, %r14d, %ebx
4842
4818
; X64-BMI2-NEXT: movl %ebp, %edi
@@ -5045,10 +5021,8 @@ define i64 @bextr64_c0(i64 %val, i64 %numskipbits, i64 %numlowbits) nounwind {
5045
5021
; X64-BMI2-NEXT: pushq %rax
5046
5022
; X64-BMI2-NEXT: movq %rdx, %rbx
5047
5023
; X64-BMI2-NEXT: shrxq %rsi, %rdi, %r14
5048
- ; X64-BMI2-NEXT: movl %ebx, %eax
5049
- ; X64-BMI2-NEXT: negb %al
5050
- ; X64-BMI2-NEXT: movq $-1, %rcx
5051
- ; X64-BMI2-NEXT: shrxq %rax, %rcx, %rdi
5024
+ ; X64-BMI2-NEXT: movq $-1, %rax
5025
+ ; X64-BMI2-NEXT: bzhiq %rdx, %rax, %rdi
5052
5026
; X64-BMI2-NEXT: callq use64@PLT
5053
5027
; X64-BMI2-NEXT: bzhiq %rbx, %r14, %rax
5054
5028
; X64-BMI2-NEXT: addq $8, %rsp
@@ -5252,10 +5226,8 @@ define i64 @bextr64_c1_indexzext(i64 %val, i8 %numskipbits, i8 %numlowbits) noun
5252
5226
; X64-BMI2-NEXT: movl %edx, %ebx
5253
5227
; X64-BMI2-NEXT: # kill: def $esi killed $esi def $rsi
5254
5228
; X64-BMI2-NEXT: shrxq %rsi, %rdi, %r14
5255
- ; X64-BMI2-NEXT: movl %ebx, %eax
5256
- ; X64-BMI2-NEXT: negb %al
5257
- ; X64-BMI2-NEXT: movq $-1, %rcx
5258
- ; X64-BMI2-NEXT: shrxq %rax, %rcx, %rdi
5229
+ ; X64-BMI2-NEXT: movq $-1, %rax
5230
+ ; X64-BMI2-NEXT: bzhiq %rbx, %rax, %rdi
5259
5231
; X64-BMI2-NEXT: callq use64@PLT
5260
5232
; X64-BMI2-NEXT: bzhiq %rbx, %r14, %rax
5261
5233
; X64-BMI2-NEXT: addq $8, %rsp
@@ -5463,10 +5435,8 @@ define i64 @bextr64_c2_load(ptr %w, i64 %numskipbits, i64 %numlowbits) nounwind
5463
5435
; X64-BMI2-NEXT: pushq %rax
5464
5436
; X64-BMI2-NEXT: movq %rdx, %rbx
5465
5437
; X64-BMI2-NEXT: shrxq %rsi, (%rdi), %r14
5466
- ; X64-BMI2-NEXT: movl %ebx, %eax
5467
- ; X64-BMI2-NEXT: negb %al
5468
- ; X64-BMI2-NEXT: movq $-1, %rcx
5469
- ; X64-BMI2-NEXT: shrxq %rax, %rcx, %rdi
5438
+ ; X64-BMI2-NEXT: movq $-1, %rax
5439
+ ; X64-BMI2-NEXT: bzhiq %rdx, %rax, %rdi
5470
5440
; X64-BMI2-NEXT: callq use64@PLT
5471
5441
; X64-BMI2-NEXT: bzhiq %rbx, %r14, %rax
5472
5442
; X64-BMI2-NEXT: addq $8, %rsp
@@ -5674,10 +5644,8 @@ define i64 @bextr64_c3_load_indexzext(ptr %w, i8 %numskipbits, i8 %numlowbits) n
5674
5644
; X64-BMI2-NEXT: movl %edx, %ebx
5675
5645
; X64-BMI2-NEXT: # kill: def $esi killed $esi def $rsi
5676
5646
; X64-BMI2-NEXT: shrxq %rsi, (%rdi), %r14
5677
- ; X64-BMI2-NEXT: movl %ebx, %eax
5678
- ; X64-BMI2-NEXT: negb %al
5679
- ; X64-BMI2-NEXT: movq $-1, %rcx
5680
- ; X64-BMI2-NEXT: shrxq %rax, %rcx, %rdi
5647
+ ; X64-BMI2-NEXT: movq $-1, %rax
5648
+ ; X64-BMI2-NEXT: bzhiq %rbx, %rax, %rdi
5681
5649
; X64-BMI2-NEXT: callq use64@PLT
5682
5650
; X64-BMI2-NEXT: bzhiq %rbx, %r14, %rax
5683
5651
; X64-BMI2-NEXT: addq $8, %rsp
@@ -5883,10 +5851,8 @@ define i64 @bextr64_c4_commutative(i64 %val, i64 %numskipbits, i64 %numlowbits)
5883
5851
; X64-BMI2-NEXT: pushq %rax
5884
5852
; X64-BMI2-NEXT: movq %rdx, %rbx
5885
5853
; X64-BMI2-NEXT: shrxq %rsi, %rdi, %r14
5886
- ; X64-BMI2-NEXT: movl %ebx, %eax
5887
- ; X64-BMI2-NEXT: negb %al
5888
- ; X64-BMI2-NEXT: movq $-1, %rcx
5889
- ; X64-BMI2-NEXT: shrxq %rax, %rcx, %rdi
5854
+ ; X64-BMI2-NEXT: movq $-1, %rax
5855
+ ; X64-BMI2-NEXT: bzhiq %rdx, %rax, %rdi
5890
5856
; X64-BMI2-NEXT: callq use64@PLT
5891
5857
; X64-BMI2-NEXT: bzhiq %rbx, %r14, %rax
5892
5858
; X64-BMI2-NEXT: addq $8, %rsp
@@ -6109,10 +6075,8 @@ define i64 @bextr64_c5_skipextrauses(i64 %val, i64 %numskipbits, i64 %numlowbits
6109
6075
; X64-BMI2-NEXT: movq %rdx, %rbx
6110
6076
; X64-BMI2-NEXT: movq %rsi, %r14
6111
6077
; X64-BMI2-NEXT: shrxq %rsi, %rdi, %r15
6112
- ; X64-BMI2-NEXT: movl %ebx, %eax
6113
- ; X64-BMI2-NEXT: negb %al
6114
- ; X64-BMI2-NEXT: movq $-1, %rcx
6115
- ; X64-BMI2-NEXT: shrxq %rax, %rcx, %rdi
6078
+ ; X64-BMI2-NEXT: movq $-1, %rax
6079
+ ; X64-BMI2-NEXT: bzhiq %rdx, %rax, %rdi
6116
6080
; X64-BMI2-NEXT: callq use64@PLT
6117
6081
; X64-BMI2-NEXT: bzhiq %rbx, %r15, %rbx
6118
6082
; X64-BMI2-NEXT: movq %r14, %rdi
0 commit comments