11943b7f1SSimon Moll; RUN: llc < %s -mtriple=ve-unknown-unknown | FileCheck %s 21943b7f1SSimon Moll 31943b7f1SSimon Molldeclare i32 @sample_add(i32, i32) 41943b7f1SSimon Molldeclare i32 @stack_callee_int(i32, i32, i32, i32, i32, i32, i32, i32, i32, i32) 51943b7f1SSimon Molldeclare i32 @stack_callee_int_szext(i1 signext, i8 zeroext, i32, i32, i32, i32, i32, i32, i16 zeroext, i8 signext) 61943b7f1SSimon Molldeclare float @stack_callee_float(float, float, float, float, float, float, float, float, float, float) 71943b7f1SSimon Molldeclare void @test(i64) 81943b7f1SSimon Moll 91943b7f1SSimon Molldefine i32 @sample_call() { 101943b7f1SSimon Moll; CHECK-LABEL: sample_call: 111943b7f1SSimon Moll; CHECK: .LBB{{[0-9]+}}_2: 121943b7f1SSimon Moll; CHECK-NEXT: lea %s0, sample_add@lo 131943b7f1SSimon Moll; CHECK-NEXT: and %s0, %s0, (32)0 141943b7f1SSimon Moll; CHECK-NEXT: lea.sl %s12, sample_add@hi(, %s0) 151943b7f1SSimon Moll; CHECK-NEXT: or %s0, 1, (0)1 161943b7f1SSimon Moll; CHECK-NEXT: or %s1, 2, (0)1 171943b7f1SSimon Moll; CHECK-NEXT: bsic %s10, (, %s12) 181943b7f1SSimon Moll; CHECK-NEXT: or %s11, 0, %s9 191943b7f1SSimon Moll %r = tail call i32 @sample_add(i32 1, i32 2) 201943b7f1SSimon Moll ret i32 %r 211943b7f1SSimon Moll} 221943b7f1SSimon Moll 231943b7f1SSimon Molldefine i32 @stack_call_int() { 241943b7f1SSimon Moll; CHECK-LABEL: stack_call_int: 251943b7f1SSimon Moll; CHECK: .LBB{{[0-9]+}}_2: 261943b7f1SSimon Moll; CHECK-NEXT: or %s0, 10, (0)1 271943b7f1SSimon Moll; CHECK-NEXT: st %s0, 248(, %s11) 281943b7f1SSimon Moll; CHECK-NEXT: or %s34, 9, (0)1 291943b7f1SSimon Moll; CHECK-NEXT: lea %s0, stack_callee_int@lo 301943b7f1SSimon Moll; CHECK-NEXT: and %s0, %s0, (32)0 311943b7f1SSimon Moll; CHECK-NEXT: lea.sl %s12, stack_callee_int@hi(, %s0) 321943b7f1SSimon Moll; CHECK-NEXT: or %s0, 1, (0)1 331943b7f1SSimon Moll; CHECK-NEXT: or %s1, 2, (0)1 341943b7f1SSimon Moll; CHECK-NEXT: or %s2, 3, (0)1 351943b7f1SSimon Moll; CHECK-NEXT: or %s3, 4, (0)1 361943b7f1SSimon Moll; CHECK-NEXT: or %s4, 5, (0)1 371943b7f1SSimon Moll; CHECK-NEXT: or %s5, 6, (0)1 381943b7f1SSimon Moll; CHECK-NEXT: or %s6, 7, (0)1 391943b7f1SSimon Moll; CHECK-NEXT: or %s7, 8, (0)1 401943b7f1SSimon Moll; CHECK-NEXT: st %s34, 240(, %s11) 411943b7f1SSimon Moll; CHECK-NEXT: bsic %s10, (, %s12) 421943b7f1SSimon Moll; CHECK-NEXT: or %s11, 0, %s9 431943b7f1SSimon Moll %r = tail call i32 @stack_callee_int(i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10) 441943b7f1SSimon Moll ret i32 %r 451943b7f1SSimon Moll} 461943b7f1SSimon Moll 471943b7f1SSimon Molldefine i32 @stack_call_int_szext() { 481943b7f1SSimon Moll; CHECK-LABEL: stack_call_int_szext: 491943b7f1SSimon Moll; CHECK: .LBB{{[0-9]+}}_2: 501943b7f1SSimon Moll; CHECK-NEXT: or %s0, -1, (0)1 511943b7f1SSimon Moll; CHECK-NEXT: st %s0, 248(, %s11) 521943b7f1SSimon Moll; CHECK-NEXT: lea %s34, 65535 53*f0e585d5SKazushi (Jam) Marukawa; CHECK-NEXT: lea %s0, stack_callee_int_szext@lo 54*f0e585d5SKazushi (Jam) Marukawa; CHECK-NEXT: and %s0, %s0, (32)0 55*f0e585d5SKazushi (Jam) Marukawa; CHECK-NEXT: lea.sl %s12, stack_callee_int_szext@hi(, %s0) 56*f0e585d5SKazushi (Jam) Marukawa; CHECK-NEXT: or %s0, -1, (0)1 571943b7f1SSimon Moll; CHECK-NEXT: lea %s1, 255 581943b7f1SSimon Moll; CHECK-NEXT: or %s2, 3, (0)1 591943b7f1SSimon Moll; CHECK-NEXT: or %s3, 4, (0)1 601943b7f1SSimon Moll; CHECK-NEXT: or %s4, 5, (0)1 611943b7f1SSimon Moll; CHECK-NEXT: or %s5, 6, (0)1 621943b7f1SSimon Moll; CHECK-NEXT: or %s6, 7, (0)1 631943b7f1SSimon Moll; CHECK-NEXT: or %s7, 8, (0)1 641943b7f1SSimon Moll; CHECK-NEXT: st %s34, 240(, %s11) 651943b7f1SSimon Moll; CHECK-NEXT: bsic %s10, (, %s12) 661943b7f1SSimon Moll; CHECK-NEXT: or %s11, 0, %s9 671943b7f1SSimon Moll %r = tail call i32 @stack_callee_int_szext(i1 -1, i8 -1, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i16 -1, i8 -1) 681943b7f1SSimon Moll ret i32 %r 691943b7f1SSimon Moll} 701943b7f1SSimon Moll 711943b7f1SSimon Molldefine float @stack_call_float() { 721943b7f1SSimon Moll; CHECK-LABEL: stack_call_float: 731943b7f1SSimon Moll; CHECK: .LBB{{[0-9]+}}_2: 741943b7f1SSimon Moll; CHECK-NEXT: lea.sl %s0, 1092616192 751943b7f1SSimon Moll; CHECK-NEXT: st %s0, 248(, %s11) 761943b7f1SSimon Moll; CHECK-NEXT: lea.sl %s34, 1091567616 77*f0e585d5SKazushi (Jam) Marukawa; CHECK-NEXT: lea %s0, stack_callee_float@lo 78*f0e585d5SKazushi (Jam) Marukawa; CHECK-NEXT: and %s0, %s0, (32)0 79*f0e585d5SKazushi (Jam) Marukawa; CHECK-NEXT: lea.sl %s12, stack_callee_float@hi(, %s0) 801943b7f1SSimon Moll; CHECK-NEXT: lea.sl %s0, 1065353216 811943b7f1SSimon Moll; CHECK-NEXT: lea.sl %s1, 1073741824 821943b7f1SSimon Moll; CHECK-NEXT: lea.sl %s2, 1077936128 831943b7f1SSimon Moll; CHECK-NEXT: lea.sl %s3, 1082130432 841943b7f1SSimon Moll; CHECK-NEXT: lea.sl %s4, 1084227584 851943b7f1SSimon Moll; CHECK-NEXT: lea.sl %s5, 1086324736 861943b7f1SSimon Moll; CHECK-NEXT: lea.sl %s6, 1088421888 871943b7f1SSimon Moll; CHECK-NEXT: lea.sl %s7, 1090519040 881943b7f1SSimon Moll; CHECK-NEXT: st %s34, 240(, %s11) 891943b7f1SSimon Moll; CHECK-NEXT: bsic %s10, (, %s12) 901943b7f1SSimon Moll; CHECK-NEXT: or %s11, 0, %s9 911943b7f1SSimon Moll %r = tail call float @stack_callee_float(float 1.0, float 2.0, float 3.0, float 4.0, float 5.0, float 6.0, float 7.0, float 8.0, float 9.0, float 10.0) 921943b7f1SSimon Moll ret float %r 931943b7f1SSimon Moll} 941943b7f1SSimon Moll 951943b7f1SSimon Molldefine float @stack_call_float2(float %p0) { 961943b7f1SSimon Moll; CHECK-LABEL: stack_call_float2: 971943b7f1SSimon Moll; CHECK: .LBB{{[0-9]+}}_2: 981943b7f1SSimon Moll; CHECK-NEXT: st %s0, 248(, %s11) 991943b7f1SSimon Moll; CHECK-NEXT: lea %s1, stack_callee_float@lo 1001943b7f1SSimon Moll; CHECK-NEXT: and %s1, %s1, (32)0 1011943b7f1SSimon Moll; CHECK-NEXT: lea.sl %s12, stack_callee_float@hi(, %s1) 1021943b7f1SSimon Moll; CHECK-NEXT: st %s0, 240(, %s11) 1031943b7f1SSimon Moll; CHECK-NEXT: or %s1, 0, %s0 1041943b7f1SSimon Moll; CHECK-NEXT: or %s2, 0, %s0 1051943b7f1SSimon Moll; CHECK-NEXT: or %s3, 0, %s0 1061943b7f1SSimon Moll; CHECK-NEXT: or %s4, 0, %s0 1071943b7f1SSimon Moll; CHECK-NEXT: or %s5, 0, %s0 1081943b7f1SSimon Moll; CHECK-NEXT: or %s6, 0, %s0 1091943b7f1SSimon Moll; CHECK-NEXT: or %s7, 0, %s0 1101943b7f1SSimon Moll; CHECK-NEXT: bsic %s10, (, %s12) 1111943b7f1SSimon Moll; CHECK-NEXT: or %s11, 0, %s9 1121943b7f1SSimon Moll %r = tail call float @stack_callee_float(float %p0, float %p0, float %p0, float %p0, float %p0, float %p0, float %p0, float %p0, float %p0, float %p0) 1131943b7f1SSimon Moll ret float %r 1141943b7f1SSimon Moll} 115