| ; 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(i32* %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, i32* %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 |
| } |