; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py ; RUN: llc < %s -mtriple=sparc64 -sparc-bpcc-offset-bits=4 -sparc-bpr-offset-bits=4 | FileCheck --check-prefix=SPARC64 %s define i32 @branch_relax_int(i32 %in) { ; SPARC64-LABEL: branch_relax_int: ; SPARC64: .cfi_startproc ; SPARC64-NEXT: ! %bb.0: ; SPARC64-NEXT: save %sp, -128, %sp ; SPARC64-NEXT: .cfi_def_cfa_register %fp ; SPARC64-NEXT: .cfi_window_save ; SPARC64-NEXT: .cfi_register %o7, %i7 ; SPARC64-NEXT: cmp %i0, 0 ; SPARC64-NEXT: bne %icc, .LBB0_1 ; SPARC64-NEXT: nop ; SPARC64-NEXT: ba .LBB0_2 ; SPARC64-NEXT: nop ; SPARC64-NEXT: .LBB0_1: ! %false ; SPARC64-NEXT: !APP ; SPARC64-NEXT: nop ; SPARC64-NEXT: nop ; SPARC64-NEXT: nop ; SPARC64-NEXT: nop ; SPARC64-NEXT: nop ; SPARC64-NEXT: nop ; SPARC64-NEXT: nop ; SPARC64-NEXT: nop ; SPARC64-NEXT: !NO_APP ; SPARC64-NEXT: ret ; SPARC64-NEXT: restore %g0, %g0, %o0 ; SPARC64-NEXT: .LBB0_2: ! %true ; SPARC64-NEXT: mov 4, %i0 ; SPARC64-NEXT: !APP ; SPARC64-NEXT: nop ; SPARC64-NEXT: nop ; SPARC64-NEXT: nop ; SPARC64-NEXT: nop ; SPARC64-NEXT: nop ; SPARC64-NEXT: nop ; SPARC64-NEXT: nop ; SPARC64-NEXT: nop ; SPARC64-NEXT: !NO_APP ; SPARC64-NEXT: ret ; SPARC64-NEXT: restore %tst = icmp eq i32 %in, 0 br i1 %tst, label %true, label %false true: call void asm sideeffect "nop\0A\09nop\0A\09nop\0A\09nop\0A\09nop\0A\09nop\0A\09nop\0A\09nop", ""() ret i32 4 false: call void asm sideeffect "nop\0A\09nop\0A\09nop\0A\09nop\0A\09nop\0A\09nop\0A\09nop\0A\09nop", ""() ret i32 0 } define i64 @branch_relax_reg(i64 %in) { ; SPARC64-LABEL: branch_relax_reg: ; SPARC64: .cfi_startproc ; SPARC64-NEXT: ! %bb.0: ; SPARC64-NEXT: save %sp, -128, %sp ; SPARC64-NEXT: .cfi_def_cfa_register %fp ; SPARC64-NEXT: .cfi_window_save ; SPARC64-NEXT: .cfi_register %o7, %i7 ; SPARC64-NEXT: brnz %i0, .LBB1_1 ; SPARC64-NEXT: nop ; SPARC64-NEXT: ba .LBB1_2 ; SPARC64-NEXT: nop ; SPARC64-NEXT: .LBB1_1: ! %false ; SPARC64-NEXT: !APP ; SPARC64-NEXT: nop ; SPARC64-NEXT: nop ; SPARC64-NEXT: nop ; SPARC64-NEXT: nop ; SPARC64-NEXT: nop ; SPARC64-NEXT: nop ; SPARC64-NEXT: nop ; SPARC64-NEXT: nop ; SPARC64-NEXT: !NO_APP ; SPARC64-NEXT: ret ; SPARC64-NEXT: restore %g0, %g0, %o0 ; SPARC64-NEXT: .LBB1_2: ! %true ; SPARC64-NEXT: mov 4, %i0 ; SPARC64-NEXT: !APP ; SPARC64-NEXT: nop ; SPARC64-NEXT: nop ; SPARC64-NEXT: nop ; SPARC64-NEXT: nop ; SPARC64-NEXT: nop ; SPARC64-NEXT: nop ; SPARC64-NEXT: nop ; SPARC64-NEXT: nop ; SPARC64-NEXT: !NO_APP ; SPARC64-NEXT: ret ; SPARC64-NEXT: restore %tst = icmp eq i64 %in, 0 br i1 %tst, label %true, label %false true: call void asm sideeffect "nop\0A\09nop\0A\09nop\0A\09nop\0A\09nop\0A\09nop\0A\09nop\0A\09nop", ""() ret i64 4 false: call void asm sideeffect "nop\0A\09nop\0A\09nop\0A\09nop\0A\09nop\0A\09nop\0A\09nop\0A\09nop", ""() ret i64 0 } define float @branch_relax_float(float %in) { ; SPARC64-LABEL: branch_relax_float: ; SPARC64: .cfi_startproc ; SPARC64-NEXT: ! %bb.0: ; SPARC64-NEXT: save %sp, -128, %sp ; SPARC64-NEXT: .cfi_def_cfa_register %fp ; SPARC64-NEXT: .cfi_window_save ; SPARC64-NEXT: .cfi_register %o7, %i7 ; SPARC64-NEXT: sethi %h44(.LCPI2_0), %i0 ; SPARC64-NEXT: add %i0, %m44(.LCPI2_0), %i0 ; SPARC64-NEXT: sllx %i0, 12, %i0 ; SPARC64-NEXT: ld [%i0+%l44(.LCPI2_0)], %f0 ; SPARC64-NEXT: fcmps %fcc0, %f1, %f0 ; SPARC64-NEXT: fbe %fcc0, .LBB2_1 ; SPARC64-NEXT: nop ; SPARC64-NEXT: ba .LBB2_2 ; SPARC64-NEXT: nop ; SPARC64-NEXT: .LBB2_1: ! %true ; SPARC64-NEXT: sethi %h44(.LCPI2_1), %i0 ; SPARC64-NEXT: add %i0, %m44(.LCPI2_1), %i0 ; SPARC64-NEXT: sllx %i0, 12, %i0 ; SPARC64-NEXT: ld [%i0+%l44(.LCPI2_1)], %f0 ; SPARC64-NEXT: !APP ; SPARC64-NEXT: nop ; SPARC64-NEXT: nop ; SPARC64-NEXT: nop ; SPARC64-NEXT: nop ; SPARC64-NEXT: nop ; SPARC64-NEXT: nop ; SPARC64-NEXT: nop ; SPARC64-NEXT: nop ; SPARC64-NEXT: !NO_APP ; SPARC64-NEXT: ret ; SPARC64-NEXT: restore ; SPARC64-NEXT: .LBB2_2: ! %false ; SPARC64-NEXT: !APP ; SPARC64-NEXT: nop ; SPARC64-NEXT: nop ; SPARC64-NEXT: nop ; SPARC64-NEXT: nop ; SPARC64-NEXT: nop ; SPARC64-NEXT: nop ; SPARC64-NEXT: nop ; SPARC64-NEXT: nop ; SPARC64-NEXT: !NO_APP ; SPARC64-NEXT: ret ; SPARC64-NEXT: restore %tst = fcmp oeq float %in, 0.0 br i1 %tst, label %true, label %false true: call void asm sideeffect "nop\0A\09nop\0A\09nop\0A\09nop\0A\09nop\0A\09nop\0A\09nop\0A\09nop", ""() ret float 4.0 false: call void asm sideeffect "nop\0A\09nop\0A\09nop\0A\09nop\0A\09nop\0A\09nop\0A\09nop\0A\09nop", ""() ret float 0.0 }