271 lines · plain
1;; Check if manually reserved registers are always excluded from being saved by2;; the function prolog/epilog, even for callee-saved ones, as per GCC behavior.3;; Look at AArch64Features.td for registers excluded from this test.4;; FIXME: Fix machine verifier issues and remove -verify-machineinstrs=0.5 6; RUN: llc < %s -mtriple=aarch64-unknown-linux-gnu -verify-machineinstrs=0 | FileCheck %s7 8define preserve_mostcc void @t1() "target-features"="+reserve-x1" {9; CHECK-LABEL: t1:10; CHECK: // %bb.0:11; CHECK-NEXT: mov w1, #25612; CHECK-NEXT: //APP13; CHECK-NEXT: //NO_APP14; CHECK-NEXT: ret15 call i64 asm sideeffect "", "={x1},{x1}"(i64 256)16 ret void17}18 19define preserve_mostcc void @t2() "target-features"="+reserve-x2" {20; CHECK-LABEL: t2:21; CHECK: // %bb.0:22; CHECK-NEXT: mov w2, #25623; CHECK-NEXT: //APP24; CHECK-NEXT: //NO_APP25; CHECK-NEXT: ret26 call i64 asm sideeffect "", "={x2},{x2}"(i64 256)27 ret void28}29 30define preserve_mostcc void @t3() "target-features"="+reserve-x3" {31; CHECK-LABEL: t3:32; CHECK: // %bb.0:33; CHECK-NEXT: mov w3, #25634; CHECK-NEXT: //APP35; CHECK-NEXT: //NO_APP36; CHECK-NEXT: ret37 call i64 asm sideeffect "", "={x3},{x3}"(i64 256)38 ret void39}40 41define preserve_mostcc void @t4() "target-features"="+reserve-x4" {42; CHECK-LABEL: t4:43; CHECK: // %bb.0:44; CHECK-NEXT: mov w4, #25645; CHECK-NEXT: //APP46; CHECK-NEXT: //NO_APP47; CHECK-NEXT: ret48 call i64 asm sideeffect "", "={x4},{x4}"(i64 256)49 ret void50}51 52define preserve_mostcc void @t5() "target-features"="+reserve-x5" {53; CHECK-LABEL: t5:54; CHECK: // %bb.0:55; CHECK-NEXT: mov w5, #25656; CHECK-NEXT: //APP57; CHECK-NEXT: //NO_APP58; CHECK-NEXT: ret59 call i64 asm sideeffect "", "={x5},{x5}"(i64 256)60 ret void61}62 63define preserve_mostcc void @t6() "target-features"="+reserve-x6" {64; CHECK-LABEL: t6:65; CHECK: // %bb.0:66; CHECK-NEXT: mov w6, #25667; CHECK-NEXT: //APP68; CHECK-NEXT: //NO_APP69; CHECK-NEXT: ret70 call i64 asm sideeffect "", "={x6},{x6}"(i64 256)71 ret void72}73 74define preserve_mostcc void @t7() "target-features"="+reserve-x7" {75; CHECK-LABEL: t7:76; CHECK: // %bb.0:77; CHECK-NEXT: mov w7, #25678; CHECK-NEXT: //APP79; CHECK-NEXT: //NO_APP80; CHECK-NEXT: ret81 call i64 asm sideeffect "", "={x7},{x7}"(i64 256)82 ret void83}84 85define preserve_mostcc void @t9() "target-features"="+reserve-x9" {86; CHECK-LABEL: t9:87; CHECK: // %bb.0:88; CHECK-NEXT: mov w9, #25689; CHECK-NEXT: //APP90; CHECK-NEXT: //NO_APP91; CHECK-NEXT: ret92 call i64 asm sideeffect "", "={x9},{x9}"(i64 256)93 ret void94}95 96define preserve_mostcc void @t10() "target-features"="+reserve-x10" {97; CHECK-LABEL: t10:98; CHECK: // %bb.0:99; CHECK-NEXT: mov w10, #256100; CHECK-NEXT: //APP101; CHECK-NEXT: //NO_APP102; CHECK-NEXT: ret103 call i64 asm sideeffect "", "={x10},{x10}"(i64 256)104 ret void105}106 107define preserve_mostcc void @t11() "target-features"="+reserve-x11" {108; CHECK-LABEL: t11:109; CHECK: // %bb.0:110; CHECK-NEXT: mov w11, #256111; CHECK-NEXT: //APP112; CHECK-NEXT: //NO_APP113; CHECK-NEXT: ret114 call i64 asm sideeffect "", "={x11},{x11}"(i64 256)115 ret void116}117 118define preserve_mostcc void @t12() "target-features"="+reserve-x12" {119; CHECK-LABEL: t12:120; CHECK: // %bb.0:121; CHECK-NEXT: mov w12, #256122; CHECK-NEXT: //APP123; CHECK-NEXT: //NO_APP124; CHECK-NEXT: ret125 call i64 asm sideeffect "", "={x12},{x12}"(i64 256)126 ret void127}128 129define preserve_mostcc void @t13() "target-features"="+reserve-x13" {130; CHECK-LABEL: t13:131; CHECK: // %bb.0:132; CHECK-NEXT: mov w13, #256133; CHECK-NEXT: //APP134; CHECK-NEXT: //NO_APP135; CHECK-NEXT: ret136 call i64 asm sideeffect "", "={x13},{x13}"(i64 256)137 ret void138}139 140define preserve_mostcc void @t14() "target-features"="+reserve-x14" {141; CHECK-LABEL: t14:142; CHECK: // %bb.0:143; CHECK-NEXT: mov w14, #256144; CHECK-NEXT: //APP145; CHECK-NEXT: //NO_APP146; CHECK-NEXT: ret147 call i64 asm sideeffect "", "={x14},{x14}"(i64 256)148 ret void149}150 151define preserve_mostcc void @t15() "target-features"="+reserve-x15" {152; CHECK-LABEL: t15:153; CHECK: // %bb.0:154; CHECK-NEXT: mov w15, #256155; CHECK-NEXT: //APP156; CHECK-NEXT: //NO_APP157; CHECK-NEXT: ret158 call i64 asm sideeffect "", "={x15},{x15}"(i64 256)159 ret void160}161 162define preserve_mostcc void @t18() "target-features"="+reserve-x18" {163; CHECK-LABEL: t18:164; CHECK: // %bb.0:165; CHECK-NEXT: mov w18, #256166; CHECK-NEXT: //APP167; CHECK-NEXT: //NO_APP168; CHECK-NEXT: ret169 call i64 asm sideeffect "", "={x18},{x18}"(i64 256)170 ret void171}172 173define preserve_mostcc void @t20() "target-features"="+reserve-x20" {174; CHECK-LABEL: t20:175; CHECK: // %bb.0:176; CHECK-NEXT: mov w20, #256177; CHECK-NEXT: //APP178; CHECK-NEXT: //NO_APP179; CHECK-NEXT: ret180 call i64 asm sideeffect "", "={x20},{x20}"(i64 256)181 ret void182}183 184define preserve_mostcc void @t21() "target-features"="+reserve-x21" {185; CHECK-LABEL: t21:186; CHECK: // %bb.0:187; CHECK-NEXT: mov w21, #256188; CHECK-NEXT: //APP189; CHECK-NEXT: //NO_APP190; CHECK-NEXT: ret191 call i64 asm sideeffect "", "={x21},{x21}"(i64 256)192 ret void193}194 195define preserve_mostcc void @t22() "target-features"="+reserve-x22" {196; CHECK-LABEL: t22:197; CHECK: // %bb.0:198; CHECK-NEXT: mov w22, #256199; CHECK-NEXT: //APP200; CHECK-NEXT: //NO_APP201; CHECK-NEXT: ret202 call i64 asm sideeffect "", "={x22},{x22}"(i64 256)203 ret void204}205 206define preserve_mostcc void @t23() "target-features"="+reserve-x23" {207; CHECK-LABEL: t23:208; CHECK: // %bb.0:209; CHECK-NEXT: mov w23, #256210; CHECK-NEXT: //APP211; CHECK-NEXT: //NO_APP212; CHECK-NEXT: ret213 call i64 asm sideeffect "", "={x23},{x23}"(i64 256)214 ret void215}216 217define preserve_mostcc void @t24() "target-features"="+reserve-x24" {218; CHECK-LABEL: t24:219; CHECK: // %bb.0:220; CHECK-NEXT: mov w24, #256221; CHECK-NEXT: //APP222; CHECK-NEXT: //NO_APP223; CHECK-NEXT: ret224 call i64 asm sideeffect "", "={x24},{x24}"(i64 256)225 ret void226}227 228define preserve_mostcc void @t25() "target-features"="+reserve-x25" {229; CHECK-LABEL: t25:230; CHECK: // %bb.0:231; CHECK-NEXT: mov w25, #256232; CHECK-NEXT: //APP233; CHECK-NEXT: //NO_APP234; CHECK-NEXT: ret235 call i64 asm sideeffect "", "={x25},{x25}"(i64 256)236 ret void237}238 239define preserve_mostcc void @t26() "target-features"="+reserve-x26" {240; CHECK-LABEL: t26:241; CHECK: // %bb.0:242; CHECK-NEXT: mov w26, #256243; CHECK-NEXT: //APP244; CHECK-NEXT: //NO_APP245; CHECK-NEXT: ret246 call i64 asm sideeffect "", "={x26},{x26}"(i64 256)247 ret void248}249 250define preserve_mostcc void @t27() "target-features"="+reserve-x27" {251; CHECK-LABEL: t27:252; CHECK: // %bb.0:253; CHECK-NEXT: mov w27, #256254; CHECK-NEXT: //APP255; CHECK-NEXT: //NO_APP256; CHECK-NEXT: ret257 call i64 asm sideeffect "", "={x27},{x27}"(i64 256)258 ret void259}260 261define preserve_mostcc void @t28() "target-features"="+reserve-x28" {262; CHECK-LABEL: t28:263; CHECK: // %bb.0:264; CHECK-NEXT: mov w28, #256265; CHECK-NEXT: //APP266; CHECK-NEXT: //NO_APP267; CHECK-NEXT: ret268 call i64 asm sideeffect "", "={x28},{x28}"(i64 256)269 ret void270}271