137 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 52; RUN: llc < %s -mtriple=m68k-linux -mcpu=M68020 --verify-machineinstrs | FileCheck %s3 4define internal void @select_i32(i32 %self, ptr nonnull %value) {5; CHECK-LABEL: select_i32:6; CHECK: .cfi_startproc7; CHECK-NEXT: ; %bb.0: ; %start8; CHECK-NEXT: suba.l #4, %sp9; CHECK-NEXT: .cfi_def_cfa_offset -810; CHECK-NEXT: movem.l %d2, (0,%sp) ; 8-byte Folded Spill11; CHECK-NEXT: cmpi.l #0, (8,%sp)12; CHECK-NEXT: move.w %ccr, %d213; CHECK-NEXT: sne %d114; CHECK-NEXT: move.l (12,%sp), %d015; CHECK-NEXT: move.w %d2, %ccr16; CHECK-NEXT: bne .LBB0_217; CHECK-NEXT: ; %bb.1: ; %start18; CHECK-NEXT: and.l #255, %d119; CHECK-NEXT: and.l #1, %d120; CHECK-NEXT: cmpi.l #0, %d121; CHECK-NEXT: bne .LBB0_322; CHECK-NEXT: .LBB0_2: ; %null23; CHECK-NEXT: suba.l %a0, %a024; CHECK-NEXT: move.l %d0, (%a0)25; CHECK-NEXT: .LBB0_3: ; %exit26; CHECK-NEXT: movem.l (0,%sp), %d2 ; 8-byte Folded Reload27; CHECK-NEXT: adda.l #4, %sp28; CHECK-NEXT: rts29start:30 %2 = icmp eq i32 %self, 031 %3 = select i1 %2, i32 0, i32 132 switch i32 %3, label %exit [33 i32 0, label %nonnull34 i32 1, label %null35 ]36 37nonnull: ; preds = %start38 store ptr %value, ptr null, align 239 br label %exit40 41null: ; preds = %start42 store ptr %value, ptr null, align 243 br label %exit44 45exit: ; preds = %nonnull, %null46 ret void47}48 49define internal void @select_i16(i16 %self, ptr nonnull %value) {50; CHECK-LABEL: select_i16:51; CHECK: .cfi_startproc52; CHECK-NEXT: ; %bb.0: ; %start53; CHECK-NEXT: suba.l #4, %sp54; CHECK-NEXT: .cfi_def_cfa_offset -855; CHECK-NEXT: movem.l %d2, (0,%sp) ; 8-byte Folded Spill56; CHECK-NEXT: cmpi.w #0, (10,%sp)57; CHECK-NEXT: move.w %ccr, %d258; CHECK-NEXT: sne %d159; CHECK-NEXT: move.l (12,%sp), %d060; CHECK-NEXT: move.w %d2, %ccr61; CHECK-NEXT: bne .LBB1_262; CHECK-NEXT: ; %bb.1: ; %start63; CHECK-NEXT: and.l #255, %d164; CHECK-NEXT: and.w #1, %d165; CHECK-NEXT: cmpi.w #0, %d166; CHECK-NEXT: bne .LBB1_367; CHECK-NEXT: .LBB1_2: ; %null68; CHECK-NEXT: suba.l %a0, %a069; CHECK-NEXT: move.l %d0, (%a0)70; CHECK-NEXT: .LBB1_3: ; %exit71; CHECK-NEXT: movem.l (0,%sp), %d2 ; 8-byte Folded Reload72; CHECK-NEXT: adda.l #4, %sp73; CHECK-NEXT: rts74start:75 %2 = icmp eq i16 %self, 076 %3 = select i1 %2, i16 0, i16 177 switch i16 %3, label %exit [78 i16 0, label %nonnull79 i16 1, label %null80 ]81 82nonnull: ; preds = %start83 store ptr %value, ptr null, align 284 br label %exit85 86null: ; preds = %start87 store ptr %value, ptr null, align 288 br label %exit89 90exit: ; preds = %nonnull, %null91 ret void92}93 94define internal void @select_i8(i8 %self, ptr nonnull %value) {95; CHECK-LABEL: select_i8:96; CHECK: .cfi_startproc97; CHECK-NEXT: ; %bb.0: ; %start98; CHECK-NEXT: suba.l #4, %sp99; CHECK-NEXT: .cfi_def_cfa_offset -8100; CHECK-NEXT: movem.l %d2, (0,%sp) ; 8-byte Folded Spill101; CHECK-NEXT: cmpi.b #0, (11,%sp)102; CHECK-NEXT: move.w %ccr, %d2103; CHECK-NEXT: sne %d1104; CHECK-NEXT: move.l (12,%sp), %d0105; CHECK-NEXT: move.w %d2, %ccr106; CHECK-NEXT: bne .LBB2_2107; CHECK-NEXT: ; %bb.1: ; %start108; CHECK-NEXT: and.b #1, %d1109; CHECK-NEXT: cmpi.b #0, %d1110; CHECK-NEXT: bne .LBB2_3111; CHECK-NEXT: .LBB2_2: ; %null112; CHECK-NEXT: suba.l %a0, %a0113; CHECK-NEXT: move.l %d0, (%a0)114; CHECK-NEXT: .LBB2_3: ; %exit115; CHECK-NEXT: movem.l (0,%sp), %d2 ; 8-byte Folded Reload116; CHECK-NEXT: adda.l #4, %sp117; CHECK-NEXT: rts118start:119 %2 = icmp eq i8 %self, 0120 %3 = select i1 %2, i8 0, i8 1121 switch i8 %3, label %exit [122 i8 0, label %nonnull123 i8 1, label %null124 ]125 126nonnull: ; preds = %start127 store ptr %value, ptr null, align 2128 br label %exit129 130null: ; preds = %start131 store ptr %value, ptr null, align 2132 br label %exit133 134exit: ; preds = %nonnull, %null135 ret void136}137