brintos

brintos / llvm-project-archived public Read only

0
0
Text · 5.9 KiB · 2103c3e Raw
166 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 22; RUN: llc -mtriple=riscv32 -verify-machineinstrs < %s \3; RUN:   | FileCheck -check-prefixes=CHECK32I %s4; RUN: llc -mtriple=riscv32 -mattr=+zcmp -verify-machineinstrs < %s \5; RUN:   | FileCheck -check-prefixes=CHECK32ZCMP %s6; RUN: llc -mtriple=riscv64 -verify-machineinstrs < %s \7; RUN:   | FileCheck -check-prefixes=CHECK64I %s8; RUN: llc -mtriple=riscv64 -mattr=+zcmp -verify-machineinstrs < %s \9; RUN:   | FileCheck -check-prefixes=CHECK64ZCMP %s10 11declare i32 @foo(i32)12declare i32 @func(i32,i32)13 14define i32 @zcmp_mv(i32 %num, i32 %f) nounwind {15; CHECK32I-LABEL: zcmp_mv:16; CHECK32I:       # %bb.0:17; CHECK32I-NEXT:    addi sp, sp, -1618; CHECK32I-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill19; CHECK32I-NEXT:    sw s0, 8(sp) # 4-byte Folded Spill20; CHECK32I-NEXT:    sw s1, 4(sp) # 4-byte Folded Spill21; CHECK32I-NEXT:    sw s2, 0(sp) # 4-byte Folded Spill22; CHECK32I-NEXT:    mv s0, a123; CHECK32I-NEXT:    mv s1, a024; CHECK32I-NEXT:    call func25; CHECK32I-NEXT:    mv s2, a026; CHECK32I-NEXT:    mv a0, s127; CHECK32I-NEXT:    mv a1, s028; CHECK32I-NEXT:    call func29; CHECK32I-NEXT:    add a0, s2, s030; CHECK32I-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload31; CHECK32I-NEXT:    lw s0, 8(sp) # 4-byte Folded Reload32; CHECK32I-NEXT:    lw s1, 4(sp) # 4-byte Folded Reload33; CHECK32I-NEXT:    lw s2, 0(sp) # 4-byte Folded Reload34; CHECK32I-NEXT:    addi sp, sp, 1635; CHECK32I-NEXT:    ret36;37; CHECK32ZCMP-LABEL: zcmp_mv:38; CHECK32ZCMP:       # %bb.0:39; CHECK32ZCMP-NEXT:    cm.push {ra, s0-s2}, -1640; CHECK32ZCMP-NEXT:    cm.mvsa01 s1, s041; CHECK32ZCMP-NEXT:    call func42; CHECK32ZCMP-NEXT:    mv s2, a043; CHECK32ZCMP-NEXT:    cm.mva01s s1, s044; CHECK32ZCMP-NEXT:    call func45; CHECK32ZCMP-NEXT:    add a0, s2, s046; CHECK32ZCMP-NEXT:    cm.popret {ra, s0-s2}, 1647;48; CHECK64I-LABEL: zcmp_mv:49; CHECK64I:       # %bb.0:50; CHECK64I-NEXT:    addi sp, sp, -3251; CHECK64I-NEXT:    sd ra, 24(sp) # 8-byte Folded Spill52; CHECK64I-NEXT:    sd s0, 16(sp) # 8-byte Folded Spill53; CHECK64I-NEXT:    sd s1, 8(sp) # 8-byte Folded Spill54; CHECK64I-NEXT:    sd s2, 0(sp) # 8-byte Folded Spill55; CHECK64I-NEXT:    mv s0, a156; CHECK64I-NEXT:    mv s1, a057; CHECK64I-NEXT:    call func58; CHECK64I-NEXT:    mv s2, a059; CHECK64I-NEXT:    mv a0, s160; CHECK64I-NEXT:    mv a1, s061; CHECK64I-NEXT:    call func62; CHECK64I-NEXT:    addw a0, s2, s063; CHECK64I-NEXT:    ld ra, 24(sp) # 8-byte Folded Reload64; CHECK64I-NEXT:    ld s0, 16(sp) # 8-byte Folded Reload65; CHECK64I-NEXT:    ld s1, 8(sp) # 8-byte Folded Reload66; CHECK64I-NEXT:    ld s2, 0(sp) # 8-byte Folded Reload67; CHECK64I-NEXT:    addi sp, sp, 3268; CHECK64I-NEXT:    ret69;70; CHECK64ZCMP-LABEL: zcmp_mv:71; CHECK64ZCMP:       # %bb.0:72; CHECK64ZCMP-NEXT:    cm.push {ra, s0-s2}, -3273; CHECK64ZCMP-NEXT:    cm.mvsa01 s1, s074; CHECK64ZCMP-NEXT:    call func75; CHECK64ZCMP-NEXT:    mv s2, a076; CHECK64ZCMP-NEXT:    cm.mva01s s1, s077; CHECK64ZCMP-NEXT:    call func78; CHECK64ZCMP-NEXT:    addw a0, s2, s079; CHECK64ZCMP-NEXT:    cm.popret {ra, s0-s2}, 3280  %call = call i32 @func(i32 %num, i32 %f)81  %call1 = call i32 @func(i32 %num, i32 %f)82  %res = add i32 %call, %f83  ret i32 %res84}85 86define i32 @not_zcmp_mv(i32 %num, i32 %f) nounwind {87; CHECK32I-LABEL: not_zcmp_mv:88; CHECK32I:       # %bb.0:89; CHECK32I-NEXT:    addi sp, sp, -1690; CHECK32I-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill91; CHECK32I-NEXT:    sw s0, 8(sp) # 4-byte Folded Spill92; CHECK32I-NEXT:    sw s1, 4(sp) # 4-byte Folded Spill93; CHECK32I-NEXT:    mv s0, a194; CHECK32I-NEXT:    call foo95; CHECK32I-NEXT:    mv s1, a096; CHECK32I-NEXT:    mv a0, s097; CHECK32I-NEXT:    call foo98; CHECK32I-NEXT:    mv a0, s199; CHECK32I-NEXT:    call foo100; CHECK32I-NEXT:    li a0, 1101; CHECK32I-NEXT:    mv a1, s0102; CHECK32I-NEXT:    call func103; CHECK32I-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload104; CHECK32I-NEXT:    lw s0, 8(sp) # 4-byte Folded Reload105; CHECK32I-NEXT:    lw s1, 4(sp) # 4-byte Folded Reload106; CHECK32I-NEXT:    addi sp, sp, 16107; CHECK32I-NEXT:    ret108;109; CHECK32ZCMP-LABEL: not_zcmp_mv:110; CHECK32ZCMP:       # %bb.0:111; CHECK32ZCMP-NEXT:    cm.push {ra, s0-s1}, -16112; CHECK32ZCMP-NEXT:    mv s0, a1113; CHECK32ZCMP-NEXT:    call foo114; CHECK32ZCMP-NEXT:    mv s1, a0115; CHECK32ZCMP-NEXT:    mv a0, s0116; CHECK32ZCMP-NEXT:    call foo117; CHECK32ZCMP-NEXT:    mv a0, s1118; CHECK32ZCMP-NEXT:    call foo119; CHECK32ZCMP-NEXT:    li a0, 1120; CHECK32ZCMP-NEXT:    mv a1, s0121; CHECK32ZCMP-NEXT:    call func122; CHECK32ZCMP-NEXT:    cm.popret {ra, s0-s1}, 16123;124; CHECK64I-LABEL: not_zcmp_mv:125; CHECK64I:       # %bb.0:126; CHECK64I-NEXT:    addi sp, sp, -32127; CHECK64I-NEXT:    sd ra, 24(sp) # 8-byte Folded Spill128; CHECK64I-NEXT:    sd s0, 16(sp) # 8-byte Folded Spill129; CHECK64I-NEXT:    sd s1, 8(sp) # 8-byte Folded Spill130; CHECK64I-NEXT:    mv s0, a1131; CHECK64I-NEXT:    call foo132; CHECK64I-NEXT:    mv s1, a0133; CHECK64I-NEXT:    mv a0, s0134; CHECK64I-NEXT:    call foo135; CHECK64I-NEXT:    mv a0, s1136; CHECK64I-NEXT:    call foo137; CHECK64I-NEXT:    li a0, 1138; CHECK64I-NEXT:    mv a1, s0139; CHECK64I-NEXT:    call func140; CHECK64I-NEXT:    ld ra, 24(sp) # 8-byte Folded Reload141; CHECK64I-NEXT:    ld s0, 16(sp) # 8-byte Folded Reload142; CHECK64I-NEXT:    ld s1, 8(sp) # 8-byte Folded Reload143; CHECK64I-NEXT:    addi sp, sp, 32144; CHECK64I-NEXT:    ret145;146; CHECK64ZCMP-LABEL: not_zcmp_mv:147; CHECK64ZCMP:       # %bb.0:148; CHECK64ZCMP-NEXT:    cm.push {ra, s0-s1}, -32149; CHECK64ZCMP-NEXT:    mv s0, a1150; CHECK64ZCMP-NEXT:    call foo151; CHECK64ZCMP-NEXT:    mv s1, a0152; CHECK64ZCMP-NEXT:    mv a0, s0153; CHECK64ZCMP-NEXT:    call foo154; CHECK64ZCMP-NEXT:    mv a0, s1155; CHECK64ZCMP-NEXT:    call foo156; CHECK64ZCMP-NEXT:    li a0, 1157; CHECK64ZCMP-NEXT:    mv a1, s0158; CHECK64ZCMP-NEXT:    call func159; CHECK64ZCMP-NEXT:    cm.popret {ra, s0-s1}, 32160  %call = call i32 @foo(i32 %num)161  %call1 = call i32 @foo(i32 %f)162  %tmp = call i32 @foo(i32 %call)163  %res = call i32 @func(i32 1, i32 %f)164  ret i32 %res165}166