blob: dcb07d5e678839ee62a3fdb7ca5ec6cad829402f [file] [log] [blame]
Vedant Kumare48597a2018-01-26 22:02:52 +00001; RUN: opt < %s -debugify -instcombine -S | FileCheck %s
2
Vedant Kumar6379a622018-07-06 17:32:39 +00003declare void @escape32(i32)
4
Vedant Kumare48597a2018-01-26 22:02:52 +00005define i64 @test_sext_zext(i16 %A) {
6; CHECK-LABEL: @test_sext_zext(
7; CHECK-NEXT: [[C2:%.*]] = zext i16 %A to i64
Vedant Kumar4872535e2018-05-24 23:00:23 +00008; CHECK-NEXT: call void @llvm.dbg.value(metadata i64 [[C2]], {{.*}}, metadata !DIExpression())
9; CHECK-NEXT: call void @llvm.dbg.value(metadata i64 [[C2]], {{.*}}, metadata !DIExpression())
Vedant Kumare48597a2018-01-26 22:02:52 +000010 %c1 = zext i16 %A to i32
11 %c2 = sext i32 %c1 to i64
12 ret i64 %c2
13}
14
Vedant Kumar6379a622018-07-06 17:32:39 +000015define i64 @test_used_sext_zext(i16 %A) {
16; CHECK-LABEL: @test_used_sext_zext(
17; CHECK-NEXT: [[C1:%.*]] = zext i16 %A to i32
18; CHECK-NEXT: call void @llvm.dbg.value(metadata i32 [[C1]], {{.*}}, metadata !DIExpression())
19; CHECK-NEXT: [[C2:%.*]] = zext i16 %A to i64
20; CHECK-NEXT: call void @llvm.dbg.value(metadata i64 [[C2]], {{.*}}, metadata !DIExpression())
21; CHECK-NEXT: call void @escape32(i32 %c1)
Vedant Kumarced3fd42018-07-17 18:08:34 +000022; CHECK-NEXT: ret i64 %c2
Vedant Kumar6379a622018-07-06 17:32:39 +000023 %c1 = zext i16 %A to i32
24 %c2 = sext i32 %c1 to i64
25 call void @escape32(i32 %c1)
26 ret i64 %c2
27}
28
Vedant Kumar9ece8182018-07-17 18:08:36 +000029define i32 @test_cast_select(i1 %cond) {
30; CHECK-LABEL: @test_cast_select(
31; CHECK-NEXT: [[sel:%.*]] = select i1 %cond, i32 3, i32 5
32; CHECK-NEXT: call void @llvm.dbg.value(metadata i32 [[sel]], {{.*}}, metadata !DIExpression())
33; CHECK-NEXT: call void @llvm.dbg.value(metadata i32 [[sel]], {{.*}}, metadata !DIExpression())
34; CHECK-NEXT: ret i32 [[sel]]
35 %sel = select i1 %cond, i16 3, i16 5
36 %cast = zext i16 %sel to i32
37 ret i32 %cast
38}
39
Vedant Kumara8b8d322018-02-12 21:02:45 +000040define void @test_or(i64 %A) {
41; CHECK-LABEL: @test_or(
Vedant Kumar4872535e2018-05-24 23:00:23 +000042; CHECK-NEXT: call void @llvm.dbg.value(metadata i64 %A, {{.*}}, metadata !DIExpression(DW_OP_constu, 256, DW_OP_or, DW_OP_stack_value))
Vedant Kumara8b8d322018-02-12 21:02:45 +000043 %1 = or i64 %A, 256
44 ret void
45}
46
Vedant Kumar96b7dc02018-02-13 01:09:46 +000047define void @test_xor(i32 %A) {
48; CHECK-LABEL: @test_xor(
Vedant Kumar4872535e2018-05-24 23:00:23 +000049; CHECK-NEXT: call void @llvm.dbg.value(metadata i32 %A, {{.*}}, metadata !DIExpression(DW_OP_constu, 1, DW_OP_xor, DW_OP_stack_value))
Vedant Kumar96b7dc02018-02-13 01:09:46 +000050 %1 = xor i32 %A, 1
51 ret void
52}
53
Vedant Kumar47b16c42018-02-13 01:09:47 +000054define void @test_sub_neg(i64 %A) {
55; CHECK-LABEL: @test_sub_neg(
Vedant Kumar4872535e2018-05-24 23:00:23 +000056; CHECK-NEXT: call void @llvm.dbg.value(metadata i64 %A, {{.*}}, metadata !DIExpression(DW_OP_plus_uconst, 1, DW_OP_stack_value))
Vedant Kumar47b16c42018-02-13 01:09:47 +000057 %1 = sub i64 %A, -1
58 ret void
59}
60
61define void @test_sub_pos(i64 %A) {
62; CHECK-LABEL: @test_sub_pos(
Vedant Kumar4872535e2018-05-24 23:00:23 +000063; CHECK-NEXT: call void @llvm.dbg.value(metadata i64 %A, {{.*}}, metadata !DIExpression(DW_OP_constu, 1, DW_OP_minus, DW_OP_stack_value))
Vedant Kumar47b16c42018-02-13 01:09:47 +000064 %1 = sub i64 %A, 1
65 ret void
66}
67
Vedant Kumar31ec3562018-02-13 01:09:49 +000068define void @test_shl(i64 %A) {
69; CHECK-LABEL: @test_shl(
Vedant Kumar4872535e2018-05-24 23:00:23 +000070; CHECK-NEXT: call void @llvm.dbg.value(metadata i64 %A, {{.*}}, metadata !DIExpression(DW_OP_constu, 7, DW_OP_shl, DW_OP_stack_value))
Vedant Kumar31ec3562018-02-13 01:09:49 +000071 %1 = shl i64 %A, 7
72 ret void
73}
74
75define void @test_lshr(i64 %A) {
76; CHECK-LABEL: @test_lshr(
Vedant Kumar4872535e2018-05-24 23:00:23 +000077; CHECK-NEXT: call void @llvm.dbg.value(metadata i64 %A, {{.*}}, metadata !DIExpression(DW_OP_constu, 7, DW_OP_shr, DW_OP_stack_value))
Vedant Kumar31ec3562018-02-13 01:09:49 +000078 %1 = lshr i64 %A, 7
79 ret void
80}
81
82define void @test_ashr(i64 %A) {
83; CHECK-LABEL: @test_ashr(
Vedant Kumar4872535e2018-05-24 23:00:23 +000084; CHECK-NEXT: call void @llvm.dbg.value(metadata i64 %A, {{.*}}, metadata !DIExpression(DW_OP_constu, 7, DW_OP_shra, DW_OP_stack_value))
Vedant Kumar31ec3562018-02-13 01:09:49 +000085 %1 = ashr i64 %A, 7
86 ret void
87}
88
Vedant Kumar4011c262018-02-13 01:09:52 +000089define void @test_mul(i64 %A) {
90; CHECK-LABEL: @test_mul(
Vedant Kumar4872535e2018-05-24 23:00:23 +000091; CHECK-NEXT: call void @llvm.dbg.value(metadata i64 %A, {{.*}}, metadata !DIExpression(DW_OP_constu, 7, DW_OP_mul, DW_OP_stack_value))
Vedant Kumar4011c262018-02-13 01:09:52 +000092 %1 = mul i64 %A, 7
93 ret void
94}
95
96define void @test_sdiv(i64 %A) {
97; CHECK-LABEL: @test_sdiv(
Vedant Kumar4872535e2018-05-24 23:00:23 +000098; CHECK-NEXT: call void @llvm.dbg.value(metadata i64 %A, {{.*}}, metadata !DIExpression(DW_OP_constu, 7, DW_OP_div, DW_OP_stack_value))
Vedant Kumar4011c262018-02-13 01:09:52 +000099 %1 = sdiv i64 %A, 7
100 ret void
101}
102
103define void @test_srem(i64 %A) {
104; CHECK-LABEL: @test_srem(
Vedant Kumar4872535e2018-05-24 23:00:23 +0000105; CHECK-NEXT: call void @llvm.dbg.value(metadata i64 %A, {{.*}}, metadata !DIExpression(DW_OP_constu, 7, DW_OP_mod, DW_OP_stack_value))
Vedant Kumar4011c262018-02-13 01:09:52 +0000106 %1 = srem i64 %A, 7
107 ret void
108}
109
Vedant Kumar388fac52018-02-13 03:34:23 +0000110define void @test_ptrtoint(i64* %P) {
111; CHECK-LABEL: @test_ptrtoint
Vedant Kumar4872535e2018-05-24 23:00:23 +0000112; CHECK-NEXT: call void @llvm.dbg.value(metadata i64* %P, {{.*}}, metadata !DIExpression())
Vedant Kumar388fac52018-02-13 03:34:23 +0000113 %1 = ptrtoint i64* %P to i64
114 ret void
115}
116
Petar Jovanovic17689572018-02-14 13:10:35 +0000117define void @test_and(i64 %A) {
118; CHECK-LABEL: @test_and(
Vedant Kumar4872535e2018-05-24 23:00:23 +0000119; CHECK-NEXT: call void @llvm.dbg.value(metadata i64 %A, {{.*}}, metadata !DIExpression(DW_OP_constu, 256, DW_OP_and, DW_OP_stack_value))
Petar Jovanovic17689572018-02-14 13:10:35 +0000120 %1 = and i64 %A, 256
121 ret void
122}