The LIT test cases were migrated with the script provided by Nikita Popov. No manual changes were made. Committed without review since no functional changes, after consultation with uweigand.
43 lines
1.1 KiB
LLVM
43 lines
1.1 KiB
LLVM
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
|
|
; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z14 | FileCheck %s
|
|
;
|
|
; CGP will duplicate and sink the 'icmp' to the users. Test that it does the
|
|
; same for the 'and' so that tmll:s result and the nilf is eliminated.
|
|
|
|
define void @fun(i32 %Arg) {
|
|
; CHECK-LABEL: fun:
|
|
; CHECK: # %bb.0: # %entry
|
|
; CHECK-NEXT: ahi %r2, 1
|
|
; CHECK-NEXT: lhi %r0, 0
|
|
; CHECK-NEXT: cijlh %r0, 0, .LBB0_2
|
|
; CHECK-NEXT: # %bb.1: # %bb1
|
|
; CHECK-NEXT: tmll %r2, 16
|
|
; CHECK-NEXT: lochie %r0, 1
|
|
; CHECK-NEXT: st %r0, 0(%r1)
|
|
; CHECK-NEXT: br %r14
|
|
; CHECK-NEXT: .LBB0_2: # %bb2
|
|
; CHECK-NEXT: tmll %r2, 16
|
|
; CHECK-NEXT: lhi %r0, 16
|
|
; CHECK-NEXT: lochie %r0, 4
|
|
; CHECK-NEXT: st %r0, 0(%r1)
|
|
; CHECK-NEXT: br %r14
|
|
entry:
|
|
%A = add i32 %Arg, 1
|
|
%N = and i32 %A, 16
|
|
%i4 = icmp eq i32 %N, 0
|
|
br i1 undef, label %bb1, label %bb2
|
|
|
|
bb1:
|
|
%i9 = zext i1 %i4 to i32
|
|
store i32 %i9, ptr undef
|
|
br label %bb3
|
|
|
|
bb2:
|
|
%i13 = select i1 %i4, i32 4, i32 16
|
|
store i32 %i13, ptr undef
|
|
br label %bb3
|
|
|
|
bb3:
|
|
ret void
|
|
}
|