[MIPS GlobalISel] Select MSA vector generic and builtin add
[llvm-core.git] / test / CodeGen / Mips / GlobalISel / llvm-ir / test_TypeInfoforMF.ll
blobe06bf06095232a1203caa6a9a439430e76d5878d
1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: llc  -O0 -mtriple=mipsel-linux-gnu -global-isel  -verify-machineinstrs %s -o -| FileCheck %s -check-prefixes=MIPS32
4 define i32 @outgoing_gpr(i32* %i32_ptr) {
5 ; MIPS32-LABEL: outgoing_gpr:
6 ; MIPS32:       # %bb.0: # %entry
7 ; MIPS32-NEXT:    lw $2, 0($4)
8 ; MIPS32-NEXT:    jr $ra
9 ; MIPS32-NEXT:    nop
10 entry:
11   %0 = load i32, i32* %i32_ptr
12   ret i32 %0
15 define float @outgoing_fpr(float* %float_ptr) {
16 ; MIPS32-LABEL: outgoing_fpr:
17 ; MIPS32:       # %bb.0: # %entry
18 ; MIPS32-NEXT:    lwc1 $f0, 0($4)
19 ; MIPS32-NEXT:    jr $ra
20 ; MIPS32-NEXT:    nop
21 entry:
22   %0 = load float, float* %float_ptr
23   ret float %0
26 define i32 @outgoing_gpr_instr(i32* %i32_ptr1, i32* %i32_ptr2) {
27 ; MIPS32-LABEL: outgoing_gpr_instr:
28 ; MIPS32:       # %bb.0: # %entry
29 ; MIPS32-NEXT:    lw $1, 0($4)
30 ; MIPS32-NEXT:    lw $2, 0($5)
31 ; MIPS32-NEXT:    addu $2, $2, $1
32 ; MIPS32-NEXT:    jr $ra
33 ; MIPS32-NEXT:    nop
34 entry:
35   %0 = load i32, i32* %i32_ptr1
36   %1 = load i32, i32* %i32_ptr2
37   %outgoing_instr = add i32 %1, %0
38   ret i32 %outgoing_instr
41 define float @outgoing_fpr_instr(float* %float_ptr1, float* %float_ptr2) {
42 ; MIPS32-LABEL: outgoing_fpr_instr:
43 ; MIPS32:       # %bb.0: # %entry
44 ; MIPS32-NEXT:    lwc1 $f0, 0($4)
45 ; MIPS32-NEXT:    lwc1 $f1, 0($5)
46 ; MIPS32-NEXT:    add.s $f0, $f0, $f1
47 ; MIPS32-NEXT:    jr $ra
48 ; MIPS32-NEXT:    nop
49 entry:
50   %0 = load float, float* %float_ptr1
51   %1 = load float, float* %float_ptr2
52   %outgoing_instr = fadd float %0, %1
53   ret float %outgoing_instr
56 define i32 @incoming_gpr(i32 %incoming_phys_reg, i1 %test, i32* %a) {
57 ; MIPS32-LABEL: incoming_gpr:
58 ; MIPS32:       # %bb.0: # %entry
59 ; MIPS32-NEXT:    lw $1, 0($6)
60 ; MIPS32-NEXT:    ori $2, $zero, 1
61 ; MIPS32-NEXT:    and $2, $5, $2
62 ; MIPS32-NEXT:    movn $4, $1, $2
63 ; MIPS32-NEXT:    move $2, $4
64 ; MIPS32-NEXT:    jr $ra
65 ; MIPS32-NEXT:    nop
66 entry:
67   %0 = load i32, i32* %a
68   %cond = select i1 %test, i32 %0, i32 %incoming_phys_reg
69   ret i32 %cond
72 define float @incoming_fpr(float %incoming_phys_reg, i1 %test, float* %a) {
73 ; MIPS32-LABEL: incoming_fpr:
74 ; MIPS32:       # %bb.0: # %entry
75 ; MIPS32-NEXT:    lwc1 $f0, 0($6)
76 ; MIPS32-NEXT:    ori $1, $zero, 1
77 ; MIPS32-NEXT:    and $1, $5, $1
78 ; MIPS32-NEXT:    movn.s $f12, $f0, $1
79 ; MIPS32-NEXT:    mov.s $f0, $f12
80 ; MIPS32-NEXT:    jr $ra
81 ; MIPS32-NEXT:    nop
82 entry:
83   %0 = load float, float* %a
84   %cond = select i1 %test, float %0, float %incoming_phys_reg
85   ret float %cond
89 define i32 @incoming_i32_instr(i32 %val1, i32 %val2, i32* %i32_ptr, i1 %test) {
90 ; MIPS32-LABEL: incoming_i32_instr:
91 ; MIPS32:       # %bb.0: # %entry
92 ; MIPS32-NEXT:    lw $1, 0($6)
93 ; MIPS32-NEXT:    addu $2, $5, $4
94 ; MIPS32-NEXT:    ori $3, $zero, 1
95 ; MIPS32-NEXT:    and $3, $7, $3
96 ; MIPS32-NEXT:    movn $2, $1, $3
97 ; MIPS32-NEXT:    jr $ra
98 ; MIPS32-NEXT:    nop
99 entry:
100   %0 = load i32, i32* %i32_ptr
101   %incoming_instr = add i32 %val2, %val1
102   %cond = select i1 %test, i32 %0, i32 %incoming_instr
103   ret i32 %cond
106 define float @incoming_float_instr(float %val1, float %val2, float* %float_ptr, i1 %test) {
107 ; MIPS32-LABEL: incoming_float_instr:
108 ; MIPS32:       # %bb.0: # %entry
109 ; MIPS32-NEXT:    lwc1 $f0, 0($6)
110 ; MIPS32-NEXT:    add.s $f1, $f14, $f12
111 ; MIPS32-NEXT:    ori $1, $zero, 1
112 ; MIPS32-NEXT:    and $1, $7, $1
113 ; MIPS32-NEXT:    movn.s $f1, $f0, $1
114 ; MIPS32-NEXT:    mov.s $f0, $f1
115 ; MIPS32-NEXT:    jr $ra
116 ; MIPS32-NEXT:    nop
117 entry:
118   %0 = load float, float* %float_ptr
119   %incoming_instr = fadd float %val2, %val1
120   %cond = select i1 %test, float %0, float %incoming_instr
121   ret float %cond