brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.2 KiB · 35fcc27 Raw
98 lines · plain
1; Verify that i32 argument/return values are extended to i642 3; RUN: llc -verify-machineinstrs < %s | FileCheck %s4target datalayout = "E-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-f128:128:128-v128:128:128-n32:64"5target triple = "powerpc64-unknown-linux-gnu"6 7@si = common global i32 0, align 48@ui = common global i32 0, align 49 10declare void @arg_si(i32 signext)11declare void @arg_ui(i32 zeroext)12 13declare signext i32 @ret_si()14declare zeroext i32 @ret_ui()15 16define void @pass_arg_si() nounwind {17entry:18  %0 = load i32, ptr @si, align 419  tail call void @arg_si(i32 signext %0) nounwind20  ret void21}22; CHECK: @pass_arg_si23; CHECK: lwa 3,24; CHECK: bl arg_si25 26define void @pass_arg_ui() nounwind {27entry:28  %0 = load i32, ptr @ui, align 429  tail call void @arg_ui(i32 zeroext %0) nounwind30  ret void31}32; CHECK: @pass_arg_ui33; CHECK: lwz 3,34; CHECK: bl arg_ui35 36define i64 @use_arg_si(i32 signext %x) nounwind readnone {37entry:38  %conv = sext i32 %x to i6439  ret i64 %conv40}41; CHECK: @use_arg_si42; CHECK: %entry43; CHECK-NEXT: blr44 45define i64 @use_arg_ui(i32 zeroext %x) nounwind readnone {46entry:47  %conv = zext i32 %x to i6448  ret i64 %conv49}50; CHECK: @use_arg_ui51; CHECK: %entry52; CHECK-NEXT: blr53 54define signext i32 @pass_ret_si() nounwind readonly {55entry:56  %0 = load i32, ptr @si, align 457  ret i32 %058}59; CHECK: @pass_ret_si60; CHECK: lwa 3,61; CHECK: blr62 63define zeroext i32 @pass_ret_ui() nounwind readonly {64entry:65  %0 = load i32, ptr @ui, align 466  ret i32 %067}68; CHECK: @pass_ret_ui69; CHECK: lwz 3,70; CHECK: blr71 72define i64 @use_ret_si() nounwind {73entry:74  %call = tail call signext i32 @ret_si() nounwind75  %conv = sext i32 %call to i6476  ret i64 %conv77}78; CHECK: @use_ret_si79; CHECK: bl ret_si80; This is to verify the return register (3) set up by the ret_si81; call is passed on unmodified as return value of use_ret_si.82; CHECK-NOT: 383; CHECK: blr84 85define i64 @use_ret_ui() nounwind {86entry:87  %call = tail call zeroext i32 @ret_ui() nounwind88  %conv = zext i32 %call to i6489  ret i64 %conv90}91; CHECK: @use_ret_ui92; CHECK: bl ret_ui93; This is to verify the return register (3) set up by the ret_ui94; call is passed on unmodified as return value of use_ret_ui.95; CHECK-NOT: 396; CHECK: blr97 98