Revert " [LoongArch][ISel] Check the number of sign bits in `PatGprGpr_32` (#107432)"
[llvm-project.git] / llvm / test / CodeGen / X86 / red-zone.ll
blobf2cdba682e76762ae4777230e2fa86c72e36ecbc
1 ; RUN: llc < %s -mcpu=generic -mtriple=x86_64-linux | FileCheck %s
3 @flags_gv = global i64 0
5 ; First without noredzone.
6 ; CHECK-LABEL: f0:
7 ; CHECK: -4(%rsp)
8 ; CHECK: -4(%rsp)
9 ; CHECK: ret
10 define x86_fp80 @f0(float %f) nounwind {
11 entry:
12         %0 = fpext float %f to x86_fp80         ; <x86_fp80> [#uses=1]
13         ret x86_fp80 %0
16 ; Then with noredzone.
17 ; CHECK-LABEL: f1:
18 ; CHECK: subq $4, %rsp
19 ; CHECK: (%rsp)
20 ; CHECK: (%rsp)
21 ; CHECK: addq $4, %rsp
22 ; CHECK: ret
23 define x86_fp80 @f1(float %f) nounwind noredzone {
24 entry:
25         %0 = fpext float %f to x86_fp80         ; <x86_fp80> [#uses=1]
26         ret x86_fp80 %0
29 declare i64 @llvm.x86.flags.read.u64()
30 declare void @llvm.x86.flags.write.u64(i64)
33 ; pushfq and popfq prevent redzones.
34 ; CHECK-LABEL: norz_flags_read:
35 ; CHECK: subq ${{[0-9]+}}, %rsp
36 ; CHECK: pushfq
37 ; CHECK: popq
38 ; CHECK: (%rsp)
39 ; CHECK: (%rsp)
40 ; CHECK: ret
41 define x86_fp80 @norz_flags_read(float %f) nounwind {
42 entry:
43   %flags = call i64 @llvm.x86.flags.read.u64()
44   store i64 %flags, ptr @flags_gv
45   %0 = fpext float %f to x86_fp80
46   ret x86_fp80 %0
49 ; CHECK-LABEL: norz_flags_write:
50 ; CHECK: subq ${{[0-9]+}}, %rsp
51 ; CHECK: pushq
52 ; CHECK: popfq
53 ; CHECK: (%rsp)
54 ; CHECK: (%rsp)
55 ; CHECK: ret
56 define x86_fp80 @norz_flags_write(float %f, i64 %flags) nounwind {
57 entry:
58   call void @llvm.x86.flags.write.u64(i64 %flags)
59   %0 = fpext float %f to x86_fp80
60   ret x86_fp80 %0