brintos

brintos / llvm-project-archived public Read only

0
0
Text · 8.4 KiB · 613f8fb Raw
314 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -verify-machineinstrs -mcpu=pwr9 -mtriple=powerpc64le-unknown-linux-gnu < %s | FileCheck %s --check-prefix=CHECK-P93; RUN: llc -verify-machineinstrs -mcpu=pwr8 -mtriple=powerpc64-unknown-linux-gnu < %s | FileCheck %s --check-prefix=CHECK-P84; RUN: llc -verify-machineinstrs -mcpu=pwr8 -mtriple=powerpc64-ibm-aix-xcoff -vec-extabi < %s | FileCheck %s --check-prefix=CHECK-P85 6define signext i64 @maddld64(i64 signext %a, i64 signext %b) {7; CHECK-P9-LABEL: maddld64:8; CHECK-P9:       # %bb.0: # %entry9; CHECK-P9-NEXT:    maddld 3, 4, 3, 310; CHECK-P9-NEXT:    blr11;12; CHECK-P8-LABEL: maddld64:13; CHECK-P8:       # %bb.0: # %entry14; CHECK-P8-NEXT:    mulld 4, 4, 315; CHECK-P8-NEXT:    add 3, 4, 316; CHECK-P8-NEXT:    blr17 18entry:19  %mul = mul i64 %b, %a20  %add = add i64 %mul, %a21  ret i64 %add22}23 24define signext i32 @maddld32(i32 signext %a, i32 signext %b) {25; CHECK-P9-LABEL: maddld32:26; CHECK-P9:       # %bb.0: # %entry27; CHECK-P9-NEXT:    maddld 3, 4, 3, 328; CHECK-P9-NEXT:    extsw 3, 329; CHECK-P9-NEXT:    blr30;31; CHECK-P8-LABEL: maddld32:32; CHECK-P8:       # %bb.0: # %entry33; CHECK-P8-NEXT:    mullw 4, 4, 334; CHECK-P8-NEXT:    add 3, 4, 335; CHECK-P8-NEXT:    extsw 3, 336; CHECK-P8-NEXT:    blr37 38entry:39  %mul = mul i32 %b, %a40  %add = add i32 %mul, %a41  ret i32 %add42}43 44define signext i16 @maddld16(i16 signext %a, i16 signext %b, i16 signext %c) {45; CHECK-P9-LABEL: maddld16:46; CHECK-P9:       # %bb.0: # %entry47; CHECK-P9-NEXT:    maddld 3, 4, 3, 548; CHECK-P9-NEXT:    extsh 3, 349; CHECK-P9-NEXT:    blr50;51; CHECK-P8-LABEL: maddld16:52; CHECK-P8:       # %bb.0: # %entry53; CHECK-P8-NEXT:    mullw 3, 4, 354; CHECK-P8-NEXT:    add 3, 3, 555; CHECK-P8-NEXT:    extsh 3, 356; CHECK-P8-NEXT:    blr57 58entry:59  %mul = mul i16 %b, %a60  %add = add i16 %mul, %c61  ret i16 %add62}63 64define zeroext i32 @maddld32zeroext(i32 zeroext %a, i32 zeroext %b) {65; CHECK-P9-LABEL: maddld32zeroext:66; CHECK-P9:       # %bb.0: # %entry67; CHECK-P9-NEXT:    maddld 3, 4, 3, 368; CHECK-P9-NEXT:    clrldi 3, 3, 3269; CHECK-P9-NEXT:    blr70;71; CHECK-P8-LABEL: maddld32zeroext:72; CHECK-P8:       # %bb.0: # %entry73; CHECK-P8-NEXT:    mullw 4, 4, 374; CHECK-P8-NEXT:    add 3, 4, 375; CHECK-P8-NEXT:    clrldi 3, 3, 3276; CHECK-P8-NEXT:    blr77 78entry:79  %mul = mul i32 %b, %a80  %add = add i32 %mul, %a81  ret i32 %add82}83 84define signext i32 @maddld32nsw(i32 signext %a, i32 signext %b) {85; CHECK-P9-LABEL: maddld32nsw:86; CHECK-P9:       # %bb.0: # %entry87; CHECK-P9-NEXT:    maddld 3, 4, 3, 388; CHECK-P9-NEXT:    extsw 3, 389; CHECK-P9-NEXT:    blr90;91; CHECK-P8-LABEL: maddld32nsw:92; CHECK-P8:       # %bb.0: # %entry93; CHECK-P8-NEXT:    mullw 4, 4, 394; CHECK-P8-NEXT:    add 3, 4, 395; CHECK-P8-NEXT:    extsw 3, 396; CHECK-P8-NEXT:    blr97 98entry:99  %mul = mul nsw i32 %b, %a100  %add = add nsw i32 %mul, %a101  ret i32 %add102}103 104define zeroext i32 @maddld32nuw(i32 zeroext %a, i32 zeroext %b) {105; CHECK-P9-LABEL: maddld32nuw:106; CHECK-P9:       # %bb.0: # %entry107; CHECK-P9-NEXT:    maddld 3, 4, 3, 3108; CHECK-P9-NEXT:    clrldi 3, 3, 32109; CHECK-P9-NEXT:    blr110;111; CHECK-P8-LABEL: maddld32nuw:112; CHECK-P8:       # %bb.0: # %entry113; CHECK-P8-NEXT:    mullw 4, 4, 3114; CHECK-P8-NEXT:    add 3, 4, 3115; CHECK-P8-NEXT:    clrldi 3, 3, 32116; CHECK-P8-NEXT:    blr117 118entry:119  %mul = mul nuw i32 %b, %a120  %add = add nuw i32 %mul, %a121  ret i32 %add122}123 124define signext i64 @maddld64_imm(i64 signext %a, i64 signext %b) {125; CHECK-P9-LABEL: maddld64_imm:126; CHECK-P9:       # %bb.0: # %entry127; CHECK-P9-NEXT:    mulli 4, 4, 13128; CHECK-P9-NEXT:    add 3, 4, 3129; CHECK-P9-NEXT:    blr130;131; CHECK-P8-LABEL: maddld64_imm:132; CHECK-P8:       # %bb.0: # %entry133; CHECK-P8-NEXT:    mulli 4, 4, 13134; CHECK-P8-NEXT:    add 3, 4, 3135; CHECK-P8-NEXT:    blr136entry:137  %mul = mul i64 %b, 13138  %add = add i64 %mul, %a139  ret i64 %add140}141 142define signext i32 @maddld32_imm(i32 signext %a, i32 signext %b) {143; CHECK-P9-LABEL: maddld32_imm:144; CHECK-P9:       # %bb.0: # %entry145; CHECK-P9-NEXT:    mullw 3, 4, 3146; CHECK-P9-NEXT:    addi 3, 3, 13147; CHECK-P9-NEXT:    extsw 3, 3148; CHECK-P9-NEXT:    blr149;150; CHECK-P8-LABEL: maddld32_imm:151; CHECK-P8:       # %bb.0: # %entry152; CHECK-P8-NEXT:    mullw 3, 4, 3153; CHECK-P8-NEXT:    addi 3, 3, 13154; CHECK-P8-NEXT:    extsw 3, 3155; CHECK-P8-NEXT:    blr156entry:157  %mul = mul i32 %b, %a158  %add = add i32 %mul, 13159  ret i32 %add160}161 162define signext i16 @maddld16_imm(i16 signext %a, i16 signext %b, i16 signext %c) {163; CHECK-P9-LABEL: maddld16_imm:164; CHECK-P9:       # %bb.0: # %entry165; CHECK-P9-NEXT:    mulli 3, 4, 13166; CHECK-P9-NEXT:    add 3, 3, 5167; CHECK-P9-NEXT:    extsh 3, 3168; CHECK-P9-NEXT:    blr169;170; CHECK-P8-LABEL: maddld16_imm:171; CHECK-P8:       # %bb.0: # %entry172; CHECK-P8-NEXT:    mulli 3, 4, 13173; CHECK-P8-NEXT:    add 3, 3, 5174; CHECK-P8-NEXT:    extsh 3, 3175; CHECK-P8-NEXT:    blr176entry:177  %mul = mul i16 %b, 13178  %add = add i16 %mul, %c179  ret i16 %add180}181 182define zeroext i32 @maddld32zeroext_imm(i32 zeroext %a, i32 zeroext %b) {183; CHECK-P9-LABEL: maddld32zeroext_imm:184; CHECK-P9:       # %bb.0: # %entry185; CHECK-P9-NEXT:    mullw 3, 4, 3186; CHECK-P9-NEXT:    addi 3, 3, 13187; CHECK-P9-NEXT:    clrldi 3, 3, 32188; CHECK-P9-NEXT:    blr189;190; CHECK-P8-LABEL: maddld32zeroext_imm:191; CHECK-P8:       # %bb.0: # %entry192; CHECK-P8-NEXT:    mullw 3, 4, 3193; CHECK-P8-NEXT:    addi 3, 3, 13194; CHECK-P8-NEXT:    clrldi 3, 3, 32195; CHECK-P8-NEXT:    blr196entry:197  %mul = mul i32 %b, %a198  %add = add i32 %mul, 13199  ret i32 %add200}201 202define signext i32 @maddld32nsw_imm(i32 signext %a, i32 signext %b) {203; CHECK-P9-LABEL: maddld32nsw_imm:204; CHECK-P9:       # %bb.0: # %entry205; CHECK-P9-NEXT:    mulli 4, 4, 13206; CHECK-P9-NEXT:    add 3, 4, 3207; CHECK-P9-NEXT:    extsw 3, 3208; CHECK-P9-NEXT:    blr209;210; CHECK-P8-LABEL: maddld32nsw_imm:211; CHECK-P8:       # %bb.0: # %entry212; CHECK-P8-NEXT:    mulli 4, 4, 13213; CHECK-P8-NEXT:    add 3, 4, 3214; CHECK-P8-NEXT:    extsw 3, 3215; CHECK-P8-NEXT:    blr216entry:217  %mul = mul nsw i32 %b, 13218  %add = add nsw i32 %mul, %a219  ret i32 %add220}221 222define zeroext i32 @maddld32nuw_imm(i32 zeroext %a, i32 zeroext %b) {223; CHECK-P9-LABEL: maddld32nuw_imm:224; CHECK-P9:       # %bb.0: # %entry225; CHECK-P9-NEXT:    mullw 3, 4, 3226; CHECK-P9-NEXT:    addi 3, 3, 13227; CHECK-P9-NEXT:    clrldi 3, 3, 32228; CHECK-P9-NEXT:    blr229;230; CHECK-P8-LABEL: maddld32nuw_imm:231; CHECK-P8:       # %bb.0: # %entry232; CHECK-P8-NEXT:    mullw 3, 4, 3233; CHECK-P8-NEXT:    addi 3, 3, 13234; CHECK-P8-NEXT:    clrldi 3, 3, 32235; CHECK-P8-NEXT:    blr236entry:237  %mul = mul nuw i32 %b, %a238  %add = add nuw i32 %mul, 13239  ret i32 %add240}241 242define zeroext i32 @maddld32nuw_imm_imm(i32 zeroext %b) {243; CHECK-P9-LABEL: maddld32nuw_imm_imm:244; CHECK-P9:       # %bb.0: # %entry245; CHECK-P9-NEXT:    mulli 3, 3, 18246; CHECK-P9-NEXT:    addi 3, 3, 13247; CHECK-P9-NEXT:    clrldi 3, 3, 32248; CHECK-P9-NEXT:    blr249;250; CHECK-P8-LABEL: maddld32nuw_imm_imm:251; CHECK-P8:       # %bb.0: # %entry252; CHECK-P8-NEXT:    mulli 3, 3, 18253; CHECK-P8-NEXT:    addi 3, 3, 13254; CHECK-P8-NEXT:    clrldi 3, 3, 32255; CHECK-P8-NEXT:    blr256entry:257  %mul = mul nuw i32 %b, 18258  %add = add nuw i32 %mul, 13259  ret i32 %add260}261 262define zeroext i32 @maddld32nuw_bigimm_imm(i32 zeroext %b) {263; CHECK-P9-LABEL: maddld32nuw_bigimm_imm:264; CHECK-P9:       # %bb.0: # %entry265; CHECK-P9-NEXT:    lis 4, 26127266; CHECK-P9-NEXT:    ori 4, 4, 63251267; CHECK-P9-NEXT:    mullw 3, 3, 4268; CHECK-P9-NEXT:    addi 3, 3, 13269; CHECK-P9-NEXT:    clrldi 3, 3, 32270; CHECK-P9-NEXT:    blr271;272; CHECK-P8-LABEL: maddld32nuw_bigimm_imm:273; CHECK-P8:       # %bb.0: # %entry274; CHECK-P8-NEXT:    lis 4, 26127275; CHECK-P8-NEXT:    ori 4, 4, 63251276; CHECK-P8-NEXT:    mullw 3, 3, 4277; CHECK-P8-NEXT:    addi 3, 3, 13278; CHECK-P8-NEXT:    clrldi 3, 3, 32279; CHECK-P8-NEXT:    blr280entry:281  %mul = mul nuw i32 %b, 1712322323282  %add = add nuw i32 %mul, 13283  ret i32 %add284}285 286define zeroext i32 @maddld32nuw_bigimm_bigimm(i32 zeroext %b) {287; CHECK-P9-LABEL: maddld32nuw_bigimm_bigimm:288; CHECK-P9:       # %bb.0: # %entry289; CHECK-P9-NEXT:    lis 4, -865290; CHECK-P9-NEXT:    lis 5, 26127291; CHECK-P9-NEXT:    ori 4, 4, 42779292; CHECK-P9-NEXT:    ori 5, 5, 63251293; CHECK-P9-NEXT:    maddld 3, 3, 5, 4294; CHECK-P9-NEXT:    clrldi 3, 3, 32295; CHECK-P9-NEXT:    blr296;297; CHECK-P8-LABEL: maddld32nuw_bigimm_bigimm:298; CHECK-P8:       # %bb.0: # %entry299; CHECK-P8-NEXT:    lis 4, 26127300; CHECK-P8-NEXT:    ori 4, 4, 63251301; CHECK-P8-NEXT:    mullw 3, 3, 4302; CHECK-P8-NEXT:    addi 3, 3, -22757303; CHECK-P8-NEXT:    addis 3, 3, -864304; CHECK-P8-NEXT:    clrldi 3, 3, 32305; CHECK-P8-NEXT:    blr306 307 308 309entry:310  %mul = mul nuw i32 %b, 1712322323311  %add = add nuw i32 %mul, 17123223323312  ret i32 %add313}314