347 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -verify-machineinstrs -mtriple=powerpc64le-unknown-linux-gnu \3; RUN: --ppc-asm-full-reg-names -mcpu=pwr8 < %s | FileCheck %s4; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu \5; RUN: --ppc-asm-full-reg-names -mcpu=pwr7 < %s | FileCheck %s6; RUN: llc -verify-machineinstrs -mtriple=powerpc-unknown-aix \7; RUN: --ppc-asm-full-reg-names -mcpu=pwr8 < %s | FileCheck %s8; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-aix \9; RUN: --ppc-asm-full-reg-names -mcpu=pwr8 < %s | FileCheck %s10 11; tw12declare void @llvm.ppc.tw(i32 %a, i32 %b, i32 %c)13define dso_local void @test__twlgt(i32 %a, i32 %b) {14; CHECK-LABEL: test__twlgt:15; CHECK: # %bb.0:16; CHECK-NEXT: twlgt r3, r417; CHECK-NEXT: blr18 call void @llvm.ppc.tw(i32 %a, i32 %b, i32 1)19 ret void20}21 22define dso_local void @test__twllt(i32 %a, i32 %b) {23; CHECK-LABEL: test__twllt:24; CHECK: # %bb.0:25; CHECK-NEXT: twllt r3, r426; CHECK-NEXT: blr27 call void @llvm.ppc.tw(i32 %a, i32 %b, i32 2)28 ret void29}30 31define dso_local void @test__tw3(i32 %a, i32 %b) {32; CHECK-LABEL: test__tw3:33; CHECK: # %bb.0:34; CHECK-NEXT: tw 3, r3, r435; CHECK-NEXT: blr36 call void @llvm.ppc.tw(i32 %a, i32 %b, i32 3)37 ret void38}39 40define dso_local void @test__tweq(i32 %a, i32 %b) {41; CHECK-LABEL: test__tweq:42; CHECK: # %bb.0:43; CHECK-NEXT: tweq r3, r444; CHECK-NEXT: blr45 call void @llvm.ppc.tw(i32 %a, i32 %b, i32 4)46 ret void47}48 49define dso_local void @test__twlge(i32 %a, i32 %b) {50; CHECK-LABEL: test__twlge:51; CHECK: # %bb.0:52; CHECK-NEXT: tw 5, r3, r453; CHECK-NEXT: blr54 call void @llvm.ppc.tw(i32 %a, i32 %b, i32 5)55 ret void56}57 58define dso_local void @test__twlle(i32 %a, i32 %b) {59; CHECK-LABEL: test__twlle:60; CHECK: # %bb.0:61; CHECK-NEXT: tw 6, r3, r462; CHECK-NEXT: blr63 call void @llvm.ppc.tw(i32 %a, i32 %b, i32 6)64 ret void65}66 67define dso_local void @test__twgt(i32 %a, i32 %b) {68; CHECK-LABEL: test__twgt:69; CHECK: # %bb.0:70; CHECK-NEXT: twgt r3, r471; CHECK-NEXT: blr72 call void @llvm.ppc.tw(i32 %a, i32 %b, i32 8)73 ret void74}75 76define dso_local void @test__twge(i32 %a, i32 %b) {77; CHECK-LABEL: test__twge:78; CHECK: # %bb.0:79; CHECK-NEXT: tw 12, r3, r480; CHECK-NEXT: blr81 call void @llvm.ppc.tw(i32 %a, i32 %b, i32 12)82 ret void83}84 85define dso_local void @test__twlt(i32 %a, i32 %b) {86; CHECK-LABEL: test__twlt:87; CHECK: # %bb.0:88; CHECK-NEXT: twlt r3, r489; CHECK-NEXT: blr90 call void @llvm.ppc.tw(i32 %a, i32 %b, i32 16)91 ret void92}93 94define dso_local void @test__twle(i32 %a, i32 %b) {95; CHECK-LABEL: test__twle:96; CHECK: # %bb.0:97; CHECK-NEXT: tw 20, r3, r498; CHECK-NEXT: blr99 call void @llvm.ppc.tw(i32 %a, i32 %b, i32 20)100 ret void101}102 103define dso_local void @test__twne24(i32 %a, i32 %b) {104; CHECK-LABEL: test__twne24:105; CHECK: # %bb.0:106; CHECK-NEXT: twne r3, r4107; CHECK-NEXT: blr108 call void @llvm.ppc.tw(i32 %a, i32 %b, i32 24)109 ret void110}111 112define dso_local void @test__twu(i32 %a, i32 %b) {113; CHECK-LABEL: test__twu:114; CHECK: # %bb.0:115; CHECK-NEXT: twu r3, r4116; CHECK-NEXT: blr117 call void @llvm.ppc.tw(i32 %a, i32 %b, i32 31)118 ret void119}120 121define dso_local void @test__tw_no_match(i32 %a, i32 %b) {122; CHECK-LABEL: test__tw_no_match:123; CHECK: # %bb.0:124; CHECK-NEXT: tw 13, r3, r4125; CHECK-NEXT: blr126 call void @llvm.ppc.tw(i32 %a, i32 %b, i32 13)127 ret void128}129 130; tw -> twi131define dso_local void @test__twi_boundary_reg_imm(i32 %a) {132; CHECK-LABEL: test__twi_boundary_reg_imm:133; CHECK: # %bb.0:134; CHECK-NEXT: twi 3, r3, 32767135; CHECK-NEXT: blr136 call void @llvm.ppc.tw(i32 %a, i32 32767, i32 3)137 ret void138}139 140define dso_local void @test__twi_boundary_imm_reg(i32 %a) {141; CHECK-LABEL: test__twi_boundary_imm_reg:142; CHECK: # %bb.0:143; CHECK-NEXT: twi 3, r3, 32767144; CHECK-NEXT: blr145 call void @llvm.ppc.tw(i32 32767, i32 %a, i32 3)146 ret void147}148 149define dso_local void @test__twi_boundary1_reg_imm(i32 %a) {150; CHECK-LABEL: test__twi_boundary1_reg_imm:151; CHECK: # %bb.0:152; CHECK-NEXT: twi 3, r3, -32768153; CHECK-NEXT: blr154 call void @llvm.ppc.tw(i32 %a, i32 -32768, i32 3)155 ret void156}157 158define dso_local void @test__twi_boundary1_imm_reg(i32 %a) {159; CHECK-LABEL: test__twi_boundary1_imm_reg:160; CHECK: # %bb.0:161; CHECK-NEXT: twi 3, r3, -32768162; CHECK-NEXT: blr163 call void @llvm.ppc.tw(i32 -32768, i32 %a, i32 3)164 ret void165}166 167define dso_local void @test__tw_boundary2_reg_imm(i32 %a) {168; CHECK-LABEL: test__tw_boundary2_reg_imm:169; CHECK: # %bb.0:170; CHECK-NEXT: lis r4, 0171; CHECK-NEXT: ori r4, r4, 32768172; CHECK-NEXT: tw 3, r3, r4173; CHECK-NEXT: blr174 call void @llvm.ppc.tw(i32 %a, i32 32768, i32 3)175 ret void176}177 178define dso_local void @test__tw_boundary2_imm_reg(i32 %a) {179; CHECK-LABEL: test__tw_boundary2_imm_reg:180; CHECK: # %bb.0:181; CHECK-NEXT: lis r4, 0182; CHECK-NEXT: ori r4, r4, 32768183; CHECK-NEXT: tw 3, r4, r3184; CHECK-NEXT: blr185 call void @llvm.ppc.tw(i32 32768, i32 %a, i32 3)186 ret void187}188 189define dso_local void @test__tw_boundary3_reg_imm(i32 %a) {190; CHECK-LABEL: test__tw_boundary3_reg_imm:191; CHECK: # %bb.0:192; CHECK-NEXT: lis r4, -1193; CHECK-NEXT: ori r4, r4, 32767194; CHECK-NEXT: tw 3, r3, r4195; CHECK-NEXT: blr196 call void @llvm.ppc.tw(i32 %a, i32 -32769, i32 3)197 ret void198}199 200define dso_local void @test__tw_boundary3_imm_reg(i32 %a) {201; CHECK-LABEL: test__tw_boundary3_imm_reg:202; CHECK: # %bb.0:203; CHECK-NEXT: lis r4, -1204; CHECK-NEXT: ori r4, r4, 32767205; CHECK-NEXT: tw 3, r4, r3206; CHECK-NEXT: blr207 call void @llvm.ppc.tw(i32 -32769, i32 %a, i32 3)208 ret void209}210 211define dso_local void @test__twlgti_reg_imm(i32 %a) {212; CHECK-LABEL: test__twlgti_reg_imm:213; CHECK: # %bb.0:214; CHECK-NEXT: twlgti r3, 0215; CHECK-NEXT: blr216 call void @llvm.ppc.tw(i32 %a, i32 0, i32 1)217 ret void218}219 220define dso_local void @test__twllti_imm_reg(i32 %a) {221; CHECK-LABEL: test__twllti_imm_reg:222; CHECK: # %bb.0:223; CHECK-NEXT: twllti r3, 0224; CHECK-NEXT: blr225 call void @llvm.ppc.tw(i32 0, i32 %a, i32 1)226 ret void227}228 229define dso_local void @test__twllti_reg_imm(i32 %a) {230; CHECK-LABEL: test__twllti_reg_imm:231; CHECK: # %bb.0:232; CHECK-NEXT: twllti r3, 1233; CHECK-NEXT: blr234 call void @llvm.ppc.tw(i32 %a, i32 1, i32 2)235 ret void236}237 238define dso_local void @test__twlgti_imm_reg(i32 %a) {239; CHECK-LABEL: test__twlgti_imm_reg:240; CHECK: # %bb.0:241; CHECK-NEXT: twlgti r3, 1242; CHECK-NEXT: blr243 call void @llvm.ppc.tw(i32 1, i32 %a, i32 2)244 ret void245}246 247define dso_local void @test__tweqi_reg_imm(i32 %a) {248; CHECK-LABEL: test__tweqi_reg_imm:249; CHECK: # %bb.0:250; CHECK-NEXT: tweqi r3, 2251; CHECK-NEXT: blr252 call void @llvm.ppc.tw(i32 %a, i32 2, i32 4)253 ret void254}255 256define dso_local void @test__tweqi_imm_reg(i32 %a) {257; CHECK-LABEL: test__tweqi_imm_reg:258; CHECK: # %bb.0:259; CHECK-NEXT: tweqi r3, 2260; CHECK-NEXT: blr261 call void @llvm.ppc.tw(i32 2, i32 %a, i32 4)262 ret void263}264 265define dso_local void @test__twgti_reg_imm(i32 %a) {266; CHECK-LABEL: test__twgti_reg_imm:267; CHECK: # %bb.0:268; CHECK-NEXT: twgti r3, 16269; CHECK-NEXT: blr270 call void @llvm.ppc.tw(i32 %a, i32 16, i32 8)271 ret void272}273 274define dso_local void @test__twlti_imm_reg(i32 %a) {275; CHECK-LABEL: test__twlti_imm_reg:276; CHECK: # %bb.0:277; CHECK-NEXT: twlti r3, 16278; CHECK-NEXT: blr279 call void @llvm.ppc.tw(i32 16, i32 %a, i32 8)280 ret void281}282 283define dso_local void @test__twlti_reg_imm(i32 %a) {284; CHECK-LABEL: test__twlti_reg_imm:285; CHECK: # %bb.0:286; CHECK-NEXT: twlti r3, 64287; CHECK-NEXT: blr288 call void @llvm.ppc.tw(i32 %a, i32 64, i32 16)289 ret void290}291 292define dso_local void @test__twgti_imm_reg(i32 %a) {293; CHECK-LABEL: test__twgti_imm_reg:294; CHECK: # %bb.0:295; CHECK-NEXT: twgti r3, 64296; CHECK-NEXT: blr297 call void @llvm.ppc.tw(i32 64, i32 %a, i32 16)298 ret void299}300 301define dso_local void @test__twnei_reg_imm(i32 %a) {302; CHECK-LABEL: test__twnei_reg_imm:303; CHECK: # %bb.0:304; CHECK-NEXT: twnei r3, 256305; CHECK-NEXT: blr306 call void @llvm.ppc.tw(i32 %a, i32 256, i32 24)307 ret void308}309 310define dso_local void @test__twnei_imm_reg(i32 %a) {311; CHECK-LABEL: test__twnei_imm_reg:312; CHECK: # %bb.0:313; CHECK-NEXT: twnei r3, 256314; CHECK-NEXT: blr315 call void @llvm.ppc.tw(i32 256, i32 %a, i32 24)316 ret void317}318 319define dso_local void @test__twui_reg_imm(i32 %a) {320; CHECK-LABEL: test__twui_reg_imm:321; CHECK: # %bb.0:322; CHECK-NEXT: twui r3, 512323; CHECK-NEXT: blr324 call void @llvm.ppc.tw(i32 %a, i32 512, i32 31)325 ret void326}327 328define dso_local void @test__twui_imm_imm(i32 %a) {329; CHECK-LABEL: test__twui_imm_imm:330; CHECK: # %bb.0:331; CHECK-NEXT: twui r3, 512332; CHECK-NEXT: blr333 call void @llvm.ppc.tw(i32 512, i32 %a, i32 31)334 ret void335}336 337; trap338declare void @llvm.ppc.trap(i32 %a)339define dso_local void @test__trap(i32 %a) {340; CHECK-LABEL: test__trap:341; CHECK: # %bb.0:342; CHECK-NEXT: twnei r3, 0343; CHECK-NEXT: blr344 call void @llvm.ppc.trap(i32 %a)345 ret void346}347