[Reland][Runtimes] Merge 'compile_commands.json' files from runtimes build (#116303)
[llvm-project.git] / llvm / test / CodeGen / X86 / asm-mismatched-types.ll
blob47525e025f1dc3725a111378b282b3c313a2e312
1 ; RUN: llc -o - %s -no-integrated-as | FileCheck %s
2 target triple = "x86_64--"
4 ; Allow to specify any of the 8/16/32/64 register names interchangeably in
5 ; constraints
7 ; Produced by C-programs like this:
8 ; void foo(int p) { register int reg __asm__("r8") = p;
9 ; __asm__ __volatile__("# REG: %0" : : "r" (reg)); }
11 ; CHECK-LABEL: reg64_as_32:
12 ; CHECK: # REG: %r8d
13 define void @reg64_as_32(i32 %p) {
14   call void asm sideeffect "# REG: $0", "{r8}"(i32 %p)
15   ret void
18 ; CHECK-LABEL: reg64_as_32_float:
19 ; CHECK: # REG: %r8d
20 define void @reg64_as_32_float(float %p) {
21   call void asm sideeffect "# REG: $0", "{r8}"(float %p)
22   ret void
25 ; CHECK-LABEL: reg64_as_16:
26 ; CHECK: # REG: %r9w
27 define void @reg64_as_16(i16 %p) {
28   call void asm sideeffect "# REG: $0", "{r9}"(i16 %p)
29   ret void
32 ; CHECK-LABEL: reg64_as_8:
33 ; CHECK: # REG: %bpl
34 define void @reg64_as_8(i8 %p) {
35   call void asm sideeffect "# REG: $0", "{rbp}"(i8 %p)
36   ret void
39 ; CHECK-LABEL: reg32_as_16:
40 ; CHECK: # REG: %r15w
41 define void @reg32_as_16(i16 %p) {
42   call void asm sideeffect "# REG: $0", "{r15d}"(i16 %p)
43   ret void
46 ; CHECK-LABEL: reg32_as_8:
47 ; CHECK: # REG: %r12b
48 define void @reg32_as_8(i8 %p) {
49   call void asm sideeffect "# REG: $0", "{r12d}"(i8 %p)
50   ret void
53 ; CHECK-LABEL: reg16_as_8:
54 ; CHECK: # REG: %cl
55 define void @reg16_as_8(i8 %p) {
56   call void asm sideeffect "# REG: $0", "{cx}"(i8 %p)
57   ret void
60 ; CHECK-LABEL: reg32_as_64:
61 ; CHECK: # REG: %rbp
62 define void @reg32_as_64(i64 %p) {
63   call void asm sideeffect "# REG: $0", "{ebp}"(i64 %p)
64   ret void
67 ; CHECK-LABEL: reg32_as_64_float:
68 ; CHECK: # REG: %rbp
69 define void @reg32_as_64_float(double %p) {
70   call void asm sideeffect "# REG: $0", "{ebp}"(double %p)
71   ret void
74 ; CHECK-LABEL: reg16_as_64:
75 ; CHECK: # REG: %r13
76 define void @reg16_as_64(i64 %p) {
77   call void asm sideeffect "# REG: $0", "{r13w}"(i64 %p)
78   ret void
81 ; CHECK-LABEL: reg16_as_64_float:
82 ; CHECK: # REG: %r13
83 define void @reg16_as_64_float(double %p) {
84   call void asm sideeffect "# REG: $0", "{r13w}"(double %p)
85   ret void
88 ; CHECK-LABEL: reg8_as_64:
89 ; CHECK: # REG: %rax
90 define void @reg8_as_64(i64 %p) {
91   call void asm sideeffect "# REG: $0", "{al}"(i64 %p)
92   ret void
95 ; CHECK-LABEL: reg8_as_64_float:
96 ; CHECK: # REG: %rax
97 define void @reg8_as_64_float(double %p) {
98   call void asm sideeffect "# REG: $0", "{al}"(double %p)
99   ret void
102 ; CHECK-LABEL: reg16_as_32:
103 ; CHECK: # REG: %r11d
104 define void @reg16_as_32(i32 %p) {
105   call void asm sideeffect "# REG: $0", "{r11w}"(i32 %p)
106   ret void
109 ; CHECK-LABEL: reg16_as_32_float:
110 ; CHECK: # REG: %r11d
111 define void @reg16_as_32_float(float %p) {
112   call void asm sideeffect "# REG: $0", "{r11w}"(float %p)
113   ret void
116 ; CHECK-LABEL: reg8_as_32:
117 ; CHECK: # REG: %r9d
118 define void @reg8_as_32(i32 %p) {
119   call void asm sideeffect "# REG: $0", "{r9b}"(i32 %p)
120   ret void
123 ; CHECK-LABEL: reg8_as_32_float:
124 ; CHECK: # REG: %r9d
125 define void @reg8_as_32_float(float %p) {
126   call void asm sideeffect "# REG: $0", "{r9b}"(float %p)
127   ret void
130 ; CHECK-LABEL: reg8_as_16:
131 ; CHECK: # REG: %di
132 define void @reg8_as_16(i16 %p) {
133   call void asm sideeffect "# REG: $0", "{dil}"(i16 %p)
134   ret void
137 ; CHECK-LABEL: egpr_reg64_as_32:
138 ; CHECK: # REG: %r16d
139 define void @egpr_reg64_as_32(i32 %p) {
140   call void asm sideeffect "# REG: $0", "{r16}"(i32 %p)
141   ret void
144 ; CHECK-LABEL: egpr_reg64_as_32_float:
145 ; CHECK: # REG: %r16d
146 define void @egpr_reg64_as_32_float(float %p) {
147   call void asm sideeffect "# REG: $0", "{r16}"(float %p)
148   ret void
151 ; CHECK-LABEL: egpr_reg64_as_16:
152 ; CHECK: # REG: %r17w
153 define void @egpr_reg64_as_16(i16 %p) {
154   call void asm sideeffect "# REG: $0", "{r17}"(i16 %p)
155   ret void
158 ; CHECK-LABEL: egpr_reg64_as_8:
159 ; CHECK: # REG: %r21b
160 define void @egpr_reg64_as_8(i8 %p) {
161   call void asm sideeffect "# REG: $0", "{r21}"(i8 %p)
162   ret void
165 ; CHECK-LABEL: egpr_reg32_as_16:
166 ; CHECK: # REG: %r21w
167 define void @egpr_reg32_as_16(i16 %p) {
168   call void asm sideeffect "# REG: $0", "{r21d}"(i16 %p)
169   ret void
172 ; CHECK-LABEL: egpr_reg32_as_8:
173 ; CHECK: # REG: %r20b
174 define void @egpr_reg32_as_8(i8 %p) {
175   call void asm sideeffect "# REG: $0", "{r20d}"(i8 %p)
176   ret void
179 ; CHECK-LABEL: egpr_reg16_as_8:
180 ; CHECK: # REG: %r17b
181 define void @egpr_reg16_as_8(i8 %p) {
182   call void asm sideeffect "# REG: $0", "{r17w}"(i8 %p)
183   ret void
186 ; CHECK-LABEL: egpr_reg32_as_64:
187 ; CHECK: # REG: %r21
188 define void @egpr_reg32_as_64(i64 %p) {
189   call void asm sideeffect "# REG: $0", "{r21d}"(i64 %p)
190   ret void
193 ; CHECK-LABEL: egpr_reg32_as_64_float:
194 ; CHECK: # REG: %r21
195 define void @egpr_reg32_as_64_float(double %p) {
196   call void asm sideeffect "# REG: $0", "{r21d}"(double %p)
197   ret void
200 ; CHECK-LABEL: egpr_reg16_as_64:
201 ; CHECK: # REG: %r21
202 define void @egpr_reg16_as_64(i64 %p) {
203   call void asm sideeffect "# REG: $0", "{r21w}"(i64 %p)
204   ret void
207 ; CHECK-LABEL: egpr_reg16_as_64_float:
208 ; CHECK: # REG: %r21
209 define void @egpr_reg16_as_64_float(double %p) {
210   call void asm sideeffect "# REG: $0", "{r21w}"(double %p)
211   ret void
214 ; CHECK-LABEL: egpr_reg8_as_64:
215 ; CHECK: # REG: %r16
216 define void @egpr_reg8_as_64(i64 %p) {
217   call void asm sideeffect "# REG: $0", "{r16b}"(i64 %p)
218   ret void
221 ; CHECK-LABEL: egpr_reg8_as_64_float:
222 ; CHECK: # REG: %r16
223 define void @egpr_reg8_as_64_float(double %p) {
224   call void asm sideeffect "# REG: $0", "{r16b}"(double %p)
225   ret void
228 ; CHECK-LABEL: egpr_reg16_as_32:
229 ; CHECK: # REG: %r19d
230 define void @egpr_reg16_as_32(i32 %p) {
231   call void asm sideeffect "# REG: $0", "{r19w}"(i32 %p)
232   ret void
235 ; CHECK-LABEL: egpr_reg16_as_32_float:
236 ; CHECK: # REG: %r19d
237 define void @egpr_reg16_as_32_float(float %p) {
238   call void asm sideeffect "# REG: $0", "{r19w}"(float %p)
239   ret void
242 ; CHECK-LABEL: egpr_reg8_as_32:
243 ; CHECK: # REG: %r17d
244 define void @egpr_reg8_as_32(i32 %p) {
245   call void asm sideeffect "# REG: $0", "{r17b}"(i32 %p)
246   ret void
249 ; CHECK-LABEL: egpr_reg8_as_32_float:
250 ; CHECK: # REG: %r17d
251 define void @egpr_reg8_as_32_float(float %p) {
252   call void asm sideeffect "# REG: $0", "{r17b}"(float %p)
253   ret void
256 ; CHECK-LABEL: egpr_reg8_as_16:
257 ; CHECK: # REG: %r18w
258 define void @egpr_reg8_as_16(i16 %p) {
259   call void asm sideeffect "# REG: $0", "{r18b}"(i16 %p)
260   ret void