Revert " [LoongArch][ISel] Check the number of sign bits in `PatGprGpr_32` (#107432)"
[llvm-project.git] / llvm / test / CodeGen / LoongArch / inline-asm-constraint-m.ll
blob281d52c47b6854b9fecf74daa0fdb2f8bf7f5496
1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: llc --mtriple=loongarch32 -mattr=+d --verify-machineinstrs < %s | FileCheck %s --check-prefix=LA32
3 ; RUN: llc --mtriple=loongarch64 -mattr=+d --verify-machineinstrs < %s | FileCheck %s --check-prefix=LA64
5 define i32 @m_offset_neg_2049(ptr %p) nounwind {
6 ; LA32-LABEL: m_offset_neg_2049:
7 ; LA32:       # %bb.0:
8 ; LA32-NEXT:    addi.w $a0, $a0, -2048
9 ; LA32-NEXT:    addi.w $a0, $a0, -1
10 ; LA32-NEXT:    #APP
11 ; LA32-NEXT:    ld.w $a0, $a0, 0
12 ; LA32-NEXT:    #NO_APP
13 ; LA32-NEXT:    ret
15 ; LA64-LABEL: m_offset_neg_2049:
16 ; LA64:       # %bb.0:
17 ; LA64-NEXT:    addi.d $a0, $a0, -2048
18 ; LA64-NEXT:    addi.d $a0, $a0, -1
19 ; LA64-NEXT:    #APP
20 ; LA64-NEXT:    ld.w $a0, $a0, 0
21 ; LA64-NEXT:    #NO_APP
22 ; LA64-NEXT:    ret
23   %1 = getelementptr inbounds i8, ptr %p, i32 -2049
24   %2 = call i32 asm "ld.w $0, $1", "=r,*m"(ptr elementtype(i32) %1)
25   ret i32 %2
28 define i32 @m_offset_neg_2048(ptr %p) nounwind {
29 ; LA32-LABEL: m_offset_neg_2048:
30 ; LA32:       # %bb.0:
31 ; LA32-NEXT:    #APP
32 ; LA32-NEXT:    ld.w $a0, $a0, -2048
33 ; LA32-NEXT:    #NO_APP
34 ; LA32-NEXT:    ret
36 ; LA64-LABEL: m_offset_neg_2048:
37 ; LA64:       # %bb.0:
38 ; LA64-NEXT:    #APP
39 ; LA64-NEXT:    ld.w $a0, $a0, -2048
40 ; LA64-NEXT:    #NO_APP
41 ; LA64-NEXT:    ret
42   %1 = getelementptr inbounds i8, ptr %p, i32 -2048
43   %2 = call i32 asm "ld.w $0, $1", "=r,*m"(ptr elementtype(i32) %1)
44   ret i32 %2
47 define i32 @m_offset_neg_1(ptr %p) nounwind {
48 ; LA32-LABEL: m_offset_neg_1:
49 ; LA32:       # %bb.0:
50 ; LA32-NEXT:    #APP
51 ; LA32-NEXT:    ld.w $a0, $a0, -1
52 ; LA32-NEXT:    #NO_APP
53 ; LA32-NEXT:    ret
55 ; LA64-LABEL: m_offset_neg_1:
56 ; LA64:       # %bb.0:
57 ; LA64-NEXT:    #APP
58 ; LA64-NEXT:    ld.w $a0, $a0, -1
59 ; LA64-NEXT:    #NO_APP
60 ; LA64-NEXT:    ret
61   %1 = getelementptr inbounds i8, ptr %p, i32 -1
62   %2 = call i32 asm "ld.w $0, $1", "=r,*m"(ptr elementtype(i32) %1)
63   ret i32 %2
66 define i32 @m_offset_0(ptr %p) nounwind {
67 ; LA32-LABEL: m_offset_0:
68 ; LA32:       # %bb.0:
69 ; LA32-NEXT:    #APP
70 ; LA32-NEXT:    ld.w $a0, $a0, 0
71 ; LA32-NEXT:    #NO_APP
72 ; LA32-NEXT:    ret
74 ; LA64-LABEL: m_offset_0:
75 ; LA64:       # %bb.0:
76 ; LA64-NEXT:    #APP
77 ; LA64-NEXT:    ld.w $a0, $a0, 0
78 ; LA64-NEXT:    #NO_APP
79 ; LA64-NEXT:    ret
80   %1 = call i32 asm "ld.w $0, $1", "=r,*m"(ptr elementtype(i32) %p)
81   ret i32 %1
84 define i32 @m_offset_1(ptr %p) nounwind {
85 ; LA32-LABEL: m_offset_1:
86 ; LA32:       # %bb.0:
87 ; LA32-NEXT:    #APP
88 ; LA32-NEXT:    ld.w $a0, $a0, 1
89 ; LA32-NEXT:    #NO_APP
90 ; LA32-NEXT:    ret
92 ; LA64-LABEL: m_offset_1:
93 ; LA64:       # %bb.0:
94 ; LA64-NEXT:    #APP
95 ; LA64-NEXT:    ld.w $a0, $a0, 1
96 ; LA64-NEXT:    #NO_APP
97 ; LA64-NEXT:    ret
98   %1 = getelementptr inbounds i8, ptr %p, i32 1
99   %2 = call i32 asm "ld.w $0, $1", "=r,*m"(ptr elementtype(i32) %1)
100   ret i32 %2
103 define i32 @m_offset_2047(ptr %p) nounwind {
104 ; LA32-LABEL: m_offset_2047:
105 ; LA32:       # %bb.0:
106 ; LA32-NEXT:    #APP
107 ; LA32-NEXT:    ld.w $a0, $a0, 2047
108 ; LA32-NEXT:    #NO_APP
109 ; LA32-NEXT:    ret
111 ; LA64-LABEL: m_offset_2047:
112 ; LA64:       # %bb.0:
113 ; LA64-NEXT:    #APP
114 ; LA64-NEXT:    ld.w $a0, $a0, 2047
115 ; LA64-NEXT:    #NO_APP
116 ; LA64-NEXT:    ret
117   %1 = getelementptr inbounds i8, ptr %p, i32 2047
118   %2 = call i32 asm "ld.w $0, $1", "=r,*m"(ptr elementtype(i32) %1)
119   ret i32 %2
122 define i32 @m_offset_2048(ptr %p) nounwind {
123 ; LA32-LABEL: m_offset_2048:
124 ; LA32:       # %bb.0:
125 ; LA32-NEXT:    addi.w $a0, $a0, 2047
126 ; LA32-NEXT:    addi.w $a0, $a0, 1
127 ; LA32-NEXT:    #APP
128 ; LA32-NEXT:    ld.w $a0, $a0, 0
129 ; LA32-NEXT:    #NO_APP
130 ; LA32-NEXT:    ret
132 ; LA64-LABEL: m_offset_2048:
133 ; LA64:       # %bb.0:
134 ; LA64-NEXT:    addi.d $a0, $a0, 2047
135 ; LA64-NEXT:    addi.d $a0, $a0, 1
136 ; LA64-NEXT:    #APP
137 ; LA64-NEXT:    ld.w $a0, $a0, 0
138 ; LA64-NEXT:    #NO_APP
139 ; LA64-NEXT:    ret
140   %1 = getelementptr inbounds i8, ptr %p, i32 2048
141   %2 = call i32 asm "ld.w $0, $1", "=r,*m"(ptr elementtype(i32) %1)
142   ret i32 %2