| ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py | |
| ; RUN: llc < %s -mtriple=s390x-linux-gnu -mcpu=z14 | FileCheck %s | |
| ; | |
| ; Test using bitwise logic on icmp operands instead of i1 logic when | |
| ; possible. | |
| define i32 @fun(ptr %Src) { | |
| ; CHECK-LABEL: fun: | |
| ; CHECK: # %bb.0: # %bb | |
| ; CHECK-NEXT: lhi %r0, -2 | |
| ; CHECK-NEXT: s %r0, 0(%r2) | |
| ; CHECK-NEXT: nill %r0, 65533 | |
| ; CHECK-NEXT: chi %r0, 0 | |
| ; CHECK-NEXT: lhi %r2, 0 | |
| ; CHECK-NEXT: lochilh %r2, 1 | |
| ; CHECK-NEXT: br %r14 | |
| bb: | |
| %i = load i32, ptr %Src | |
| %i3 = sub nsw i32 0, %i | |
| %i4 = icmp ne i32 %i3, 2 | |
| %i5 = icmp ne i32 %i3, 4 | |
| %i6 = and i1 %i4, %i5 | |
| %i7 = zext i1 %i6 to i32 | |
| ret i32 %i7 | |
| } |