[AArch64,ELF] Restrict MOVZ/MOVK to non-PIC large code model (#70178)
[llvm-project.git] / llvm / test / CodeGen / X86 / 2008-03-07-APIntBug.ll
bloba7257daa4bea475e2aecbd16fc7332c207ede89c
1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: llc < %s -mtriple=i686-- -mcpu=i386 | FileCheck %s
4         %struct.CONSTRAINT = type { i32, i32, i32, i32 }
5         %struct.FIRST_UNION = type { %struct.anon }
6         %struct.FOURTH_UNION = type { %struct.CONSTRAINT }
7         %struct.LIST = type { ptr, ptr }
8         %struct.SECOND_UNION = type { { i16, i8, i8 } }
9         %struct.THIRD_UNION = type { { [2 x i32], [2 x i32] } }
10         %struct.anon = type { i8, i8, i32 }
11         %struct.head_type = type { [2 x %struct.LIST], %struct.FIRST_UNION, %struct.SECOND_UNION, %struct.THIRD_UNION, %struct.FOURTH_UNION, ptr, { ptr }, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, i32 }
12         %struct.rec = type { %struct.head_type }
13         %struct.symbol_type = type <{ [2 x %struct.LIST], %struct.FIRST_UNION, %struct.SECOND_UNION, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, i16, i16, i8, i8, i8, i8 }>
14         %struct.word_type = type { [2 x %struct.LIST], %struct.FIRST_UNION, %struct.SECOND_UNION, %struct.THIRD_UNION, [4 x i8] }
16 define void @InsertSym_bb1163(ptr %s) {
17 ; CHECK-LABEL: InsertSym_bb1163:
18 ; CHECK:       # %bb.0: # %newFuncRoot
19 ; CHECK-NEXT:    movl {{[0-9]+}}(%esp), %eax
20 ; CHECK-NEXT:    movl (%eax), %ecx
21 ; CHECK-NEXT:    movl 28(%ecx), %ecx
22 ; CHECK-NEXT:    orb $-128, 26(%ecx)
23 ; CHECK-NEXT:    orb $2, 25(%ecx)
24 ; CHECK-NEXT:    movl (%eax), %eax
25 ; CHECK-NEXT:    orb $1, 25(%eax)
26 ; CHECK-NEXT:    retl
27 newFuncRoot:
28         br label %bb1163
29 bb1233.exitStub:                ; preds = %bb1163
30         ret void
31 bb1163:         ; preds = %newFuncRoot
32         %tmp1164 = load ptr, ptr %s, align 4            ; <ptr> [#uses=1]
33         %tmp1165 = getelementptr %struct.rec, ptr %tmp1164, i32 0, i32 0                ; <ptr> [#uses=1]
34         %tmp1167 = getelementptr %struct.symbol_type, ptr %tmp1165, i32 0, i32 3                ; <ptr> [#uses=1]
35         %tmp1168 = load ptr, ptr %tmp1167, align 1              ; <ptr> [#uses=2]
36         %tmp1169 = load ptr, ptr %s, align 4            ; <ptr> [#uses=1]
37         %tmp1170 = getelementptr %struct.rec, ptr %tmp1169, i32 0, i32 0                ; <ptr> [#uses=1]
38         %tmp1172 = getelementptr %struct.symbol_type, ptr %tmp1170, i32 0, i32 3                ; <ptr> [#uses=1]
39         %tmp1173 = load ptr, ptr %tmp1172, align 1              ; <ptr> [#uses=2]
40         %tmp1174 = getelementptr %struct.rec, ptr %tmp1173, i32 0, i32 0                ; <ptr> [#uses=1]
41         %tmp1176 = getelementptr %struct.word_type, ptr %tmp1174, i32 0, i32 2          ; <ptr> [#uses=1]
42         %tmp1177 = getelementptr %struct.SECOND_UNION, ptr %tmp1176, i32 0, i32 0               ; <ptr> [#uses=1]
43         %tmp1179 = getelementptr <{ i8, i8, i8, i8 }>, ptr %tmp1177, i32 0, i32 2               ; <ptr> [#uses=2]
44         %mask1180 = and i8 1, 1         ; <i8> [#uses=2]
45         %tmp1181 = load i8, ptr %tmp1179, align 1               ; <i8> [#uses=1]
46         %tmp1182 = shl i8 %mask1180, 7          ; <i8> [#uses=1]
47         %tmp1183 = and i8 %tmp1181, 127         ; <i8> [#uses=1]
48         %tmp1184 = or i8 %tmp1183, %tmp1182             ; <i8> [#uses=1]
49         store i8 %tmp1184, ptr %tmp1179, align 1
50         %mask1185 = and i8 %mask1180, 1         ; <i8> [#uses=0]
51         %tmp1186 = getelementptr %struct.rec, ptr %tmp1173, i32 0, i32 0                ; <ptr> [#uses=1]
52         %tmp1188 = getelementptr %struct.word_type, ptr %tmp1186, i32 0, i32 2          ; <ptr> [#uses=1]
53         %tmp1189 = getelementptr %struct.SECOND_UNION, ptr %tmp1188, i32 0, i32 0               ; <ptr> [#uses=1]
54         %tmp1191 = getelementptr <{ i8, i8, i8, i8 }>, ptr %tmp1189, i32 0, i32 2               ; <ptr> [#uses=1]
55         %tmp1192 = load i8, ptr %tmp1191, align 1               ; <i8> [#uses=1]
56         %tmp1193 = lshr i8 %tmp1192, 7          ; <i8> [#uses=1]
57         %mask1194 = and i8 %tmp1193, 1          ; <i8> [#uses=2]
58         %mask1195 = and i8 %mask1194, 1         ; <i8> [#uses=0]
59         %tmp1196 = getelementptr %struct.rec, ptr %tmp1168, i32 0, i32 0                ; <ptr> [#uses=1]
60         %tmp1198 = getelementptr %struct.word_type, ptr %tmp1196, i32 0, i32 2          ; <ptr> [#uses=1]
61         %tmp1199 = getelementptr %struct.SECOND_UNION, ptr %tmp1198, i32 0, i32 0               ; <ptr> [#uses=1]
62         %tmp1201 = getelementptr <{ i8, i8, i8, i8 }>, ptr %tmp1199, i32 0, i32 1               ; <ptr> [#uses=2]
63         %mask1202 = and i8 %mask1194, 1         ; <i8> [#uses=2]
64         %tmp1203 = load i8, ptr %tmp1201, align 1               ; <i8> [#uses=1]
65         %tmp1204 = shl i8 %mask1202, 1          ; <i8> [#uses=1]
66         %tmp1205 = and i8 %tmp1204, 2           ; <i8> [#uses=1]
67         %tmp1206 = and i8 %tmp1203, -3          ; <i8> [#uses=1]
68         %tmp1207 = or i8 %tmp1206, %tmp1205             ; <i8> [#uses=1]
69         store i8 %tmp1207, ptr %tmp1201, align 1
70         %mask1208 = and i8 %mask1202, 1         ; <i8> [#uses=0]
71         %tmp1209 = getelementptr %struct.rec, ptr %tmp1168, i32 0, i32 0                ; <ptr> [#uses=1]
72         %tmp1211 = getelementptr %struct.word_type, ptr %tmp1209, i32 0, i32 2          ; <ptr> [#uses=1]
73         %tmp1212 = getelementptr %struct.SECOND_UNION, ptr %tmp1211, i32 0, i32 0               ; <ptr> [#uses=1]
74         %tmp1214 = getelementptr <{ i8, i8, i8, i8 }>, ptr %tmp1212, i32 0, i32 1               ; <ptr> [#uses=1]
75         %tmp1215 = load i8, ptr %tmp1214, align 1               ; <i8> [#uses=1]
76         %tmp1216 = shl i8 %tmp1215, 6           ; <i8> [#uses=1]
77         %tmp1217 = lshr i8 %tmp1216, 7          ; <i8> [#uses=1]
78         %mask1218 = and i8 %tmp1217, 1          ; <i8> [#uses=2]
79         %mask1219 = and i8 %mask1218, 1         ; <i8> [#uses=0]
80         %tmp1220 = load ptr, ptr %s, align 4            ; <ptr> [#uses=1]
81         %tmp1221 = getelementptr %struct.rec, ptr %tmp1220, i32 0, i32 0                ; <ptr> [#uses=1]
82         %tmp1223 = getelementptr %struct.word_type, ptr %tmp1221, i32 0, i32 2          ; <ptr> [#uses=1]
83         %tmp1224 = getelementptr %struct.SECOND_UNION, ptr %tmp1223, i32 0, i32 0               ; <ptr> [#uses=1]
84         %tmp1226 = getelementptr <{ i8, i8, i8, i8 }>, ptr %tmp1224, i32 0, i32 1               ; <ptr> [#uses=2]
85         %mask1227 = and i8 %mask1218, 1         ; <i8> [#uses=2]
86         %tmp1228 = load i8, ptr %tmp1226, align 1               ; <i8> [#uses=1]
87         %tmp1229 = and i8 %mask1227, 1          ; <i8> [#uses=1]
88         %tmp1230 = and i8 %tmp1228, -2          ; <i8> [#uses=1]
89         %tmp1231 = or i8 %tmp1230, %tmp1229             ; <i8> [#uses=1]
90         store i8 %tmp1231, ptr %tmp1226, align 1
91         %mask1232 = and i8 %mask1227, 1         ; <i8> [#uses=0]
92         br label %bb1233.exitStub