xref: /aosp_15_r20/external/llvm/test/CodeGen/X86/store-zero-and-minus-one.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; RUN: llc -mtriple=i686-unknown-linux-gnu %s -o - | FileCheck %s --check-prefix=CHECK32 --check-prefix=CHECK
2*9880d681SAndroid Build Coastguard Worker; RUN: llc -mtriple=x86_64-unknown-linux-gnu %s -o - | FileCheck %s --check-prefix=CHECK64 --check-prefix=CHECK
3*9880d681SAndroid Build Coastguard Worker
4*9880d681SAndroid Build Coastguard Workerdefine void @zero_optsize(i32* %p) optsize {
5*9880d681SAndroid Build Coastguard Workerentry:
6*9880d681SAndroid Build Coastguard Worker  store i32 0, i32* %p
7*9880d681SAndroid Build Coastguard Worker  ret void
8*9880d681SAndroid Build Coastguard Worker
9*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: zero_optsize:
10*9880d681SAndroid Build Coastguard Worker; CHECK: movl $0
11*9880d681SAndroid Build Coastguard Worker; CHECK: ret
12*9880d681SAndroid Build Coastguard Worker}
13*9880d681SAndroid Build Coastguard Worker
14*9880d681SAndroid Build Coastguard Workerdefine void @minus_one_optsize(i32* %p) optsize {
15*9880d681SAndroid Build Coastguard Workerentry:
16*9880d681SAndroid Build Coastguard Worker  store i32 -1, i32* %p
17*9880d681SAndroid Build Coastguard Worker  ret void
18*9880d681SAndroid Build Coastguard Worker
19*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: minus_one_optsize:
20*9880d681SAndroid Build Coastguard Worker; CHECK: movl $-1
21*9880d681SAndroid Build Coastguard Worker; CHECK: ret
22*9880d681SAndroid Build Coastguard Worker}
23*9880d681SAndroid Build Coastguard Worker
24*9880d681SAndroid Build Coastguard Worker
25*9880d681SAndroid Build Coastguard Workerdefine void @zero_64(i64* %p) minsize {
26*9880d681SAndroid Build Coastguard Workerentry:
27*9880d681SAndroid Build Coastguard Worker  store i64 0, i64* %p
28*9880d681SAndroid Build Coastguard Worker  ret void
29*9880d681SAndroid Build Coastguard Worker
30*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: zero_64:
31*9880d681SAndroid Build Coastguard Worker; CHECK32: andl $0
32*9880d681SAndroid Build Coastguard Worker; CHECK32: andl $0
33*9880d681SAndroid Build Coastguard Worker; CHECK64: andq $0
34*9880d681SAndroid Build Coastguard Worker; CHECK: ret
35*9880d681SAndroid Build Coastguard Worker}
36*9880d681SAndroid Build Coastguard Worker
37*9880d681SAndroid Build Coastguard Workerdefine void @zero_32(i32* %p) minsize {
38*9880d681SAndroid Build Coastguard Workerentry:
39*9880d681SAndroid Build Coastguard Worker  store i32 0, i32* %p
40*9880d681SAndroid Build Coastguard Worker  ret void
41*9880d681SAndroid Build Coastguard Worker
42*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: zero_32:
43*9880d681SAndroid Build Coastguard Worker; CHECK: andl $0
44*9880d681SAndroid Build Coastguard Worker; CHECK: ret
45*9880d681SAndroid Build Coastguard Worker}
46*9880d681SAndroid Build Coastguard Worker
47*9880d681SAndroid Build Coastguard Workerdefine void @zero_16(i16* %p) minsize {
48*9880d681SAndroid Build Coastguard Workerentry:
49*9880d681SAndroid Build Coastguard Worker  store i16 0, i16* %p
50*9880d681SAndroid Build Coastguard Worker  ret void
51*9880d681SAndroid Build Coastguard Worker
52*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: zero_16:
53*9880d681SAndroid Build Coastguard Worker; CHECK: andw $0
54*9880d681SAndroid Build Coastguard Worker; CHECK: ret
55*9880d681SAndroid Build Coastguard Worker}
56*9880d681SAndroid Build Coastguard Worker
57*9880d681SAndroid Build Coastguard Worker
58*9880d681SAndroid Build Coastguard Workerdefine void @minus_one_64(i64* %p) minsize {
59*9880d681SAndroid Build Coastguard Workerentry:
60*9880d681SAndroid Build Coastguard Worker  store i64 -1, i64* %p
61*9880d681SAndroid Build Coastguard Worker  ret void
62*9880d681SAndroid Build Coastguard Worker
63*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: minus_one_64:
64*9880d681SAndroid Build Coastguard Worker; CHECK32: orl $-1
65*9880d681SAndroid Build Coastguard Worker; CHECK32: orl $-1
66*9880d681SAndroid Build Coastguard Worker; CHECK64: orq $-1
67*9880d681SAndroid Build Coastguard Worker; CHECK: ret
68*9880d681SAndroid Build Coastguard Worker}
69*9880d681SAndroid Build Coastguard Worker
70*9880d681SAndroid Build Coastguard Workerdefine void @minus_one_32(i32* %p) minsize {
71*9880d681SAndroid Build Coastguard Workerentry:
72*9880d681SAndroid Build Coastguard Worker  store i32 -1, i32* %p
73*9880d681SAndroid Build Coastguard Worker  ret void
74*9880d681SAndroid Build Coastguard Worker
75*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: minus_one_32:
76*9880d681SAndroid Build Coastguard Worker; CHECK: orl $-1
77*9880d681SAndroid Build Coastguard Worker; CHECK: ret
78*9880d681SAndroid Build Coastguard Worker}
79*9880d681SAndroid Build Coastguard Worker
80*9880d681SAndroid Build Coastguard Workerdefine void @minus_one_16(i16* %p) minsize {
81*9880d681SAndroid Build Coastguard Workerentry:
82*9880d681SAndroid Build Coastguard Worker  store i16 -1, i16* %p
83*9880d681SAndroid Build Coastguard Worker  ret void
84*9880d681SAndroid Build Coastguard Worker
85*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: minus_one_16:
86*9880d681SAndroid Build Coastguard Worker; CHECK: orw $-1
87*9880d681SAndroid Build Coastguard Worker; CHECK: ret
88*9880d681SAndroid Build Coastguard Worker}
89