Skip to content

Commit 026e19d

Browse files
Automerge: [X86][NFC] Moved/Updated llvm.set.rounding testcases (#155434)
- Moved llvm.set.rounding testcases from llvm/test/CodeGen/X86/fpenv.ll to llvm/test/CodeGen/X86/isel-llvm.set.rounding.ll. - Added GlobalIsel RUNs as precommit test and will add llvm.set.rounding GISEL implementation PR after this merge.
2 parents c2cde18 + 036b33d commit 026e19d

File tree

2 files changed

+294
-238
lines changed

2 files changed

+294
-238
lines changed

llvm/test/CodeGen/X86/fpenv.ll

Lines changed: 0 additions & 238 deletions
Original file line numberDiff line numberDiff line change
@@ -11,244 +11,6 @@ declare i32 @llvm.get.fpmode.i32()
1111
declare void @llvm.set.fpmode.i32(i32 %fpmode)
1212
declare void @llvm.reset.fpmode()
1313

14-
define void @func_01() nounwind {
15-
; X86-NOSSE-LABEL: func_01:
16-
; X86-NOSSE: # %bb.0:
17-
; X86-NOSSE-NEXT: pushl %eax
18-
; X86-NOSSE-NEXT: fnstcw (%esp)
19-
; X86-NOSSE-NEXT: orb $12, {{[0-9]+}}(%esp)
20-
; X86-NOSSE-NEXT: fldcw (%esp)
21-
; X86-NOSSE-NEXT: popl %eax
22-
; X86-NOSSE-NEXT: retl
23-
;
24-
; X86-SSE-LABEL: func_01:
25-
; X86-SSE: # %bb.0:
26-
; X86-SSE-NEXT: pushl %eax
27-
; X86-SSE-NEXT: fnstcw (%esp)
28-
; X86-SSE-NEXT: orb $12, {{[0-9]+}}(%esp)
29-
; X86-SSE-NEXT: fldcw (%esp)
30-
; X86-SSE-NEXT: stmxcsr (%esp)
31-
; X86-SSE-NEXT: orb $96, {{[0-9]+}}(%esp)
32-
; X86-SSE-NEXT: ldmxcsr (%esp)
33-
; X86-SSE-NEXT: popl %eax
34-
; X86-SSE-NEXT: retl
35-
;
36-
; X64-LABEL: func_01:
37-
; X64: # %bb.0:
38-
; X64-NEXT: fnstcw -{{[0-9]+}}(%rsp)
39-
; X64-NEXT: orb $12, -{{[0-9]+}}(%rsp)
40-
; X64-NEXT: fldcw -{{[0-9]+}}(%rsp)
41-
; X64-NEXT: stmxcsr -{{[0-9]+}}(%rsp)
42-
; X64-NEXT: orb $96, -{{[0-9]+}}(%rsp)
43-
; X64-NEXT: ldmxcsr -{{[0-9]+}}(%rsp)
44-
; X64-NEXT: retq
45-
call void @llvm.set.rounding(i32 0) ; TowardZero (CW[11-10] = 11)
46-
ret void
47-
}
48-
49-
define void @func_02() nounwind {
50-
; X86-NOSSE-LABEL: func_02:
51-
; X86-NOSSE: # %bb.0:
52-
; X86-NOSSE-NEXT: pushl %eax
53-
; X86-NOSSE-NEXT: fnstcw (%esp)
54-
; X86-NOSSE-NEXT: andb $-13, {{[0-9]+}}(%esp)
55-
; X86-NOSSE-NEXT: fldcw (%esp)
56-
; X86-NOSSE-NEXT: popl %eax
57-
; X86-NOSSE-NEXT: retl
58-
;
59-
; X86-SSE-LABEL: func_02:
60-
; X86-SSE: # %bb.0:
61-
; X86-SSE-NEXT: pushl %eax
62-
; X86-SSE-NEXT: fnstcw (%esp)
63-
; X86-SSE-NEXT: andb $-13, {{[0-9]+}}(%esp)
64-
; X86-SSE-NEXT: fldcw (%esp)
65-
; X86-SSE-NEXT: stmxcsr (%esp)
66-
; X86-SSE-NEXT: andb $-97, {{[0-9]+}}(%esp)
67-
; X86-SSE-NEXT: ldmxcsr (%esp)
68-
; X86-SSE-NEXT: popl %eax
69-
; X86-SSE-NEXT: retl
70-
;
71-
; X64-LABEL: func_02:
72-
; X64: # %bb.0:
73-
; X64-NEXT: fnstcw -{{[0-9]+}}(%rsp)
74-
; X64-NEXT: andb $-13, -{{[0-9]+}}(%rsp)
75-
; X64-NEXT: fldcw -{{[0-9]+}}(%rsp)
76-
; X64-NEXT: stmxcsr -{{[0-9]+}}(%rsp)
77-
; X64-NEXT: andb $-97, -{{[0-9]+}}(%rsp)
78-
; X64-NEXT: ldmxcsr -{{[0-9]+}}(%rsp)
79-
; X64-NEXT: retq
80-
call void @llvm.set.rounding(i32 1) ; ToNearestTiesToEven (CW[11-10] = 00)
81-
ret void
82-
}
83-
84-
define void @func_03() nounwind {
85-
; X86-NOSSE-LABEL: func_03:
86-
; X86-NOSSE: # %bb.0:
87-
; X86-NOSSE-NEXT: pushl %eax
88-
; X86-NOSSE-NEXT: fnstcw (%esp)
89-
; X86-NOSSE-NEXT: movl $-3073, %eax # imm = 0xF3FF
90-
; X86-NOSSE-NEXT: andl (%esp), %eax
91-
; X86-NOSSE-NEXT: orl $2048, %eax # imm = 0x800
92-
; X86-NOSSE-NEXT: movw %ax, (%esp)
93-
; X86-NOSSE-NEXT: fldcw (%esp)
94-
; X86-NOSSE-NEXT: popl %eax
95-
; X86-NOSSE-NEXT: retl
96-
;
97-
; X86-SSE-LABEL: func_03:
98-
; X86-SSE: # %bb.0:
99-
; X86-SSE-NEXT: pushl %eax
100-
; X86-SSE-NEXT: fnstcw (%esp)
101-
; X86-SSE-NEXT: movl $-3073, %eax # imm = 0xF3FF
102-
; X86-SSE-NEXT: andl (%esp), %eax
103-
; X86-SSE-NEXT: orl $2048, %eax # imm = 0x800
104-
; X86-SSE-NEXT: movw %ax, (%esp)
105-
; X86-SSE-NEXT: fldcw (%esp)
106-
; X86-SSE-NEXT: stmxcsr (%esp)
107-
; X86-SSE-NEXT: movl $-24577, %eax # imm = 0x9FFF
108-
; X86-SSE-NEXT: andl (%esp), %eax
109-
; X86-SSE-NEXT: orl $16384, %eax # imm = 0x4000
110-
; X86-SSE-NEXT: movl %eax, (%esp)
111-
; X86-SSE-NEXT: ldmxcsr (%esp)
112-
; X86-SSE-NEXT: popl %eax
113-
; X86-SSE-NEXT: retl
114-
;
115-
; X64-LABEL: func_03:
116-
; X64: # %bb.0:
117-
; X64-NEXT: fnstcw -{{[0-9]+}}(%rsp)
118-
; X64-NEXT: movl $-3073, %eax # imm = 0xF3FF
119-
; X64-NEXT: andl -{{[0-9]+}}(%rsp), %eax
120-
; X64-NEXT: orl $2048, %eax # imm = 0x800
121-
; X64-NEXT: movw %ax, -{{[0-9]+}}(%rsp)
122-
; X64-NEXT: fldcw -{{[0-9]+}}(%rsp)
123-
; X64-NEXT: stmxcsr -{{[0-9]+}}(%rsp)
124-
; X64-NEXT: movl $-24577, %eax # imm = 0x9FFF
125-
; X64-NEXT: andl -{{[0-9]+}}(%rsp), %eax
126-
; X64-NEXT: orl $16384, %eax # imm = 0x4000
127-
; X64-NEXT: movl %eax, -{{[0-9]+}}(%rsp)
128-
; X64-NEXT: ldmxcsr -{{[0-9]+}}(%rsp)
129-
; X64-NEXT: retq
130-
call void @llvm.set.rounding(i32 2) ; Upward (CW[11-10] = 10)
131-
ret void
132-
}
133-
134-
define void @func_04() nounwind {
135-
; X86-NOSSE-LABEL: func_04:
136-
; X86-NOSSE: # %bb.0:
137-
; X86-NOSSE-NEXT: pushl %eax
138-
; X86-NOSSE-NEXT: fnstcw (%esp)
139-
; X86-NOSSE-NEXT: movl $-3073, %eax # imm = 0xF3FF
140-
; X86-NOSSE-NEXT: andl (%esp), %eax
141-
; X86-NOSSE-NEXT: orl $1024, %eax # imm = 0x400
142-
; X86-NOSSE-NEXT: movw %ax, (%esp)
143-
; X86-NOSSE-NEXT: fldcw (%esp)
144-
; X86-NOSSE-NEXT: popl %eax
145-
; X86-NOSSE-NEXT: retl
146-
;
147-
; X86-SSE-LABEL: func_04:
148-
; X86-SSE: # %bb.0:
149-
; X86-SSE-NEXT: pushl %eax
150-
; X86-SSE-NEXT: fnstcw (%esp)
151-
; X86-SSE-NEXT: movl $-3073, %eax # imm = 0xF3FF
152-
; X86-SSE-NEXT: andl (%esp), %eax
153-
; X86-SSE-NEXT: orl $1024, %eax # imm = 0x400
154-
; X86-SSE-NEXT: movw %ax, (%esp)
155-
; X86-SSE-NEXT: fldcw (%esp)
156-
; X86-SSE-NEXT: stmxcsr (%esp)
157-
; X86-SSE-NEXT: movl $-24577, %eax # imm = 0x9FFF
158-
; X86-SSE-NEXT: andl (%esp), %eax
159-
; X86-SSE-NEXT: orl $8192, %eax # imm = 0x2000
160-
; X86-SSE-NEXT: movl %eax, (%esp)
161-
; X86-SSE-NEXT: ldmxcsr (%esp)
162-
; X86-SSE-NEXT: popl %eax
163-
; X86-SSE-NEXT: retl
164-
;
165-
; X64-LABEL: func_04:
166-
; X64: # %bb.0:
167-
; X64-NEXT: fnstcw -{{[0-9]+}}(%rsp)
168-
; X64-NEXT: movl $-3073, %eax # imm = 0xF3FF
169-
; X64-NEXT: andl -{{[0-9]+}}(%rsp), %eax
170-
; X64-NEXT: orl $1024, %eax # imm = 0x400
171-
; X64-NEXT: movw %ax, -{{[0-9]+}}(%rsp)
172-
; X64-NEXT: fldcw -{{[0-9]+}}(%rsp)
173-
; X64-NEXT: stmxcsr -{{[0-9]+}}(%rsp)
174-
; X64-NEXT: movl $-24577, %eax # imm = 0x9FFF
175-
; X64-NEXT: andl -{{[0-9]+}}(%rsp), %eax
176-
; X64-NEXT: orl $8192, %eax # imm = 0x2000
177-
; X64-NEXT: movl %eax, -{{[0-9]+}}(%rsp)
178-
; X64-NEXT: ldmxcsr -{{[0-9]+}}(%rsp)
179-
; X64-NEXT: retq
180-
call void @llvm.set.rounding(i32 3) ; Downward (CW[11-10] = 01)
181-
ret void
182-
}
183-
184-
define void @func_05(i32 %x) nounwind {
185-
; X86-NOSSE-LABEL: func_05:
186-
; X86-NOSSE: # %bb.0:
187-
; X86-NOSSE-NEXT: pushl %eax
188-
; X86-NOSSE-NEXT: movl {{[0-9]+}}(%esp), %eax
189-
; X86-NOSSE-NEXT: leal 4(%eax,%eax), %ecx
190-
; X86-NOSSE-NEXT: movl $201, %eax
191-
; X86-NOSSE-NEXT: # kill: def $cl killed $cl killed $ecx
192-
; X86-NOSSE-NEXT: shll %cl, %eax
193-
; X86-NOSSE-NEXT: andl $3072, %eax # imm = 0xC00
194-
; X86-NOSSE-NEXT: fnstcw (%esp)
195-
; X86-NOSSE-NEXT: movl $-3073, %ecx # imm = 0xF3FF
196-
; X86-NOSSE-NEXT: andl (%esp), %ecx
197-
; X86-NOSSE-NEXT: orl %eax, %ecx
198-
; X86-NOSSE-NEXT: movw %cx, (%esp)
199-
; X86-NOSSE-NEXT: fldcw (%esp)
200-
; X86-NOSSE-NEXT: popl %eax
201-
; X86-NOSSE-NEXT: retl
202-
;
203-
; X86-SSE-LABEL: func_05:
204-
; X86-SSE: # %bb.0:
205-
; X86-SSE-NEXT: pushl %eax
206-
; X86-SSE-NEXT: movl {{[0-9]+}}(%esp), %eax
207-
; X86-SSE-NEXT: leal 4(%eax,%eax), %ecx
208-
; X86-SSE-NEXT: movl $201, %eax
209-
; X86-SSE-NEXT: # kill: def $cl killed $cl killed $ecx
210-
; X86-SSE-NEXT: shll %cl, %eax
211-
; X86-SSE-NEXT: andl $3072, %eax # imm = 0xC00
212-
; X86-SSE-NEXT: fnstcw (%esp)
213-
; X86-SSE-NEXT: movl $-3073, %ecx # imm = 0xF3FF
214-
; X86-SSE-NEXT: andl (%esp), %ecx
215-
; X86-SSE-NEXT: orl %eax, %ecx
216-
; X86-SSE-NEXT: movw %cx, (%esp)
217-
; X86-SSE-NEXT: fldcw (%esp)
218-
; X86-SSE-NEXT: stmxcsr (%esp)
219-
; X86-SSE-NEXT: movl $-24577, %ecx # imm = 0x9FFF
220-
; X86-SSE-NEXT: andl (%esp), %ecx
221-
; X86-SSE-NEXT: leal (%ecx,%eax,8), %eax
222-
; X86-SSE-NEXT: movl %eax, (%esp)
223-
; X86-SSE-NEXT: ldmxcsr (%esp)
224-
; X86-SSE-NEXT: popl %eax
225-
; X86-SSE-NEXT: retl
226-
;
227-
; X64-LABEL: func_05:
228-
; X64: # %bb.0:
229-
; X64-NEXT: # kill: def $edi killed $edi def $rdi
230-
; X64-NEXT: leal 4(%rdi,%rdi), %ecx
231-
; X64-NEXT: movl $201, %eax
232-
; X64-NEXT: # kill: def $cl killed $cl killed $ecx
233-
; X64-NEXT: shll %cl, %eax
234-
; X64-NEXT: andl $3072, %eax # imm = 0xC00
235-
; X64-NEXT: fnstcw -{{[0-9]+}}(%rsp)
236-
; X64-NEXT: movl $-3073, %ecx # imm = 0xF3FF
237-
; X64-NEXT: andl -{{[0-9]+}}(%rsp), %ecx
238-
; X64-NEXT: orl %eax, %ecx
239-
; X64-NEXT: movw %cx, -{{[0-9]+}}(%rsp)
240-
; X64-NEXT: fldcw -{{[0-9]+}}(%rsp)
241-
; X64-NEXT: stmxcsr -{{[0-9]+}}(%rsp)
242-
; X64-NEXT: movl $-24577, %ecx # imm = 0x9FFF
243-
; X64-NEXT: andl -{{[0-9]+}}(%rsp), %ecx
244-
; X64-NEXT: leal (%rcx,%rax,8), %eax
245-
; X64-NEXT: movl %eax, -{{[0-9]+}}(%rsp)
246-
; X64-NEXT: ldmxcsr -{{[0-9]+}}(%rsp)
247-
; X64-NEXT: retq
248-
call void @llvm.set.rounding(i32 %x) ; Downward
249-
ret void
250-
}
251-
25214
define void @get_fpenv_01(ptr %ptr) #0 {
25315
; X86-NOSSE-LABEL: get_fpenv_01:
25416
; X86-NOSSE: # %bb.0: # %entry

0 commit comments

Comments
 (0)