| ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 6 |
| ; RUN: llc < %s -mtriple=avr | FileCheck %s |
| |
| define i8 @sgt_i128_smax_hi(i128 %x) { |
| ; CHECK-LABEL: sgt_i128_smax_hi: |
| ; CHECK: ; %bb.0: |
| ; CHECK-NEXT: push r4 |
| ; CHECK-NEXT: push r5 |
| ; CHECK-NEXT: push r6 |
| ; CHECK-NEXT: push r7 |
| ; CHECK-NEXT: push r8 |
| ; CHECK-NEXT: push r9 |
| ; CHECK-NEXT: push r10 |
| ; CHECK-NEXT: push r11 |
| ; CHECK-NEXT: push r16 |
| ; CHECK-NEXT: push r17 |
| ; CHECK-NEXT: push r28 |
| ; CHECK-NEXT: push r29 |
| ; CHECK-NEXT: in r28, 61 |
| ; CHECK-NEXT: in r29, 62 |
| ; CHECK-NEXT: sbiw r28, 1 |
| ; CHECK-NEXT: in r0, 63 |
| ; CHECK-NEXT: cli |
| ; CHECK-NEXT: out 62, r29 |
| ; CHECK-NEXT: out 63, r0 |
| ; CHECK-NEXT: out 61, r28 |
| ; CHECK-NEXT: mov r30, r24 |
| ; CHECK-NEXT: mov r31, r25 |
| ; CHECK-NEXT: mov r8, r16 |
| ; CHECK-NEXT: mov r9, r17 |
| ; CHECK-NEXT: mov r4, r10 |
| ; CHECK-NEXT: mov r5, r11 |
| ; CHECK-NEXT: ldi r25, -1 |
| ; CHECK-NEXT: ldi r26, 255 |
| ; CHECK-NEXT: ldi r27, 255 |
| ; CHECK-NEXT: ldi r16, 255 |
| ; CHECK-NEXT: ldi r17, 127 |
| ; CHECK-NEXT: ldi r24, 1 |
| ; CHECK-NEXT: cpi r18, -1 |
| ; CHECK-NEXT: mov r10, r25 |
| ; CHECK-NEXT: cpc r19, r25 |
| ; CHECK-NEXT: cpc r20, r26 |
| ; CHECK-NEXT: cpc r21, r27 |
| ; CHECK-NEXT: cpc r22, r26 |
| ; CHECK-NEXT: cpc r23, r27 |
| ; CHECK-NEXT: mov r6, r16 |
| ; CHECK-NEXT: mov r7, r17 |
| ; CHECK-NEXT: cpc r30, r16 |
| ; CHECK-NEXT: cpc r31, r17 |
| ; CHECK-NEXT: ldi r25, 1 |
| ; CHECK-NEXT: std Y+1, r25 ; 1-byte Folded Spill |
| ; CHECK-NEXT: breq .LBB0_2 |
| ; CHECK-NEXT: ; %bb.1: |
| ; CHECK-NEXT: mov r11, r1 |
| ; CHECK-NEXT: std Y+1, r11 ; 1-byte Folded Spill |
| ; CHECK-NEXT: .LBB0_2: |
| ; CHECK-NEXT: cp r10, r18 |
| ; CHECK-NEXT: cpc r10, r19 |
| ; CHECK-NEXT: cpc r26, r20 |
| ; CHECK-NEXT: cpc r27, r21 |
| ; CHECK-NEXT: cpc r26, r22 |
| ; CHECK-NEXT: cpc r27, r23 |
| ; CHECK-NEXT: cpc r6, r30 |
| ; CHECK-NEXT: cpc r7, r31 |
| ; CHECK-NEXT: ldi r18, 1 |
| ; CHECK-NEXT: brlt .LBB0_4 |
| ; CHECK-NEXT: ; %bb.3: |
| ; CHECK-NEXT: mov r18, r1 |
| ; CHECK-NEXT: .LBB0_4: |
| ; CHECK-NEXT: ldi r20, 0 |
| ; CHECK-NEXT: ldi r21, 0 |
| ; CHECK-NEXT: mov r22, r4 |
| ; CHECK-NEXT: mov r23, r5 |
| ; CHECK-NEXT: cpi r22, 1 |
| ; CHECK-NEXT: cpc r23, r1 |
| ; CHECK-NEXT: cpc r12, r20 |
| ; CHECK-NEXT: cpc r13, r21 |
| ; CHECK-NEXT: cpc r14, r20 |
| ; CHECK-NEXT: cpc r15, r21 |
| ; CHECK-NEXT: cpc r8, r20 |
| ; CHECK-NEXT: cpc r9, r21 |
| ; CHECK-NEXT: brsh .LBB0_6 |
| ; CHECK-NEXT: ; %bb.5: |
| ; CHECK-NEXT: mov r24, r1 |
| ; CHECK-NEXT: .LBB0_6: |
| ; CHECK-NEXT: ldd r25, Y+1 ; 1-byte Folded Reload |
| ; CHECK-NEXT: cpi r25, 0 |
| ; CHECK-NEXT: brne .LBB0_8 |
| ; CHECK-NEXT: ; %bb.7: |
| ; CHECK-NEXT: mov r24, r18 |
| ; CHECK-NEXT: .LBB0_8: |
| ; CHECK-NEXT: andi r24, 1 |
| ; CHECK-NEXT: adiw r28, 1 |
| ; CHECK-NEXT: in r0, 63 |
| ; CHECK-NEXT: cli |
| ; CHECK-NEXT: out 62, r29 |
| ; CHECK-NEXT: out 63, r0 |
| ; CHECK-NEXT: out 61, r28 |
| ; CHECK-NEXT: pop r29 |
| ; CHECK-NEXT: pop r28 |
| ; CHECK-NEXT: pop r17 |
| ; CHECK-NEXT: pop r16 |
| ; CHECK-NEXT: pop r11 |
| ; CHECK-NEXT: pop r10 |
| ; CHECK-NEXT: pop r9 |
| ; CHECK-NEXT: pop r8 |
| ; CHECK-NEXT: pop r7 |
| ; CHECK-NEXT: pop r6 |
| ; CHECK-NEXT: pop r5 |
| ; CHECK-NEXT: pop r4 |
| ; CHECK-NEXT: ret |
| %c = icmp sgt i128 %x, u0x7FFFFFFFFFFFFFFF0000000000000000 |
| %z = zext i1 %c to i8 |
| ret i8 %z |
| } |