brintos

brintos / llvm-project-archived public Read only

0
0
Text · 8.5 KiB · 9c23b3a Raw
326 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=aarch64-uknown-uknown -verify-machineinstrs -o - %s | FileCheck %s3 4declare void @call()5 6define i1 @cmp_i128_eq(i128 %a, i128 %b) {7; CHECK-LABEL: cmp_i128_eq:8; CHECK:       // %bb.0:9; CHECK-NEXT:    cmp x0, x210; CHECK-NEXT:    ccmp x1, x3, #0, eq11; CHECK-NEXT:    cset w0, eq12; CHECK-NEXT:    ret13    %cmp = icmp eq i128 %a, %b14    ret i1 %cmp15}16 17define i1 @cmp_i128_ne(i128 %a, i128 %b) {18; CHECK-LABEL: cmp_i128_ne:19; CHECK:       // %bb.0:20; CHECK-NEXT:    cmp x0, x221; CHECK-NEXT:    ccmp x1, x3, #0, eq22; CHECK-NEXT:    cset w0, ne23; CHECK-NEXT:    ret24    %cmp = icmp ne i128 %a, %b25    ret i1 %cmp26}27 28define i1 @cmp_i128_ugt(i128 %a, i128 %b) {29; CHECK-LABEL: cmp_i128_ugt:30; CHECK:       // %bb.0:31; CHECK-NEXT:    cmp x2, x032; CHECK-NEXT:    sbcs xzr, x3, x133; CHECK-NEXT:    cset w0, lo34; CHECK-NEXT:    ret35    %cmp = icmp ugt i128 %a, %b36    ret i1 %cmp37}38 39define i1 @cmp_i128_uge(i128 %a, i128 %b) {40; CHECK-LABEL: cmp_i128_uge:41; CHECK:       // %bb.0:42; CHECK-NEXT:    cmp x0, x243; CHECK-NEXT:    sbcs xzr, x1, x344; CHECK-NEXT:    cset w0, hs45; CHECK-NEXT:    ret46    %cmp = icmp uge i128 %a, %b47    ret i1 %cmp48}49 50define i1 @cmp_i128_ult(i128 %a, i128 %b) {51; CHECK-LABEL: cmp_i128_ult:52; CHECK:       // %bb.0:53; CHECK-NEXT:    cmp x0, x254; CHECK-NEXT:    sbcs xzr, x1, x355; CHECK-NEXT:    cset w0, lo56; CHECK-NEXT:    ret57    %cmp = icmp ult i128 %a, %b58    ret i1 %cmp59}60 61define i1 @cmp_i128_ule(i128 %a, i128 %b) {62; CHECK-LABEL: cmp_i128_ule:63; CHECK:       // %bb.0:64; CHECK-NEXT:    cmp x2, x065; CHECK-NEXT:    sbcs xzr, x3, x166; CHECK-NEXT:    cset w0, hs67; CHECK-NEXT:    ret68    %cmp = icmp ule i128 %a, %b69    ret i1 %cmp70}71 72define i1 @cmp_i128_sgt(i128 %a, i128 %b) {73; CHECK-LABEL: cmp_i128_sgt:74; CHECK:       // %bb.0:75; CHECK-NEXT:    cmp x2, x076; CHECK-NEXT:    sbcs xzr, x3, x177; CHECK-NEXT:    cset w0, lt78; CHECK-NEXT:    ret79    %cmp = icmp sgt i128 %a, %b80    ret i1 %cmp81}82 83define i1 @cmp_i128_sge(i128 %a, i128 %b) {84; CHECK-LABEL: cmp_i128_sge:85; CHECK:       // %bb.0:86; CHECK-NEXT:    cmp x0, x287; CHECK-NEXT:    sbcs xzr, x1, x388; CHECK-NEXT:    cset w0, ge89; CHECK-NEXT:    ret90    %cmp = icmp sge i128 %a, %b91    ret i1 %cmp92}93 94define i1 @cmp_i128_slt(i128 %a, i128 %b) {95; CHECK-LABEL: cmp_i128_slt:96; CHECK:       // %bb.0:97; CHECK-NEXT:    cmp x0, x298; CHECK-NEXT:    sbcs xzr, x1, x399; CHECK-NEXT:    cset w0, lt100; CHECK-NEXT:    ret101    %cmp = icmp slt i128 %a, %b102    ret i1 %cmp103}104 105define i1 @cmp_i128_sle(i128 %a, i128 %b) {106; CHECK-LABEL: cmp_i128_sle:107; CHECK:       // %bb.0:108; CHECK-NEXT:    cmp x2, x0109; CHECK-NEXT:    sbcs xzr, x3, x1110; CHECK-NEXT:    cset w0, ge111; CHECK-NEXT:    ret112    %cmp = icmp sle i128 %a, %b113    ret i1 %cmp114}115 116define void @br_on_cmp_i128_eq(i128 %a, i128 %b) nounwind {117; CHECK-LABEL: br_on_cmp_i128_eq:118; CHECK:       // %bb.0:119; CHECK-NEXT:    cmp x1, x3120; CHECK-NEXT:    ccmp x0, x2, #0, eq121; CHECK-NEXT:    b.ne .LBB10_2122; CHECK-NEXT:  // %bb.1: // %call123; CHECK-NEXT:    str x30, [sp, #-16]! // 8-byte Folded Spill124; CHECK-NEXT:    bl call125; CHECK-NEXT:    ldr x30, [sp], #16 // 8-byte Folded Reload126; CHECK-NEXT:  .LBB10_2: // %exit127; CHECK-NEXT:    ret128    %cmp = icmp eq i128 %a, %b129    br i1 %cmp, label %call, label %exit130call:131    call void @call()132    br label %exit133exit:134    ret void135}136 137define void @br_on_cmp_i128_ne(i128 %a, i128 %b) nounwind {138; CHECK-LABEL: br_on_cmp_i128_ne:139; CHECK:       // %bb.0:140; CHECK-NEXT:    cmp x1, x3141; CHECK-NEXT:    ccmp x0, x2, #0, eq142; CHECK-NEXT:    b.eq .LBB11_2143; CHECK-NEXT:  // %bb.1: // %call144; CHECK-NEXT:    str x30, [sp, #-16]! // 8-byte Folded Spill145; CHECK-NEXT:    bl call146; CHECK-NEXT:    ldr x30, [sp], #16 // 8-byte Folded Reload147; CHECK-NEXT:  .LBB11_2: // %exit148; CHECK-NEXT:    ret149    %cmp = icmp ne i128 %a, %b150    br i1 %cmp, label %call, label %exit151call:152    call void @call()153    br label %exit154exit:155    ret void156}157 158define void @br_on_cmp_i128_ugt(i128 %a, i128 %b) nounwind {159; CHECK-LABEL: br_on_cmp_i128_ugt:160; CHECK:       // %bb.0:161; CHECK-NEXT:    cmp x2, x0162; CHECK-NEXT:    sbcs xzr, x3, x1163; CHECK-NEXT:    b.hs .LBB12_2164; CHECK-NEXT:  // %bb.1: // %call165; CHECK-NEXT:    str x30, [sp, #-16]! // 8-byte Folded Spill166; CHECK-NEXT:    bl call167; CHECK-NEXT:    ldr x30, [sp], #16 // 8-byte Folded Reload168; CHECK-NEXT:  .LBB12_2: // %exit169; CHECK-NEXT:    ret170    %cmp = icmp ugt i128 %a, %b171    br i1 %cmp, label %call, label %exit172call:173    call void @call()174    br label %exit175exit:176    ret void177}178 179define void @br_on_cmp_i128_uge(i128 %a, i128 %b) nounwind {180; CHECK-LABEL: br_on_cmp_i128_uge:181; CHECK:       // %bb.0:182; CHECK-NEXT:    cmp x0, x2183; CHECK-NEXT:    sbcs xzr, x1, x3184; CHECK-NEXT:    b.lo .LBB13_2185; CHECK-NEXT:  // %bb.1: // %call186; CHECK-NEXT:    str x30, [sp, #-16]! // 8-byte Folded Spill187; CHECK-NEXT:    bl call188; CHECK-NEXT:    ldr x30, [sp], #16 // 8-byte Folded Reload189; CHECK-NEXT:  .LBB13_2: // %exit190; CHECK-NEXT:    ret191    %cmp = icmp uge i128 %a, %b192    br i1 %cmp, label %call, label %exit193call:194    call void @call()195    br label %exit196exit:197    ret void198}199 200define void @br_on_cmp_i128_ult(i128 %a, i128 %b) nounwind {201; CHECK-LABEL: br_on_cmp_i128_ult:202; CHECK:       // %bb.0:203; CHECK-NEXT:    cmp x0, x2204; CHECK-NEXT:    sbcs xzr, x1, x3205; CHECK-NEXT:    b.hs .LBB14_2206; CHECK-NEXT:  // %bb.1: // %call207; CHECK-NEXT:    str x30, [sp, #-16]! // 8-byte Folded Spill208; CHECK-NEXT:    bl call209; CHECK-NEXT:    ldr x30, [sp], #16 // 8-byte Folded Reload210; CHECK-NEXT:  .LBB14_2: // %exit211; CHECK-NEXT:    ret212    %cmp = icmp ult i128 %a, %b213    br i1 %cmp, label %call, label %exit214call:215    call void @call()216    br label %exit217exit:218    ret void219}220 221define void @br_on_cmp_i128_ule(i128 %a, i128 %b) nounwind {222; CHECK-LABEL: br_on_cmp_i128_ule:223; CHECK:       // %bb.0:224; CHECK-NEXT:    cmp x2, x0225; CHECK-NEXT:    sbcs xzr, x3, x1226; CHECK-NEXT:    b.lo .LBB15_2227; CHECK-NEXT:  // %bb.1: // %call228; CHECK-NEXT:    str x30, [sp, #-16]! // 8-byte Folded Spill229; CHECK-NEXT:    bl call230; CHECK-NEXT:    ldr x30, [sp], #16 // 8-byte Folded Reload231; CHECK-NEXT:  .LBB15_2: // %exit232; CHECK-NEXT:    ret233    %cmp = icmp ule i128 %a, %b234    br i1 %cmp, label %call, label %exit235call:236    call void @call()237    br label %exit238exit:239    ret void240}241 242define void @br_on_cmp_i128_sgt(i128 %a, i128 %b) nounwind {243; CHECK-LABEL: br_on_cmp_i128_sgt:244; CHECK:       // %bb.0:245; CHECK-NEXT:    cmp x2, x0246; CHECK-NEXT:    sbcs xzr, x3, x1247; CHECK-NEXT:    b.ge .LBB16_2248; CHECK-NEXT:  // %bb.1: // %call249; CHECK-NEXT:    str x30, [sp, #-16]! // 8-byte Folded Spill250; CHECK-NEXT:    bl call251; CHECK-NEXT:    ldr x30, [sp], #16 // 8-byte Folded Reload252; CHECK-NEXT:  .LBB16_2: // %exit253; CHECK-NEXT:    ret254    %cmp = icmp sgt i128 %a, %b255    br i1 %cmp, label %call, label %exit256call:257    call void @call()258    br label %exit259exit:260    ret void261}262 263define void @br_on_cmp_i128_sge(i128 %a, i128 %b) nounwind {264; CHECK-LABEL: br_on_cmp_i128_sge:265; CHECK:       // %bb.0:266; CHECK-NEXT:    cmp x0, x2267; CHECK-NEXT:    sbcs xzr, x1, x3268; CHECK-NEXT:    b.lt .LBB17_2269; CHECK-NEXT:  // %bb.1: // %call270; CHECK-NEXT:    str x30, [sp, #-16]! // 8-byte Folded Spill271; CHECK-NEXT:    bl call272; CHECK-NEXT:    ldr x30, [sp], #16 // 8-byte Folded Reload273; CHECK-NEXT:  .LBB17_2: // %exit274; CHECK-NEXT:    ret275    %cmp = icmp sge i128 %a, %b276    br i1 %cmp, label %call, label %exit277call:278    call void @call()279    br label %exit280exit:281    ret void282}283 284define void @br_on_cmp_i128_slt(i128 %a, i128 %b) nounwind {285; CHECK-LABEL: br_on_cmp_i128_slt:286; CHECK:       // %bb.0:287; CHECK-NEXT:    cmp x0, x2288; CHECK-NEXT:    sbcs xzr, x1, x3289; CHECK-NEXT:    b.ge .LBB18_2290; CHECK-NEXT:  // %bb.1: // %call291; CHECK-NEXT:    str x30, [sp, #-16]! // 8-byte Folded Spill292; CHECK-NEXT:    bl call293; CHECK-NEXT:    ldr x30, [sp], #16 // 8-byte Folded Reload294; CHECK-NEXT:  .LBB18_2: // %exit295; CHECK-NEXT:    ret296    %cmp = icmp slt i128 %a, %b297    br i1 %cmp, label %call, label %exit298call:299    call void @call()300    br label %exit301exit:302    ret void303}304 305define void @br_on_cmp_i128_sle(i128 %a, i128 %b) nounwind {306; CHECK-LABEL: br_on_cmp_i128_sle:307; CHECK:       // %bb.0:308; CHECK-NEXT:    cmp x2, x0309; CHECK-NEXT:    sbcs xzr, x3, x1310; CHECK-NEXT:    b.lt .LBB19_2311; CHECK-NEXT:  // %bb.1: // %call312; CHECK-NEXT:    str x30, [sp, #-16]! // 8-byte Folded Spill313; CHECK-NEXT:    bl call314; CHECK-NEXT:    ldr x30, [sp], #16 // 8-byte Folded Reload315; CHECK-NEXT:  .LBB19_2: // %exit316; CHECK-NEXT:    ret317    %cmp = icmp sle i128 %a, %b318    br i1 %cmp, label %call, label %exit319call:320    call void @call()321    br label %exit322exit:323    ret void324}325 326