brintos

brintos / llvm-project-archived public Read only

0
0
Text · 5.5 KiB · 494d2c9 Raw
182 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 52; RUN: llc -mtriple=riscv32 -global-isel < %s | FileCheck %s --check-prefixes=CHECK,CHECKI,RV323; RUN: llc -mtriple=riscv64 -global-isel < %s | FileCheck %s --check-prefixes=CHECK,CHECKI,RV644; RUN: llc -mtriple=riscv32 -mattr=+f -global-isel < %s | FileCheck %s --check-prefixes=CHECK,CHECKIF,RV325; RUN: llc -mtriple=riscv64 -mattr=+f -global-isel < %s | FileCheck %s --check-prefixes=CHECK,CHECKIF,RV646 7define i1 @phi_i1(i1 %cnd, i1 %a, i1 %b) {8; CHECK-LABEL: phi_i1:9; CHECK:       # %bb.0: # %entry10; CHECK-NEXT:    mv a3, a011; CHECK-NEXT:    mv a0, a112; CHECK-NEXT:    andi a3, a3, 113; CHECK-NEXT:    bnez a3, .LBB0_214; CHECK-NEXT:  # %bb.1: # %cond.false15; CHECK-NEXT:    mv a0, a216; CHECK-NEXT:  .LBB0_2: # %cond.end17; CHECK-NEXT:    ret18entry:19  br i1 %cnd, label %cond.end, label %cond.false20 21cond.false:                                       ; preds = %entry22  br label %cond.end23 24cond.end:                                         ; preds = %entry, %cond.false25  %cond = phi i1 [ %b, %cond.false ], [ %a, %entry ]26  ret i1 %cond27}28 29define i8 @phi_i8(i1 %cnd, i8 %a, i8 %b) {30; CHECK-LABEL: phi_i8:31; CHECK:       # %bb.0: # %entry32; CHECK-NEXT:    mv a3, a033; CHECK-NEXT:    mv a0, a134; CHECK-NEXT:    andi a3, a3, 135; CHECK-NEXT:    bnez a3, .LBB1_236; CHECK-NEXT:  # %bb.1: # %cond.false37; CHECK-NEXT:    mv a0, a238; CHECK-NEXT:  .LBB1_2: # %cond.end39; CHECK-NEXT:    ret40entry:41  br i1 %cnd, label %cond.end, label %cond.false42 43cond.false:                                       ; preds = %entry44  br label %cond.end45 46cond.end:                                         ; preds = %entry, %cond.false47  %cond = phi i8 [ %b, %cond.false ], [ %a, %entry ]48  ret i8 %cond49}50 51define i16 @phi_i16(i1 %cnd, i16 %a, i16 %b) {52; CHECK-LABEL: phi_i16:53; CHECK:       # %bb.0: # %entry54; CHECK-NEXT:    mv a3, a055; CHECK-NEXT:    mv a0, a156; CHECK-NEXT:    andi a3, a3, 157; CHECK-NEXT:    bnez a3, .LBB2_258; CHECK-NEXT:  # %bb.1: # %cond.false59; CHECK-NEXT:    mv a0, a260; CHECK-NEXT:  .LBB2_2: # %cond.end61; CHECK-NEXT:    ret62entry:63  br i1 %cnd, label %cond.end, label %cond.false64 65cond.false:                                       ; preds = %entry66  br label %cond.end67 68cond.end:                                         ; preds = %entry, %cond.false69  %cond = phi i16 [ %b, %cond.false ], [ %a, %entry ]70  ret i16 %cond71}72 73define i32 @phi_i32(i1 %cnd, i32 %a, i32 %b) {74; CHECK-LABEL: phi_i32:75; CHECK:       # %bb.0: # %entry76; CHECK-NEXT:    mv a3, a077; CHECK-NEXT:    mv a0, a178; CHECK-NEXT:    andi a3, a3, 179; CHECK-NEXT:    bnez a3, .LBB3_280; CHECK-NEXT:  # %bb.1: # %cond.false81; CHECK-NEXT:    mv a0, a282; CHECK-NEXT:  .LBB3_2: # %cond.end83; CHECK-NEXT:    ret84entry:85  br i1 %cnd, label %cond.end, label %cond.false86 87cond.false:                                       ; preds = %entry88  br label %cond.end89 90cond.end:                                         ; preds = %entry, %cond.false91  %cond = phi i32 [ %b, %cond.false ], [ %a, %entry ]92  ret i32 %cond93}94 95define i64 @phi_i64(i1 %cnd, i64 %a, i64 %b) {96; RV32-LABEL: phi_i64:97; RV32:       # %bb.0: # %entry98; RV32-NEXT:    mv a5, a099; RV32-NEXT:    mv a0, a1100; RV32-NEXT:    mv a1, a2101; RV32-NEXT:    andi a5, a5, 1102; RV32-NEXT:    bnez a5, .LBB4_2103; RV32-NEXT:  # %bb.1: # %cond.false104; RV32-NEXT:    mv a0, a3105; RV32-NEXT:    mv a1, a4106; RV32-NEXT:  .LBB4_2: # %cond.end107; RV32-NEXT:    ret108;109; RV64-LABEL: phi_i64:110; RV64:       # %bb.0: # %entry111; RV64-NEXT:    mv a3, a0112; RV64-NEXT:    mv a0, a1113; RV64-NEXT:    andi a3, a3, 1114; RV64-NEXT:    bnez a3, .LBB4_2115; RV64-NEXT:  # %bb.1: # %cond.false116; RV64-NEXT:    mv a0, a2117; RV64-NEXT:  .LBB4_2: # %cond.end118; RV64-NEXT:    ret119entry:120  br i1 %cnd, label %cond.end, label %cond.false121 122cond.false:                                       ; preds = %entry123  br label %cond.end124 125cond.end:                                         ; preds = %entry, %cond.false126  %cond = phi i64 [ %b, %cond.false ], [ %a, %entry ]127  ret i64 %cond128}129 130define ptr @phi_ptr(i1 %cnd, ptr %a, ptr %b) {131; CHECK-LABEL: phi_ptr:132; CHECK:       # %bb.0: # %entry133; CHECK-NEXT:    mv a3, a0134; CHECK-NEXT:    mv a0, a1135; CHECK-NEXT:    andi a3, a3, 1136; CHECK-NEXT:    bnez a3, .LBB5_2137; CHECK-NEXT:  # %bb.1: # %cond.false138; CHECK-NEXT:    mv a0, a2139; CHECK-NEXT:  .LBB5_2: # %cond.end140; CHECK-NEXT:    ret141entry:142  br i1 %cnd, label %cond.end, label %cond.false143 144cond.false:                                       ; preds = %entry145  br label %cond.end146 147cond.end:                                         ; preds = %entry, %cond.false148  %cond = phi ptr [ %b, %cond.false ], [ %a, %entry ]149  ret ptr %cond150}151 152define float @phi_float(i1 %cnd, float %a, float %b) {153; CHECKI-LABEL: phi_float:154; CHECKI:       # %bb.0: # %entry155; CHECKI-NEXT:    mv a3, a0156; CHECKI-NEXT:    mv a0, a1157; CHECKI-NEXT:    andi a3, a3, 1158; CHECKI-NEXT:    bnez a3, .LBB6_2159; CHECKI-NEXT:  # %bb.1: # %cond.false160; CHECKI-NEXT:    mv a0, a2161; CHECKI-NEXT:  .LBB6_2: # %cond.end162; CHECKI-NEXT:    ret163;164; CHECKIF-LABEL: phi_float:165; CHECKIF:       # %bb.0: # %entry166; CHECKIF-NEXT:    andi a0, a0, 1167; CHECKIF-NEXT:    bnez a0, .LBB6_2168; CHECKIF-NEXT:  # %bb.1: # %cond.false169; CHECKIF-NEXT:    fmv.s fa0, fa1170; CHECKIF-NEXT:  .LBB6_2: # %cond.end171; CHECKIF-NEXT:    ret172entry:173  br i1 %cnd, label %cond.end, label %cond.false174 175cond.false:                                       ; preds = %entry176  br label %cond.end177 178cond.end:                                         ; preds = %entry, %cond.false179  %cond = phi float [ %b, %cond.false ], [ %a, %entry ]180  ret float %cond181}182