Skip to content

Commit dbff03b

Browse files
committed
[X86] Add test case to recombine LEA from OR.
1 parent 3f10091 commit dbff03b

File tree

1 file changed

+91
-0
lines changed

1 file changed

+91
-0
lines changed

llvm/test/CodeGen/X86/or-lea.ll

Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -333,3 +333,94 @@ entry:
333333
%inc = add i64 %or, 1
334334
ret i64 %inc
335335
}
336+
337+
define i32 @or_sext1(i32 %x) {
338+
; CHECK-LABEL: or_sext1:
339+
; CHECK: # %bb.0:
340+
; CHECK-NEXT: xorl %eax, %eax
341+
; CHECK-NEXT: cmpl $43, %edi
342+
; CHECK-NEXT: setge %al
343+
; CHECK-NEXT: negl %eax
344+
; CHECK-NEXT: orl $1, %eax
345+
; CHECK-NEXT: retq
346+
%cmp = icmp sgt i32 %x, 42
347+
%sext = sext i1 %cmp to i32
348+
%or = or i32 %sext, 1
349+
ret i32 %or
350+
}
351+
352+
define i32 @or_sext2(i32 %x) {
353+
; CHECK-LABEL: or_sext2:
354+
; CHECK: # %bb.0:
355+
; CHECK-NEXT: xorl %eax, %eax
356+
; CHECK-NEXT: cmpl $43, %edi
357+
; CHECK-NEXT: setge %al
358+
; CHECK-NEXT: negl %eax
359+
; CHECK-NEXT: orl $2, %eax
360+
; CHECK-NEXT: retq
361+
%cmp = icmp sgt i32 %x, 42
362+
%sext = sext i1 %cmp to i32
363+
%or = or i32 %sext, 2
364+
ret i32 %or
365+
}
366+
367+
define i32 @or_sext3(i32 %x) {
368+
; CHECK-LABEL: or_sext3:
369+
; CHECK: # %bb.0:
370+
; CHECK-NEXT: xorl %eax, %eax
371+
; CHECK-NEXT: cmpl $43, %edi
372+
; CHECK-NEXT: setge %al
373+
; CHECK-NEXT: negl %eax
374+
; CHECK-NEXT: orl $3, %eax
375+
; CHECK-NEXT: retq
376+
%cmp = icmp sgt i32 %x, 42
377+
%sext = sext i1 %cmp to i32
378+
%or = or i32 %sext, 3
379+
ret i32 %or
380+
}
381+
382+
define i32 @or_sext4(i32 %x) {
383+
; CHECK-LABEL: or_sext4:
384+
; CHECK: # %bb.0:
385+
; CHECK-NEXT: xorl %eax, %eax
386+
; CHECK-NEXT: cmpl $43, %edi
387+
; CHECK-NEXT: setge %al
388+
; CHECK-NEXT: negl %eax
389+
; CHECK-NEXT: orl $4, %eax
390+
; CHECK-NEXT: retq
391+
%cmp = icmp sgt i32 %x, 42
392+
%sext = sext i1 %cmp to i32
393+
%or = or i32 %sext, 4
394+
ret i32 %or
395+
}
396+
397+
define i32 @or_sext7(i32 %x) {
398+
; CHECK-LABEL: or_sext7:
399+
; CHECK: # %bb.0:
400+
; CHECK-NEXT: xorl %eax, %eax
401+
; CHECK-NEXT: cmpl $43, %edi
402+
; CHECK-NEXT: setge %al
403+
; CHECK-NEXT: negl %eax
404+
; CHECK-NEXT: orl $7, %eax
405+
; CHECK-NEXT: retq
406+
%cmp = icmp sgt i32 %x, 42
407+
%sext = sext i1 %cmp to i32
408+
%or = or i32 %sext, 7
409+
ret i32 %or
410+
}
411+
412+
define i32 @or_sext8(i32 %x) {
413+
; CHECK-LABEL: or_sext8:
414+
; CHECK: # %bb.0:
415+
; CHECK-NEXT: xorl %eax, %eax
416+
; CHECK-NEXT: cmpl $43, %edi
417+
; CHECK-NEXT: setge %al
418+
; CHECK-NEXT: negl %eax
419+
; CHECK-NEXT: orl $8, %eax
420+
; CHECK-NEXT: retq
421+
%cmp = icmp sgt i32 %x, 42
422+
%sext = sext i1 %cmp to i32
423+
%or = or i32 %sext, 8
424+
ret i32 %or
425+
}
426+

0 commit comments

Comments
 (0)