brintos

brintos / llvm-project-archived public Read only

0
0
Text · 6.2 KiB · 222eae8 Raw
185 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc --mtriple=loongarch64 -mattr=+d < %s | FileCheck %s3 4declare i32 @llvm.loongarch.iocsrrd.b(i32) nounwind5declare void @llvm.loongarch.iocsrwr.b(i32, i32) nounwind6declare i32 @llvm.loongarch.iocsrrd.h(i32) nounwind7declare void @llvm.loongarch.iocsrwr.h(i32, i32) nounwind8declare i32 @llvm.loongarch.iocsrrd.w(i32) nounwind9declare void @llvm.loongarch.iocsrwr.w(i32, i32) nounwind10declare i64 @llvm.loongarch.iocsrrd.d(i32) nounwind11declare void @llvm.loongarch.iocsrwr.d(i64, i32) nounwind12declare void @bug()13 14define dso_local void @test_b(i32 noundef signext %flag) nounwind {15; CHECK-LABEL: test_b:16; CHECK:       # %bb.0: # %entry17; CHECK-NEXT:    beqz $a0, .LBB0_218; CHECK-NEXT:  # %bb.1: # %if.then19; CHECK-NEXT:    ori $a0, $zero, 220; CHECK-NEXT:    iocsrrd.b $a1, $a021; CHECK-NEXT:    ori $a1, $a1, 122; CHECK-NEXT:    iocsrwr.b $a1, $a023; CHECK-NEXT:  .LBB0_2: # %if.end24; CHECK-NEXT:    ori $a0, $zero, 225; CHECK-NEXT:    iocsrrd.b $a0, $a026; CHECK-NEXT:    andi $a0, $a0, 127; CHECK-NEXT:    bnez $a0, .LBB0_428; CHECK-NEXT:  # %bb.3: # %if.then229; CHECK-NEXT:    pcaddu18i $t8, %call36(bug)30; CHECK-NEXT:    jr $t831; CHECK-NEXT:  .LBB0_4: # %if.end332; CHECK-NEXT:    ret33entry:34  %tobool.not = icmp eq i32 %flag, 035  br i1 %tobool.not, label %if.end, label %if.then36 37if.then:                                          ; preds = %entry38  %0 = tail call i32 @llvm.loongarch.iocsrrd.b(i32 2)39  %or = or i32 %0, 140  tail call void @llvm.loongarch.iocsrwr.b(i32 %or, i32 2)41  br label %if.end42 43if.end:                                           ; preds = %if.then, %entry44  %1 = tail call i32 @llvm.loongarch.iocsrrd.b(i32 2)45  %and = and i32 %1, 146  %tobool1.not = icmp eq i32 %and, 047  br i1 %tobool1.not, label %if.then2, label %if.end348 49if.then2:                                         ; preds = %if.end50  tail call void @bug()51  br label %if.end352 53if.end3:                                          ; preds = %if.then2, %if.end54  ret void55}56 57define dso_local void @test_h(i32 noundef signext %flag) nounwind {58; CHECK-LABEL: test_h:59; CHECK:       # %bb.0: # %entry60; CHECK-NEXT:    beqz $a0, .LBB1_261; CHECK-NEXT:  # %bb.1: # %if.then62; CHECK-NEXT:    ori $a0, $zero, 263; CHECK-NEXT:    iocsrrd.h $a1, $a064; CHECK-NEXT:    ori $a1, $a1, 165; CHECK-NEXT:    iocsrwr.h $a1, $a066; CHECK-NEXT:  .LBB1_2: # %if.end67; CHECK-NEXT:    ori $a0, $zero, 268; CHECK-NEXT:    iocsrrd.h $a0, $a069; CHECK-NEXT:    andi $a0, $a0, 170; CHECK-NEXT:    bnez $a0, .LBB1_471; CHECK-NEXT:  # %bb.3: # %if.then272; CHECK-NEXT:    pcaddu18i $t8, %call36(bug)73; CHECK-NEXT:    jr $t874; CHECK-NEXT:  .LBB1_4: # %if.end375; CHECK-NEXT:    ret76entry:77  %tobool.not = icmp eq i32 %flag, 078  br i1 %tobool.not, label %if.end, label %if.then79 80if.then:                                          ; preds = %entry81  %0 = tail call i32 @llvm.loongarch.iocsrrd.h(i32 2)82  %or = or i32 %0, 183  tail call void @llvm.loongarch.iocsrwr.h(i32 %or, i32 2)84  br label %if.end85 86if.end:                                           ; preds = %if.then, %entry87  %1 = tail call i32 @llvm.loongarch.iocsrrd.h(i32 2)88  %and = and i32 %1, 189  %tobool1.not = icmp eq i32 %and, 090  br i1 %tobool1.not, label %if.then2, label %if.end391 92if.then2:                                         ; preds = %if.end93  tail call void @bug()94  br label %if.end395 96if.end3:                                          ; preds = %if.then2, %if.end97  ret void98}99 100define dso_local void @test_w(i32 noundef signext %flag) nounwind {101; CHECK-LABEL: test_w:102; CHECK:       # %bb.0: # %entry103; CHECK-NEXT:    beqz $a0, .LBB2_2104; CHECK-NEXT:  # %bb.1: # %if.then105; CHECK-NEXT:    ori $a0, $zero, 2106; CHECK-NEXT:    iocsrrd.w $a1, $a0107; CHECK-NEXT:    ori $a1, $a1, 1108; CHECK-NEXT:    iocsrwr.w $a1, $a0109; CHECK-NEXT:  .LBB2_2: # %if.end110; CHECK-NEXT:    ori $a0, $zero, 2111; CHECK-NEXT:    iocsrrd.w $a0, $a0112; CHECK-NEXT:    andi $a0, $a0, 1113; CHECK-NEXT:    bnez $a0, .LBB2_4114; CHECK-NEXT:  # %bb.3: # %if.then2115; CHECK-NEXT:    pcaddu18i $t8, %call36(bug)116; CHECK-NEXT:    jr $t8117; CHECK-NEXT:  .LBB2_4: # %if.end3118; CHECK-NEXT:    ret119entry:120  %tobool.not = icmp eq i32 %flag, 0121  br i1 %tobool.not, label %if.end, label %if.then122 123if.then:                                          ; preds = %entry124  %0 = tail call i32 @llvm.loongarch.iocsrrd.w(i32 2)125  %or = or i32 %0, 1126  tail call void @llvm.loongarch.iocsrwr.w(i32 %or, i32 2)127  br label %if.end128 129if.end:                                           ; preds = %if.then, %entry130  %1 = tail call i32 @llvm.loongarch.iocsrrd.w(i32 2)131  %and = and i32 %1, 1132  %tobool1.not = icmp eq i32 %and, 0133  br i1 %tobool1.not, label %if.then2, label %if.end3134 135if.then2:                                         ; preds = %if.end136  tail call void @bug()137  br label %if.end3138 139if.end3:                                          ; preds = %if.then2, %if.end140  ret void141}142 143define dso_local void @test_d(i32 noundef signext %flag) nounwind {144; CHECK-LABEL: test_d:145; CHECK:       # %bb.0: # %entry146; CHECK-NEXT:    beqz $a0, .LBB3_2147; CHECK-NEXT:  # %bb.1: # %if.then148; CHECK-NEXT:    ori $a0, $zero, 2149; CHECK-NEXT:    iocsrrd.d $a1, $a0150; CHECK-NEXT:    ori $a1, $a1, 1151; CHECK-NEXT:    iocsrwr.d $a1, $a0152; CHECK-NEXT:  .LBB3_2: # %if.end153; CHECK-NEXT:    ori $a0, $zero, 2154; CHECK-NEXT:    iocsrrd.d $a0, $a0155; CHECK-NEXT:    andi $a0, $a0, 1156; CHECK-NEXT:    bnez $a0, .LBB3_4157; CHECK-NEXT:  # %bb.3: # %if.then2158; CHECK-NEXT:    pcaddu18i $t8, %call36(bug)159; CHECK-NEXT:    jr $t8160; CHECK-NEXT:  .LBB3_4: # %if.end3161; CHECK-NEXT:    ret162entry:163  %tobool.not = icmp eq i32 %flag, 0164  br i1 %tobool.not, label %if.end, label %if.then165 166if.then:                                          ; preds = %entry167  %0 = tail call i64 @llvm.loongarch.iocsrrd.d(i32 2)168  %or = or i64 %0, 1169  tail call void @llvm.loongarch.iocsrwr.d(i64 %or, i32 2)170  br label %if.end171 172if.end:                                           ; preds = %if.then, %entry173  %1 = tail call i64 @llvm.loongarch.iocsrrd.d(i32 2)174  %and = and i64 %1, 1175  %tobool1.not = icmp eq i64 %and, 0176  br i1 %tobool1.not, label %if.then2, label %if.end3177 178if.then2:                                         ; preds = %if.end179  tail call void @bug()180  br label %if.end3181 182if.end3:                                          ; preds = %if.then2, %if.end183  ret void184}185