Revert " [LoongArch][ISel] Check the number of sign bits in `PatGprGpr_32` (#107432)"
[llvm-project.git] / llvm / test / CodeGen / Mips / srem-seteq-illegal-types.ll
blob1a9fa27c263deb758dcd4e3298debab7598d2522
1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: llc -mtriple=mips-unknown-linux-gnu < %s | FileCheck %s --check-prefixes=MIPSEL
3 ; RUN: llc -mtriple=mips64el-unknown-linux-gnu < %s | FileCheck %s --check-prefixes=MIPS64EL
5 define i1 @test_srem_odd(i29 %X) nounwind {
6 ; MIPSEL-LABEL: test_srem_odd:
7 ; MIPSEL:       # %bb.0:
8 ; MIPSEL-NEXT:    lui $1, 8026
9 ; MIPSEL-NEXT:    ori $1, $1, 33099
10 ; MIPSEL-NEXT:    mul $1, $4, $1
11 ; MIPSEL-NEXT:    lui $2, 41
12 ; MIPSEL-NEXT:    ori $2, $2, 24493
13 ; MIPSEL-NEXT:    addu $1, $1, $2
14 ; MIPSEL-NEXT:    lui $2, 8191
15 ; MIPSEL-NEXT:    ori $2, $2, 65535
16 ; MIPSEL-NEXT:    and $1, $1, $2
17 ; MIPSEL-NEXT:    lui $2, 82
18 ; MIPSEL-NEXT:    ori $2, $2, 48987
19 ; MIPSEL-NEXT:    jr $ra
20 ; MIPSEL-NEXT:    sltu $2, $1, $2
22 ; MIPS64EL-LABEL: test_srem_odd:
23 ; MIPS64EL:       # %bb.0:
24 ; MIPS64EL-NEXT:    lui $1, 8026
25 ; MIPS64EL-NEXT:    ori $1, $1, 33099
26 ; MIPS64EL-NEXT:    sll $2, $4, 0
27 ; MIPS64EL-NEXT:    mul $1, $2, $1
28 ; MIPS64EL-NEXT:    lui $2, 41
29 ; MIPS64EL-NEXT:    ori $2, $2, 24493
30 ; MIPS64EL-NEXT:    addu $1, $1, $2
31 ; MIPS64EL-NEXT:    lui $2, 8191
32 ; MIPS64EL-NEXT:    ori $2, $2, 65535
33 ; MIPS64EL-NEXT:    and $1, $1, $2
34 ; MIPS64EL-NEXT:    lui $2, 82
35 ; MIPS64EL-NEXT:    ori $2, $2, 48987
36 ; MIPS64EL-NEXT:    jr $ra
37 ; MIPS64EL-NEXT:    sltu $2, $1, $2
38   %srem = srem i29 %X, 99
39   %cmp = icmp eq i29 %srem, 0
40   ret i1 %cmp
43 define i1 @test_srem_even(i4 %X) nounwind {
44 ; MIPSEL-LABEL: test_srem_even:
45 ; MIPSEL:       # %bb.0:
46 ; MIPSEL-NEXT:    sll $1, $4, 28
47 ; MIPSEL-NEXT:    sra $1, $1, 28
48 ; MIPSEL-NEXT:    sll $2, $1, 1
49 ; MIPSEL-NEXT:    addu $1, $2, $1
50 ; MIPSEL-NEXT:    srl $2, $1, 4
51 ; MIPSEL-NEXT:    srl $1, $1, 7
52 ; MIPSEL-NEXT:    andi $1, $1, 1
53 ; MIPSEL-NEXT:    addiu $3, $zero, 1
54 ; MIPSEL-NEXT:    addu $1, $2, $1
55 ; MIPSEL-NEXT:    sll $2, $1, 1
56 ; MIPSEL-NEXT:    sll $1, $1, 2
57 ; MIPSEL-NEXT:    addu $1, $1, $2
58 ; MIPSEL-NEXT:    subu $1, $4, $1
59 ; MIPSEL-NEXT:    andi $1, $1, 15
60 ; MIPSEL-NEXT:    xor $1, $1, $3
61 ; MIPSEL-NEXT:    jr $ra
62 ; MIPSEL-NEXT:    sltiu $2, $1, 1
64 ; MIPS64EL-LABEL: test_srem_even:
65 ; MIPS64EL:       # %bb.0:
66 ; MIPS64EL-NEXT:    sll $1, $4, 0
67 ; MIPS64EL-NEXT:    sll $2, $1, 28
68 ; MIPS64EL-NEXT:    sra $2, $2, 28
69 ; MIPS64EL-NEXT:    sll $3, $2, 1
70 ; MIPS64EL-NEXT:    addu $2, $3, $2
71 ; MIPS64EL-NEXT:    addiu $3, $zero, 1
72 ; MIPS64EL-NEXT:    srl $4, $2, 4
73 ; MIPS64EL-NEXT:    srl $2, $2, 7
74 ; MIPS64EL-NEXT:    andi $2, $2, 1
75 ; MIPS64EL-NEXT:    addu $2, $4, $2
76 ; MIPS64EL-NEXT:    sll $4, $2, 1
77 ; MIPS64EL-NEXT:    sll $2, $2, 2
78 ; MIPS64EL-NEXT:    addu $2, $2, $4
79 ; MIPS64EL-NEXT:    subu $1, $1, $2
80 ; MIPS64EL-NEXT:    andi $1, $1, 15
81 ; MIPS64EL-NEXT:    xor $1, $1, $3
82 ; MIPS64EL-NEXT:    jr $ra
83 ; MIPS64EL-NEXT:    sltiu $2, $1, 1
84   %srem = srem i4 %X, 6
85   %cmp = icmp eq i4 %srem, 1
86   ret i1 %cmp
89 define i1 @test_srem_pow2_setne(i6 %X) nounwind {
90 ; MIPSEL-LABEL: test_srem_pow2_setne:
91 ; MIPSEL:       # %bb.0:
92 ; MIPSEL-NEXT:    sll $1, $4, 26
93 ; MIPSEL-NEXT:    sra $1, $1, 26
94 ; MIPSEL-NEXT:    srl $1, $1, 9
95 ; MIPSEL-NEXT:    andi $1, $1, 3
96 ; MIPSEL-NEXT:    addu $1, $4, $1
97 ; MIPSEL-NEXT:    andi $1, $1, 60
98 ; MIPSEL-NEXT:    subu $1, $4, $1
99 ; MIPSEL-NEXT:    andi $1, $1, 63
100 ; MIPSEL-NEXT:    jr $ra
101 ; MIPSEL-NEXT:    sltu $2, $zero, $1
103 ; MIPS64EL-LABEL: test_srem_pow2_setne:
104 ; MIPS64EL:       # %bb.0:
105 ; MIPS64EL-NEXT:    sll $1, $4, 0
106 ; MIPS64EL-NEXT:    sll $2, $1, 26
107 ; MIPS64EL-NEXT:    sra $2, $2, 26
108 ; MIPS64EL-NEXT:    srl $2, $2, 9
109 ; MIPS64EL-NEXT:    andi $2, $2, 3
110 ; MIPS64EL-NEXT:    addu $2, $1, $2
111 ; MIPS64EL-NEXT:    andi $2, $2, 60
112 ; MIPS64EL-NEXT:    subu $1, $1, $2
113 ; MIPS64EL-NEXT:    andi $1, $1, 63
114 ; MIPS64EL-NEXT:    jr $ra
115 ; MIPS64EL-NEXT:    sltu $2, $zero, $1
116   %srem = srem i6 %X, 4
117   %cmp = icmp ne i6 %srem, 0
118   ret i1 %cmp
121 ; Asserts today
122 ; See https://bugs.llvm.org/show_bug.cgi?id=49551
123 ; and https://bugs.llvm.org/show_bug.cgi?id=49550
124 ; define <4 x i1> @test_srem_vec(<4 x i31> %X) nounwind {
125 ;   %srem = srem <4 x i31> %X, <i31 9, i31 9, i31 -9, i31 -9>
126 ;   %cmp = icmp ne <4 x i31> %srem, <i31 4, i31 -4, i31 4, i31 -4>
127 ;   ret <4 x i1> %cmp
128 ; }