xref: /llvm-project/llvm/test/CodeGen/LoongArch/lasx/ir-instruction/or.ll (revision a5c90e48b6f11bc6db7344503589648f76b16d80)
1ca66df3bSwanglei; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 3
2ca66df3bSwanglei; RUN: llc --mtriple=loongarch64 --mattr=+lasx < %s | FileCheck %s
3ca66df3bSwanglei
4ca66df3bSwangleidefine void @or_v32i8(ptr %res, ptr %a0, ptr %a1) nounwind {
5ca66df3bSwanglei; CHECK-LABEL: or_v32i8:
6ca66df3bSwanglei; CHECK:       # %bb.0: # %entry
7*a5c90e48Swanglei; CHECK-NEXT:    xvld $xr0, $a1, 0
8*a5c90e48Swanglei; CHECK-NEXT:    xvld $xr1, $a2, 0
9*a5c90e48Swanglei; CHECK-NEXT:    xvor.v $xr0, $xr0, $xr1
10ca66df3bSwanglei; CHECK-NEXT:    xvst $xr0, $a0, 0
11ca66df3bSwanglei; CHECK-NEXT:    ret
12ca66df3bSwangleientry:
13ca66df3bSwanglei  %v0 = load <32 x i8>, ptr %a0
14ca66df3bSwanglei  %v1 = load <32 x i8>, ptr %a1
15ca66df3bSwanglei  %v2 = or <32 x i8> %v0, %v1
16ca66df3bSwanglei  store <32 x i8> %v2, ptr %res
17ca66df3bSwanglei  ret void
18ca66df3bSwanglei}
19ca66df3bSwanglei
20ca66df3bSwangleidefine void @or_v16i16(ptr %res, ptr %a0, ptr %a1) nounwind {
21ca66df3bSwanglei; CHECK-LABEL: or_v16i16:
22ca66df3bSwanglei; CHECK:       # %bb.0: # %entry
23*a5c90e48Swanglei; CHECK-NEXT:    xvld $xr0, $a1, 0
24*a5c90e48Swanglei; CHECK-NEXT:    xvld $xr1, $a2, 0
25*a5c90e48Swanglei; CHECK-NEXT:    xvor.v $xr0, $xr0, $xr1
26ca66df3bSwanglei; CHECK-NEXT:    xvst $xr0, $a0, 0
27ca66df3bSwanglei; CHECK-NEXT:    ret
28ca66df3bSwangleientry:
29ca66df3bSwanglei  %v0 = load <16 x i16>, ptr %a0
30ca66df3bSwanglei  %v1 = load <16 x i16>, ptr %a1
31ca66df3bSwanglei  %v2 = or <16 x i16> %v0, %v1
32ca66df3bSwanglei  store <16 x i16> %v2, ptr %res
33ca66df3bSwanglei  ret void
34ca66df3bSwanglei}
35ca66df3bSwanglei
36ca66df3bSwangleidefine void @or_v8i32(ptr %res, ptr %a0, ptr %a1) nounwind {
37ca66df3bSwanglei; CHECK-LABEL: or_v8i32:
38ca66df3bSwanglei; CHECK:       # %bb.0: # %entry
39*a5c90e48Swanglei; CHECK-NEXT:    xvld $xr0, $a1, 0
40*a5c90e48Swanglei; CHECK-NEXT:    xvld $xr1, $a2, 0
41*a5c90e48Swanglei; CHECK-NEXT:    xvor.v $xr0, $xr0, $xr1
42ca66df3bSwanglei; CHECK-NEXT:    xvst $xr0, $a0, 0
43ca66df3bSwanglei; CHECK-NEXT:    ret
44ca66df3bSwangleientry:
45ca66df3bSwanglei  %v0 = load <8 x i32>, ptr %a0
46ca66df3bSwanglei  %v1 = load <8 x i32>, ptr %a1
47ca66df3bSwanglei  %v2 = or <8 x i32> %v0, %v1
48ca66df3bSwanglei  store <8 x i32> %v2, ptr %res
49ca66df3bSwanglei  ret void
50ca66df3bSwanglei}
51ca66df3bSwanglei
52ca66df3bSwangleidefine void @or_v4i64(ptr %res, ptr %a0, ptr %a1) nounwind {
53ca66df3bSwanglei; CHECK-LABEL: or_v4i64:
54ca66df3bSwanglei; CHECK:       # %bb.0: # %entry
55*a5c90e48Swanglei; CHECK-NEXT:    xvld $xr0, $a1, 0
56*a5c90e48Swanglei; CHECK-NEXT:    xvld $xr1, $a2, 0
57*a5c90e48Swanglei; CHECK-NEXT:    xvor.v $xr0, $xr0, $xr1
58ca66df3bSwanglei; CHECK-NEXT:    xvst $xr0, $a0, 0
59ca66df3bSwanglei; CHECK-NEXT:    ret
60ca66df3bSwangleientry:
61ca66df3bSwanglei  %v0 = load <4 x i64>, ptr %a0
62ca66df3bSwanglei  %v1 = load <4 x i64>, ptr %a1
63ca66df3bSwanglei  %v2 = or <4 x i64> %v0, %v1
64ca66df3bSwanglei  store <4 x i64> %v2, ptr %res
65ca66df3bSwanglei  ret void
66ca66df3bSwanglei}
67ca66df3bSwanglei
68ca66df3bSwangleidefine void @or_u_v32i8(ptr %res, ptr %a0) nounwind {
69ca66df3bSwanglei; CHECK-LABEL: or_u_v32i8:
70ca66df3bSwanglei; CHECK:       # %bb.0: # %entry
71ca66df3bSwanglei; CHECK-NEXT:    xvld $xr0, $a1, 0
72ca66df3bSwanglei; CHECK-NEXT:    xvori.b $xr0, $xr0, 31
73ca66df3bSwanglei; CHECK-NEXT:    xvst $xr0, $a0, 0
74ca66df3bSwanglei; CHECK-NEXT:    ret
75ca66df3bSwangleientry:
76ca66df3bSwanglei  %v0 = load <32 x i8>, ptr %a0
77ca66df3bSwanglei  %v1 = or <32 x i8> %v0, <i8 31, i8 31, i8 31, i8 31, i8 31, i8 31, i8 31, i8 31, i8 31, i8 31, i8 31, i8 31, i8 31, i8 31, i8 31, i8 31, i8 31, i8 31, i8 31, i8 31, i8 31, i8 31, i8 31, i8 31, i8 31, i8 31, i8 31, i8 31, i8 31, i8 31, i8 31, i8 31>
78ca66df3bSwanglei  store <32 x i8> %v1, ptr %res
79ca66df3bSwanglei  ret void
80ca66df3bSwanglei}
81ca66df3bSwanglei
82ca66df3bSwangleidefine void @or_u_v16i16(ptr %res, ptr %a0) nounwind {
83ca66df3bSwanglei; CHECK-LABEL: or_u_v16i16:
84ca66df3bSwanglei; CHECK:       # %bb.0: # %entry
85ca66df3bSwanglei; CHECK-NEXT:    xvld $xr0, $a1, 0
86ca66df3bSwanglei; CHECK-NEXT:    xvrepli.h $xr1, 31
87ca66df3bSwanglei; CHECK-NEXT:    xvor.v $xr0, $xr0, $xr1
88ca66df3bSwanglei; CHECK-NEXT:    xvst $xr0, $a0, 0
89ca66df3bSwanglei; CHECK-NEXT:    ret
90ca66df3bSwangleientry:
91ca66df3bSwanglei  %v0 = load <16 x i16>, ptr %a0
92ca66df3bSwanglei  %v1 = or <16 x i16> %v0, <i16 31, i16 31, i16 31, i16 31, i16 31, i16 31, i16 31, i16 31, i16 31, i16 31, i16 31, i16 31, i16 31, i16 31, i16 31, i16 31>
93ca66df3bSwanglei  store <16 x i16> %v1, ptr %res
94ca66df3bSwanglei  ret void
95ca66df3bSwanglei}
96ca66df3bSwanglei
97ca66df3bSwangleidefine void @or_u_v8i32(ptr %res, ptr %a0) nounwind {
98ca66df3bSwanglei; CHECK-LABEL: or_u_v8i32:
99ca66df3bSwanglei; CHECK:       # %bb.0: # %entry
100ca66df3bSwanglei; CHECK-NEXT:    xvld $xr0, $a1, 0
101ca66df3bSwanglei; CHECK-NEXT:    xvrepli.w $xr1, 31
102ca66df3bSwanglei; CHECK-NEXT:    xvor.v $xr0, $xr0, $xr1
103ca66df3bSwanglei; CHECK-NEXT:    xvst $xr0, $a0, 0
104ca66df3bSwanglei; CHECK-NEXT:    ret
105ca66df3bSwangleientry:
106ca66df3bSwanglei  %v0 = load <8 x i32>, ptr %a0
107ca66df3bSwanglei  %v1 = or <8 x i32> %v0, <i32 31, i32 31, i32 31, i32 31, i32 31, i32 31, i32 31, i32 31>
108ca66df3bSwanglei  store <8 x i32> %v1, ptr %res
109ca66df3bSwanglei  ret void
110ca66df3bSwanglei}
111ca66df3bSwanglei
112ca66df3bSwangleidefine void @or_u_v4i64(ptr %res, ptr %a0) nounwind {
113ca66df3bSwanglei; CHECK-LABEL: or_u_v4i64:
114ca66df3bSwanglei; CHECK:       # %bb.0: # %entry
115ca66df3bSwanglei; CHECK-NEXT:    xvld $xr0, $a1, 0
116ca66df3bSwanglei; CHECK-NEXT:    xvrepli.d $xr1, 31
117ca66df3bSwanglei; CHECK-NEXT:    xvor.v $xr0, $xr0, $xr1
118ca66df3bSwanglei; CHECK-NEXT:    xvst $xr0, $a0, 0
119ca66df3bSwanglei; CHECK-NEXT:    ret
120ca66df3bSwangleientry:
121ca66df3bSwanglei  %v0 = load <4 x i64>, ptr %a0
122ca66df3bSwanglei  %v1 = or <4 x i64> %v0, <i64 31, i64 31, i64 31, i64 31>
123ca66df3bSwanglei  store <4 x i64> %v1, ptr %res
124ca66df3bSwanglei  ret void
125ca66df3bSwanglei}
126