blob: 50fffbf88b1b2d992fb2ea368ad1ae4d9ccfdf2f [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)
22; CHECK-NEXT: ret i64 %c2, !dbg !23
23 %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 Kumara8b8d322018-02-12 21:02:45 +000029define void @test_or(i64 %A) {
30; CHECK-LABEL: @test_or(
Vedant Kumar4872535e2018-05-24 23:00:23 +000031; 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 +000032 %1 = or i64 %A, 256
33 ret void
34}
35
Vedant Kumar96b7dc02018-02-13 01:09:46 +000036define void @test_xor(i32 %A) {
37; CHECK-LABEL: @test_xor(
Vedant Kumar4872535e2018-05-24 23:00:23 +000038; 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 +000039 %1 = xor i32 %A, 1
40 ret void
41}
42
Vedant Kumar47b16c42018-02-13 01:09:47 +000043define void @test_sub_neg(i64 %A) {
44; CHECK-LABEL: @test_sub_neg(
Vedant Kumar4872535e2018-05-24 23:00:23 +000045; 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 +000046 %1 = sub i64 %A, -1
47 ret void
48}
49
50define void @test_sub_pos(i64 %A) {
51; CHECK-LABEL: @test_sub_pos(
Vedant Kumar4872535e2018-05-24 23:00:23 +000052; 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 +000053 %1 = sub i64 %A, 1
54 ret void
55}
56
Vedant Kumar31ec3562018-02-13 01:09:49 +000057define void @test_shl(i64 %A) {
58; CHECK-LABEL: @test_shl(
Vedant Kumar4872535e2018-05-24 23:00:23 +000059; 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 +000060 %1 = shl i64 %A, 7
61 ret void
62}
63
64define void @test_lshr(i64 %A) {
65; CHECK-LABEL: @test_lshr(
Vedant Kumar4872535e2018-05-24 23:00:23 +000066; 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 +000067 %1 = lshr i64 %A, 7
68 ret void
69}
70
71define void @test_ashr(i64 %A) {
72; CHECK-LABEL: @test_ashr(
Vedant Kumar4872535e2018-05-24 23:00:23 +000073; 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 +000074 %1 = ashr i64 %A, 7
75 ret void
76}
77
Vedant Kumar4011c262018-02-13 01:09:52 +000078define void @test_mul(i64 %A) {
79; CHECK-LABEL: @test_mul(
Vedant Kumar4872535e2018-05-24 23:00:23 +000080; 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 +000081 %1 = mul i64 %A, 7
82 ret void
83}
84
85define void @test_sdiv(i64 %A) {
86; CHECK-LABEL: @test_sdiv(
Vedant Kumar4872535e2018-05-24 23:00:23 +000087; 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 +000088 %1 = sdiv i64 %A, 7
89 ret void
90}
91
92define void @test_srem(i64 %A) {
93; CHECK-LABEL: @test_srem(
Vedant Kumar4872535e2018-05-24 23:00:23 +000094; 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 +000095 %1 = srem i64 %A, 7
96 ret void
97}
98
Vedant Kumar388fac52018-02-13 03:34:23 +000099define void @test_ptrtoint(i64* %P) {
100; CHECK-LABEL: @test_ptrtoint
Vedant Kumar4872535e2018-05-24 23:00:23 +0000101; CHECK-NEXT: call void @llvm.dbg.value(metadata i64* %P, {{.*}}, metadata !DIExpression())
Vedant Kumar388fac52018-02-13 03:34:23 +0000102 %1 = ptrtoint i64* %P to i64
103 ret void
104}
105
Petar Jovanovic17689572018-02-14 13:10:35 +0000106define void @test_and(i64 %A) {
107; CHECK-LABEL: @test_and(
Vedant Kumar4872535e2018-05-24 23:00:23 +0000108; 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 +0000109 %1 = and i64 %A, 256
110 ret void
111}