Skip to content

Commit 39d5340

Browse files
Narrowing vectors isn't profitable | Update an extraordinary number of tests
1 parent c685bc5 commit 39d5340

File tree

6 files changed

+32
-32
lines changed

6 files changed

+32
-32
lines changed

llvm/lib/Target/X86/X86ISelLowering.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34447,6 +34447,8 @@ bool X86TargetLowering::isFMAFasterThanFMulAndFAdd(const MachineFunction &MF,
3444734447

3444834448
bool X86TargetLowering::isNarrowingProfitable(EVT SrcVT, EVT DestVT) const {
3444934449
// i16 instructions are longer (0x66 prefix) and potentially slower.
34450+
if (SrcVT.isVector() || DestVT.isVector())
34451+
return false;
3445034452
return !(SrcVT == MVT::i32 && DestVT == MVT::i16);
3445134453
}
3445234454

llvm/test/CodeGen/X86/avx512-mask-op.ll

Lines changed: 16 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1952,15 +1952,15 @@ declare void @f2(i32) #1
19521952
define void @store_i16_i1(i16 %x, ptr%y) {
19531953
; CHECK-LABEL: store_i16_i1:
19541954
; CHECK: ## %bb.0:
1955-
; CHECK-NEXT: andl $1, %edi
1955+
; CHECK-NEXT: andb $1, %dil
19561956
; CHECK-NEXT: movb %dil, (%rsi)
19571957
; CHECK-NEXT: retq
19581958
;
19591959
; X86-LABEL: store_i16_i1:
19601960
; X86: ## %bb.0:
19611961
; X86-NEXT: movl {{[0-9]+}}(%esp), %eax
1962-
; X86-NEXT: movzwl {{[0-9]+}}(%esp), %ecx
1963-
; X86-NEXT: andl $1, %ecx
1962+
; X86-NEXT: movzbl {{[0-9]+}}(%esp), %ecx
1963+
; X86-NEXT: andb $1, %cl
19641964
; X86-NEXT: movb %cl, (%eax)
19651965
; X86-NEXT: retl
19661966
%c = trunc i16 %x to i1
@@ -1971,7 +1971,7 @@ define void @store_i16_i1(i16 %x, ptr%y) {
19711971
define void @store_i8_i1(i8 %x, ptr%y) {
19721972
; CHECK-LABEL: store_i8_i1:
19731973
; CHECK: ## %bb.0:
1974-
; CHECK-NEXT: andl $1, %edi
1974+
; CHECK-NEXT: andb $1, %dil
19751975
; CHECK-NEXT: movb %dil, (%rsi)
19761976
; CHECK-NEXT: retq
19771977
;
@@ -3936,7 +3936,7 @@ define i8 @test_v8i1_add(i8 %x, i8 %y) {
39363936
; CHECK-LABEL: test_v8i1_add:
39373937
; CHECK: ## %bb.0:
39383938
; CHECK-NEXT: movl %edi, %eax
3939-
; CHECK-NEXT: xorl %esi, %eax
3939+
; CHECK-NEXT: xorb %sil, %al
39403940
; CHECK-NEXT: ## kill: def $al killed $al killed $eax
39413941
; CHECK-NEXT: retq
39423942
;
@@ -3956,7 +3956,7 @@ define i8 @test_v8i1_sub(i8 %x, i8 %y) {
39563956
; CHECK-LABEL: test_v8i1_sub:
39573957
; CHECK: ## %bb.0:
39583958
; CHECK-NEXT: movl %edi, %eax
3959-
; CHECK-NEXT: xorl %esi, %eax
3959+
; CHECK-NEXT: xorb %sil, %al
39603960
; CHECK-NEXT: ## kill: def $al killed $al killed $eax
39613961
; CHECK-NEXT: retq
39623962
;
@@ -3976,7 +3976,7 @@ define i8 @test_v8i1_mul(i8 %x, i8 %y) {
39763976
; CHECK-LABEL: test_v8i1_mul:
39773977
; CHECK: ## %bb.0:
39783978
; CHECK-NEXT: movl %edi, %eax
3979-
; CHECK-NEXT: andl %esi, %eax
3979+
; CHECK-NEXT: andb %sil, %al
39803980
; CHECK-NEXT: ## kill: def $al killed $al killed $eax
39813981
; CHECK-NEXT: retq
39823982
;
@@ -5128,7 +5128,7 @@ define i1 @test_v1i1_add(i1 %x, i1 %y) {
51285128
; CHECK-LABEL: test_v1i1_add:
51295129
; CHECK: ## %bb.0:
51305130
; CHECK-NEXT: movl %edi, %eax
5131-
; CHECK-NEXT: xorl %esi, %eax
5131+
; CHECK-NEXT: xorb %sil, %al
51325132
; CHECK-NEXT: ## kill: def $al killed $al killed $eax
51335133
; CHECK-NEXT: retq
51345134
;
@@ -5148,7 +5148,7 @@ define i1 @test_v1i1_sub(i1 %x, i1 %y) {
51485148
; CHECK-LABEL: test_v1i1_sub:
51495149
; CHECK: ## %bb.0:
51505150
; CHECK-NEXT: movl %edi, %eax
5151-
; CHECK-NEXT: xorl %esi, %eax
5151+
; CHECK-NEXT: xorb %sil, %al
51525152
; CHECK-NEXT: ## kill: def $al killed $al killed $eax
51535153
; CHECK-NEXT: retq
51545154
;
@@ -5168,7 +5168,7 @@ define i1 @test_v1i1_mul(i1 %x, i1 %y) {
51685168
; CHECK-LABEL: test_v1i1_mul:
51695169
; CHECK: ## %bb.0:
51705170
; CHECK-NEXT: movl %edi, %eax
5171-
; CHECK-NEXT: andl %esi, %eax
5171+
; CHECK-NEXT: andb %sil, %al
51725172
; CHECK-NEXT: ## kill: def $al killed $al killed $eax
51735173
; CHECK-NEXT: retq
51745174
;
@@ -5188,15 +5188,14 @@ define <1 x i1> @uadd_sat_v1i1(<1 x i1> %x, <1 x i1> %y) nounwind {
51885188
; CHECK-LABEL: uadd_sat_v1i1:
51895189
; CHECK: ## %bb.0:
51905190
; CHECK-NEXT: movl %edi, %eax
5191-
; CHECK-NEXT: orl %esi, %eax
5191+
; CHECK-NEXT: orb %sil, %al
51925192
; CHECK-NEXT: ## kill: def $al killed $al killed $eax
51935193
; CHECK-NEXT: retq
51945194
;
51955195
; X86-LABEL: uadd_sat_v1i1:
51965196
; X86: ## %bb.0:
5197-
; X86-NEXT: movl {{[0-9]+}}(%esp), %eax
5198-
; X86-NEXT: orl {{[0-9]+}}(%esp), %eax
5199-
; X86-NEXT: ## kill: def $al killed $al killed $eax
5197+
; X86-NEXT: movzbl {{[0-9]+}}(%esp), %eax
5198+
; X86-NEXT: orb {{[0-9]+}}(%esp), %al
52005199
; X86-NEXT: retl
52015200
%z = call <1 x i1> @llvm.uadd.sat.v1i1(<1 x i1> %x, <1 x i1> %y)
52025201
ret <1 x i1> %z
@@ -5257,15 +5256,14 @@ define <1 x i1> @sadd_sat_v1i1(<1 x i1> %x, <1 x i1> %y) nounwind {
52575256
; CHECK-LABEL: sadd_sat_v1i1:
52585257
; CHECK: ## %bb.0:
52595258
; CHECK-NEXT: movl %edi, %eax
5260-
; CHECK-NEXT: orl %esi, %eax
5259+
; CHECK-NEXT: orb %sil, %al
52615260
; CHECK-NEXT: ## kill: def $al killed $al killed $eax
52625261
; CHECK-NEXT: retq
52635262
;
52645263
; X86-LABEL: sadd_sat_v1i1:
52655264
; X86: ## %bb.0:
5266-
; X86-NEXT: movl {{[0-9]+}}(%esp), %eax
5267-
; X86-NEXT: orl {{[0-9]+}}(%esp), %eax
5268-
; X86-NEXT: ## kill: def $al killed $al killed $eax
5265+
; X86-NEXT: movzbl {{[0-9]+}}(%esp), %eax
5266+
; X86-NEXT: orb {{[0-9]+}}(%esp), %al
52695267
; X86-NEXT: retl
52705268
%z = call <1 x i1> @llvm.sadd.sat.v1i1(<1 x i1> %x, <1 x i1> %y)
52715269
ret <1 x i1> %z

llvm/test/CodeGen/X86/avx512-select.ll

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -137,8 +137,8 @@ define i8 @select05(i8 %a.0, i8 %m) {
137137
;
138138
; X64-LABEL: select05:
139139
; X64: # %bb.0:
140-
; X64-NEXT: movl %edi, %eax
141-
; X64-NEXT: orl %esi, %eax
140+
; X64-NEXT: movl %esi, %eax
141+
; X64-NEXT: orb %dil, %al
142142
; X64-NEXT: # kill: def $al killed $al killed $eax
143143
; X64-NEXT: retq
144144
%mask = bitcast i8 %m to <8 x i1>
@@ -212,8 +212,8 @@ define i8 @select06(i8 %a.0, i8 %m) {
212212
;
213213
; X64-LABEL: select06:
214214
; X64: # %bb.0:
215-
; X64-NEXT: movl %edi, %eax
216-
; X64-NEXT: andl %esi, %eax
215+
; X64-NEXT: movl %esi, %eax
216+
; X64-NEXT: andb %dil, %al
217217
; X64-NEXT: # kill: def $al killed $al killed $eax
218218
; X64-NEXT: retq
219219
%mask = bitcast i8 %m to <8 x i1>

llvm/test/CodeGen/X86/bitcast-and-setcc-256.ll

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -873,7 +873,7 @@ define i8 @v4i32_concat_undef(<4 x i32> %vec) {
873873
; SSE2-SSSE3-NEXT: pxor %xmm1, %xmm1
874874
; SSE2-SSSE3-NEXT: pcmpeqd %xmm0, %xmm1
875875
; SSE2-SSSE3-NEXT: movmskps %xmm1, %eax
876-
; SSE2-SSSE3-NEXT: xorl $15, %eax
876+
; SSE2-SSSE3-NEXT: xorb $15, %al
877877
; SSE2-SSSE3-NEXT: # kill: def $al killed $al killed $eax
878878
; SSE2-SSSE3-NEXT: retq
879879
;
@@ -882,7 +882,7 @@ define i8 @v4i32_concat_undef(<4 x i32> %vec) {
882882
; AVX12-NEXT: vpxor %xmm1, %xmm1, %xmm1
883883
; AVX12-NEXT: vpcmpeqd %xmm1, %xmm0, %xmm0
884884
; AVX12-NEXT: vmovmskps %xmm0, %eax
885-
; AVX12-NEXT: xorl $15, %eax
885+
; AVX12-NEXT: xorb $15, %al
886886
; AVX12-NEXT: # kill: def $al killed $al killed $eax
887887
; AVX12-NEXT: retq
888888
;

llvm/test/CodeGen/X86/fold-select.ll

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@ define <8 x float> @select_and_v8i1(<8 x i1> %a, <8 x i1> %b, <8 x i1> %c, <8 x
1919
define <8 x float> @select_and_v8i1_2(i8 %m1, i8 %m2, i8 %m3, <8 x float> %d) {
2020
; CHECK-LABEL: select_and_v8i1_2:
2121
; CHECK: # %bb.0:
22-
; CHECK-NEXT: orl %esi, %edi
23-
; CHECK-NEXT: andl %edx, %edi
22+
; CHECK-NEXT: orb %sil, %dil
23+
; CHECK-NEXT: andb %dl, %dil
2424
; CHECK-NEXT: kmovd %edi, %k1
2525
; CHECK-NEXT: vbroadcastss {{.*#+}} ymm1 = [1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0]
2626
; CHECK-NEXT: vmovaps %ymm0, %ymm1 {%k1}

llvm/test/CodeGen/X86/srem-seteq-vec-nonsplat.ll

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2476,14 +2476,14 @@ define <32 x i1> @pr51133(<32 x i8> %x, <32 x i8> %y) {
24762476
; CHECK-AVX512VL-NEXT: vpackuswb %ymm3, %ymm2, %ymm2
24772477
; CHECK-AVX512VL-NEXT: vpminub {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm2, %ymm3
24782478
; CHECK-AVX512VL-NEXT: vpcmpeqb %ymm3, %ymm2, %ymm2
2479-
; CHECK-AVX512VL-NEXT: vpandd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %ymm0, %ymm0
2480-
; CHECK-AVX512VL-NEXT: vpxor %xmm3, %xmm3, %xmm3
2481-
; CHECK-AVX512VL-NEXT: vpcmpgtb %ymm3, %ymm0, %ymm0
2482-
; CHECK-AVX512VL-NEXT: vpcmpeqb %ymm3, %ymm1, %ymm1
24832479
; CHECK-AVX512VL-NEXT: vmovdqa {{.*#+}} ymm3 = [255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,255,255,255,255,255,255,255,255,255,255]
24842480
; CHECK-AVX512VL-NEXT: vpandn %ymm3, %ymm2, %ymm2
2485-
; CHECK-AVX512VL-NEXT: vpandn %ymm0, %ymm3, %ymm0
2486-
; CHECK-AVX512VL-NEXT: vpternlogq $50, %ymm2, %ymm1, %ymm0
2481+
; CHECK-AVX512VL-NEXT: vpandd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %ymm0, %ymm0
2482+
; CHECK-AVX512VL-NEXT: vpxor %xmm4, %xmm4, %xmm4
2483+
; CHECK-AVX512VL-NEXT: vpcmpgtb %ymm4, %ymm0, %ymm0
2484+
; CHECK-AVX512VL-NEXT: vpandn %ymm0, %ymm3, %ymm3
2485+
; CHECK-AVX512VL-NEXT: vpcmpeqb %ymm4, %ymm1, %ymm0
2486+
; CHECK-AVX512VL-NEXT: vpternlogq $14, %ymm3, %ymm2, %ymm0
24872487
; CHECK-AVX512VL-NEXT: retq
24882488
%rem = srem <32 x i8> %x, <i8 13, i8 5, i8 19, i8 34, i8 2, i8 8, i8 2, i8 88, i8 62, i8 62, i8 5, i8 7, i8 97, i8 2, i8 3, i8 60, i8 3, i8 87, i8 7, i8 6, i8 84, i8 -128, i8 127, i8 56, i8 114, i8 1, i8 50, i8 7, i8 2, i8 8, i8 97, i8 117>
24892489
%cmp = icmp ne <32 x i8> %rem, zeroinitializer

0 commit comments

Comments
 (0)