Skip to content

Commit 00d3cb8

Browse files
committed
[X86] Add and_cond function with conditional logic for masked store
1 parent 4a8dd49 commit 00d3cb8

File tree

1 file changed

+18
-0
lines changed
  • llvm/test/CodeGen/X86/apx

1 file changed

+18
-0
lines changed

llvm/test/CodeGen/X86/apx/cf.ll

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -230,6 +230,24 @@ entry:
230230
ret void
231231
}
232232

233+
define void @and_cond(i32 %a, i1 %b) {
234+
; CHECK-LABEL: and_cond:
235+
; CHECK: # %bb.0: # %entry
236+
; CHECK-NEXT: testl %edi, %edi
237+
; CHECK-NEXT: setg %al
238+
; CHECK-NEXT: xorl %ecx, %ecx
239+
; CHECK-NEXT: testb %al, %sil
240+
; CHECK-NEXT: cfcmovel %ecx, 0
241+
; CHECK-NEXT: retq
242+
entry:
243+
%0 = icmp sgt i32 %a, 0
244+
%1 = xor i1 %b, true
245+
%3 = and i1 %1, %0
246+
%4 = insertelement <1 x i1> zeroinitializer, i1 %3, i64 0
247+
call void @llvm.masked.store.v1i32.p0(<1 x i32> zeroinitializer, ptr null, i32 1, <1 x i1> %4)
248+
ret void
249+
}
250+
233251
define i64 @redundant_test(i64 %num, ptr %p1, i64 %in) {
234252
; CHECK-LABEL: redundant_test:
235253
; CHECK: # %bb.0:

0 commit comments

Comments
 (0)