[InstCombine] Signed saturation patterns
[llvm-complete.git] / test / CodeGen / Mips / GlobalISel / regbankselect / add_vec.mir
blob59fa2a89bf3dd163bf861aac45f1347ff0b6c43b
1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2 # RUN: llc -mtriple=mipsel-linux-gnu -mcpu=mips32r5 -mattr=+msa,+fp64,+nan2008 -run-pass=regbankselect -verify-machineinstrs %s -o - | FileCheck %s -check-prefixes=P5600
3 --- |
5   define void @add_v16i8(<16 x i8>* %a, <16 x i8>* %b, <16 x i8>* %c) { entry: ret void }
6   define void @add_v8i16(<8 x i16>* %a, <8 x i16>* %b, <8 x i16>* %c) { entry: ret void }
7   define void @add_v4i32(<4 x i32>* %a, <4 x i32>* %b, <4 x i32>* %c) { entry: ret void }
8   define void @add_v2i64(<2 x i64>* %a, <2 x i64>* %b, <2 x i64>* %c) { entry: ret void }
10 ...
11 ---
12 name:            add_v16i8
13 alignment:       4
14 legalized:       true
15 tracksRegLiveness: true
16 body:             |
17   bb.1.entry:
18     liveins: $a0, $a1, $a2
20     ; P5600-LABEL: name: add_v16i8
21     ; P5600: liveins: $a0, $a1, $a2
22     ; P5600: [[COPY:%[0-9]+]]:gprb(p0) = COPY $a0
23     ; P5600: [[COPY1:%[0-9]+]]:gprb(p0) = COPY $a1
24     ; P5600: [[COPY2:%[0-9]+]]:gprb(p0) = COPY $a2
25     ; P5600: [[LOAD:%[0-9]+]]:fprb(<16 x s8>) = G_LOAD [[COPY]](p0) :: (load 16 from %ir.a)
26     ; P5600: [[LOAD1:%[0-9]+]]:fprb(<16 x s8>) = G_LOAD [[COPY1]](p0) :: (load 16 from %ir.b)
27     ; P5600: [[ADD:%[0-9]+]]:fprb(<16 x s8>) = G_ADD [[LOAD1]], [[LOAD]]
28     ; P5600: G_STORE [[ADD]](<16 x s8>), [[COPY2]](p0) :: (store 16 into %ir.c)
29     ; P5600: RetRA
30     %0:_(p0) = COPY $a0
31     %1:_(p0) = COPY $a1
32     %2:_(p0) = COPY $a2
33     %3:_(<16 x s8>) = G_LOAD %0(p0) :: (load 16 from %ir.a)
34     %4:_(<16 x s8>) = G_LOAD %1(p0) :: (load 16 from %ir.b)
35     %5:_(<16 x s8>) = G_ADD %4, %3
36     G_STORE %5(<16 x s8>), %2(p0) :: (store 16 into %ir.c)
37     RetRA
39 ...
40 ---
41 name:            add_v8i16
42 alignment:       4
43 legalized:       true
44 tracksRegLiveness: true
45 body:             |
46   bb.1.entry:
47     liveins: $a0, $a1, $a2
49     ; P5600-LABEL: name: add_v8i16
50     ; P5600: liveins: $a0, $a1, $a2
51     ; P5600: [[COPY:%[0-9]+]]:gprb(p0) = COPY $a0
52     ; P5600: [[COPY1:%[0-9]+]]:gprb(p0) = COPY $a1
53     ; P5600: [[COPY2:%[0-9]+]]:gprb(p0) = COPY $a2
54     ; P5600: [[LOAD:%[0-9]+]]:fprb(<8 x s16>) = G_LOAD [[COPY]](p0) :: (load 16 from %ir.a)
55     ; P5600: [[LOAD1:%[0-9]+]]:fprb(<8 x s16>) = G_LOAD [[COPY1]](p0) :: (load 16 from %ir.b)
56     ; P5600: [[ADD:%[0-9]+]]:fprb(<8 x s16>) = G_ADD [[LOAD1]], [[LOAD]]
57     ; P5600: G_STORE [[ADD]](<8 x s16>), [[COPY2]](p0) :: (store 16 into %ir.c)
58     ; P5600: RetRA
59     %0:_(p0) = COPY $a0
60     %1:_(p0) = COPY $a1
61     %2:_(p0) = COPY $a2
62     %3:_(<8 x s16>) = G_LOAD %0(p0) :: (load 16 from %ir.a)
63     %4:_(<8 x s16>) = G_LOAD %1(p0) :: (load 16 from %ir.b)
64     %5:_(<8 x s16>) = G_ADD %4, %3
65     G_STORE %5(<8 x s16>), %2(p0) :: (store 16 into %ir.c)
66     RetRA
68 ...
69 ---
70 name:            add_v4i32
71 alignment:       4
72 legalized:       true
73 tracksRegLiveness: true
74 body:             |
75   bb.1.entry:
76     liveins: $a0, $a1, $a2
78     ; P5600-LABEL: name: add_v4i32
79     ; P5600: liveins: $a0, $a1, $a2
80     ; P5600: [[COPY:%[0-9]+]]:gprb(p0) = COPY $a0
81     ; P5600: [[COPY1:%[0-9]+]]:gprb(p0) = COPY $a1
82     ; P5600: [[COPY2:%[0-9]+]]:gprb(p0) = COPY $a2
83     ; P5600: [[LOAD:%[0-9]+]]:fprb(<4 x s32>) = G_LOAD [[COPY]](p0) :: (load 16 from %ir.a)
84     ; P5600: [[LOAD1:%[0-9]+]]:fprb(<4 x s32>) = G_LOAD [[COPY1]](p0) :: (load 16 from %ir.b)
85     ; P5600: [[ADD:%[0-9]+]]:fprb(<4 x s32>) = G_ADD [[LOAD1]], [[LOAD]]
86     ; P5600: G_STORE [[ADD]](<4 x s32>), [[COPY2]](p0) :: (store 16 into %ir.c)
87     ; P5600: RetRA
88     %0:_(p0) = COPY $a0
89     %1:_(p0) = COPY $a1
90     %2:_(p0) = COPY $a2
91     %3:_(<4 x s32>) = G_LOAD %0(p0) :: (load 16 from %ir.a)
92     %4:_(<4 x s32>) = G_LOAD %1(p0) :: (load 16 from %ir.b)
93     %5:_(<4 x s32>) = G_ADD %4, %3
94     G_STORE %5(<4 x s32>), %2(p0) :: (store 16 into %ir.c)
95     RetRA
97 ...
98 ---
99 name:            add_v2i64
100 alignment:       4
101 legalized:       true
102 tracksRegLiveness: true
103 body:             |
104   bb.1.entry:
105     liveins: $a0, $a1, $a2
107     ; P5600-LABEL: name: add_v2i64
108     ; P5600: liveins: $a0, $a1, $a2
109     ; P5600: [[COPY:%[0-9]+]]:gprb(p0) = COPY $a0
110     ; P5600: [[COPY1:%[0-9]+]]:gprb(p0) = COPY $a1
111     ; P5600: [[COPY2:%[0-9]+]]:gprb(p0) = COPY $a2
112     ; P5600: [[LOAD:%[0-9]+]]:fprb(<2 x s64>) = G_LOAD [[COPY]](p0) :: (load 16 from %ir.a)
113     ; P5600: [[LOAD1:%[0-9]+]]:fprb(<2 x s64>) = G_LOAD [[COPY1]](p0) :: (load 16 from %ir.b)
114     ; P5600: [[ADD:%[0-9]+]]:fprb(<2 x s64>) = G_ADD [[LOAD1]], [[LOAD]]
115     ; P5600: G_STORE [[ADD]](<2 x s64>), [[COPY2]](p0) :: (store 16 into %ir.c)
116     ; P5600: RetRA
117     %0:_(p0) = COPY $a0
118     %1:_(p0) = COPY $a1
119     %2:_(p0) = COPY $a2
120     %3:_(<2 x s64>) = G_LOAD %0(p0) :: (load 16 from %ir.a)
121     %4:_(<2 x s64>) = G_LOAD %1(p0) :: (load 16 from %ir.b)
122     %5:_(<2 x s64>) = G_ADD %4, %3
123     G_STORE %5(<2 x s64>), %2(p0) :: (store 16 into %ir.c)
124     RetRA