Skip to content

Commit d84d9de

Browse files
committed
Update test and add comments
1 parent ed89e3b commit d84d9de

File tree

3 files changed

+16
-12
lines changed

3 files changed

+16
-12
lines changed

llvm/include/llvm/CodeGen/TargetLowering.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4375,6 +4375,9 @@ class LLVM_ABI TargetLowering : public TargetLoweringBase {
43754375
Op.getOpcode() == ISD::SPLAT_VECTOR_PARTS;
43764376
}
43774377

4378+
/// Return true if the given select/vselect should be considered canonical and
4379+
/// not be transformed. Currently only used for "vselect (not Cond), N1, N2 ->
4380+
/// vselect Cond, N2, N1".
43784381
virtual bool isTargetCanonicalSelect(SDNode *N) const { return false; }
43794382

43804383
struct DAGCombinerInfo {

llvm/lib/Target/X86/X86ISelLowering.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4976,6 +4976,7 @@ X86TargetLowering::getTargetConstantFromLoad(LoadSDNode *LD) const {
49764976
}
49774977

49784978
bool X86TargetLowering::isTargetCanonicalSelect(SDNode *N) const {
4979+
// Do not fold (vselect not(C), X, 0s) to (vselect C, Os, X)
49794980
SDValue Cond = N->getOperand(0);
49804981
SDValue RHS = N->getOperand(2);
49814982
EVT CondVT = Cond.getValueType();

llvm/test/CodeGen/X86/pr78897.ll

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -225,9 +225,9 @@ define <16 x i8> @produceShuffleVectorForByte(i8 zeroext %0) nounwind {
225225
; X86-AVX512-NEXT: pushl %esi
226226
; X86-AVX512-NEXT: vpbroadcastb {{[0-9]+}}(%esp), %xmm0
227227
; X86-AVX512-NEXT: vmovd %xmm0, %eax
228-
; X86-AVX512-NEXT: kmovd %eax, %k0
229-
; X86-AVX512-NEXT: knotw %k0, %k1
230-
; X86-AVX512-NEXT: vmovdqu8 {{.*#+}} xmm0 {%k1} {z} = [17,17,17,17,17,17,17,17,u,u,u,u,u,u,u,u]
228+
; X86-AVX512-NEXT: kmovd %eax, %k1
229+
; X86-AVX512-NEXT: knotw %k1, %k2
230+
; X86-AVX512-NEXT: vmovdqu8 {{.*#+}} xmm0 {%k2} {z} = [17,17,17,17,17,17,17,17,u,u,u,u,u,u,u,u]
231231
; X86-AVX512-NEXT: vpextrd $1, %xmm0, %eax
232232
; X86-AVX512-NEXT: vmovd %xmm0, %edx
233233
; X86-AVX512-NEXT: movl $286331152, %ecx # imm = 0x11111110
@@ -247,9 +247,9 @@ define <16 x i8> @produceShuffleVectorForByte(i8 zeroext %0) nounwind {
247247
; X86-AVX512-NEXT: addl %edx, %eax
248248
; X86-AVX512-NEXT: vmovd %esi, %xmm1
249249
; X86-AVX512-NEXT: vpinsrd $1, %eax, %xmm1, %xmm1
250-
; X86-AVX512-NEXT: vmovdqu8 %xmm0, %xmm1 {%k1}
251-
; X86-AVX512-NEXT: vpsrlw $4, %xmm1, %xmm0
252-
; X86-AVX512-NEXT: vpunpcklbw {{.*#+}} xmm0 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3],xmm1[4],xmm0[4],xmm1[5],xmm0[5],xmm1[6],xmm0[6],xmm1[7],xmm0[7]
250+
; X86-AVX512-NEXT: vmovdqu8 %xmm1, %xmm0 {%k1}
251+
; X86-AVX512-NEXT: vpsrlw $4, %xmm0, %xmm1
252+
; X86-AVX512-NEXT: vpunpcklbw {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3],xmm0[4],xmm1[4],xmm0[5],xmm1[5],xmm0[6],xmm1[6],xmm0[7],xmm1[7]
253253
; X86-AVX512-NEXT: vpandd {{\.?LCPI[0-9]+_[0-9]+}}{1to4}, %xmm0, %xmm0
254254
; X86-AVX512-NEXT: popl %esi
255255
; X86-AVX512-NEXT: popl %edi
@@ -258,9 +258,9 @@ define <16 x i8> @produceShuffleVectorForByte(i8 zeroext %0) nounwind {
258258
;
259259
; X64-AVX512-LABEL: produceShuffleVectorForByte:
260260
; X64-AVX512: # %bb.0: # %entry
261-
; X64-AVX512-NEXT: kmovd %edi, %k0
262-
; X64-AVX512-NEXT: knotw %k0, %k1
263-
; X64-AVX512-NEXT: vmovdqu8 {{.*#+}} xmm0 {%k1} {z} = [17,17,17,17,17,17,17,17,u,u,u,u,u,u,u,u]
261+
; X64-AVX512-NEXT: kmovd %edi, %k1
262+
; X64-AVX512-NEXT: knotw %k1, %k2
263+
; X64-AVX512-NEXT: vmovdqu8 {{.*#+}} xmm0 {%k2} {z} = [17,17,17,17,17,17,17,17,u,u,u,u,u,u,u,u]
264264
; X64-AVX512-NEXT: vmovq %xmm0, %rax
265265
; X64-AVX512-NEXT: movabsq $1229782938247303440, %rcx # imm = 0x1111111111111110
266266
; X64-AVX512-NEXT: movabsq $76861433640456465, %rdx # imm = 0x111111111111111
@@ -269,9 +269,9 @@ define <16 x i8> @produceShuffleVectorForByte(i8 zeroext %0) nounwind {
269269
; X64-AVX512-NEXT: vmovq %rax, %xmm0
270270
; X64-AVX512-NEXT: imulq %rcx, %rdx
271271
; X64-AVX512-NEXT: vmovq %rdx, %xmm1
272-
; X64-AVX512-NEXT: vmovdqu8 %xmm0, %xmm1 {%k1}
273-
; X64-AVX512-NEXT: vpsrlw $4, %xmm1, %xmm0
274-
; X64-AVX512-NEXT: vpunpcklbw {{.*#+}} xmm0 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3],xmm1[4],xmm0[4],xmm1[5],xmm0[5],xmm1[6],xmm0[6],xmm1[7],xmm0[7]
272+
; X64-AVX512-NEXT: vmovdqu8 %xmm1, %xmm0 {%k1}
273+
; X64-AVX512-NEXT: vpsrlw $4, %xmm0, %xmm1
274+
; X64-AVX512-NEXT: vpunpcklbw {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3],xmm0[4],xmm1[4],xmm0[5],xmm1[5],xmm0[6],xmm1[6],xmm0[7],xmm1[7]
275275
; X64-AVX512-NEXT: vpandd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to4}, %xmm0, %xmm0
276276
; X64-AVX512-NEXT: retq
277277
entry:

0 commit comments

Comments
 (0)