mirror of
https://github.com/c3lang/c3c.git
synced 2026-02-27 20:11:17 +00:00
1070 lines
34 KiB
Plaintext
1070 lines
34 KiB
Plaintext
// #target: macos-x64
|
|
|
|
module foo;
|
|
|
|
bitstruct BitField : long
|
|
{
|
|
int a : 0..2;
|
|
int b : 3..8;
|
|
int c : 9..18;
|
|
bool d : 19;
|
|
bool e : 20;
|
|
}
|
|
|
|
bitstruct BitField2 : char[3]
|
|
{
|
|
int a : 0..2;
|
|
int b : 3..8;
|
|
int c : 9..18;
|
|
bool d : 19;
|
|
bool e : 20;
|
|
}
|
|
|
|
bitstruct BitField3 : char[3]
|
|
{
|
|
int a : 1..3;
|
|
int b : 4..9;
|
|
int c : 10..19;
|
|
bool d : 20;
|
|
bool e : 21;
|
|
}
|
|
|
|
extern fn void printf(char*, ...);
|
|
|
|
fn void main()
|
|
{
|
|
test1();
|
|
test2();
|
|
test3();
|
|
}
|
|
fn void test1()
|
|
{
|
|
BitField xx = { 2, 3, 15, true, false };
|
|
xx.a = 3;
|
|
printf("%d, %d\n", xx.a, xx.b);
|
|
xx.a -= 1;
|
|
printf("%d, %d\n", xx.a, xx.b);
|
|
xx.b *= 2;
|
|
printf("%d, %d\n", xx.a, xx.b);
|
|
xx.b ^= 4;
|
|
printf("%d, %d\n", xx.a, xx.b);
|
|
xx.b |= 4;
|
|
printf("%d, %d\n", xx.a, xx.b);
|
|
xx.b <<= 1;
|
|
printf("%d, %d\n", xx.a, xx.b);
|
|
xx.b >>= 1;
|
|
printf("%d, %d\n", xx.a, xx.b);
|
|
xx.b /= 2;
|
|
printf("%d, %d\n", xx.a, xx.b);
|
|
xx.b %= 2;
|
|
printf("%d, %d\n", xx.a, xx.b);
|
|
xx.e = true;
|
|
printf("%d\n", xx.e);
|
|
xx.e = false;
|
|
printf("%d\n", xx.e);
|
|
}
|
|
|
|
fn void test2()
|
|
{
|
|
BitField2 xx = { 2, 3, 15, false, false };
|
|
xx.a = 3;
|
|
printf("%d, %d\n", xx.a, xx.b);
|
|
xx.a -= 1;
|
|
printf("%d, %d\n", xx.a, xx.b);
|
|
xx.b *= 2;
|
|
printf("%d, %d\n", xx.a, xx.b);
|
|
xx.b ^= 4;
|
|
printf("%d, %d\n", xx.a, xx.b);
|
|
xx.b |= 4;
|
|
printf("%d, %d\n", xx.a, xx.b);
|
|
xx.b <<= 1;
|
|
printf("%d, %d\n", xx.a, xx.b);
|
|
xx.b >>= 1;
|
|
printf("%d, %d\n", xx.a, xx.b);
|
|
xx.b /= 2;
|
|
printf("%d, %d\n", xx.a, xx.b);
|
|
xx.b %= 2;
|
|
printf("%d, %d\n", xx.a, xx.b);
|
|
printf("..%d\n", xx.e);
|
|
xx.e = true;
|
|
printf("%d\n", xx.e);
|
|
xx.e = false;
|
|
printf("%d\n", xx.e);
|
|
}
|
|
|
|
fn void test3()
|
|
{
|
|
BitField3 xx = { 2, 3, 15, false, false };
|
|
xx.a = 3;
|
|
printf("%d, %d\n", xx.a, xx.b);
|
|
xx.a -= 1;
|
|
printf("%d, %d\n", xx.a, xx.b);
|
|
xx.b *= 2;
|
|
printf("%d, %d\n", xx.a, xx.b);
|
|
xx.b ^= 4;
|
|
printf("%d, %d\n", xx.a, xx.b);
|
|
xx.b |= 4;
|
|
printf("%d, %d\n", xx.a, xx.b);
|
|
xx.b <<= 1;
|
|
printf("%d, %d\n", xx.a, xx.b);
|
|
xx.b >>= 1;
|
|
printf("%d, %d\n", xx.a, xx.b);
|
|
xx.b /= 2;
|
|
printf("%d, %d\n", xx.a, xx.b);
|
|
xx.b %= 2;
|
|
printf("%d, %d\n", xx.a, xx.b);
|
|
printf("..%d\n", xx.e);
|
|
xx.e = true;
|
|
printf("%d\n", xx.e);
|
|
xx.e = false;
|
|
printf("%d\n", xx.e);
|
|
}
|
|
|
|
/* #expect: foo.ll
|
|
|
|
define void @foo.test1() #0 {
|
|
entry:
|
|
%xx = alloca i64, align 8
|
|
store i64 531994, ptr %xx, align 8
|
|
%0 = load i64, ptr %xx, align 8
|
|
%1 = and i64 %0, -8
|
|
%2 = or i64 %1, 3
|
|
store i64 %2, ptr %xx, align 8
|
|
%3 = load i64, ptr %xx, align 8
|
|
%shl = shl i64 %3, 61
|
|
%ashr = ashr i64 %shl, 61
|
|
%trunc = trunc i64 %ashr to i32
|
|
%4 = load i64, ptr %xx, align 8
|
|
%shl1 = shl i64 %4, 55
|
|
%ashr2 = ashr i64 %shl1, 58
|
|
%trunc3 = trunc i64 %ashr2 to i32
|
|
call void (ptr, ...) @printf(ptr @.str, i32 %trunc, i32 %trunc3)
|
|
%5 = load i64, ptr %xx, align 8
|
|
%shl4 = shl i64 %5, 61
|
|
%ashr5 = ashr i64 %shl4, 61
|
|
%trunc6 = trunc i64 %ashr5 to i32
|
|
%sub = sub i32 %trunc6, 1
|
|
%6 = load i64, ptr %xx, align 8
|
|
%zext = zext i32 %sub to i64
|
|
%7 = and i64 %zext, 7
|
|
%8 = and i64 %6, -8
|
|
%9 = or i64 %8, %7
|
|
store i64 %9, ptr %xx, align 8
|
|
%10 = load i64, ptr %xx, align 8
|
|
%shl7 = shl i64 %10, 61
|
|
%ashr8 = ashr i64 %shl7, 61
|
|
%trunc9 = trunc i64 %ashr8 to i32
|
|
%11 = load i64, ptr %xx, align 8
|
|
%shl10 = shl i64 %11, 55
|
|
%ashr11 = ashr i64 %shl10, 58
|
|
%trunc12 = trunc i64 %ashr11 to i32
|
|
call void (ptr, ...) @printf(ptr @.str.1, i32 %trunc9, i32 %trunc12)
|
|
%12 = load i64, ptr %xx, align 8
|
|
%shl13 = shl i64 %12, 55
|
|
%ashr14 = ashr i64 %shl13, 58
|
|
%trunc15 = trunc i64 %ashr14 to i32
|
|
%mul = mul i32 %trunc15, 2
|
|
%13 = load i64, ptr %xx, align 8
|
|
%zext16 = zext i32 %mul to i64
|
|
%shl17 = shl i64 %zext16, 3
|
|
%14 = and i64 %shl17, 504
|
|
%15 = and i64 %13, -505
|
|
%16 = or i64 %15, %14
|
|
store i64 %16, ptr %xx, align 8
|
|
%17 = load i64, ptr %xx, align 8
|
|
%shl18 = shl i64 %17, 61
|
|
%ashr19 = ashr i64 %shl18, 61
|
|
%trunc20 = trunc i64 %ashr19 to i32
|
|
%18 = load i64, ptr %xx, align 8
|
|
%shl21 = shl i64 %18, 55
|
|
%ashr22 = ashr i64 %shl21, 58
|
|
%trunc23 = trunc i64 %ashr22 to i32
|
|
call void (ptr, ...) @printf(ptr @.str.2, i32 %trunc20, i32 %trunc23)
|
|
%19 = load i64, ptr %xx, align 8
|
|
%shl24 = shl i64 %19, 55
|
|
%ashr25 = ashr i64 %shl24, 58
|
|
%trunc26 = trunc i64 %ashr25 to i32
|
|
%xor = xor i32 %trunc26, 4
|
|
%20 = load i64, ptr %xx, align 8
|
|
%zext27 = zext i32 %xor to i64
|
|
%shl28 = shl i64 %zext27, 3
|
|
%21 = and i64 %shl28, 504
|
|
%22 = and i64 %20, -505
|
|
%23 = or i64 %22, %21
|
|
store i64 %23, ptr %xx, align 8
|
|
%24 = load i64, ptr %xx, align 8
|
|
%shl29 = shl i64 %24, 61
|
|
%ashr30 = ashr i64 %shl29, 61
|
|
%trunc31 = trunc i64 %ashr30 to i32
|
|
%25 = load i64, ptr %xx, align 8
|
|
%shl32 = shl i64 %25, 55
|
|
%ashr33 = ashr i64 %shl32, 58
|
|
%trunc34 = trunc i64 %ashr33 to i32
|
|
call void (ptr, ...) @printf(ptr @.str.3, i32 %trunc31, i32 %trunc34)
|
|
%26 = load i64, ptr %xx, align 8
|
|
%shl35 = shl i64 %26, 55
|
|
%ashr36 = ashr i64 %shl35, 58
|
|
%trunc37 = trunc i64 %ashr36 to i32
|
|
%or = or i32 %trunc37, 4
|
|
%27 = load i64, ptr %xx, align 8
|
|
%zext38 = zext i32 %or to i64
|
|
%shl39 = shl i64 %zext38, 3
|
|
%28 = and i64 %shl39, 504
|
|
%29 = and i64 %27, -505
|
|
%30 = or i64 %29, %28
|
|
store i64 %30, ptr %xx, align 8
|
|
%31 = load i64, ptr %xx, align 8
|
|
%shl40 = shl i64 %31, 61
|
|
%ashr41 = ashr i64 %shl40, 61
|
|
%trunc42 = trunc i64 %ashr41 to i32
|
|
%32 = load i64, ptr %xx, align 8
|
|
%shl43 = shl i64 %32, 55
|
|
%ashr44 = ashr i64 %shl43, 58
|
|
%trunc45 = trunc i64 %ashr44 to i32
|
|
call void (ptr, ...) @printf(ptr @.str.4, i32 %trunc42, i32 %trunc45)
|
|
%33 = load i64, ptr %xx, align 8
|
|
%shl46 = shl i64 %33, 55
|
|
%ashr47 = ashr i64 %shl46, 58
|
|
%trunc48 = trunc i64 %ashr47 to i32
|
|
%shl49 = shl i32 %trunc48, 1
|
|
%34 = freeze i32 %shl49
|
|
%35 = load i64, ptr %xx, align 8
|
|
%zext50 = zext i32 %34 to i64
|
|
%shl51 = shl i64 %zext50, 3
|
|
%36 = and i64 %shl51, 504
|
|
%37 = and i64 %35, -505
|
|
%38 = or i64 %37, %36
|
|
store i64 %38, ptr %xx, align 8
|
|
%39 = load i64, ptr %xx, align 8
|
|
%shl52 = shl i64 %39, 61
|
|
%ashr53 = ashr i64 %shl52, 61
|
|
%trunc54 = trunc i64 %ashr53 to i32
|
|
%40 = load i64, ptr %xx, align 8
|
|
%shl55 = shl i64 %40, 55
|
|
%ashr56 = ashr i64 %shl55, 58
|
|
%trunc57 = trunc i64 %ashr56 to i32
|
|
call void (ptr, ...) @printf(ptr @.str.5, i32 %trunc54, i32 %trunc57)
|
|
%41 = load i64, ptr %xx, align 8
|
|
%shl58 = shl i64 %41, 55
|
|
%ashr59 = ashr i64 %shl58, 58
|
|
%trunc60 = trunc i64 %ashr59 to i32
|
|
%ashr61 = ashr i32 %trunc60, 1
|
|
%42 = freeze i32 %ashr61
|
|
%43 = load i64, ptr %xx, align 8
|
|
%zext62 = zext i32 %42 to i64
|
|
%shl63 = shl i64 %zext62, 3
|
|
%44 = and i64 %shl63, 504
|
|
%45 = and i64 %43, -505
|
|
%46 = or i64 %45, %44
|
|
store i64 %46, ptr %xx, align 8
|
|
%47 = load i64, ptr %xx, align 8
|
|
%shl64 = shl i64 %47, 61
|
|
%ashr65 = ashr i64 %shl64, 61
|
|
%trunc66 = trunc i64 %ashr65 to i32
|
|
%48 = load i64, ptr %xx, align 8
|
|
%shl67 = shl i64 %48, 55
|
|
%ashr68 = ashr i64 %shl67, 58
|
|
%trunc69 = trunc i64 %ashr68 to i32
|
|
call void (ptr, ...) @printf(ptr @.str.6, i32 %trunc66, i32 %trunc69)
|
|
%49 = load i64, ptr %xx, align 8
|
|
%shl70 = shl i64 %49, 55
|
|
%ashr71 = ashr i64 %shl70, 58
|
|
%trunc72 = trunc i64 %ashr71 to i32
|
|
%sdiv = sdiv i32 %trunc72, 2
|
|
%50 = load i64, ptr %xx, align 8
|
|
%zext73 = zext i32 %sdiv to i64
|
|
%shl74 = shl i64 %zext73, 3
|
|
%51 = and i64 %shl74, 504
|
|
%52 = and i64 %50, -505
|
|
%53 = or i64 %52, %51
|
|
store i64 %53, ptr %xx, align 8
|
|
%54 = load i64, ptr %xx, align 8
|
|
%shl75 = shl i64 %54, 61
|
|
%ashr76 = ashr i64 %shl75, 61
|
|
%trunc77 = trunc i64 %ashr76 to i32
|
|
%55 = load i64, ptr %xx, align 8
|
|
%shl78 = shl i64 %55, 55
|
|
%ashr79 = ashr i64 %shl78, 58
|
|
%trunc80 = trunc i64 %ashr79 to i32
|
|
call void (ptr, ...) @printf(ptr @.str.7, i32 %trunc77, i32 %trunc80)
|
|
%56 = load i64, ptr %xx, align 8
|
|
%shl81 = shl i64 %56, 55
|
|
%ashr82 = ashr i64 %shl81, 58
|
|
%trunc83 = trunc i64 %ashr82 to i32
|
|
%smod = srem i32 %trunc83, 2
|
|
%57 = load i64, ptr %xx, align 8
|
|
%zext84 = zext i32 %smod to i64
|
|
%shl85 = shl i64 %zext84, 3
|
|
%58 = and i64 %shl85, 504
|
|
%59 = and i64 %57, -505
|
|
%60 = or i64 %59, %58
|
|
store i64 %60, ptr %xx, align 8
|
|
%61 = load i64, ptr %xx, align 8
|
|
%shl86 = shl i64 %61, 61
|
|
%ashr87 = ashr i64 %shl86, 61
|
|
%trunc88 = trunc i64 %ashr87 to i32
|
|
%62 = load i64, ptr %xx, align 8
|
|
%shl89 = shl i64 %62, 55
|
|
%ashr90 = ashr i64 %shl89, 58
|
|
%trunc91 = trunc i64 %ashr90 to i32
|
|
call void (ptr, ...) @printf(ptr @.str.8, i32 %trunc88, i32 %trunc91)
|
|
%63 = load i64, ptr %xx, align 8
|
|
%64 = and i64 %63, -1048577
|
|
%65 = or i64 %64, 1048576
|
|
store i64 %65, ptr %xx, align 8
|
|
%66 = load i64, ptr %xx, align 8
|
|
%lshrl = lshr i64 %66, 20
|
|
%67 = and i64 1, %lshrl
|
|
%trunc92 = trunc i64 %67 to i8
|
|
%68 = trunc i8 %trunc92 to i1
|
|
%zext93 = zext i1 %68 to i32
|
|
call void (ptr, ...) @printf(ptr @.str.9, i32 %zext93)
|
|
%69 = load i64, ptr %xx, align 8
|
|
%70 = and i64 %69, -1048577
|
|
store i64 %70, ptr %xx, align 8
|
|
%71 = load i64, ptr %xx, align 8
|
|
%lshrl94 = lshr i64 %71, 20
|
|
%72 = and i64 1, %lshrl94
|
|
%trunc95 = trunc i64 %72 to i8
|
|
%73 = trunc i8 %trunc95 to i1
|
|
%zext96 = zext i1 %73 to i32
|
|
call void (ptr, ...) @printf(ptr @.str.10, i32 %zext96)
|
|
ret void
|
|
}
|
|
|
|
; Function Attrs:
|
|
define void @foo.test2() #0 {
|
|
entry:
|
|
%xx = alloca [3 x i8], align 1
|
|
store [3 x i8] c"\1A\1E\00", ptr %xx, align 1
|
|
%0 = load i8, ptr %xx, align 1
|
|
%1 = and i8 %0, -8
|
|
%2 = or i8 %1, 3
|
|
store i8 %1, ptr %xx, align 1
|
|
%3 = load i8, ptr %xx, align 1
|
|
%zext = zext i8 %3 to i32
|
|
%shl = shl i32 %zext, 29
|
|
%ashr = ashr i32 %shl, 29
|
|
%4 = load i8, ptr %xx, align 1
|
|
%zext1 = zext i8 %4 to i32
|
|
%lshrl = lshr i32 %zext1, 3
|
|
%ptradd = getelementptr inbounds i8, ptr %xx, i64 1
|
|
%5 = load i8, ptr %ptradd, align 1
|
|
%zext2 = zext i8 %5 to i32
|
|
%shl3 = shl i32 %zext2, 5
|
|
%6 = or i32 %shl3, %lshrl
|
|
%shl4 = shl i32 %6, 26
|
|
%ashr5 = ashr i32 %shl4, 26
|
|
call void (ptr, ...) @printf(ptr @.str.11, i32 %ashr, i32 %ashr5)
|
|
%7 = load i8, ptr %xx, align 1
|
|
%zext6 = zext i8 %7 to i32
|
|
%shl7 = shl i32 %zext6, 29
|
|
%ashr8 = ashr i32 %shl7, 29
|
|
%sub = sub i32 %ashr8, 1
|
|
%trunc = trunc i32 %sub to i8
|
|
%8 = and i8 %trunc, 7
|
|
%9 = load i8, ptr %xx, align 1
|
|
%10 = and i8 %9, -8
|
|
%11 = or i8 %10, %8
|
|
store i8 %10, ptr %xx, align 1
|
|
%12 = load i8, ptr %xx, align 1
|
|
%zext9 = zext i8 %12 to i32
|
|
%shl10 = shl i32 %zext9, 29
|
|
%ashr11 = ashr i32 %shl10, 29
|
|
%13 = load i8, ptr %xx, align 1
|
|
%zext12 = zext i8 %13 to i32
|
|
%lshrl13 = lshr i32 %zext12, 3
|
|
%ptradd14 = getelementptr inbounds i8, ptr %xx, i64 1
|
|
%14 = load i8, ptr %ptradd14, align 1
|
|
%zext15 = zext i8 %14 to i32
|
|
%shl16 = shl i32 %zext15, 5
|
|
%15 = or i32 %shl16, %lshrl13
|
|
%shl17 = shl i32 %15, 26
|
|
%ashr18 = ashr i32 %shl17, 26
|
|
call void (ptr, ...) @printf(ptr @.str.12, i32 %ashr11, i32 %ashr18)
|
|
%16 = load i8, ptr %xx, align 1
|
|
%zext19 = zext i8 %16 to i32
|
|
%lshrl20 = lshr i32 %zext19, 3
|
|
%ptradd21 = getelementptr inbounds i8, ptr %xx, i64 1
|
|
%17 = load i8, ptr %ptradd21, align 1
|
|
%zext22 = zext i8 %17 to i32
|
|
%shl23 = shl i32 %zext22, 5
|
|
%18 = or i32 %shl23, %lshrl20
|
|
%shl24 = shl i32 %18, 26
|
|
%ashr25 = ashr i32 %shl24, 26
|
|
%mul = mul i32 %ashr25, 2
|
|
%shl26 = shl i32 %mul, 3
|
|
%trunc27 = trunc i32 %shl26 to i8
|
|
%19 = load i8, ptr %xx, align 1
|
|
%20 = and i8 %19, 7
|
|
%21 = or i8 %20, %trunc27
|
|
store i8 %21, ptr %xx, align 1
|
|
%lshrl28 = lshr i32 %mul, 5
|
|
%ptradd29 = getelementptr inbounds i8, ptr %xx, i64 1
|
|
%trunc30 = trunc i32 %lshrl28 to i8
|
|
%22 = and i8 %trunc30, 1
|
|
%23 = load i8, ptr %ptradd29, align 1
|
|
%24 = and i8 %23, -2
|
|
%25 = or i8 %24, %22
|
|
store i8 %24, ptr %ptradd29, align 1
|
|
%26 = load i8, ptr %xx, align 1
|
|
%zext31 = zext i8 %26 to i32
|
|
%shl32 = shl i32 %zext31, 29
|
|
%ashr33 = ashr i32 %shl32, 29
|
|
%27 = load i8, ptr %xx, align 1
|
|
%zext34 = zext i8 %27 to i32
|
|
%lshrl35 = lshr i32 %zext34, 3
|
|
%ptradd36 = getelementptr inbounds i8, ptr %xx, i64 1
|
|
%28 = load i8, ptr %ptradd36, align 1
|
|
%zext37 = zext i8 %28 to i32
|
|
%shl38 = shl i32 %zext37, 5
|
|
%29 = or i32 %shl38, %lshrl35
|
|
%shl39 = shl i32 %29, 26
|
|
%ashr40 = ashr i32 %shl39, 26
|
|
call void (ptr, ...) @printf(ptr @.str.13, i32 %ashr33, i32 %ashr40)
|
|
%30 = load i8, ptr %xx, align 1
|
|
%zext41 = zext i8 %30 to i32
|
|
%lshrl42 = lshr i32 %zext41, 3
|
|
%ptradd43 = getelementptr inbounds i8, ptr %xx, i64 1
|
|
%31 = load i8, ptr %ptradd43, align 1
|
|
%zext44 = zext i8 %31 to i32
|
|
%shl45 = shl i32 %zext44, 5
|
|
%32 = or i32 %shl45, %lshrl42
|
|
%shl46 = shl i32 %32, 26
|
|
%ashr47 = ashr i32 %shl46, 26
|
|
%xor = xor i32 %ashr47, 4
|
|
%shl48 = shl i32 %xor, 3
|
|
%trunc49 = trunc i32 %shl48 to i8
|
|
%33 = load i8, ptr %xx, align 1
|
|
%34 = and i8 %33, 7
|
|
%35 = or i8 %34, %trunc49
|
|
store i8 %35, ptr %xx, align 1
|
|
%lshrl50 = lshr i32 %xor, 5
|
|
%ptradd51 = getelementptr inbounds i8, ptr %xx, i64 1
|
|
%trunc52 = trunc i32 %lshrl50 to i8
|
|
%36 = and i8 %trunc52, 1
|
|
%37 = load i8, ptr %ptradd51, align 1
|
|
%38 = and i8 %37, -2
|
|
%39 = or i8 %38, %36
|
|
store i8 %38, ptr %ptradd51, align 1
|
|
%40 = load i8, ptr %xx, align 1
|
|
%zext53 = zext i8 %40 to i32
|
|
%shl54 = shl i32 %zext53, 29
|
|
%ashr55 = ashr i32 %shl54, 29
|
|
%41 = load i8, ptr %xx, align 1
|
|
%zext56 = zext i8 %41 to i32
|
|
%lshrl57 = lshr i32 %zext56, 3
|
|
%ptradd58 = getelementptr inbounds i8, ptr %xx, i64 1
|
|
%42 = load i8, ptr %ptradd58, align 1
|
|
%zext59 = zext i8 %42 to i32
|
|
%shl60 = shl i32 %zext59, 5
|
|
%43 = or i32 %shl60, %lshrl57
|
|
%shl61 = shl i32 %43, 26
|
|
%ashr62 = ashr i32 %shl61, 26
|
|
call void (ptr, ...) @printf(ptr @.str.14, i32 %ashr55, i32 %ashr62)
|
|
%44 = load i8, ptr %xx, align 1
|
|
%zext63 = zext i8 %44 to i32
|
|
%lshrl64 = lshr i32 %zext63, 3
|
|
%ptradd65 = getelementptr inbounds i8, ptr %xx, i64 1
|
|
%45 = load i8, ptr %ptradd65, align 1
|
|
%zext66 = zext i8 %45 to i32
|
|
%shl67 = shl i32 %zext66, 5
|
|
%46 = or i32 %shl67, %lshrl64
|
|
%shl68 = shl i32 %46, 26
|
|
%ashr69 = ashr i32 %shl68, 26
|
|
%or = or i32 %ashr69, 4
|
|
%shl70 = shl i32 %or, 3
|
|
%trunc71 = trunc i32 %shl70 to i8
|
|
%47 = load i8, ptr %xx, align 1
|
|
%48 = and i8 %47, 7
|
|
%49 = or i8 %48, %trunc71
|
|
store i8 %49, ptr %xx, align 1
|
|
%lshrl72 = lshr i32 %or, 5
|
|
%ptradd73 = getelementptr inbounds i8, ptr %xx, i64 1
|
|
%trunc74 = trunc i32 %lshrl72 to i8
|
|
%50 = and i8 %trunc74, 1
|
|
%51 = load i8, ptr %ptradd73, align 1
|
|
%52 = and i8 %51, -2
|
|
%53 = or i8 %52, %50
|
|
store i8 %52, ptr %ptradd73, align 1
|
|
%54 = load i8, ptr %xx, align 1
|
|
%zext75 = zext i8 %54 to i32
|
|
%shl76 = shl i32 %zext75, 29
|
|
%ashr77 = ashr i32 %shl76, 29
|
|
%55 = load i8, ptr %xx, align 1
|
|
%zext78 = zext i8 %55 to i32
|
|
%lshrl79 = lshr i32 %zext78, 3
|
|
%ptradd80 = getelementptr inbounds i8, ptr %xx, i64 1
|
|
%56 = load i8, ptr %ptradd80, align 1
|
|
%zext81 = zext i8 %56 to i32
|
|
%shl82 = shl i32 %zext81, 5
|
|
%57 = or i32 %shl82, %lshrl79
|
|
%shl83 = shl i32 %57, 26
|
|
%ashr84 = ashr i32 %shl83, 26
|
|
call void (ptr, ...) @printf(ptr @.str.15, i32 %ashr77, i32 %ashr84)
|
|
%58 = load i8, ptr %xx, align 1
|
|
%zext85 = zext i8 %58 to i32
|
|
%lshrl86 = lshr i32 %zext85, 3
|
|
%ptradd87 = getelementptr inbounds i8, ptr %xx, i64 1
|
|
%59 = load i8, ptr %ptradd87, align 1
|
|
%zext88 = zext i8 %59 to i32
|
|
%shl89 = shl i32 %zext88, 5
|
|
%60 = or i32 %shl89, %lshrl86
|
|
%shl90 = shl i32 %60, 26
|
|
%ashr91 = ashr i32 %shl90, 26
|
|
%shl92 = shl i32 %ashr91, 1
|
|
%61 = freeze i32 %shl92
|
|
%shl93 = shl i32 %61, 3
|
|
%trunc94 = trunc i32 %shl93 to i8
|
|
%62 = load i8, ptr %xx, align 1
|
|
%63 = and i8 %62, 7
|
|
%64 = or i8 %63, %trunc94
|
|
store i8 %64, ptr %xx, align 1
|
|
%lshrl95 = lshr i32 %61, 5
|
|
%ptradd96 = getelementptr inbounds i8, ptr %xx, i64 1
|
|
%trunc97 = trunc i32 %lshrl95 to i8
|
|
%65 = and i8 %trunc97, 1
|
|
%66 = load i8, ptr %ptradd96, align 1
|
|
%67 = and i8 %66, -2
|
|
%68 = or i8 %67, %65
|
|
store i8 %67, ptr %ptradd96, align 1
|
|
%69 = load i8, ptr %xx, align 1
|
|
%zext98 = zext i8 %69 to i32
|
|
%shl99 = shl i32 %zext98, 29
|
|
%ashr100 = ashr i32 %shl99, 29
|
|
%70 = load i8, ptr %xx, align 1
|
|
%zext101 = zext i8 %70 to i32
|
|
%lshrl102 = lshr i32 %zext101, 3
|
|
%ptradd103 = getelementptr inbounds i8, ptr %xx, i64 1
|
|
%71 = load i8, ptr %ptradd103, align 1
|
|
%zext104 = zext i8 %71 to i32
|
|
%shl105 = shl i32 %zext104, 5
|
|
%72 = or i32 %shl105, %lshrl102
|
|
%shl106 = shl i32 %72, 26
|
|
%ashr107 = ashr i32 %shl106, 26
|
|
call void (ptr, ...) @printf(ptr @.str.16, i32 %ashr100, i32 %ashr107)
|
|
%73 = load i8, ptr %xx, align 1
|
|
%zext108 = zext i8 %73 to i32
|
|
%lshrl109 = lshr i32 %zext108, 3
|
|
%ptradd110 = getelementptr inbounds i8, ptr %xx, i64 1
|
|
%74 = load i8, ptr %ptradd110, align 1
|
|
%zext111 = zext i8 %74 to i32
|
|
%shl112 = shl i32 %zext111, 5
|
|
%75 = or i32 %shl112, %lshrl109
|
|
%shl113 = shl i32 %75, 26
|
|
%ashr114 = ashr i32 %shl113, 26
|
|
%ashr115 = ashr i32 %ashr114, 1
|
|
%76 = freeze i32 %ashr115
|
|
%shl116 = shl i32 %76, 3
|
|
%trunc117 = trunc i32 %shl116 to i8
|
|
%77 = load i8, ptr %xx, align 1
|
|
%78 = and i8 %77, 7
|
|
%79 = or i8 %78, %trunc117
|
|
store i8 %79, ptr %xx, align 1
|
|
%lshrl118 = lshr i32 %76, 5
|
|
%ptradd119 = getelementptr inbounds i8, ptr %xx, i64 1
|
|
%trunc120 = trunc i32 %lshrl118 to i8
|
|
%80 = and i8 %trunc120, 1
|
|
%81 = load i8, ptr %ptradd119, align 1
|
|
%82 = and i8 %81, -2
|
|
%83 = or i8 %82, %80
|
|
store i8 %82, ptr %ptradd119, align 1
|
|
%84 = load i8, ptr %xx, align 1
|
|
%zext121 = zext i8 %84 to i32
|
|
%shl122 = shl i32 %zext121, 29
|
|
%ashr123 = ashr i32 %shl122, 29
|
|
%85 = load i8, ptr %xx, align 1
|
|
%zext124 = zext i8 %85 to i32
|
|
%lshrl125 = lshr i32 %zext124, 3
|
|
%ptradd126 = getelementptr inbounds i8, ptr %xx, i64 1
|
|
%86 = load i8, ptr %ptradd126, align 1
|
|
%zext127 = zext i8 %86 to i32
|
|
%shl128 = shl i32 %zext127, 5
|
|
%87 = or i32 %shl128, %lshrl125
|
|
%shl129 = shl i32 %87, 26
|
|
%ashr130 = ashr i32 %shl129, 26
|
|
call void (ptr, ...) @printf(ptr @.str.17, i32 %ashr123, i32 %ashr130)
|
|
%88 = load i8, ptr %xx, align 1
|
|
%zext131 = zext i8 %88 to i32
|
|
%lshrl132 = lshr i32 %zext131, 3
|
|
%ptradd133 = getelementptr inbounds i8, ptr %xx, i64 1
|
|
%89 = load i8, ptr %ptradd133, align 1
|
|
%zext134 = zext i8 %89 to i32
|
|
%shl135 = shl i32 %zext134, 5
|
|
%90 = or i32 %shl135, %lshrl132
|
|
%shl136 = shl i32 %90, 26
|
|
%ashr137 = ashr i32 %shl136, 26
|
|
%sdiv = sdiv i32 %ashr137, 2
|
|
%shl138 = shl i32 %sdiv, 3
|
|
%trunc139 = trunc i32 %shl138 to i8
|
|
%91 = load i8, ptr %xx, align 1
|
|
%92 = and i8 %91, 7
|
|
%93 = or i8 %92, %trunc139
|
|
store i8 %93, ptr %xx, align 1
|
|
%lshrl140 = lshr i32 %sdiv, 5
|
|
%ptradd141 = getelementptr inbounds i8, ptr %xx, i64 1
|
|
%trunc142 = trunc i32 %lshrl140 to i8
|
|
%94 = and i8 %trunc142, 1
|
|
%95 = load i8, ptr %ptradd141, align 1
|
|
%96 = and i8 %95, -2
|
|
%97 = or i8 %96, %94
|
|
store i8 %96, ptr %ptradd141, align 1
|
|
%98 = load i8, ptr %xx, align 1
|
|
%zext143 = zext i8 %98 to i32
|
|
%shl144 = shl i32 %zext143, 29
|
|
%ashr145 = ashr i32 %shl144, 29
|
|
%99 = load i8, ptr %xx, align 1
|
|
%zext146 = zext i8 %99 to i32
|
|
%lshrl147 = lshr i32 %zext146, 3
|
|
%ptradd148 = getelementptr inbounds i8, ptr %xx, i64 1
|
|
%100 = load i8, ptr %ptradd148, align 1
|
|
%zext149 = zext i8 %100 to i32
|
|
%shl150 = shl i32 %zext149, 5
|
|
%101 = or i32 %shl150, %lshrl147
|
|
%shl151 = shl i32 %101, 26
|
|
%ashr152 = ashr i32 %shl151, 26
|
|
call void (ptr, ...) @printf(ptr @.str.18, i32 %ashr145, i32 %ashr152)
|
|
%102 = load i8, ptr %xx, align 1
|
|
%zext153 = zext i8 %102 to i32
|
|
%lshrl154 = lshr i32 %zext153, 3
|
|
%ptradd155 = getelementptr inbounds i8, ptr %xx, i64 1
|
|
%103 = load i8, ptr %ptradd155, align 1
|
|
%zext156 = zext i8 %103 to i32
|
|
%shl157 = shl i32 %zext156, 5
|
|
%104 = or i32 %shl157, %lshrl154
|
|
%shl158 = shl i32 %104, 26
|
|
%ashr159 = ashr i32 %shl158, 26
|
|
%smod = srem i32 %ashr159, 2
|
|
%shl160 = shl i32 %smod, 3
|
|
%trunc161 = trunc i32 %shl160 to i8
|
|
%105 = load i8, ptr %xx, align 1
|
|
%106 = and i8 %105, 7
|
|
%107 = or i8 %106, %trunc161
|
|
store i8 %107, ptr %xx, align 1
|
|
%lshrl162 = lshr i32 %smod, 5
|
|
%ptradd163 = getelementptr inbounds i8, ptr %xx, i64 1
|
|
%trunc164 = trunc i32 %lshrl162 to i8
|
|
%108 = and i8 %trunc164, 1
|
|
%109 = load i8, ptr %ptradd163, align 1
|
|
%110 = and i8 %109, -2
|
|
%111 = or i8 %110, %108
|
|
store i8 %110, ptr %ptradd163, align 1
|
|
%112 = load i8, ptr %xx, align 1
|
|
%zext165 = zext i8 %112 to i32
|
|
%shl166 = shl i32 %zext165, 29
|
|
%ashr167 = ashr i32 %shl166, 29
|
|
%113 = load i8, ptr %xx, align 1
|
|
%zext168 = zext i8 %113 to i32
|
|
%lshrl169 = lshr i32 %zext168, 3
|
|
%ptradd170 = getelementptr inbounds i8, ptr %xx, i64 1
|
|
%114 = load i8, ptr %ptradd170, align 1
|
|
%zext171 = zext i8 %114 to i32
|
|
%shl172 = shl i32 %zext171, 5
|
|
%115 = or i32 %shl172, %lshrl169
|
|
%shl173 = shl i32 %115, 26
|
|
%ashr174 = ashr i32 %shl173, 26
|
|
call void (ptr, ...) @printf(ptr @.str.19, i32 %ashr167, i32 %ashr174)
|
|
%ptradd175 = getelementptr inbounds i8, ptr %xx, i64 2
|
|
%116 = load i8, ptr %ptradd175, align 1
|
|
%lshrl176 = lshr i8 %116, 4
|
|
%117 = trunc i8 %lshrl176 to i1
|
|
%zext177 = zext i1 %117 to i32
|
|
call void (ptr, ...) @printf(ptr @.str.20, i32 %zext177)
|
|
%ptradd178 = getelementptr inbounds i8, ptr %xx, i64 2
|
|
%118 = load i8, ptr %ptradd178, align 1
|
|
%119 = and i8 %118, -17
|
|
%120 = or i8 %119, 16
|
|
store i8 %120, ptr %ptradd178, align 1
|
|
%ptradd179 = getelementptr inbounds i8, ptr %xx, i64 2
|
|
%121 = load i8, ptr %ptradd179, align 1
|
|
%lshrl180 = lshr i8 %121, 4
|
|
%122 = trunc i8 %lshrl180 to i1
|
|
%zext181 = zext i1 %122 to i32
|
|
call void (ptr, ...) @printf(ptr @.str.21, i32 %zext181)
|
|
%ptradd182 = getelementptr inbounds i8, ptr %xx, i64 2
|
|
%123 = load i8, ptr %ptradd182, align 1
|
|
%124 = and i8 %123, -17
|
|
store i8 %124, ptr %ptradd182, align 1
|
|
%ptradd183 = getelementptr inbounds i8, ptr %xx, i64 2
|
|
%125 = load i8, ptr %ptradd183, align 1
|
|
%lshrl184 = lshr i8 %125, 4
|
|
%126 = trunc i8 %lshrl184 to i1
|
|
%zext185 = zext i1 %126 to i32
|
|
call void (ptr, ...) @printf(ptr @.str.22, i32 %zext185)
|
|
ret void
|
|
}
|
|
|
|
; Function Attrs:
|
|
define void @foo.test3() #0 {
|
|
entry:
|
|
%xx = alloca [3 x i8], align 1
|
|
store [3 x i8] c"4<\00", ptr %xx, align 1
|
|
%0 = load i8, ptr %xx, align 1
|
|
%1 = and i8 %0, -15
|
|
%2 = or i8 %1, 6
|
|
store i8 %2, ptr %xx, align 1
|
|
%3 = load i8, ptr %xx, align 1
|
|
%zext = zext i8 %3 to i32
|
|
%lshrl = lshr i32 %zext, 1
|
|
%shl = shl i32 %lshrl, 29
|
|
%ashr = ashr i32 %shl, 29
|
|
%4 = load i8, ptr %xx, align 1
|
|
%zext1 = zext i8 %4 to i32
|
|
%lshrl2 = lshr i32 %zext1, 4
|
|
%ptradd = getelementptr inbounds i8, ptr %xx, i64 1
|
|
%5 = load i8, ptr %ptradd, align 1
|
|
%zext3 = zext i8 %5 to i32
|
|
%shl4 = shl i32 %zext3, 4
|
|
%6 = or i32 %shl4, %lshrl2
|
|
%shl5 = shl i32 %6, 26
|
|
%ashr6 = ashr i32 %shl5, 26
|
|
call void (ptr, ...) @printf(ptr @.str.23, i32 %ashr, i32 %ashr6)
|
|
%7 = load i8, ptr %xx, align 1
|
|
%zext7 = zext i8 %7 to i32
|
|
%lshrl8 = lshr i32 %zext7, 1
|
|
%shl9 = shl i32 %lshrl8, 29
|
|
%ashr10 = ashr i32 %shl9, 29
|
|
%sub = sub i32 %ashr10, 1
|
|
%shl11 = shl i32 %sub, 1
|
|
%trunc = trunc i32 %shl11 to i8
|
|
%8 = and i8 %trunc, 15
|
|
%9 = load i8, ptr %xx, align 1
|
|
%10 = and i8 %9, -15
|
|
%11 = or i8 %10, %8
|
|
store i8 %11, ptr %xx, align 1
|
|
%lshrl12 = lshr i32 %sub, 7
|
|
%12 = load i8, ptr %xx, align 1
|
|
%zext13 = zext i8 %12 to i32
|
|
%lshrl14 = lshr i32 %zext13, 1
|
|
%shl15 = shl i32 %lshrl14, 29
|
|
%ashr16 = ashr i32 %shl15, 29
|
|
%13 = load i8, ptr %xx, align 1
|
|
%zext17 = zext i8 %13 to i32
|
|
%lshrl18 = lshr i32 %zext17, 4
|
|
%ptradd19 = getelementptr inbounds i8, ptr %xx, i64 1
|
|
%14 = load i8, ptr %ptradd19, align 1
|
|
%zext20 = zext i8 %14 to i32
|
|
%shl21 = shl i32 %zext20, 4
|
|
%15 = or i32 %shl21, %lshrl18
|
|
%shl22 = shl i32 %15, 26
|
|
%ashr23 = ashr i32 %shl22, 26
|
|
call void (ptr, ...) @printf(ptr @.str.24, i32 %ashr16, i32 %ashr23)
|
|
%16 = load i8, ptr %xx, align 1
|
|
%zext24 = zext i8 %16 to i32
|
|
%lshrl25 = lshr i32 %zext24, 4
|
|
%ptradd26 = getelementptr inbounds i8, ptr %xx, i64 1
|
|
%17 = load i8, ptr %ptradd26, align 1
|
|
%zext27 = zext i8 %17 to i32
|
|
%shl28 = shl i32 %zext27, 4
|
|
%18 = or i32 %shl28, %lshrl25
|
|
%shl29 = shl i32 %18, 26
|
|
%ashr30 = ashr i32 %shl29, 26
|
|
%mul = mul i32 %ashr30, 2
|
|
%shl31 = shl i32 %mul, 4
|
|
%trunc32 = trunc i32 %shl31 to i8
|
|
%19 = load i8, ptr %xx, align 1
|
|
%20 = and i8 %19, 15
|
|
%21 = or i8 %20, %trunc32
|
|
store i8 %21, ptr %xx, align 1
|
|
%lshrl33 = lshr i32 %mul, 4
|
|
%ptradd34 = getelementptr inbounds i8, ptr %xx, i64 1
|
|
%trunc35 = trunc i32 %lshrl33 to i8
|
|
%22 = and i8 %trunc35, 3
|
|
%23 = load i8, ptr %ptradd34, align 1
|
|
%24 = and i8 %23, -4
|
|
%25 = or i8 %24, %22
|
|
store i8 %24, ptr %ptradd34, align 1
|
|
%26 = load i8, ptr %xx, align 1
|
|
%zext36 = zext i8 %26 to i32
|
|
%lshrl37 = lshr i32 %zext36, 1
|
|
%shl38 = shl i32 %lshrl37, 29
|
|
%ashr39 = ashr i32 %shl38, 29
|
|
%27 = load i8, ptr %xx, align 1
|
|
%zext40 = zext i8 %27 to i32
|
|
%lshrl41 = lshr i32 %zext40, 4
|
|
%ptradd42 = getelementptr inbounds i8, ptr %xx, i64 1
|
|
%28 = load i8, ptr %ptradd42, align 1
|
|
%zext43 = zext i8 %28 to i32
|
|
%shl44 = shl i32 %zext43, 4
|
|
%29 = or i32 %shl44, %lshrl41
|
|
%shl45 = shl i32 %29, 26
|
|
%ashr46 = ashr i32 %shl45, 26
|
|
call void (ptr, ...) @printf(ptr @.str.25, i32 %ashr39, i32 %ashr46)
|
|
%30 = load i8, ptr %xx, align 1
|
|
%zext47 = zext i8 %30 to i32
|
|
%lshrl48 = lshr i32 %zext47, 4
|
|
%ptradd49 = getelementptr inbounds i8, ptr %xx, i64 1
|
|
%31 = load i8, ptr %ptradd49, align 1
|
|
%zext50 = zext i8 %31 to i32
|
|
%shl51 = shl i32 %zext50, 4
|
|
%32 = or i32 %shl51, %lshrl48
|
|
%shl52 = shl i32 %32, 26
|
|
%ashr53 = ashr i32 %shl52, 26
|
|
%xor = xor i32 %ashr53, 4
|
|
%shl54 = shl i32 %xor, 4
|
|
%trunc55 = trunc i32 %shl54 to i8
|
|
%33 = load i8, ptr %xx, align 1
|
|
%34 = and i8 %33, 15
|
|
%35 = or i8 %34, %trunc55
|
|
store i8 %35, ptr %xx, align 1
|
|
%lshrl56 = lshr i32 %xor, 4
|
|
%ptradd57 = getelementptr inbounds i8, ptr %xx, i64 1
|
|
%trunc58 = trunc i32 %lshrl56 to i8
|
|
%36 = and i8 %trunc58, 3
|
|
%37 = load i8, ptr %ptradd57, align 1
|
|
%38 = and i8 %37, -4
|
|
%39 = or i8 %38, %36
|
|
store i8 %38, ptr %ptradd57, align 1
|
|
%40 = load i8, ptr %xx, align 1
|
|
%zext59 = zext i8 %40 to i32
|
|
%lshrl60 = lshr i32 %zext59, 1
|
|
%shl61 = shl i32 %lshrl60, 29
|
|
%ashr62 = ashr i32 %shl61, 29
|
|
%41 = load i8, ptr %xx, align 1
|
|
%zext63 = zext i8 %41 to i32
|
|
%lshrl64 = lshr i32 %zext63, 4
|
|
%ptradd65 = getelementptr inbounds i8, ptr %xx, i64 1
|
|
%42 = load i8, ptr %ptradd65, align 1
|
|
%zext66 = zext i8 %42 to i32
|
|
%shl67 = shl i32 %zext66, 4
|
|
%43 = or i32 %shl67, %lshrl64
|
|
%shl68 = shl i32 %43, 26
|
|
%ashr69 = ashr i32 %shl68, 26
|
|
call void (ptr, ...) @printf(ptr @.str.26, i32 %ashr62, i32 %ashr69)
|
|
%44 = load i8, ptr %xx, align 1
|
|
%zext70 = zext i8 %44 to i32
|
|
%lshrl71 = lshr i32 %zext70, 4
|
|
%ptradd72 = getelementptr inbounds i8, ptr %xx, i64 1
|
|
%45 = load i8, ptr %ptradd72, align 1
|
|
%zext73 = zext i8 %45 to i32
|
|
%shl74 = shl i32 %zext73, 4
|
|
%46 = or i32 %shl74, %lshrl71
|
|
%shl75 = shl i32 %46, 26
|
|
%ashr76 = ashr i32 %shl75, 26
|
|
%or = or i32 %ashr76, 4
|
|
%shl77 = shl i32 %or, 4
|
|
%trunc78 = trunc i32 %shl77 to i8
|
|
%47 = load i8, ptr %xx, align 1
|
|
%48 = and i8 %47, 15
|
|
%49 = or i8 %48, %trunc78
|
|
store i8 %49, ptr %xx, align 1
|
|
%lshrl79 = lshr i32 %or, 4
|
|
%ptradd80 = getelementptr inbounds i8, ptr %xx, i64 1
|
|
%trunc81 = trunc i32 %lshrl79 to i8
|
|
%50 = and i8 %trunc81, 3
|
|
%51 = load i8, ptr %ptradd80, align 1
|
|
%52 = and i8 %51, -4
|
|
%53 = or i8 %52, %50
|
|
store i8 %52, ptr %ptradd80, align 1
|
|
%54 = load i8, ptr %xx, align 1
|
|
%zext82 = zext i8 %54 to i32
|
|
%lshrl83 = lshr i32 %zext82, 1
|
|
%shl84 = shl i32 %lshrl83, 29
|
|
%ashr85 = ashr i32 %shl84, 29
|
|
%55 = load i8, ptr %xx, align 1
|
|
%zext86 = zext i8 %55 to i32
|
|
%lshrl87 = lshr i32 %zext86, 4
|
|
%ptradd88 = getelementptr inbounds i8, ptr %xx, i64 1
|
|
%56 = load i8, ptr %ptradd88, align 1
|
|
%zext89 = zext i8 %56 to i32
|
|
%shl90 = shl i32 %zext89, 4
|
|
%57 = or i32 %shl90, %lshrl87
|
|
%shl91 = shl i32 %57, 26
|
|
%ashr92 = ashr i32 %shl91, 26
|
|
call void (ptr, ...) @printf(ptr @.str.27, i32 %ashr85, i32 %ashr92)
|
|
%58 = load i8, ptr %xx, align 1
|
|
%zext93 = zext i8 %58 to i32
|
|
%lshrl94 = lshr i32 %zext93, 4
|
|
%ptradd95 = getelementptr inbounds i8, ptr %xx, i64 1
|
|
%59 = load i8, ptr %ptradd95, align 1
|
|
%zext96 = zext i8 %59 to i32
|
|
%shl97 = shl i32 %zext96, 4
|
|
%60 = or i32 %shl97, %lshrl94
|
|
%shl98 = shl i32 %60, 26
|
|
%ashr99 = ashr i32 %shl98, 26
|
|
%shl100 = shl i32 %ashr99, 1
|
|
%61 = freeze i32 %shl100
|
|
%shl101 = shl i32 %61, 4
|
|
%trunc102 = trunc i32 %shl101 to i8
|
|
%62 = load i8, ptr %xx, align 1
|
|
%63 = and i8 %62, 15
|
|
%64 = or i8 %63, %trunc102
|
|
store i8 %64, ptr %xx, align 1
|
|
%lshrl103 = lshr i32 %61, 4
|
|
%ptradd104 = getelementptr inbounds i8, ptr %xx, i64 1
|
|
%trunc105 = trunc i32 %lshrl103 to i8
|
|
%65 = and i8 %trunc105, 3
|
|
%66 = load i8, ptr %ptradd104, align 1
|
|
%67 = and i8 %66, -4
|
|
%68 = or i8 %67, %65
|
|
store i8 %67, ptr %ptradd104, align 1
|
|
%69 = load i8, ptr %xx, align 1
|
|
%zext106 = zext i8 %69 to i32
|
|
%lshrl107 = lshr i32 %zext106, 1
|
|
%shl108 = shl i32 %lshrl107, 29
|
|
%ashr109 = ashr i32 %shl108, 29
|
|
%70 = load i8, ptr %xx, align 1
|
|
%zext110 = zext i8 %70 to i32
|
|
%lshrl111 = lshr i32 %zext110, 4
|
|
%ptradd112 = getelementptr inbounds i8, ptr %xx, i64 1
|
|
%71 = load i8, ptr %ptradd112, align 1
|
|
%zext113 = zext i8 %71 to i32
|
|
%shl114 = shl i32 %zext113, 4
|
|
%72 = or i32 %shl114, %lshrl111
|
|
%shl115 = shl i32 %72, 26
|
|
%ashr116 = ashr i32 %shl115, 26
|
|
call void (ptr, ...) @printf(ptr @.str.28, i32 %ashr109, i32 %ashr116)
|
|
%73 = load i8, ptr %xx, align 1
|
|
%zext117 = zext i8 %73 to i32
|
|
%lshrl118 = lshr i32 %zext117, 4
|
|
%ptradd119 = getelementptr inbounds i8, ptr %xx, i64 1
|
|
%74 = load i8, ptr %ptradd119, align 1
|
|
%zext120 = zext i8 %74 to i32
|
|
%shl121 = shl i32 %zext120, 4
|
|
%75 = or i32 %shl121, %lshrl118
|
|
%shl122 = shl i32 %75, 26
|
|
%ashr123 = ashr i32 %shl122, 26
|
|
%ashr124 = ashr i32 %ashr123, 1
|
|
%76 = freeze i32 %ashr124
|
|
%shl125 = shl i32 %76, 4
|
|
%trunc126 = trunc i32 %shl125 to i8
|
|
%77 = load i8, ptr %xx, align 1
|
|
%78 = and i8 %77, 15
|
|
%79 = or i8 %78, %trunc126
|
|
store i8 %79, ptr %xx, align 1
|
|
%lshrl127 = lshr i32 %76, 4
|
|
%ptradd128 = getelementptr inbounds i8, ptr %xx, i64 1
|
|
%trunc129 = trunc i32 %lshrl127 to i8
|
|
%80 = and i8 %trunc129, 3
|
|
%81 = load i8, ptr %ptradd128, align 1
|
|
%82 = and i8 %81, -4
|
|
%83 = or i8 %82, %80
|
|
store i8 %82, ptr %ptradd128, align 1
|
|
%84 = load i8, ptr %xx, align 1
|
|
%zext130 = zext i8 %84 to i32
|
|
%lshrl131 = lshr i32 %zext130, 1
|
|
%shl132 = shl i32 %lshrl131, 29
|
|
%ashr133 = ashr i32 %shl132, 29
|
|
%85 = load i8, ptr %xx, align 1
|
|
%zext134 = zext i8 %85 to i32
|
|
%lshrl135 = lshr i32 %zext134, 4
|
|
%ptradd136 = getelementptr inbounds i8, ptr %xx, i64 1
|
|
%86 = load i8, ptr %ptradd136, align 1
|
|
%zext137 = zext i8 %86 to i32
|
|
%shl138 = shl i32 %zext137, 4
|
|
%87 = or i32 %shl138, %lshrl135
|
|
%shl139 = shl i32 %87, 26
|
|
%ashr140 = ashr i32 %shl139, 26
|
|
call void (ptr, ...) @printf(ptr @.str.29, i32 %ashr133, i32 %ashr140)
|
|
%88 = load i8, ptr %xx, align 1
|
|
%zext141 = zext i8 %88 to i32
|
|
%lshrl142 = lshr i32 %zext141, 4
|
|
%ptradd143 = getelementptr inbounds i8, ptr %xx, i64 1
|
|
%89 = load i8, ptr %ptradd143, align 1
|
|
%zext144 = zext i8 %89 to i32
|
|
%shl145 = shl i32 %zext144, 4
|
|
%90 = or i32 %shl145, %lshrl142
|
|
%shl146 = shl i32 %90, 26
|
|
%ashr147 = ashr i32 %shl146, 26
|
|
%sdiv = sdiv i32 %ashr147, 2
|
|
%shl148 = shl i32 %sdiv, 4
|
|
%trunc149 = trunc i32 %shl148 to i8
|
|
%91 = load i8, ptr %xx, align 1
|
|
%92 = and i8 %91, 15
|
|
%93 = or i8 %92, %trunc149
|
|
store i8 %93, ptr %xx, align 1
|
|
%lshrl150 = lshr i32 %sdiv, 4
|
|
%ptradd151 = getelementptr inbounds i8, ptr %xx, i64 1
|
|
%trunc152 = trunc i32 %lshrl150 to i8
|
|
%94 = and i8 %trunc152, 3
|
|
%95 = load i8, ptr %ptradd151, align 1
|
|
%96 = and i8 %95, -4
|
|
%97 = or i8 %96, %94
|
|
store i8 %96, ptr %ptradd151, align 1
|
|
%98 = load i8, ptr %xx, align 1
|
|
%zext153 = zext i8 %98 to i32
|
|
%lshrl154 = lshr i32 %zext153, 1
|
|
%shl155 = shl i32 %lshrl154, 29
|
|
%ashr156 = ashr i32 %shl155, 29
|
|
%99 = load i8, ptr %xx, align 1
|
|
%zext157 = zext i8 %99 to i32
|
|
%lshrl158 = lshr i32 %zext157, 4
|
|
%ptradd159 = getelementptr inbounds i8, ptr %xx, i64 1
|
|
%100 = load i8, ptr %ptradd159, align 1
|
|
%zext160 = zext i8 %100 to i32
|
|
%shl161 = shl i32 %zext160, 4
|
|
%101 = or i32 %shl161, %lshrl158
|
|
%shl162 = shl i32 %101, 26
|
|
%ashr163 = ashr i32 %shl162, 26
|
|
call void (ptr, ...) @printf(ptr @.str.30, i32 %ashr156, i32 %ashr163)
|
|
%102 = load i8, ptr %xx, align 1
|
|
%zext164 = zext i8 %102 to i32
|
|
%lshrl165 = lshr i32 %zext164, 4
|
|
%ptradd166 = getelementptr inbounds i8, ptr %xx, i64 1
|
|
%103 = load i8, ptr %ptradd166, align 1
|
|
%zext167 = zext i8 %103 to i32
|
|
%shl168 = shl i32 %zext167, 4
|
|
%104 = or i32 %shl168, %lshrl165
|
|
%shl169 = shl i32 %104, 26
|
|
%ashr170 = ashr i32 %shl169, 26
|
|
%smod = srem i32 %ashr170, 2
|
|
%shl171 = shl i32 %smod, 4
|
|
%trunc172 = trunc i32 %shl171 to i8
|
|
%105 = load i8, ptr %xx, align 1
|
|
%106 = and i8 %105, 15
|
|
%107 = or i8 %106, %trunc172
|
|
store i8 %107, ptr %xx, align 1
|
|
%lshrl173 = lshr i32 %smod, 4
|
|
%ptradd174 = getelementptr inbounds i8, ptr %xx, i64 1
|
|
%trunc175 = trunc i32 %lshrl173 to i8
|
|
%108 = and i8 %trunc175, 3
|
|
%109 = load i8, ptr %ptradd174, align 1
|
|
%110 = and i8 %109, -4
|
|
%111 = or i8 %110, %108
|
|
store i8 %110, ptr %ptradd174, align 1
|
|
%112 = load i8, ptr %xx, align 1
|
|
%zext176 = zext i8 %112 to i32
|
|
%lshrl177 = lshr i32 %zext176, 1
|
|
%shl178 = shl i32 %lshrl177, 29
|
|
%ashr179 = ashr i32 %shl178, 29
|
|
%113 = load i8, ptr %xx, align 1
|
|
%zext180 = zext i8 %113 to i32
|
|
%lshrl181 = lshr i32 %zext180, 4
|
|
%ptradd182 = getelementptr inbounds i8, ptr %xx, i64 1
|
|
%114 = load i8, ptr %ptradd182, align 1
|
|
%zext183 = zext i8 %114 to i32
|
|
%shl184 = shl i32 %zext183, 4
|
|
%115 = or i32 %shl184, %lshrl181
|
|
%shl185 = shl i32 %115, 26
|
|
%ashr186 = ashr i32 %shl185, 26
|
|
call void (ptr, ...) @printf(ptr @.str.31, i32 %ashr179, i32 %ashr186)
|
|
%ptradd187 = getelementptr inbounds i8, ptr %xx, i64 2
|
|
%116 = load i8, ptr %ptradd187, align 1
|
|
%lshrl188 = lshr i8 %116, 5
|
|
%117 = trunc i8 %lshrl188 to i1
|
|
%zext189 = zext i1 %117 to i32
|
|
call void (ptr, ...) @printf(ptr @.str.32, i32 %zext189)
|
|
%ptradd190 = getelementptr inbounds i8, ptr %xx, i64 2
|
|
%118 = load i8, ptr %ptradd190, align 1
|
|
%119 = and i8 %118, -33
|
|
%120 = or i8 %119, 32
|
|
store i8 %120, ptr %ptradd190, align 1
|
|
%ptradd191 = getelementptr inbounds i8, ptr %xx, i64 2
|
|
%121 = load i8, ptr %ptradd191, align 1
|
|
%lshrl192 = lshr i8 %121, 5
|
|
%122 = trunc i8 %lshrl192 to i1
|
|
%zext193 = zext i1 %122 to i32
|
|
call void (ptr, ...) @printf(ptr @.str.33, i32 %zext193)
|
|
%ptradd194 = getelementptr inbounds i8, ptr %xx, i64 2
|
|
%123 = load i8, ptr %ptradd194, align 1
|
|
%124 = and i8 %123, -33
|
|
store i8 %124, ptr %ptradd194, align 1
|
|
%ptradd195 = getelementptr inbounds i8, ptr %xx, i64 2
|
|
%125 = load i8, ptr %ptradd195, align 1
|
|
%lshrl196 = lshr i8 %125, 5
|
|
%126 = trunc i8 %lshrl196 to i1
|
|
%zext197 = zext i1 %126 to i32
|
|
call void (ptr, ...) @printf(ptr @.str.34, i32 %zext197)
|
|
ret void
|
|
}
|