Peter Collingbourne | 10c500d | 2017-02-17 17:36:52 +0000 | [diff] [blame] | 1 | ; RUN: opt < %s -data-layout="e-p:64:64:64-p1:16:16:16-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64" -instcombine -S | FileCheck %s --check-prefix=LE |
| 2 | ; RUN: opt < %s -data-layout="E-p:64:64:64-p1:16:16:16-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64" -instcombine -S | FileCheck %s --check-prefix=BE |
Chris Lattner | ed00b80 | 2009-10-23 06:23:49 +0000 | [diff] [blame] | 3 | |
NAKAMURA Takumi | 43ab4ef | 2012-11-08 20:34:25 +0000 | [diff] [blame] | 4 | ; {{ 0xDEADBEEF, 0xBA }, 0xCAFEBABE} |
Chris Lattner | 9e2d5b3 | 2009-10-24 05:22:15 +0000 | [diff] [blame] | 5 | @g1 = constant {{i32,i8},i32} {{i32,i8} { i32 -559038737, i8 186 }, i32 -889275714 } |
| 6 | @g2 = constant double 1.0 |
NAKAMURA Takumi | 43ab4ef | 2012-11-08 20:34:25 +0000 | [diff] [blame] | 7 | ; { 0x7B, 0x06B1BFF8 } |
Chris Lattner | 9e2d5b3 | 2009-10-24 05:22:15 +0000 | [diff] [blame] | 8 | @g3 = constant {i64, i64} { i64 123, i64 112312312 } |
Chris Lattner | ed00b80 | 2009-10-23 06:23:49 +0000 | [diff] [blame] | 9 | |
| 10 | ; Simple load |
| 11 | define i32 @test1() { |
David Blaikie | f72d05b | 2015-03-13 18:20:45 +0000 | [diff] [blame] | 12 | %r = load i32, i32* getelementptr ({{i32,i8},i32}, {{i32,i8},i32}* @g1, i32 0, i32 0, i32 0) |
Chris Lattner | ed00b80 | 2009-10-23 06:23:49 +0000 | [diff] [blame] | 13 | ret i32 %r |
NAKAMURA Takumi | 43ab4ef | 2012-11-08 20:34:25 +0000 | [diff] [blame] | 14 | |
| 15 | ; 0xDEADBEEF |
Stephen Lin | c1c7a13 | 2013-07-14 01:42:54 +0000 | [diff] [blame] | 16 | ; LE-LABEL: @test1( |
NAKAMURA Takumi | 43ab4ef | 2012-11-08 20:34:25 +0000 | [diff] [blame] | 17 | ; LE: ret i32 -559038737 |
| 18 | |
| 19 | ; 0xDEADBEEF |
Stephen Lin | c1c7a13 | 2013-07-14 01:42:54 +0000 | [diff] [blame] | 20 | ; BE-LABEL: @test1( |
NAKAMURA Takumi | 43ab4ef | 2012-11-08 20:34:25 +0000 | [diff] [blame] | 21 | ; BE: ret i32 -559038737 |
Chris Lattner | ed00b80 | 2009-10-23 06:23:49 +0000 | [diff] [blame] | 22 | } |
| 23 | |
| 24 | ; PR3152 |
| 25 | ; Load of first 16 bits of 32-bit value. |
| 26 | define i16 @test2() { |
David Blaikie | f72d05b | 2015-03-13 18:20:45 +0000 | [diff] [blame] | 27 | %r = load i16, i16* bitcast(i32* getelementptr ({{i32,i8},i32}, {{i32,i8},i32}* @g1, i32 0, i32 0, i32 0) to i16*) |
Chris Lattner | ed00b80 | 2009-10-23 06:23:49 +0000 | [diff] [blame] | 28 | ret i16 %r |
| 29 | |
NAKAMURA Takumi | 43ab4ef | 2012-11-08 20:34:25 +0000 | [diff] [blame] | 30 | ; 0xBEEF |
Stephen Lin | c1c7a13 | 2013-07-14 01:42:54 +0000 | [diff] [blame] | 31 | ; LE-LABEL: @test2( |
NAKAMURA Takumi | 43ab4ef | 2012-11-08 20:34:25 +0000 | [diff] [blame] | 32 | ; LE: ret i16 -16657 |
| 33 | |
| 34 | ; 0xDEAD |
Stephen Lin | c1c7a13 | 2013-07-14 01:42:54 +0000 | [diff] [blame] | 35 | ; BE-LABEL: @test2( |
NAKAMURA Takumi | 43ab4ef | 2012-11-08 20:34:25 +0000 | [diff] [blame] | 36 | ; BE: ret i16 -8531 |
Chris Lattner | ed00b80 | 2009-10-23 06:23:49 +0000 | [diff] [blame] | 37 | } |
| 38 | |
Matt Arsenault | caa9c71 | 2014-07-14 22:39:26 +0000 | [diff] [blame] | 39 | define i16 @test2_addrspacecast() { |
David Blaikie | f72d05b | 2015-03-13 18:20:45 +0000 | [diff] [blame] | 40 | %r = load i16, i16 addrspace(1)* addrspacecast(i32* getelementptr ({{i32,i8},i32}, {{i32,i8},i32}* @g1, i32 0, i32 0, i32 0) to i16 addrspace(1)*) |
Matt Arsenault | caa9c71 | 2014-07-14 22:39:26 +0000 | [diff] [blame] | 41 | ret i16 %r |
| 42 | |
Matt Arsenault | 95365ca | 2015-07-27 18:31:03 +0000 | [diff] [blame] | 43 | ; FIXME: Should be able to load through a constant addrspacecast. |
Matt Arsenault | caa9c71 | 2014-07-14 22:39:26 +0000 | [diff] [blame] | 44 | ; 0xBEEF |
| 45 | ; LE-LABEL: @test2_addrspacecast( |
Matt Arsenault | 95365ca | 2015-07-27 18:31:03 +0000 | [diff] [blame] | 46 | ; XLE: ret i16 -16657 |
| 47 | ; LE: load i16, i16 addrspace(1)* addrspacecast |
Matt Arsenault | caa9c71 | 2014-07-14 22:39:26 +0000 | [diff] [blame] | 48 | |
| 49 | ; 0xDEAD |
| 50 | ; BE-LABEL: @test2_addrspacecast( |
Matt Arsenault | 95365ca | 2015-07-27 18:31:03 +0000 | [diff] [blame] | 51 | ; XBE: ret i16 -8531 |
| 52 | ; BE: load i16, i16 addrspace(1)* addrspacecast |
Matt Arsenault | caa9c71 | 2014-07-14 22:39:26 +0000 | [diff] [blame] | 53 | } |
| 54 | |
Chris Lattner | ed00b80 | 2009-10-23 06:23:49 +0000 | [diff] [blame] | 55 | ; Load of second 16 bits of 32-bit value. |
| 56 | define i16 @test3() { |
David Blaikie | f72d05b | 2015-03-13 18:20:45 +0000 | [diff] [blame] | 57 | %r = load i16, i16* getelementptr(i16, i16* bitcast(i32* getelementptr ({{i32,i8},i32}, {{i32,i8},i32}* @g1, i32 0, i32 0, i32 0) to i16*), i32 1) |
Chris Lattner | ed00b80 | 2009-10-23 06:23:49 +0000 | [diff] [blame] | 58 | ret i16 %r |
| 59 | |
NAKAMURA Takumi | 43ab4ef | 2012-11-08 20:34:25 +0000 | [diff] [blame] | 60 | ; 0xDEAD |
Stephen Lin | c1c7a13 | 2013-07-14 01:42:54 +0000 | [diff] [blame] | 61 | ; LE-LABEL: @test3( |
NAKAMURA Takumi | 43ab4ef | 2012-11-08 20:34:25 +0000 | [diff] [blame] | 62 | ; LE: ret i16 -8531 |
| 63 | |
| 64 | ; 0xBEEF |
Stephen Lin | c1c7a13 | 2013-07-14 01:42:54 +0000 | [diff] [blame] | 65 | ; BE-LABEL: @test3( |
NAKAMURA Takumi | 43ab4ef | 2012-11-08 20:34:25 +0000 | [diff] [blame] | 66 | ; BE: ret i16 -16657 |
Chris Lattner | ed00b80 | 2009-10-23 06:23:49 +0000 | [diff] [blame] | 67 | } |
| 68 | |
| 69 | ; Load of 8 bit field + tail padding. |
| 70 | define i16 @test4() { |
David Blaikie | f72d05b | 2015-03-13 18:20:45 +0000 | [diff] [blame] | 71 | %r = load i16, i16* getelementptr(i16, i16* bitcast(i32* getelementptr ({{i32,i8},i32}, {{i32,i8},i32}* @g1, i32 0, i32 0, i32 0) to i16*), i32 2) |
Chris Lattner | ed00b80 | 2009-10-23 06:23:49 +0000 | [diff] [blame] | 72 | ret i16 %r |
NAKAMURA Takumi | 43ab4ef | 2012-11-08 20:34:25 +0000 | [diff] [blame] | 73 | |
| 74 | ; 0x00BA |
Stephen Lin | c1c7a13 | 2013-07-14 01:42:54 +0000 | [diff] [blame] | 75 | ; LE-LABEL: @test4( |
NAKAMURA Takumi | 43ab4ef | 2012-11-08 20:34:25 +0000 | [diff] [blame] | 76 | ; LE: ret i16 186 |
| 77 | |
| 78 | ; 0xBA00 |
Stephen Lin | c1c7a13 | 2013-07-14 01:42:54 +0000 | [diff] [blame] | 79 | ; BE-LABEL: @test4( |
NAKAMURA Takumi | 43ab4ef | 2012-11-08 20:34:25 +0000 | [diff] [blame] | 80 | ; BE: ret i16 -17920 |
Chris Lattner | ed00b80 | 2009-10-23 06:23:49 +0000 | [diff] [blame] | 81 | } |
| 82 | |
| 83 | ; Load of double bits. |
| 84 | define i64 @test6() { |
David Blaikie | a79ac14 | 2015-02-27 21:17:42 +0000 | [diff] [blame] | 85 | %r = load i64, i64* bitcast(double* @g2 to i64*) |
Chris Lattner | ed00b80 | 2009-10-23 06:23:49 +0000 | [diff] [blame] | 86 | ret i64 %r |
| 87 | |
NAKAMURA Takumi | 43ab4ef | 2012-11-08 20:34:25 +0000 | [diff] [blame] | 88 | ; 0x3FF_0000000000000 |
Stephen Lin | c1c7a13 | 2013-07-14 01:42:54 +0000 | [diff] [blame] | 89 | ; LE-LABEL: @test6( |
NAKAMURA Takumi | 43ab4ef | 2012-11-08 20:34:25 +0000 | [diff] [blame] | 90 | ; LE: ret i64 4607182418800017408 |
| 91 | |
| 92 | ; 0x3FF_0000000000000 |
Stephen Lin | c1c7a13 | 2013-07-14 01:42:54 +0000 | [diff] [blame] | 93 | ; BE-LABEL: @test6( |
NAKAMURA Takumi | 43ab4ef | 2012-11-08 20:34:25 +0000 | [diff] [blame] | 94 | ; BE: ret i64 4607182418800017408 |
Chris Lattner | ed00b80 | 2009-10-23 06:23:49 +0000 | [diff] [blame] | 95 | } |
| 96 | |
| 97 | ; Load of double bits. |
| 98 | define i16 @test7() { |
David Blaikie | a79ac14 | 2015-02-27 21:17:42 +0000 | [diff] [blame] | 99 | %r = load i16, i16* bitcast(double* @g2 to i16*) |
Chris Lattner | ed00b80 | 2009-10-23 06:23:49 +0000 | [diff] [blame] | 100 | ret i16 %r |
| 101 | |
NAKAMURA Takumi | 43ab4ef | 2012-11-08 20:34:25 +0000 | [diff] [blame] | 102 | ; 0x0000 |
Stephen Lin | c1c7a13 | 2013-07-14 01:42:54 +0000 | [diff] [blame] | 103 | ; LE-LABEL: @test7( |
NAKAMURA Takumi | 43ab4ef | 2012-11-08 20:34:25 +0000 | [diff] [blame] | 104 | ; LE: ret i16 0 |
| 105 | |
| 106 | ; 0x3FF0 |
Stephen Lin | c1c7a13 | 2013-07-14 01:42:54 +0000 | [diff] [blame] | 107 | ; BE-LABEL: @test7( |
NAKAMURA Takumi | 43ab4ef | 2012-11-08 20:34:25 +0000 | [diff] [blame] | 108 | ; BE: ret i16 16368 |
Chris Lattner | ed00b80 | 2009-10-23 06:23:49 +0000 | [diff] [blame] | 109 | } |
| 110 | |
| 111 | ; Double load. |
| 112 | define double @test8() { |
David Blaikie | a79ac14 | 2015-02-27 21:17:42 +0000 | [diff] [blame] | 113 | %r = load double, double* bitcast({{i32,i8},i32}* @g1 to double*) |
Chris Lattner | ed00b80 | 2009-10-23 06:23:49 +0000 | [diff] [blame] | 114 | ret double %r |
| 115 | |
Stephen Lin | c1c7a13 | 2013-07-14 01:42:54 +0000 | [diff] [blame] | 116 | ; LE-LABEL: @test8( |
NAKAMURA Takumi | 43ab4ef | 2012-11-08 20:34:25 +0000 | [diff] [blame] | 117 | ; LE: ret double 0xBADEADBEEF |
| 118 | |
Stephen Lin | c1c7a13 | 2013-07-14 01:42:54 +0000 | [diff] [blame] | 119 | ; BE-LABEL: @test8( |
NAKAMURA Takumi | 43ab4ef | 2012-11-08 20:34:25 +0000 | [diff] [blame] | 120 | ; BE: ret double 0xDEADBEEFBA000000 |
Chris Lattner | ed00b80 | 2009-10-23 06:23:49 +0000 | [diff] [blame] | 121 | } |
Chris Lattner | 59f94c0 | 2009-10-23 06:50:36 +0000 | [diff] [blame] | 122 | |
| 123 | |
| 124 | ; i128 load. |
| 125 | define i128 @test9() { |
David Blaikie | a79ac14 | 2015-02-27 21:17:42 +0000 | [diff] [blame] | 126 | %r = load i128, i128* bitcast({i64, i64}* @g3 to i128*) |
Chris Lattner | 59f94c0 | 2009-10-23 06:50:36 +0000 | [diff] [blame] | 127 | ret i128 %r |
| 128 | |
NAKAMURA Takumi | 43ab4ef | 2012-11-08 20:34:25 +0000 | [diff] [blame] | 129 | ; 0x00000000_06B1BFF8_00000000_0000007B |
Stephen Lin | c1c7a13 | 2013-07-14 01:42:54 +0000 | [diff] [blame] | 130 | ; LE-LABEL: @test9( |
NAKAMURA Takumi | 43ab4ef | 2012-11-08 20:34:25 +0000 | [diff] [blame] | 131 | ; LE: ret i128 2071796475790618158476296315 |
| 132 | |
| 133 | ; 0x00000000_0000007B_00000000_06B1BFF8 |
Stephen Lin | c1c7a13 | 2013-07-14 01:42:54 +0000 | [diff] [blame] | 134 | ; BE-LABEL: @test9( |
NAKAMURA Takumi | 43ab4ef | 2012-11-08 20:34:25 +0000 | [diff] [blame] | 135 | ; BE: ret i128 2268949521066387161080 |
Chris Lattner | 59f94c0 | 2009-10-23 06:50:36 +0000 | [diff] [blame] | 136 | } |
Chris Lattner | ccf1e84 | 2009-10-23 06:57:37 +0000 | [diff] [blame] | 137 | |
| 138 | ; vector load. |
| 139 | define <2 x i64> @test10() { |
David Blaikie | a79ac14 | 2015-02-27 21:17:42 +0000 | [diff] [blame] | 140 | %r = load <2 x i64>, <2 x i64>* bitcast({i64, i64}* @g3 to <2 x i64>*) |
Chris Lattner | ccf1e84 | 2009-10-23 06:57:37 +0000 | [diff] [blame] | 141 | ret <2 x i64> %r |
| 142 | |
Stephen Lin | c1c7a13 | 2013-07-14 01:42:54 +0000 | [diff] [blame] | 143 | ; LE-LABEL: @test10( |
NAKAMURA Takumi | 43ab4ef | 2012-11-08 20:34:25 +0000 | [diff] [blame] | 144 | ; LE: ret <2 x i64> <i64 123, i64 112312312> |
| 145 | |
Stephen Lin | c1c7a13 | 2013-07-14 01:42:54 +0000 | [diff] [blame] | 146 | ; BE-LABEL: @test10( |
NAKAMURA Takumi | 43ab4ef | 2012-11-08 20:34:25 +0000 | [diff] [blame] | 147 | ; BE: ret <2 x i64> <i64 123, i64 112312312> |
Chris Lattner | ccf1e84 | 2009-10-23 06:57:37 +0000 | [diff] [blame] | 148 | } |
| 149 | |
Chris Lattner | 9e2d5b3 | 2009-10-24 05:22:15 +0000 | [diff] [blame] | 150 | |
| 151 | ; PR5287 |
NAKAMURA Takumi | 43ab4ef | 2012-11-08 20:34:25 +0000 | [diff] [blame] | 152 | ; { 0xA1, 0x08 } |
Chris Lattner | 9e2d5b3 | 2009-10-24 05:22:15 +0000 | [diff] [blame] | 153 | @g4 = internal constant { i8, i8 } { i8 -95, i8 8 } |
| 154 | |
| 155 | define i16 @test11() nounwind { |
| 156 | entry: |
David Blaikie | a79ac14 | 2015-02-27 21:17:42 +0000 | [diff] [blame] | 157 | %a = load i16, i16* bitcast ({ i8, i8 }* @g4 to i16*) |
Chris Lattner | 9e2d5b3 | 2009-10-24 05:22:15 +0000 | [diff] [blame] | 158 | ret i16 %a |
NAKAMURA Takumi | 43ab4ef | 2012-11-08 20:34:25 +0000 | [diff] [blame] | 159 | |
| 160 | ; 0x08A1 |
Stephen Lin | c1c7a13 | 2013-07-14 01:42:54 +0000 | [diff] [blame] | 161 | ; LE-LABEL: @test11( |
NAKAMURA Takumi | 43ab4ef | 2012-11-08 20:34:25 +0000 | [diff] [blame] | 162 | ; LE: ret i16 2209 |
| 163 | |
| 164 | ; 0xA108 |
Stephen Lin | c1c7a13 | 2013-07-14 01:42:54 +0000 | [diff] [blame] | 165 | ; BE-LABEL: @test11( |
NAKAMURA Takumi | 43ab4ef | 2012-11-08 20:34:25 +0000 | [diff] [blame] | 166 | ; BE: ret i16 -24312 |
Chris Lattner | 9e2d5b3 | 2009-10-24 05:22:15 +0000 | [diff] [blame] | 167 | } |
| 168 | |
| 169 | |
Chris Lattner | 1ddfd9f | 2009-12-04 06:29:29 +0000 | [diff] [blame] | 170 | ; PR5551 |
| 171 | @test12g = private constant [6 x i8] c"a\00b\00\00\00" |
| 172 | |
| 173 | define i16 @test12() { |
David Blaikie | f72d05b | 2015-03-13 18:20:45 +0000 | [diff] [blame] | 174 | %a = load i16, i16* getelementptr inbounds ([3 x i16], [3 x i16]* bitcast ([6 x i8]* @test12g to [3 x i16]*), i32 0, i64 1) |
Chris Lattner | 1ddfd9f | 2009-12-04 06:29:29 +0000 | [diff] [blame] | 175 | ret i16 %a |
NAKAMURA Takumi | 43ab4ef | 2012-11-08 20:34:25 +0000 | [diff] [blame] | 176 | |
| 177 | ; 0x0062 |
Stephen Lin | c1c7a13 | 2013-07-14 01:42:54 +0000 | [diff] [blame] | 178 | ; LE-LABEL: @test12( |
NAKAMURA Takumi | 43ab4ef | 2012-11-08 20:34:25 +0000 | [diff] [blame] | 179 | ; LE: ret i16 98 |
| 180 | |
| 181 | ; 0x6200 |
Stephen Lin | c1c7a13 | 2013-07-14 01:42:54 +0000 | [diff] [blame] | 182 | ; BE-LABEL: @test12( |
NAKAMURA Takumi | 43ab4ef | 2012-11-08 20:34:25 +0000 | [diff] [blame] | 183 | ; BE: ret i16 25088 |
Chris Lattner | 1ddfd9f | 2009-12-04 06:29:29 +0000 | [diff] [blame] | 184 | } |
Chris Lattner | a69f89c | 2010-01-08 19:02:23 +0000 | [diff] [blame] | 185 | |
| 186 | |
| 187 | ; PR5978 |
| 188 | @g5 = constant i8 4 |
| 189 | define i1 @test13() { |
David Blaikie | a79ac14 | 2015-02-27 21:17:42 +0000 | [diff] [blame] | 190 | %A = load i1, i1* bitcast (i8* @g5 to i1*) |
Chris Lattner | a69f89c | 2010-01-08 19:02:23 +0000 | [diff] [blame] | 191 | ret i1 %A |
NAKAMURA Takumi | 43ab4ef | 2012-11-08 20:34:25 +0000 | [diff] [blame] | 192 | |
Stephen Lin | c1c7a13 | 2013-07-14 01:42:54 +0000 | [diff] [blame] | 193 | ; LE-LABEL: @test13( |
NAKAMURA Takumi | 43ab4ef | 2012-11-08 20:34:25 +0000 | [diff] [blame] | 194 | ; LE: ret i1 false |
| 195 | |
Stephen Lin | c1c7a13 | 2013-07-14 01:42:54 +0000 | [diff] [blame] | 196 | ; BE-LABEL: @test13( |
NAKAMURA Takumi | 43ab4ef | 2012-11-08 20:34:25 +0000 | [diff] [blame] | 197 | ; BE: ret i1 false |
Chris Lattner | a69f89c | 2010-01-08 19:02:23 +0000 | [diff] [blame] | 198 | } |
Anders Carlsson | d21b06a | 2011-02-06 20:11:56 +0000 | [diff] [blame] | 199 | |
| 200 | @g6 = constant [2 x i8*] [i8* inttoptr (i64 1 to i8*), i8* inttoptr (i64 2 to i8*)] |
| 201 | define i64 @test14() nounwind { |
| 202 | entry: |
David Blaikie | a79ac14 | 2015-02-27 21:17:42 +0000 | [diff] [blame] | 203 | %tmp = load i64, i64* bitcast ([2 x i8*]* @g6 to i64*) |
Anders Carlsson | d21b06a | 2011-02-06 20:11:56 +0000 | [diff] [blame] | 204 | ret i64 %tmp |
NAKAMURA Takumi | 43ab4ef | 2012-11-08 20:34:25 +0000 | [diff] [blame] | 205 | |
Stephen Lin | c1c7a13 | 2013-07-14 01:42:54 +0000 | [diff] [blame] | 206 | ; LE-LABEL: @test14( |
NAKAMURA Takumi | 43ab4ef | 2012-11-08 20:34:25 +0000 | [diff] [blame] | 207 | ; LE: ret i64 1 |
| 208 | |
Stephen Lin | c1c7a13 | 2013-07-14 01:42:54 +0000 | [diff] [blame] | 209 | ; BE-LABEL: @test14( |
NAKAMURA Takumi | 43ab4ef | 2012-11-08 20:34:25 +0000 | [diff] [blame] | 210 | ; BE: ret i64 1 |
Anders Carlsson | d21b06a | 2011-02-06 20:11:56 +0000 | [diff] [blame] | 211 | } |
| 212 | |
Matt Arsenault | 7a960a8 | 2013-08-20 21:20:04 +0000 | [diff] [blame] | 213 | ; Check with address space pointers |
| 214 | @g6_as1 = constant [2 x i8 addrspace(1)*] [i8 addrspace(1)* inttoptr (i16 1 to i8 addrspace(1)*), i8 addrspace(1)* inttoptr (i16 2 to i8 addrspace(1)*)] |
| 215 | define i16 @test14_as1() nounwind { |
| 216 | entry: |
David Blaikie | a79ac14 | 2015-02-27 21:17:42 +0000 | [diff] [blame] | 217 | %tmp = load i16, i16* bitcast ([2 x i8 addrspace(1)*]* @g6_as1 to i16*) |
Matt Arsenault | 7a960a8 | 2013-08-20 21:20:04 +0000 | [diff] [blame] | 218 | ret i16 %tmp |
| 219 | |
| 220 | ; LE: @test14_as1 |
| 221 | ; LE: ret i16 1 |
| 222 | |
| 223 | ; BE: @test14_as1 |
| 224 | ; BE: ret i16 1 |
| 225 | } |
| 226 | |
Anders Carlsson | d21b06a | 2011-02-06 20:11:56 +0000 | [diff] [blame] | 227 | define i64 @test15() nounwind { |
| 228 | entry: |
David Blaikie | f72d05b | 2015-03-13 18:20:45 +0000 | [diff] [blame] | 229 | %tmp = load i64, i64* bitcast (i8** getelementptr inbounds ([2 x i8*], [2 x i8*]* @g6, i32 0, i64 1) to i64*) |
Anders Carlsson | d21b06a | 2011-02-06 20:11:56 +0000 | [diff] [blame] | 230 | ret i64 %tmp |
NAKAMURA Takumi | 43ab4ef | 2012-11-08 20:34:25 +0000 | [diff] [blame] | 231 | |
Stephen Lin | c1c7a13 | 2013-07-14 01:42:54 +0000 | [diff] [blame] | 232 | ; LE-LABEL: @test15( |
NAKAMURA Takumi | 43ab4ef | 2012-11-08 20:34:25 +0000 | [diff] [blame] | 233 | ; LE: ret i64 2 |
| 234 | |
Stephen Lin | c1c7a13 | 2013-07-14 01:42:54 +0000 | [diff] [blame] | 235 | ; BE-LABEL: @test15( |
NAKAMURA Takumi | 43ab4ef | 2012-11-08 20:34:25 +0000 | [diff] [blame] | 236 | ; BE: ret i64 2 |
Anders Carlsson | d21b06a | 2011-02-06 20:11:56 +0000 | [diff] [blame] | 237 | } |
Chandler Carruth | a0e5695 | 2014-05-15 09:56:28 +0000 | [diff] [blame] | 238 | |
| 239 | @gv7 = constant [4 x i8*] [i8* null, i8* inttoptr (i64 -14 to i8*), i8* null, i8* null] |
| 240 | define i64 @test16.1() { |
David Blaikie | a79ac14 | 2015-02-27 21:17:42 +0000 | [diff] [blame] | 241 | %v = load i64, i64* bitcast ([4 x i8*]* @gv7 to i64*), align 8 |
Chandler Carruth | a0e5695 | 2014-05-15 09:56:28 +0000 | [diff] [blame] | 242 | ret i64 %v |
| 243 | |
| 244 | ; LE-LABEL: @test16.1( |
| 245 | ; LE: ret i64 0 |
| 246 | |
| 247 | ; BE-LABEL: @test16.1( |
| 248 | ; BE: ret i64 0 |
| 249 | } |
| 250 | |
| 251 | define i64 @test16.2() { |
David Blaikie | f72d05b | 2015-03-13 18:20:45 +0000 | [diff] [blame] | 252 | %v = load i64, i64* bitcast (i8** getelementptr inbounds ([4 x i8*], [4 x i8*]* @gv7, i64 0, i64 1) to i64*), align 8 |
Chandler Carruth | a0e5695 | 2014-05-15 09:56:28 +0000 | [diff] [blame] | 253 | ret i64 %v |
| 254 | |
| 255 | ; LE-LABEL: @test16.2( |
| 256 | ; LE: ret i64 -14 |
| 257 | |
| 258 | ; BE-LABEL: @test16.2( |
| 259 | ; BE: ret i64 -14 |
| 260 | } |
| 261 | |
| 262 | define i64 @test16.3() { |
David Blaikie | f72d05b | 2015-03-13 18:20:45 +0000 | [diff] [blame] | 263 | %v = load i64, i64* bitcast (i8** getelementptr inbounds ([4 x i8*], [4 x i8*]* @gv7, i64 0, i64 2) to i64*), align 8 |
Chandler Carruth | a0e5695 | 2014-05-15 09:56:28 +0000 | [diff] [blame] | 264 | ret i64 %v |
| 265 | |
| 266 | ; LE-LABEL: @test16.3( |
| 267 | ; LE: ret i64 0 |
| 268 | |
| 269 | ; BE-LABEL: @test16.3( |
| 270 | ; BE: ret i64 0 |
| 271 | } |
Nikita Popov | 79c994d | 2018-12-11 20:29:16 +0000 | [diff] [blame] | 272 | |
| 273 | @g7 = constant {[0 x i32], [0 x i8], {}*} { [0 x i32] undef, [0 x i8] undef, {}* null } |
| 274 | |
| 275 | define i64* @test_leading_zero_size_elems() { |
| 276 | %v = load i64*, i64** bitcast ({[0 x i32], [0 x i8], {}*}* @g7 to i64**) |
| 277 | ret i64* %v |
| 278 | |
| 279 | ; LE-LABEL: @test_leading_zero_size_elems( |
| 280 | ; LE: ret i64* null |
| 281 | |
| 282 | ; BE-LABEL: @test_leading_zero_size_elems( |
| 283 | ; BE: ret i64* null |
| 284 | } |
| 285 | |
| 286 | @g8 = constant {[4294967295 x [0 x i32]], i64} { [4294967295 x [0 x i32]] undef, i64 123 } |
| 287 | |
| 288 | define i64 @test_leading_zero_size_elems_big() { |
| 289 | %v = load i64, i64* bitcast ({[4294967295 x [0 x i32]], i64}* @g8 to i64*) |
| 290 | ret i64 %v |
| 291 | |
| 292 | ; LE-LABEL: @test_leading_zero_size_elems_big( |
| 293 | ; LE: ret i64 123 |
| 294 | |
| 295 | ; BE-LABEL: @test_leading_zero_size_elems_big( |
| 296 | ; BE: ret i64 123 |
| 297 | } |
| 298 | |
| 299 | @g9 = constant [4294967295 x [0 x i32]] zeroinitializer |
| 300 | |
| 301 | define i64 @test_array_of_zero_size_array() { |
| 302 | %v = load i64, i64* bitcast ([4294967295 x [0 x i32]]* @g9 to i64*) |
| 303 | ret i64 %v |
| 304 | |
| 305 | ; LE-LABEL: @test_array_of_zero_size_array( |
| 306 | ; LE: ret i64 0 |
| 307 | |
| 308 | ; BE-LABEL: @test_array_of_zero_size_array( |
| 309 | ; BE: ret i64 0 |
| 310 | } |