[PATCH] D148608: [X86] Create all-one vector(v8i32) for TESTC(X,~X) == TESTC(X,-1) if X is v8f32
Bing Yu via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Tue Apr 18 00:12:02 PDT 2023
yubing created this revision.
Herald added subscribers: pengfei, hiraditya.
Herald added a project: All.
yubing requested review of this revision.
Herald added a project: LLVM.
Herald added a subscriber: llvm-commits.
Repository:
rG LLVM Github Monorepo
https://reviews.llvm.org/D148608
Files:
llvm/lib/Target/X86/X86ISelLowering.cpp
llvm/test/CodeGen/X86/combine-testp-v8f32.ll
Index: llvm/test/CodeGen/X86/combine-testp-v8f32.ll
===================================================================
--- /dev/null
+++ llvm/test/CodeGen/X86/combine-testp-v8f32.ll
@@ -0,0 +1,27 @@
+; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
+; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=avx | FileCheck %s --check-prefix=AVX
+
+define void @test(<8 x i32> %ref.tmp.sroa.0.16.vec.expand.i.i.i.i.i.i.i) #0 personality ptr null {
+; AVX-LABEL: test:
+; AVX: # %bb.0: # %entry
+; AVX-NEXT: vxorps %xmm1, %xmm1, %xmm1
+; AVX-NEXT: vcmptrueps %ymm1, %ymm1, %ymm1
+; AVX-NEXT: vxorps %ymm1, %ymm0, %ymm1
+; AVX-NEXT: vtestps %ymm1, %ymm0
+; AVX-NEXT: vzeroupper
+; AVX-NEXT: retq
+entry:
+ %xor.i.i.i.i.i.i.i.i.i = xor <8 x i32> %ref.tmp.sroa.0.16.vec.expand.i.i.i.i.i.i.i, <i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1>
+ %.cast.i.i.i.i.i.i = bitcast <8 x i32> %xor.i.i.i.i.i.i.i.i.i to <8 x float>
+ %0 = call i32 @llvm.x86.avx.vtestz.ps.256(<8 x float> %.cast.i.i.i.i.i.i, <8 x float> %.cast.i.i.i.i.i.i)
+ %cmp.i.not.i.i.i.i.i.i = icmp eq i32 %0, 0
+ br i1 %cmp.i.not.i.i.i.i.i.i, label %if.end3.i.i.i.i.i.i, label %end
+
+if.end3.i.i.i.i.i.i: ; preds = %entry
+ ret void
+
+end: ; preds = %entry
+ ret void
+}
+
+declare i32 @llvm.x86.avx.vtestz.ps.256(<8 x float>, <8 x float>)
Index: llvm/lib/Target/X86/X86ISelLowering.cpp
===================================================================
--- llvm/lib/Target/X86/X86ISelLowering.cpp
+++ llvm/lib/Target/X86/X86ISelLowering.cpp
@@ -47351,9 +47351,10 @@
if (SDValue NotOp1 = IsNOT(Op1, DAG)) {
if (peekThroughBitcasts(NotOp1) == peekThroughBitcasts(Op0)) {
SDLoc DL(EFLAGS);
- return DAG.getNode(EFLAGS.getOpcode(), DL, VT,
- DAG.getBitcast(OpVT, NotOp1),
- DAG.getAllOnesConstant(DL, OpVT));
+ return DAG.getNode(
+ EFLAGS.getOpcode(), DL, VT, DAG.getBitcast(OpVT, NotOp1),
+ DAG.getBitcast(OpVT,
+ DAG.getAllOnesConstant(DL, NotOp1.getValueType())));
}
}
}
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D148608.514535.patch
Type: text/x-patch
Size: 2186 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20230418/4b0b9ac5/attachment.bin>
More information about the llvm-commits
mailing list