brintos

brintos / llvm-project-archived public Read only

0
0
Text · 11.2 KiB · 3cb67b3 Raw
431 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -verify-machineinstrs -csky-no-aliases -mattr=+e2 -mattr=+2e3 < %s -mtriple=csky | FileCheck %s3; RUN: llc -verify-machineinstrs -csky-no-aliases < %s -mtriple=csky  | FileCheck %s --check-prefix=GENERIC4 5; i32/i16/i8/i1 --> i646define i64 @zextR_i64_0(i32 %x) {7; CHECK-LABEL: zextR_i64_0:8; CHECK:       # %bb.0: # %entry9; CHECK-NEXT:    movi16 a1, 010; CHECK-NEXT:    rts1611;12; GENERIC-LABEL: zextR_i64_0:13; GENERIC:       # %bb.0: # %entry14; GENERIC-NEXT:    .cfi_def_cfa_offset 015; GENERIC-NEXT:    subi16 sp, sp, 416; GENERIC-NEXT:    .cfi_def_cfa_offset 417; GENERIC-NEXT:    movi16 a1, 018; GENERIC-NEXT:    addi16 sp, sp, 419; GENERIC-NEXT:    rts1620entry:21  %zext = zext i32 %x to i6422  ret i64 %zext23}24 25define i64 @zextR_i64_1(i16 %x) {26; CHECK-LABEL: zextR_i64_1:27; CHECK:       # %bb.0: # %entry28; CHECK-NEXT:    zexth16 a0, a029; CHECK-NEXT:    movi16 a1, 030; CHECK-NEXT:    rts1631;32; GENERIC-LABEL: zextR_i64_1:33; GENERIC:       # %bb.0: # %entry34; GENERIC-NEXT:    .cfi_def_cfa_offset 035; GENERIC-NEXT:    subi16 sp, sp, 436; GENERIC-NEXT:    .cfi_def_cfa_offset 437; GENERIC-NEXT:    movi16 a1, 038; GENERIC-NEXT:    lsli16 a2, a1, 2439; GENERIC-NEXT:    lsli16 a1, a1, 1640; GENERIC-NEXT:    or16 a1, a241; GENERIC-NEXT:    movi16 a2, 25542; GENERIC-NEXT:    lsli16 a3, a2, 843; GENERIC-NEXT:    or16 a3, a144; GENERIC-NEXT:    or16 a3, a245; GENERIC-NEXT:    and16 a0, a346; GENERIC-NEXT:    movi16 a1, 047; GENERIC-NEXT:    addi16 sp, sp, 448; GENERIC-NEXT:    rts1649entry:50  %zext = zext i16 %x to i6451  ret i64 %zext52}53 54define i64 @zextR_i64_2(i8 %x) {55; CHECK-LABEL: zextR_i64_2:56; CHECK:       # %bb.0: # %entry57; CHECK-NEXT:    zextb16 a0, a058; CHECK-NEXT:    movi16 a1, 059; CHECK-NEXT:    rts1660;61; GENERIC-LABEL: zextR_i64_2:62; GENERIC:       # %bb.0: # %entry63; GENERIC-NEXT:    .cfi_def_cfa_offset 064; GENERIC-NEXT:    subi16 sp, sp, 465; GENERIC-NEXT:    .cfi_def_cfa_offset 466; GENERIC-NEXT:    movi16 a1, 25567; GENERIC-NEXT:    and16 a0, a168; GENERIC-NEXT:    movi16 a1, 069; GENERIC-NEXT:    addi16 sp, sp, 470; GENERIC-NEXT:    rts1671entry:72  %zext = zext i8 %x to i6473  ret i64 %zext74}75 76define i64 @zextR_i64_3(i1 %x) {77; CHECK-LABEL: zextR_i64_3:78; CHECK:       # %bb.0: # %entry79; CHECK-NEXT:    andi32 a0, a0, 180; CHECK-NEXT:    movi16 a1, 081; CHECK-NEXT:    rts1682;83; GENERIC-LABEL: zextR_i64_3:84; GENERIC:       # %bb.0: # %entry85; GENERIC-NEXT:    .cfi_def_cfa_offset 086; GENERIC-NEXT:    subi16 sp, sp, 487; GENERIC-NEXT:    .cfi_def_cfa_offset 488; GENERIC-NEXT:    movi16 a1, 189; GENERIC-NEXT:    and16 a0, a190; GENERIC-NEXT:    movi16 a1, 091; GENERIC-NEXT:    addi16 sp, sp, 492; GENERIC-NEXT:    rts1693entry:94  %zext = zext i1 %x to i6495  ret i64 %zext96}97 98; i16/i8/i1 --> i3299define i32 @zextR_i32_1(i16 %x) {100; CHECK-LABEL: zextR_i32_1:101; CHECK:       # %bb.0: # %entry102; CHECK-NEXT:    zexth16 a0, a0103; CHECK-NEXT:    rts16104;105; GENERIC-LABEL: zextR_i32_1:106; GENERIC:       # %bb.0: # %entry107; GENERIC-NEXT:    .cfi_def_cfa_offset 0108; GENERIC-NEXT:    subi16 sp, sp, 4109; GENERIC-NEXT:    .cfi_def_cfa_offset 4110; GENERIC-NEXT:    movi16 a1, 0111; GENERIC-NEXT:    lsli16 a2, a1, 24112; GENERIC-NEXT:    lsli16 a1, a1, 16113; GENERIC-NEXT:    or16 a1, a2114; GENERIC-NEXT:    movi16 a2, 255115; GENERIC-NEXT:    lsli16 a3, a2, 8116; GENERIC-NEXT:    or16 a3, a1117; GENERIC-NEXT:    or16 a3, a2118; GENERIC-NEXT:    and16 a0, a3119; GENERIC-NEXT:    addi16 sp, sp, 4120; GENERIC-NEXT:    rts16121entry:122  %zext = zext i16 %x to i32123  ret i32 %zext124}125 126define i32 @zextR_i32_2(i8 %x) {127; CHECK-LABEL: zextR_i32_2:128; CHECK:       # %bb.0: # %entry129; CHECK-NEXT:    zextb16 a0, a0130; CHECK-NEXT:    rts16131;132; GENERIC-LABEL: zextR_i32_2:133; GENERIC:       # %bb.0: # %entry134; GENERIC-NEXT:    .cfi_def_cfa_offset 0135; GENERIC-NEXT:    subi16 sp, sp, 4136; GENERIC-NEXT:    .cfi_def_cfa_offset 4137; GENERIC-NEXT:    movi16 a1, 255138; GENERIC-NEXT:    and16 a0, a1139; GENERIC-NEXT:    addi16 sp, sp, 4140; GENERIC-NEXT:    rts16141entry:142  %zext = zext i8 %x to i32143  ret i32 %zext144}145 146define i32 @zextR_i32_3(i1 %x) {147; CHECK-LABEL: zextR_i32_3:148; CHECK:       # %bb.0: # %entry149; CHECK-NEXT:    andi32 a0, a0, 1150; CHECK-NEXT:    rts16151;152; GENERIC-LABEL: zextR_i32_3:153; GENERIC:       # %bb.0: # %entry154; GENERIC-NEXT:    .cfi_def_cfa_offset 0155; GENERIC-NEXT:    subi16 sp, sp, 4156; GENERIC-NEXT:    .cfi_def_cfa_offset 4157; GENERIC-NEXT:    movi16 a1, 1158; GENERIC-NEXT:    and16 a0, a1159; GENERIC-NEXT:    addi16 sp, sp, 4160; GENERIC-NEXT:    rts16161entry:162  %zext = zext i1 %x to i32163  ret i32 %zext164}165 166; i8/i1 --> i16167define i16 @zextR_i16_2(i8 %x) {168; CHECK-LABEL: zextR_i16_2:169; CHECK:       # %bb.0: # %entry170; CHECK-NEXT:    zextb16 a0, a0171; CHECK-NEXT:    rts16172;173; GENERIC-LABEL: zextR_i16_2:174; GENERIC:       # %bb.0: # %entry175; GENERIC-NEXT:    .cfi_def_cfa_offset 0176; GENERIC-NEXT:    subi16 sp, sp, 4177; GENERIC-NEXT:    .cfi_def_cfa_offset 4178; GENERIC-NEXT:    movi16 a1, 255179; GENERIC-NEXT:    and16 a0, a1180; GENERIC-NEXT:    addi16 sp, sp, 4181; GENERIC-NEXT:    rts16182entry:183  %zext = zext i8 %x to i16184  ret i16 %zext185}186 187define i16 @zextR_i16_3(i1 %x) {188; CHECK-LABEL: zextR_i16_3:189; CHECK:       # %bb.0: # %entry190; CHECK-NEXT:    andi32 a0, a0, 1191; CHECK-NEXT:    rts16192;193; GENERIC-LABEL: zextR_i16_3:194; GENERIC:       # %bb.0: # %entry195; GENERIC-NEXT:    .cfi_def_cfa_offset 0196; GENERIC-NEXT:    subi16 sp, sp, 4197; GENERIC-NEXT:    .cfi_def_cfa_offset 4198; GENERIC-NEXT:    movi16 a1, 1199; GENERIC-NEXT:    and16 a0, a1200; GENERIC-NEXT:    addi16 sp, sp, 4201; GENERIC-NEXT:    rts16202entry:203  %zext = zext i1 %x to i16204  ret i16 %zext205}206 207;i1 --> i8208define i8 @zextR_i8_3(i1 %x) {209; CHECK-LABEL: zextR_i8_3:210; CHECK:       # %bb.0: # %entry211; CHECK-NEXT:    andi32 a0, a0, 1212; CHECK-NEXT:    rts16213;214; GENERIC-LABEL: zextR_i8_3:215; GENERIC:       # %bb.0: # %entry216; GENERIC-NEXT:    .cfi_def_cfa_offset 0217; GENERIC-NEXT:    subi16 sp, sp, 4218; GENERIC-NEXT:    .cfi_def_cfa_offset 4219; GENERIC-NEXT:    movi16 a1, 1220; GENERIC-NEXT:    and16 a0, a1221; GENERIC-NEXT:    addi16 sp, sp, 4222; GENERIC-NEXT:    rts16223entry:224  %zext = zext i1 %x to i8225  ret i8 %zext226}227 228; i32/i16/i8/i1 --> i64229define i64 @sextR_i64_0(i32 %x) {230; CHECK-LABEL: sextR_i64_0:231; CHECK:       # %bb.0: # %entry232; CHECK-NEXT:    asri16 a1, a0, 31233; CHECK-NEXT:    rts16234;235; GENERIC-LABEL: sextR_i64_0:236; GENERIC:       # %bb.0: # %entry237; GENERIC-NEXT:    .cfi_def_cfa_offset 0238; GENERIC-NEXT:    subi16 sp, sp, 4239; GENERIC-NEXT:    .cfi_def_cfa_offset 4240; GENERIC-NEXT:    asri16 a1, a0, 31241; GENERIC-NEXT:    addi16 sp, sp, 4242; GENERIC-NEXT:    rts16243entry:244  %sext = sext i32 %x to i64245  ret i64 %sext246}247 248define i64 @sextR_i64_1(i16 %x) {249; CHECK-LABEL: sextR_i64_1:250; CHECK:       # %bb.0: # %entry251; CHECK-NEXT:    sexth16 a0, a0252; CHECK-NEXT:    asri16 a1, a0, 31253; CHECK-NEXT:    rts16254;255; GENERIC-LABEL: sextR_i64_1:256; GENERIC:       # %bb.0: # %entry257; GENERIC-NEXT:    .cfi_def_cfa_offset 0258; GENERIC-NEXT:    subi16 sp, sp, 4259; GENERIC-NEXT:    .cfi_def_cfa_offset 4260; GENERIC-NEXT:    sexth16 a0, a0261; GENERIC-NEXT:    asri16 a1, a0, 31262; GENERIC-NEXT:    addi16 sp, sp, 4263; GENERIC-NEXT:    rts16264entry:265  %sext = sext i16 %x to i64266  ret i64 %sext267}268 269define i64 @sextR_i64_2(i8 %x) {270; CHECK-LABEL: sextR_i64_2:271; CHECK:       # %bb.0: # %entry272; CHECK-NEXT:    sextb16 a0, a0273; CHECK-NEXT:    asri16 a1, a0, 31274; CHECK-NEXT:    rts16275;276; GENERIC-LABEL: sextR_i64_2:277; GENERIC:       # %bb.0: # %entry278; GENERIC-NEXT:    .cfi_def_cfa_offset 0279; GENERIC-NEXT:    subi16 sp, sp, 4280; GENERIC-NEXT:    .cfi_def_cfa_offset 4281; GENERIC-NEXT:    sextb16 a0, a0282; GENERIC-NEXT:    asri16 a1, a0, 31283; GENERIC-NEXT:    addi16 sp, sp, 4284; GENERIC-NEXT:    rts16285entry:286  %sext = sext i8 %x to i64287  ret i64 %sext288}289 290define i64 @sextR_i64_3(i1 %x) {291; CHECK-LABEL: sextR_i64_3:292; CHECK:       # %bb.0: # %entry293; CHECK-NEXT:    sext32 a0, a0, 0, 0294; CHECK-NEXT:    mov16 a1, a0295; CHECK-NEXT:    rts16296;297; GENERIC-LABEL: sextR_i64_3:298; GENERIC:       # %bb.0: # %entry299; GENERIC-NEXT:    .cfi_def_cfa_offset 0300; GENERIC-NEXT:    subi16 sp, sp, 4301; GENERIC-NEXT:    .cfi_def_cfa_offset 4302; GENERIC-NEXT:    lsli16 a0, a0, 7303; GENERIC-NEXT:    asri16 a0, a0, 7304; GENERIC-NEXT:    mov16 a1, a0305; GENERIC-NEXT:    addi16 sp, sp, 4306; GENERIC-NEXT:    rts16307entry:308  %sext = sext i1 %x to i64309  ret i64 %sext310}311 312; i16/i8/i1 --> i32313define i32 @sextR_i32_1(i16 %x) {314; CHECK-LABEL: sextR_i32_1:315; CHECK:       # %bb.0: # %entry316; CHECK-NEXT:    sexth16 a0, a0317; CHECK-NEXT:    rts16318;319; GENERIC-LABEL: sextR_i32_1:320; GENERIC:       # %bb.0: # %entry321; GENERIC-NEXT:    .cfi_def_cfa_offset 0322; GENERIC-NEXT:    subi16 sp, sp, 4323; GENERIC-NEXT:    .cfi_def_cfa_offset 4324; GENERIC-NEXT:    sexth16 a0, a0325; GENERIC-NEXT:    addi16 sp, sp, 4326; GENERIC-NEXT:    rts16327entry:328  %sext = sext i16 %x to i32329  ret i32 %sext330}331 332define i32 @sextR_i32_2(i8 %x) {333; CHECK-LABEL: sextR_i32_2:334; CHECK:       # %bb.0: # %entry335; CHECK-NEXT:    sextb16 a0, a0336; CHECK-NEXT:    rts16337;338; GENERIC-LABEL: sextR_i32_2:339; GENERIC:       # %bb.0: # %entry340; GENERIC-NEXT:    .cfi_def_cfa_offset 0341; GENERIC-NEXT:    subi16 sp, sp, 4342; GENERIC-NEXT:    .cfi_def_cfa_offset 4343; GENERIC-NEXT:    sextb16 a0, a0344; GENERIC-NEXT:    addi16 sp, sp, 4345; GENERIC-NEXT:    rts16346entry:347  %sext = sext i8 %x to i32348  ret i32 %sext349}350 351define i32 @sextR_i32_3(i1 %x) {352; CHECK-LABEL: sextR_i32_3:353; CHECK:       # %bb.0: # %entry354; CHECK-NEXT:    sext32 a0, a0, 0, 0355; CHECK-NEXT:    rts16356;357; GENERIC-LABEL: sextR_i32_3:358; GENERIC:       # %bb.0: # %entry359; GENERIC-NEXT:    .cfi_def_cfa_offset 0360; GENERIC-NEXT:    subi16 sp, sp, 4361; GENERIC-NEXT:    .cfi_def_cfa_offset 4362; GENERIC-NEXT:    lsli16 a0, a0, 7363; GENERIC-NEXT:    asri16 a0, a0, 7364; GENERIC-NEXT:    addi16 sp, sp, 4365; GENERIC-NEXT:    rts16366entry:367  %sext = sext i1 %x to i32368  ret i32 %sext369}370 371; i8/i1 --> i16372define i16 @sextR_i16_2(i8 %x) {373; CHECK-LABEL: sextR_i16_2:374; CHECK:       # %bb.0: # %entry375; CHECK-NEXT:    sextb16 a0, a0376; CHECK-NEXT:    rts16377;378; GENERIC-LABEL: sextR_i16_2:379; GENERIC:       # %bb.0: # %entry380; GENERIC-NEXT:    .cfi_def_cfa_offset 0381; GENERIC-NEXT:    subi16 sp, sp, 4382; GENERIC-NEXT:    .cfi_def_cfa_offset 4383; GENERIC-NEXT:    sextb16 a0, a0384; GENERIC-NEXT:    addi16 sp, sp, 4385; GENERIC-NEXT:    rts16386entry:387  %sext = sext i8 %x to i16388  ret i16 %sext389}390 391define i16 @sextR_i16_3(i1 %x) {392; CHECK-LABEL: sextR_i16_3:393; CHECK:       # %bb.0: # %entry394; CHECK-NEXT:    sext32 a0, a0, 0, 0395; CHECK-NEXT:    rts16396;397; GENERIC-LABEL: sextR_i16_3:398; GENERIC:       # %bb.0: # %entry399; GENERIC-NEXT:    .cfi_def_cfa_offset 0400; GENERIC-NEXT:    subi16 sp, sp, 4401; GENERIC-NEXT:    .cfi_def_cfa_offset 4402; GENERIC-NEXT:    lsli16 a0, a0, 7403; GENERIC-NEXT:    asri16 a0, a0, 7404; GENERIC-NEXT:    addi16 sp, sp, 4405; GENERIC-NEXT:    rts16406entry:407  %sext = sext i1 %x to i16408  ret i16 %sext409}410 411;i1 --> i8412define i8 @sextR_i8_3(i1 %x) {413; CHECK-LABEL: sextR_i8_3:414; CHECK:       # %bb.0: # %entry415; CHECK-NEXT:    sext32 a0, a0, 0, 0416; CHECK-NEXT:    rts16417;418; GENERIC-LABEL: sextR_i8_3:419; GENERIC:       # %bb.0: # %entry420; GENERIC-NEXT:    .cfi_def_cfa_offset 0421; GENERIC-NEXT:    subi16 sp, sp, 4422; GENERIC-NEXT:    .cfi_def_cfa_offset 4423; GENERIC-NEXT:    lsli16 a0, a0, 7424; GENERIC-NEXT:    asri16 a0, a0, 7425; GENERIC-NEXT:    addi16 sp, sp, 4426; GENERIC-NEXT:    rts16427entry:428  %sext = sext i1 %x to i8429  ret i8 %sext430}431