Bump version to 19.1.0-rc3
[llvm-project.git] / llvm / test / CodeGen / LoongArch / lasx / ir-instruction / udiv.ll
blob43f558f3cdf372ba62d8a13211aeeca4f4817035
1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 4
2 ; RUN: llc --mtriple=loongarch64 --mattr=+lasx < %s | FileCheck %s
4 define void @udiv_v32i8(ptr %res, ptr %a0, ptr %a1) nounwind {
5 ; CHECK-LABEL: udiv_v32i8:
6 ; CHECK:       # %bb.0: # %entry
7 ; CHECK-NEXT:    xvld $xr0, $a1, 0
8 ; CHECK-NEXT:    xvld $xr1, $a2, 0
9 ; CHECK-NEXT:    xvdiv.bu $xr0, $xr0, $xr1
10 ; CHECK-NEXT:    xvst $xr0, $a0, 0
11 ; CHECK-NEXT:    ret
12 entry:
13   %v0 = load <32 x i8>, ptr %a0
14   %v1 = load <32 x i8>, ptr %a1
15   %v2 = udiv <32 x i8> %v0, %v1
16   store <32 x i8> %v2, ptr %res
17   ret void
20 define void @udiv_v16i16(ptr %res, ptr %a0, ptr %a1) nounwind {
21 ; CHECK-LABEL: udiv_v16i16:
22 ; CHECK:       # %bb.0: # %entry
23 ; CHECK-NEXT:    xvld $xr0, $a1, 0
24 ; CHECK-NEXT:    xvld $xr1, $a2, 0
25 ; CHECK-NEXT:    xvdiv.hu $xr0, $xr0, $xr1
26 ; CHECK-NEXT:    xvst $xr0, $a0, 0
27 ; CHECK-NEXT:    ret
28 entry:
29   %v0 = load <16 x i16>, ptr %a0
30   %v1 = load <16 x i16>, ptr %a1
31   %v2 = udiv <16 x i16> %v0, %v1
32   store <16 x i16> %v2, ptr %res
33   ret void
36 define void @udiv_v8i32(ptr %res, ptr %a0, ptr %a1) nounwind {
37 ; CHECK-LABEL: udiv_v8i32:
38 ; CHECK:       # %bb.0: # %entry
39 ; CHECK-NEXT:    xvld $xr0, $a1, 0
40 ; CHECK-NEXT:    xvld $xr1, $a2, 0
41 ; CHECK-NEXT:    xvdiv.wu $xr0, $xr0, $xr1
42 ; CHECK-NEXT:    xvst $xr0, $a0, 0
43 ; CHECK-NEXT:    ret
44 entry:
45   %v0 = load <8 x i32>, ptr %a0
46   %v1 = load <8 x i32>, ptr %a1
47   %v2 = udiv <8 x i32> %v0, %v1
48   store <8 x i32> %v2, ptr %res
49   ret void
52 define void @udiv_v4i64(ptr %res, ptr %a0, ptr %a1) nounwind {
53 ; CHECK-LABEL: udiv_v4i64:
54 ; CHECK:       # %bb.0: # %entry
55 ; CHECK-NEXT:    xvld $xr0, $a1, 0
56 ; CHECK-NEXT:    xvld $xr1, $a2, 0
57 ; CHECK-NEXT:    xvdiv.du $xr0, $xr0, $xr1
58 ; CHECK-NEXT:    xvst $xr0, $a0, 0
59 ; CHECK-NEXT:    ret
60 entry:
61   %v0 = load <4 x i64>, ptr %a0
62   %v1 = load <4 x i64>, ptr %a1
63   %v2 = udiv <4 x i64> %v0, %v1
64   store <4 x i64> %v2, ptr %res
65   ret void
68 define void @udiv_v32i8_8(ptr %res, ptr %a0) nounwind {
69 ; CHECK-LABEL: udiv_v32i8_8:
70 ; CHECK:       # %bb.0: # %entry
71 ; CHECK-NEXT:    xvld $xr0, $a1, 0
72 ; CHECK-NEXT:    xvsrli.b $xr0, $xr0, 3
73 ; CHECK-NEXT:    xvst $xr0, $a0, 0
74 ; CHECK-NEXT:    ret
75 entry:
76   %v0 = load <32 x i8>, ptr %a0
77   %v1 = udiv <32 x i8> %v0, <i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8, i8 8>
78   store <32 x i8> %v1, ptr %res
79   ret void
82 define void @udiv_v16i16_8(ptr %res, ptr %a0) nounwind {
83 ; CHECK-LABEL: udiv_v16i16_8:
84 ; CHECK:       # %bb.0: # %entry
85 ; CHECK-NEXT:    xvld $xr0, $a1, 0
86 ; CHECK-NEXT:    xvsrli.h $xr0, $xr0, 3
87 ; CHECK-NEXT:    xvst $xr0, $a0, 0
88 ; CHECK-NEXT:    ret
89 entry:
90   %v0 = load <16 x i16>, ptr %a0
91   %v1 = udiv <16 x i16> %v0, <i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8, i16 8>
92   store <16 x i16> %v1, ptr %res
93   ret void
96 define void @udiv_v8i32_8(ptr %res, ptr %a0) nounwind {
97 ; CHECK-LABEL: udiv_v8i32_8:
98 ; CHECK:       # %bb.0: # %entry
99 ; CHECK-NEXT:    xvld $xr0, $a1, 0
100 ; CHECK-NEXT:    xvsrli.w $xr0, $xr0, 3
101 ; CHECK-NEXT:    xvst $xr0, $a0, 0
102 ; CHECK-NEXT:    ret
103 entry:
104   %v0 = load <8 x i32>, ptr %a0
105   %v1 = udiv <8 x i32> %v0, <i32 8, i32 8, i32 8, i32 8, i32 8, i32 8, i32 8, i32 8>
106   store <8 x i32> %v1, ptr %res
107   ret void
110 define void @udiv_v4i64_8(ptr %res, ptr %a0) nounwind {
111 ; CHECK-LABEL: udiv_v4i64_8:
112 ; CHECK:       # %bb.0: # %entry
113 ; CHECK-NEXT:    xvld $xr0, $a1, 0
114 ; CHECK-NEXT:    xvsrli.d $xr0, $xr0, 3
115 ; CHECK-NEXT:    xvst $xr0, $a0, 0
116 ; CHECK-NEXT:    ret
117 entry:
118   %v0 = load <4 x i64>, ptr %a0
119   %v1 = udiv <4 x i64> %v0, <i64 8, i64 8, i64 8, i64 8>
120   store <4 x i64> %v1, ptr %res
121   ret void