xref: /llvm-project/llvm/test/CodeGen/VE/Scalar/call.ll (revision f0e585d58580956996c0add0afc62798e7498177)
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