Karl-Johan Karlsson | b60b920 | 2018-06-01 15:08:14 +0000 | [diff] [blame] | 1 | ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py |
| 2 | ; RUN: opt < %s -constprop -S -o - | FileCheck %s |
| 3 | |
Karl-Johan Karlsson | 6d52e5c | 2018-06-01 19:34:35 +0000 | [diff] [blame] | 4 | ; Testcase that verify that we don't get a faulty bitcast that cast between |
| 5 | ; different sizes. |
Karl-Johan Karlsson | b60b920 | 2018-06-01 15:08:14 +0000 | [diff] [blame] | 6 | |
| 7 | %rec8 = type { i16 } |
| 8 | @a = global [1 x %rec8] zeroinitializer |
| 9 | |
| 10 | define <2 x i16*> @test_gep() { |
| 11 | ; CHECK-LABEL: @test_gep( |
Karl-Johan Karlsson | 6d52e5c | 2018-06-01 19:34:35 +0000 | [diff] [blame] | 12 | ; CHECK-NEXT: ret <2 x i16*> <i16* getelementptr inbounds (%rec8, %rec8* extractelement (<2 x %rec8*> getelementptr ([1 x %rec8], [1 x %rec8]* @a, <2 x i64> zeroinitializer, <2 x i64> zeroinitializer), i32 0), i32 0, i32 0), i16* getelementptr inbounds (%rec8, %rec8* extractelement (<2 x %rec8*> getelementptr ([1 x %rec8], [1 x %rec8]* @a, <2 x i64> zeroinitializer, <2 x i64> zeroinitializer), i32 1), i32 0, i32 0)> |
Karl-Johan Karlsson | b60b920 | 2018-06-01 15:08:14 +0000 | [diff] [blame] | 13 | ; |
| 14 | %A = getelementptr [1 x %rec8], [1 x %rec8]* @a, <2 x i16> zeroinitializer, <2 x i64> zeroinitializer |
| 15 | %B = bitcast <2 x %rec8*> %A to <2 x i16*> |
| 16 | ret <2 x i16*> %B |
| 17 | } |
| 18 | |
| 19 | ; Testcase that verify the cast-of-cast when the outer/second cast is to a |
| 20 | ; vector type. |
| 21 | |
| 22 | define <4 x i16> @test_mmx_const() { |
| 23 | ; CHECK-LABEL: @test_mmx_const( |
| 24 | ; CHECK-NEXT: ret <4 x i16> zeroinitializer |
| 25 | ; |
| 26 | %A = bitcast <2 x i32> zeroinitializer to x86_mmx |
| 27 | %B = bitcast x86_mmx %A to <4 x i16> |
| 28 | ret <4 x i16> %B |
| 29 | } |