brintos

brintos / llvm-project-archived public Read only

0
0
Text · 5.5 KiB · fabfbc3 Raw
246 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc --mtriple=loongarch32 -mattr=+d < %s | FileCheck %s --check-prefix=LA323; RUN: llc --mtriple=loongarch64 -mattr=+d < %s | FileCheck %s --check-prefix=LA644 5;; Exercise the 'icmp' LLVM IR: https://llvm.org/docs/LangRef.html#icmp-instruction6 7define i1 @icmp_eq(i32 signext %a, i32 signext %b) {8; LA32-LABEL: icmp_eq:9; LA32:       # %bb.0:10; LA32-NEXT:    xor $a0, $a0, $a111; LA32-NEXT:    sltui $a0, $a0, 112; LA32-NEXT:    ret13;14; LA64-LABEL: icmp_eq:15; LA64:       # %bb.0:16; LA64-NEXT:    xor $a0, $a0, $a117; LA64-NEXT:    sltui $a0, $a0, 118; LA64-NEXT:    ret19  %res = icmp eq i32 %a, %b20  ret i1 %res21}22 23define i1 @icmp_ne(i32 signext %a, i32 signext %b) {24; LA32-LABEL: icmp_ne:25; LA32:       # %bb.0:26; LA32-NEXT:    xor $a0, $a0, $a127; LA32-NEXT:    sltu $a0, $zero, $a028; LA32-NEXT:    ret29;30; LA64-LABEL: icmp_ne:31; LA64:       # %bb.0:32; LA64-NEXT:    xor $a0, $a0, $a133; LA64-NEXT:    sltu $a0, $zero, $a034; LA64-NEXT:    ret35  %res = icmp ne i32 %a, %b36  ret i1 %res37}38 39define i1 @icmp_ugt(i32 signext %a, i32 signext %b) {40; LA32-LABEL: icmp_ugt:41; LA32:       # %bb.0:42; LA32-NEXT:    sltu $a0, $a1, $a043; LA32-NEXT:    ret44;45; LA64-LABEL: icmp_ugt:46; LA64:       # %bb.0:47; LA64-NEXT:    sltu $a0, $a1, $a048; LA64-NEXT:    ret49  %res = icmp ugt i32 %a, %b50  ret i1 %res51}52 53define i1 @icmp_uge(i32 signext %a, i32 signext %b) {54; LA32-LABEL: icmp_uge:55; LA32:       # %bb.0:56; LA32-NEXT:    sltu $a0, $a0, $a157; LA32-NEXT:    xori $a0, $a0, 158; LA32-NEXT:    ret59;60; LA64-LABEL: icmp_uge:61; LA64:       # %bb.0:62; LA64-NEXT:    sltu $a0, $a0, $a163; LA64-NEXT:    xori $a0, $a0, 164; LA64-NEXT:    ret65  %res = icmp uge i32 %a, %b66  ret i1 %res67}68 69define i1 @icmp_ult(i32 signext %a, i32 signext %b) {70; LA32-LABEL: icmp_ult:71; LA32:       # %bb.0:72; LA32-NEXT:    sltu $a0, $a0, $a173; LA32-NEXT:    ret74;75; LA64-LABEL: icmp_ult:76; LA64:       # %bb.0:77; LA64-NEXT:    sltu $a0, $a0, $a178; LA64-NEXT:    ret79  %res = icmp ult i32 %a, %b80  ret i1 %res81}82 83define i1 @icmp_ule(i32 signext %a, i32 signext %b) {84; LA32-LABEL: icmp_ule:85; LA32:       # %bb.0:86; LA32-NEXT:    sltu $a0, $a1, $a087; LA32-NEXT:    xori $a0, $a0, 188; LA32-NEXT:    ret89;90; LA64-LABEL: icmp_ule:91; LA64:       # %bb.0:92; LA64-NEXT:    sltu $a0, $a1, $a093; LA64-NEXT:    xori $a0, $a0, 194; LA64-NEXT:    ret95  %res = icmp ule i32 %a, %b96  ret i1 %res97}98 99define i1 @icmp_sgt(i32 signext %a, i32 signext %b) {100; LA32-LABEL: icmp_sgt:101; LA32:       # %bb.0:102; LA32-NEXT:    slt $a0, $a1, $a0103; LA32-NEXT:    ret104;105; LA64-LABEL: icmp_sgt:106; LA64:       # %bb.0:107; LA64-NEXT:    slt $a0, $a1, $a0108; LA64-NEXT:    ret109  %res = icmp sgt i32 %a, %b110  ret i1 %res111}112 113define i1 @icmp_sge(i32 signext %a, i32 signext %b) {114; LA32-LABEL: icmp_sge:115; LA32:       # %bb.0:116; LA32-NEXT:    slt $a0, $a0, $a1117; LA32-NEXT:    xori $a0, $a0, 1118; LA32-NEXT:    ret119;120; LA64-LABEL: icmp_sge:121; LA64:       # %bb.0:122; LA64-NEXT:    slt $a0, $a0, $a1123; LA64-NEXT:    xori $a0, $a0, 1124; LA64-NEXT:    ret125  %res = icmp sge i32 %a, %b126  ret i1 %res127}128 129define i1 @icmp_slt(i32 signext %a, i32 signext %b) {130; LA32-LABEL: icmp_slt:131; LA32:       # %bb.0:132; LA32-NEXT:    slt $a0, $a0, $a1133; LA32-NEXT:    ret134;135; LA64-LABEL: icmp_slt:136; LA64:       # %bb.0:137; LA64-NEXT:    slt $a0, $a0, $a1138; LA64-NEXT:    ret139  %res = icmp slt i32 %a, %b140  ret i1 %res141}142 143define i1 @icmp_sle(i32 signext %a, i32 signext %b) {144; LA32-LABEL: icmp_sle:145; LA32:       # %bb.0:146; LA32-NEXT:    slt $a0, $a1, $a0147; LA32-NEXT:    xori $a0, $a0, 1148; LA32-NEXT:    ret149;150; LA64-LABEL: icmp_sle:151; LA64:       # %bb.0:152; LA64-NEXT:    slt $a0, $a1, $a0153; LA64-NEXT:    xori $a0, $a0, 1154; LA64-NEXT:    ret155  %res = icmp sle i32 %a, %b156  ret i1 %res157}158 159define i1 @icmp_slt_3(i32 signext %a) {160; LA32-LABEL: icmp_slt_3:161; LA32:       # %bb.0:162; LA32-NEXT:    slti $a0, $a0, 3163; LA32-NEXT:    ret164;165; LA64-LABEL: icmp_slt_3:166; LA64:       # %bb.0:167; LA64-NEXT:    slti $a0, $a0, 3168; LA64-NEXT:    ret169  %res = icmp slt i32 %a, 3170  ret i1 %res171}172 173define i1 @icmp_ult_3(i32 signext %a) {174; LA32-LABEL: icmp_ult_3:175; LA32:       # %bb.0:176; LA32-NEXT:    sltui $a0, $a0, 3177; LA32-NEXT:    ret178;179; LA64-LABEL: icmp_ult_3:180; LA64:       # %bb.0:181; LA64-NEXT:    sltui $a0, $a0, 3182; LA64-NEXT:    ret183  %res = icmp ult i32 %a, 3184  ret i1 %res185}186 187define i1 @icmp_eq_0(i32 signext %a) {188; LA32-LABEL: icmp_eq_0:189; LA32:       # %bb.0:190; LA32-NEXT:    sltui $a0, $a0, 1191; LA32-NEXT:    ret192;193; LA64-LABEL: icmp_eq_0:194; LA64:       # %bb.0:195; LA64-NEXT:    sltui $a0, $a0, 1196; LA64-NEXT:    ret197  %res = icmp eq i32 %a, 0198  ret i1 %res199}200 201define i1 @icmp_eq_3(i32 signext %a) {202; LA32-LABEL: icmp_eq_3:203; LA32:       # %bb.0:204; LA32-NEXT:    addi.w $a0, $a0, -3205; LA32-NEXT:    sltui $a0, $a0, 1206; LA32-NEXT:    ret207;208; LA64-LABEL: icmp_eq_3:209; LA64:       # %bb.0:210; LA64-NEXT:    addi.d $a0, $a0, -3211; LA64-NEXT:    sltui $a0, $a0, 1212; LA64-NEXT:    ret213  %res = icmp eq i32 %a, 3214  ret i1 %res215}216 217define i1 @icmp_ne_0(i32 signext %a) {218; LA32-LABEL: icmp_ne_0:219; LA32:       # %bb.0:220; LA32-NEXT:    sltu $a0, $zero, $a0221; LA32-NEXT:    ret222;223; LA64-LABEL: icmp_ne_0:224; LA64:       # %bb.0:225; LA64-NEXT:    sltu $a0, $zero, $a0226; LA64-NEXT:    ret227  %res = icmp ne i32 %a, 0228  ret i1 %res229}230 231define i1 @icmp_ne_3(i32 signext %a) {232; LA32-LABEL: icmp_ne_3:233; LA32:       # %bb.0:234; LA32-NEXT:    addi.w $a0, $a0, -3235; LA32-NEXT:    sltu $a0, $zero, $a0236; LA32-NEXT:    ret237;238; LA64-LABEL: icmp_ne_3:239; LA64:       # %bb.0:240; LA64-NEXT:    addi.d $a0, $a0, -3241; LA64-NEXT:    sltu $a0, $zero, $a0242; LA64-NEXT:    ret243  %res = icmp ne i32 %a, 3244  ret i1 %res245}246