1; RUN: opt -instcombine -S < %s | FileCheck %s 2target datalayout = "E-p:64:64:64-p1:64:64:64-p2:32:32:32-a0:0:8-f32:32:32-f64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-v64:64:64-v128:128:128" 3 4@x = external global <2 x i64>, align 16 5@xx = external global [13 x <2 x i64>], align 16 6 7@x.as2 = external addrspace(2) global <2 x i64>, align 16 8 9; CHECK-LABEL: @static_hem( 10; CHECK: , align 16 11define <2 x i64> @static_hem() { 12 %t = getelementptr <2 x i64>, <2 x i64>* @x, i32 7 13 %tmp1 = load <2 x i64>, <2 x i64>* %t, align 1 14 ret <2 x i64> %tmp1 15} 16 17; CHECK-LABEL: @hem( 18; CHECK: , align 16 19define <2 x i64> @hem(i32 %i) { 20 %t = getelementptr <2 x i64>, <2 x i64>* @x, i32 %i 21 %tmp1 = load <2 x i64>, <2 x i64>* %t, align 1 22 ret <2 x i64> %tmp1 23} 24 25; CHECK-LABEL: @hem_2d( 26; CHECK: , align 16 27define <2 x i64> @hem_2d(i32 %i, i32 %j) { 28 %t = getelementptr [13 x <2 x i64>], [13 x <2 x i64>]* @xx, i32 %i, i32 %j 29 %tmp1 = load <2 x i64>, <2 x i64>* %t, align 1 30 ret <2 x i64> %tmp1 31} 32 33; CHECK-LABEL: @foo( 34; CHECK: , align 16 35define <2 x i64> @foo() { 36 %tmp1 = load <2 x i64>, <2 x i64>* @x, align 1 37 ret <2 x i64> %tmp1 38} 39 40; CHECK-LABEL: @bar( 41; CHECK: , align 16 42; CHECK: , align 16 43define <2 x i64> @bar() { 44 %t = alloca <2 x i64> 45 call void @kip(<2 x i64>* %t) 46 %tmp1 = load <2 x i64>, <2 x i64>* %t, align 1 47 ret <2 x i64> %tmp1 48} 49 50; CHECK-LABEL: @static_hem_store( 51; CHECK: , align 16 52define void @static_hem_store(<2 x i64> %y) { 53 %t = getelementptr <2 x i64>, <2 x i64>* @x, i32 7 54 store <2 x i64> %y, <2 x i64>* %t, align 1 55 ret void 56} 57 58; CHECK-LABEL: @hem_store( 59; CHECK: , align 16 60define void @hem_store(i32 %i, <2 x i64> %y) { 61 %t = getelementptr <2 x i64>, <2 x i64>* @x, i32 %i 62 store <2 x i64> %y, <2 x i64>* %t, align 1 63 ret void 64} 65 66; CHECK-LABEL: @hem_2d_store( 67; CHECK: , align 16 68define void @hem_2d_store(i32 %i, i32 %j, <2 x i64> %y) { 69 %t = getelementptr [13 x <2 x i64>], [13 x <2 x i64>]* @xx, i32 %i, i32 %j 70 store <2 x i64> %y, <2 x i64>* %t, align 1 71 ret void 72} 73 74; CHECK-LABEL: @foo_store( 75; CHECK: , align 16 76define void @foo_store(<2 x i64> %y) { 77 store <2 x i64> %y, <2 x i64>* @x, align 1 78 ret void 79} 80 81; CHECK-LABEL: @bar_store( 82; CHECK: , align 16 83define void @bar_store(<2 x i64> %y) { 84 %t = alloca <2 x i64> 85 call void @kip(<2 x i64>* %t) 86 store <2 x i64> %y, <2 x i64>* %t, align 1 87 ret void 88} 89 90declare void @kip(<2 x i64>* %t) 91