xref: /llvm-project/llvm/test/tools/llvm-ml/strings.asm (revision 8fee2ee9a689276eaea61d4c3f124aa80a81b6f7)
1; RUN: llvm-ml -filetype=s %s /Fo - | FileCheck %s
2
3.data
4
5dq_single_character BYTE "a"
6; CHECK-LABEL: dq_single_character:
7; CHECK-NEXT: .byte 97
8; CHECK-NOT: .byte
9
10dq_join BYTE "ab", "cd"
11; CHECK-LABEL: dq_join:
12; CHECK-NEXT: .byte 97
13; CHECK-NEXT: .byte 98
14; CHECK-NEXT: .byte 99
15; CHECK-NEXT: .byte 100
16; CHECK-NOT: .byte
17
18dq_quote_escape BYTE "ab""""cd"
19; Intended result: ab""cd
20; CHECK-LABEL: dq_quote_escape:
21; CHECK-NEXT: .byte 97
22; CHECK-NEXT: .byte 98
23; CHECK-NEXT: .byte 34
24; CHECK-NEXT: .byte 34
25; CHECK-NEXT: .byte 99
26; CHECK-NEXT: .byte 100
27; CHECK-NOT: .byte
28
29dq_single_quote BYTE "ab''''cd"
30; Intended result: ab''''cd
31; CHECK-LABEL: dq_single_quote:
32; CHECK-NEXT: .byte 97
33; CHECK-NEXT: .byte 98
34; CHECK-NEXT: .byte 39
35; CHECK-NEXT: .byte 39
36; CHECK-NEXT: .byte 39
37; CHECK-NEXT: .byte 39
38; CHECK-NEXT: .byte 99
39; CHECK-NEXT: .byte 100
40; CHECK-NOT: .byte
41
42sq_single_character BYTE 'a'
43; CHECK-LABEL: sq_single_character:
44; CHECK-NEXT: .byte 97
45; CHECK-NOT: .byte
46
47sq_join BYTE 'ab', 'cd'
48; CHECK-LABEL: sq_join:
49; CHECK-NEXT: .byte 97
50; CHECK-NEXT: .byte 98
51; CHECK-NEXT: .byte 99
52; CHECK-NEXT: .byte 100
53; CHECK-NOT: .byte
54
55sq_quote_escape BYTE 'ab''''cd'
56; Intended result: ab''cd
57; CHECK-LABEL: sq_quote_escape:
58; CHECK-NEXT: .byte 97
59; CHECK-NEXT: .byte 98
60; CHECK-NEXT: .byte 39
61; CHECK-NEXT: .byte 39
62; CHECK-NEXT: .byte 99
63; CHECK-NEXT: .byte 100
64; CHECK-NOT: .byte
65
66sq_double_quote BYTE 'ab""""cd'
67; Intended result: ab""""cd
68; CHECK-LABEL: sq_double_quote:
69; CHECK-NEXT: .byte 97
70; CHECK-NEXT: .byte 98
71; CHECK-NEXT: .byte 34
72; CHECK-NEXT: .byte 34
73; CHECK-NEXT: .byte 34
74; CHECK-NEXT: .byte 34
75; CHECK-NEXT: .byte 99
76; CHECK-NEXT: .byte 100
77; CHECK-NOT: .byte
78
79mixed_quotes_join BYTE "a'b", 'c"d'
80; Intended result: a'bc"d
81; CHECK-LABEL: mixed_quotes_join:
82; CHECK-NEXT: .byte 97
83; CHECK-NEXT: .byte 39
84; CHECK-NEXT: .byte 98
85; CHECK-NEXT: .byte 99
86; CHECK-NEXT: .byte 34
87; CHECK-NEXT: .byte 100
88; CHECK-NOT: .byte
89
90.code
91
92sq_char_test PROC
93; CHECK-LABEL: sq_char_test:
94
95  mov eax, 'a'
96; CHECK: mov eax, 97
97
98  mov eax, ''''
99; CHECK: mov eax, 39
100
101  mov eax, '"'
102; CHECK: mov eax, 34
103
104  ret
105sq_char_test ENDP
106
107dq_char_test PROC
108; CHECK-LABEL: dq_char_test:
109
110  mov eax, "b"
111; CHECK: mov eax, 98
112
113  mov eax, """"
114; CHECK: mov eax, 34
115
116  mov eax, "'"
117; CHECK: mov eax, 39
118
119  ret
120dq_char_test ENDP
121
122string_constant_test PROC
123; CHECK-LABEL: string_constant_test:
124
125  mov eax, 'ab'
126  mov eax, "ab"
127; CHECK: mov eax, 24930
128; CHECK: mov eax, 24930
129
130  mov eax, "abc"
131  mov eax, 'abc'
132; CHECK: mov eax, 6382179
133; CHECK: mov eax, 6382179
134
135  mov eax, "abc"""
136  mov eax, 'abc'''
137; CHECK: mov eax, 1633837858
138; CHECK: mov eax, 1633837863
139
140  ret
141string_constant_test ENDP
142
143end
144