1 ; RUN: opt < %s -instcombine -S | grep {, align 16} | count 14
3 @x = external global <2 x i64>, align 16
4 @xx = external global [13 x <2 x i64>], align 16
6 define <2 x i64> @static_hem() {
7 %t = getelementptr <2 x i64>* @x, i32 7
8 %tmp1 = load <2 x i64>* %t, align 1
12 define <2 x i64> @hem(i32 %i) {
13 %t = getelementptr <2 x i64>* @x, i32 %i
14 %tmp1 = load <2 x i64>* %t, align 1
18 define <2 x i64> @hem_2d(i32 %i, i32 %j) {
19 %t = getelementptr [13 x <2 x i64>]* @xx, i32 %i, i32 %j
20 %tmp1 = load <2 x i64>* %t, align 1
24 define <2 x i64> @foo() {
25 %tmp1 = load <2 x i64>* @x, align 1
29 define <2 x i64> @bar() {
31 call void @kip(<2 x i64>* %t);
32 %tmp1 = load <2 x i64>* %t, align 1
36 define void @static_hem_store(<2 x i64> %y) {
37 %t = getelementptr <2 x i64>* @x, i32 7
38 store <2 x i64> %y, <2 x i64>* %t, align 1
42 define void @hem_store(i32 %i, <2 x i64> %y) {
43 %t = getelementptr <2 x i64>* @x, i32 %i
44 store <2 x i64> %y, <2 x i64>* %t, align 1
48 define void @hem_2d_store(i32 %i, i32 %j, <2 x i64> %y) {
49 %t = getelementptr [13 x <2 x i64>]* @xx, i32 %i, i32 %j
50 store <2 x i64> %y, <2 x i64>* %t, align 1
54 define void @foo_store(<2 x i64> %y) {
55 store <2 x i64> %y, <2 x i64>* @x, align 1
59 define void @bar_store(<2 x i64> %y) {
61 call void @kip(<2 x i64>* %t);
62 store <2 x i64> %y, <2 x i64>* %t, align 1
66 declare void @kip(<2 x i64>* %t)