| ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 5 |
| ; RUN: llc < %s -mtriple=x86_64-- | FileCheck %s |
| |
| @g_1 = external global i8 |
| @g_2 = external global i8 |
| |
| ; Make sure we don't crash on this test. |
| |
| define i1 @test(i1 %cmp1, i32 %x) { |
| ; CHECK-LABEL: test: |
| ; CHECK: # %bb.0: # %entry |
| ; CHECK-NEXT: movq g_2@GOTPCREL(%rip), %rcx |
| ; CHECK-NEXT: xorl %eax, %eax |
| ; CHECK-NEXT: cmpq %rcx, g_1@GOTPCREL(%rip) |
| ; CHECK-NEXT: setne %al |
| ; CHECK-NEXT: cmpl %eax, %esi |
| ; CHECK-NEXT: setb %cl |
| ; CHECK-NEXT: orb %cl, %al |
| ; CHECK-NEXT: andb %dil, %al |
| ; CHECK-NEXT: # kill: def $al killed $al killed $eax |
| ; CHECK-NEXT: retq |
| entry: |
| %cmp2 = icmp ne ptr @g_1, @g_2 |
| %fr = freeze ptr @g_1 |
| %cmp3 = icmp ne ptr %fr, @g_2 |
| %ext1 = zext i1 %cmp3 to i32 |
| %sel1 = select i1 %cmp1, i1 %cmp2, i1 false |
| %cmp4 = icmp ult i32 %x, %ext1 |
| %sel3 = select i1 %cmp1, i1 %cmp4, i1 false |
| %or = or i1 %sel1, %sel3 |
| ret i1 %or |
| } |