brintos

brintos / llvm-project-archived public Read only

0
0
Text · 10.1 KiB · ace3dc9 Raw
344 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=riscv32 -verify-machineinstrs < %s \3; RUN:   | FileCheck -check-prefix=RV32I %s4 5define zeroext i8 @uint8_arg_to_uint8_ret(i8 zeroext %a) nounwind {6; RV32I-LABEL: uint8_arg_to_uint8_ret:7; RV32I:       # %bb.0:8; RV32I-NEXT:    ret9  ret i8 %a10}11 12declare void @receive_uint8(i8 zeroext)13 14define void @pass_uint8_as_uint8(i8 zeroext %a) nounwind {15; RV32I-LABEL: pass_uint8_as_uint8:16; RV32I:       # %bb.0:17; RV32I-NEXT:    addi sp, sp, -1618; RV32I-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill19; RV32I-NEXT:    call receive_uint820; RV32I-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload21; RV32I-NEXT:    addi sp, sp, 1622; RV32I-NEXT:    ret23  call void @receive_uint8(i8 zeroext %a)24  ret void25}26 27declare zeroext i8 @return_uint8()28 29define zeroext i8 @ret_callresult_uint8_as_uint8() nounwind {30; RV32I-LABEL: ret_callresult_uint8_as_uint8:31; RV32I:       # %bb.0:32; RV32I-NEXT:    addi sp, sp, -1633; RV32I-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill34; RV32I-NEXT:    call return_uint835; RV32I-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload36; RV32I-NEXT:    addi sp, sp, 1637; RV32I-NEXT:    ret38  %1 = call zeroext i8 @return_uint8()39  ret i8 %140}41 42define signext i8 @uint8_arg_to_sint8_ret(i8 zeroext %a) nounwind {43; RV32I-LABEL: uint8_arg_to_sint8_ret:44; RV32I:       # %bb.0:45; RV32I-NEXT:    slli a0, a0, 2446; RV32I-NEXT:    srai a0, a0, 2447; RV32I-NEXT:    ret48  ret i8 %a49}50 51declare void @receive_sint8(i8 signext)52 53define void @pass_uint8_as_sint8(i8 zeroext %a) nounwind {54; RV32I-LABEL: pass_uint8_as_sint8:55; RV32I:       # %bb.0:56; RV32I-NEXT:    addi sp, sp, -1657; RV32I-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill58; RV32I-NEXT:    slli a0, a0, 2459; RV32I-NEXT:    srai a0, a0, 2460; RV32I-NEXT:    call receive_sint861; RV32I-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload62; RV32I-NEXT:    addi sp, sp, 1663; RV32I-NEXT:    ret64 65  call void @receive_sint8(i8 signext %a)66  ret void67}68 69define signext i8 @ret_callresult_uint8_as_sint8() nounwind {70; RV32I-LABEL: ret_callresult_uint8_as_sint8:71; RV32I:       # %bb.0:72; RV32I-NEXT:    addi sp, sp, -1673; RV32I-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill74; RV32I-NEXT:    call return_uint875; RV32I-NEXT:    slli a0, a0, 2476; RV32I-NEXT:    srai a0, a0, 2477; RV32I-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload78; RV32I-NEXT:    addi sp, sp, 1679; RV32I-NEXT:    ret80  %1 = call zeroext i8 @return_uint8()81  ret i8 %182}83 84define signext i32 @uint8_arg_to_anyint32_ret(i8 zeroext %a) nounwind {85; RV32I-LABEL: uint8_arg_to_anyint32_ret:86; RV32I:       # %bb.0:87; RV32I-NEXT:    ret88  %1 = zext i8 %a to i3289  ret i32 %190}91 92declare void @receive_anyint32(i32 signext)93 94define void @pass_uint8_as_anyint32(i8 zeroext %a) nounwind {95; RV32I-LABEL: pass_uint8_as_anyint32:96; RV32I:       # %bb.0:97; RV32I-NEXT:    addi sp, sp, -1698; RV32I-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill99; RV32I-NEXT:    call receive_anyint32100; RV32I-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload101; RV32I-NEXT:    addi sp, sp, 16102; RV32I-NEXT:    ret103  %1 = zext i8 %a to i32104  call void @receive_anyint32(i32 signext %1)105  ret void106}107 108define signext i32 @ret_callresult_uint8_as_anyint32() nounwind {109; RV32I-LABEL: ret_callresult_uint8_as_anyint32:110; RV32I:       # %bb.0:111; RV32I-NEXT:    addi sp, sp, -16112; RV32I-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill113; RV32I-NEXT:    call return_uint8114; RV32I-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload115; RV32I-NEXT:    addi sp, sp, 16116; RV32I-NEXT:    ret117  %1 = call zeroext i8 @return_uint8()118  %2 = zext i8 %1 to i32119  ret i32 %2120}121 122define zeroext i8 @sint8_arg_to_uint8_ret(i8 signext %a) nounwind {123; RV32I-LABEL: sint8_arg_to_uint8_ret:124; RV32I:       # %bb.0:125; RV32I-NEXT:    zext.b a0, a0126; RV32I-NEXT:    ret127  ret i8 %a128}129 130define void @pass_sint8_as_uint8(i8 signext %a) nounwind {131; RV32I-LABEL: pass_sint8_as_uint8:132; RV32I:       # %bb.0:133; RV32I-NEXT:    addi sp, sp, -16134; RV32I-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill135; RV32I-NEXT:    zext.b a0, a0136; RV32I-NEXT:    call receive_uint8137; RV32I-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload138; RV32I-NEXT:    addi sp, sp, 16139; RV32I-NEXT:    ret140  call void @receive_uint8(i8 zeroext %a)141  ret void142}143 144declare signext i8 @return_sint8()145 146define zeroext i8 @ret_callresult_sint8_as_uint8() nounwind {147; RV32I-LABEL: ret_callresult_sint8_as_uint8:148; RV32I:       # %bb.0:149; RV32I-NEXT:    addi sp, sp, -16150; RV32I-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill151; RV32I-NEXT:    call return_sint8152; RV32I-NEXT:    zext.b a0, a0153; RV32I-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload154; RV32I-NEXT:    addi sp, sp, 16155; RV32I-NEXT:    ret156  %1 = call signext i8 @return_sint8()157  ret i8 %1158}159 160define signext i8 @sint8_arg_to_sint8_ret(i8 signext %a) nounwind {161; RV32I-LABEL: sint8_arg_to_sint8_ret:162; RV32I:       # %bb.0:163; RV32I-NEXT:    ret164  ret i8 %a165}166 167define void @pass_sint8_as_sint8(i8 signext %a) nounwind {168; RV32I-LABEL: pass_sint8_as_sint8:169; RV32I:       # %bb.0:170; RV32I-NEXT:    addi sp, sp, -16171; RV32I-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill172; RV32I-NEXT:    call receive_sint8173; RV32I-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload174; RV32I-NEXT:    addi sp, sp, 16175; RV32I-NEXT:    ret176  call void @receive_sint8(i8 signext %a)177  ret void178}179 180define signext i8 @ret_callresult_sint8_as_sint8() nounwind {181; RV32I-LABEL: ret_callresult_sint8_as_sint8:182; RV32I:       # %bb.0:183; RV32I-NEXT:    addi sp, sp, -16184; RV32I-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill185; RV32I-NEXT:    call return_sint8186; RV32I-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload187; RV32I-NEXT:    addi sp, sp, 16188; RV32I-NEXT:    ret189  %1 = call signext i8 @return_sint8()190  ret i8 %1191}192 193define signext i32 @sint8_arg_to_anyint32_ret(i8 signext %a) nounwind {194; RV32I-LABEL: sint8_arg_to_anyint32_ret:195; RV32I:       # %bb.0:196; RV32I-NEXT:    ret197  %1 = sext i8 %a to i32198  ret i32 %1199}200 201define void @pass_sint8_as_anyint32(i8 signext %a) nounwind {202; RV32I-LABEL: pass_sint8_as_anyint32:203; RV32I:       # %bb.0:204; RV32I-NEXT:    addi sp, sp, -16205; RV32I-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill206; RV32I-NEXT:    call receive_anyint32207; RV32I-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload208; RV32I-NEXT:    addi sp, sp, 16209; RV32I-NEXT:    ret210  %1 = sext i8 %a to i32211  call void @receive_anyint32(i32 signext %1)212  ret void213}214 215define signext i32 @ret_callresult_sint8_as_anyint32() nounwind {216; RV32I-LABEL: ret_callresult_sint8_as_anyint32:217; RV32I:       # %bb.0:218; RV32I-NEXT:    addi sp, sp, -16219; RV32I-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill220; RV32I-NEXT:    call return_sint8221; RV32I-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload222; RV32I-NEXT:    addi sp, sp, 16223; RV32I-NEXT:    ret224  %1 = call signext i8 @return_sint8()225  %2 = sext i8 %1 to i32226  ret i32 %2227}228 229define zeroext i8 @anyint32_arg_to_uint8_ret(i32 signext %a) nounwind {230; RV32I-LABEL: anyint32_arg_to_uint8_ret:231; RV32I:       # %bb.0:232; RV32I-NEXT:    zext.b a0, a0233; RV32I-NEXT:    ret234  %1 = trunc i32 %a to i8235  ret i8 %1236}237 238define void @pass_anyint32_as_uint8(i32 signext %a) nounwind {239; RV32I-LABEL: pass_anyint32_as_uint8:240; RV32I:       # %bb.0:241; RV32I-NEXT:    addi sp, sp, -16242; RV32I-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill243; RV32I-NEXT:    zext.b a0, a0244; RV32I-NEXT:    call receive_uint8245; RV32I-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload246; RV32I-NEXT:    addi sp, sp, 16247; RV32I-NEXT:    ret248  %1 = trunc i32 %a to i8249  call void @receive_uint8(i8 zeroext %1)250  ret void251}252 253declare signext i32 @return_anyint32()254 255define zeroext i8 @ret_callresult_anyint32_as_uint8() nounwind {256; RV32I-LABEL: ret_callresult_anyint32_as_uint8:257; RV32I:       # %bb.0:258; RV32I-NEXT:    addi sp, sp, -16259; RV32I-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill260; RV32I-NEXT:    call return_anyint32261; RV32I-NEXT:    zext.b a0, a0262; RV32I-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload263; RV32I-NEXT:    addi sp, sp, 16264; RV32I-NEXT:    ret265  %1 = call signext i32 @return_anyint32()266  %2 = trunc i32 %1 to i8267  ret i8 %2268}269 270define signext i8 @anyint32_arg_to_sint8_ret(i32 signext %a) nounwind {271; RV32I-LABEL: anyint32_arg_to_sint8_ret:272; RV32I:       # %bb.0:273; RV32I-NEXT:    slli a0, a0, 24274; RV32I-NEXT:    srai a0, a0, 24275; RV32I-NEXT:    ret276  %1 = trunc i32 %a to i8277  ret i8 %1278}279 280define void @pass_anyint32_as_sint8(i32 signext %a) nounwind {281; RV32I-LABEL: pass_anyint32_as_sint8:282; RV32I:       # %bb.0:283; RV32I-NEXT:    addi sp, sp, -16284; RV32I-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill285; RV32I-NEXT:    slli a0, a0, 24286; RV32I-NEXT:    srai a0, a0, 24287; RV32I-NEXT:    call receive_sint8288; RV32I-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload289; RV32I-NEXT:    addi sp, sp, 16290; RV32I-NEXT:    ret291  %1 = trunc i32 %a to i8292  call void @receive_sint8(i8 signext %1)293  ret void294}295 296define signext i8 @ret_callresult_anyint32_as_sint8() nounwind {297; RV32I-LABEL: ret_callresult_anyint32_as_sint8:298; RV32I:       # %bb.0:299; RV32I-NEXT:    addi sp, sp, -16300; RV32I-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill301; RV32I-NEXT:    call return_anyint32302; RV32I-NEXT:    slli a0, a0, 24303; RV32I-NEXT:    srai a0, a0, 24304; RV32I-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload305; RV32I-NEXT:    addi sp, sp, 16306; RV32I-NEXT:    ret307  %1 = call signext i32 @return_anyint32()308  %2 = trunc i32 %1 to i8309  ret i8 %2310}311 312define signext i32 @anyint32_arg_to_anyint32_ret(i32 signext %a) nounwind {313; RV32I-LABEL: anyint32_arg_to_anyint32_ret:314; RV32I:       # %bb.0:315; RV32I-NEXT:    ret316  ret i32 %a317}318 319define void @pass_anyint32_as_anyint32(i32 signext %a) nounwind {320; RV32I-LABEL: pass_anyint32_as_anyint32:321; RV32I:       # %bb.0:322; RV32I-NEXT:    addi sp, sp, -16323; RV32I-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill324; RV32I-NEXT:    call receive_anyint32325; RV32I-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload326; RV32I-NEXT:    addi sp, sp, 16327; RV32I-NEXT:    ret328  call void @receive_anyint32(i32 signext %a)329  ret void330}331 332define signext i32 @ret_callresult_anyint32_as_anyint32() nounwind {333; RV32I-LABEL: ret_callresult_anyint32_as_anyint32:334; RV32I:       # %bb.0:335; RV32I-NEXT:    addi sp, sp, -16336; RV32I-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill337; RV32I-NEXT:    call return_anyint32338; RV32I-NEXT:    lw ra, 12(sp) # 4-byte Folded Reload339; RV32I-NEXT:    addi sp, sp, 16340; RV32I-NEXT:    ret341  %1 = call signext i32 @return_anyint32()342  ret i32 %1343}344