Add more vector tests (#430)

* Add more vector tests
* Added .ll output.
Co-authored-by: Christoffer Lerno <christoffer@aegik.com>
This commit is contained in:
Dmitry Atamanov
2022-04-14 12:55:11 +05:00
committed by GitHub
parent f6eb20f725
commit 828724f593
2 changed files with 788 additions and 40 deletions

View File

@@ -15,11 +15,34 @@ fn void testf()
libc::printf("%f %f %f %f\n", w[0], w[1], w[2], w[3]);
int[<4>] ww = y < z;
libc::printf("%d %d %d %d\n", ww[0], ww[1], ww[2], ww[3]);
ww = y <= z;
libc::printf("%d %d %d %d\n", ww[0], ww[1], ww[2], ww[3]);
ww = y > z;
libc::printf("%d %d %d %d\n", ww[0], ww[1], ww[2], ww[3]);
ww = y >= z;
libc::printf("%d %d %d %d\n", ww[0], ww[1], ww[2], ww[3]);
ww = y == z;
libc::printf("%d %d %d %d\n", ww[0], ww[1], ww[2], ww[3]);
ww = y != z;
libc::printf("%d %d %d %d\n", ww[0], ww[1], ww[2], ww[3]);
}
fn void testb()
{
bool[<4>] d = { true, false, true, true };
bool[<4>] y = { true, false, true, true };
bool[<4>] z = { false, false, true, true };
ichar[<4>] ww = y < z;
libc::printf("%d %d %d %d\n", ww[0], ww[1], ww[2], ww[3]);
ww = y <= z;
libc::printf("%d %d %d %d\n", ww[0], ww[1], ww[2], ww[3]);
ww = y > z;
libc::printf("%d %d %d %d\n", ww[0], ww[1], ww[2], ww[3]);
ww = y >= z;
libc::printf("%d %d %d %d\n", ww[0], ww[1], ww[2], ww[3]);
ww = y == z;
libc::printf("%d %d %d %d\n", ww[0], ww[1], ww[2], ww[3]);
ww = y != z;
libc::printf("%d %d %d %d\n", ww[0], ww[1], ww[2], ww[3]);
}
fn void testi()
@@ -40,9 +63,29 @@ fn void testi()
libc::printf("%d %d %d %d\n", w[0], w[1], w[2], w[3]);
w = z > y;
libc::printf("%d %d %d %d\n", w[0], w[1], w[2], w[3]);
w = z >= y;
libc::printf("%d %d %d %d\n", w[0], w[1], w[2], w[3]);
w = z < y;
libc::printf("%d %d %d %d\n", w[0], w[1], w[2], w[3]);
w = z <= y;
libc::printf("%d %d %d %d\n", w[0], w[1], w[2], w[3]);
w = z == y;
libc::printf("%d %d %d %d\n", w[0], w[1], w[2], w[3]);
w = z != y;
libc::printf("%d %d %d %d\n", w[0], w[1], w[2], w[3]);
uint[<4>] uz = { 2, 6, 2, 1 };
w = uz > y;
libc::printf("%d %d %d %d\n", w[0], w[1], w[2], w[3]);
w = uz >= y;
libc::printf("%d %d %d %d\n", w[0], w[1], w[2], w[3]);
w = uz < y;
libc::printf("%d %d %d %d\n", w[0], w[1], w[2], w[3]);
w = uz <= y;
libc::printf("%d %d %d %d\n", w[0], w[1], w[2], w[3]);
w = uz == y;
libc::printf("%d %d %d %d\n", w[0], w[1], w[2], w[3]);
w = uz != y;
libc::printf("%d %d %d %d\n", w[0], w[1], w[2], w[3]);
}
fn void main()
@@ -145,14 +188,195 @@ entry:
%53 = load <4 x i32>, <4 x i32>* %ww, align 16
%54 = extractelement <4 x i32> %53, i64 3
%55 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.4, i32 0, i32 0), i32 %48, i32 %50, i32 %52, i32 %54)
%56 = load <4 x float>, <4 x float>* %y, align 16
%57 = load <4 x float>, <4 x float>* %z, align 16
%le = fcmp ole <4 x float> %56, %57
%58 = sext <4 x i1> %le to <4 x i32>
store <4 x i32> %58, <4 x i32>* %ww, align 16
%59 = load <4 x i32>, <4 x i32>* %ww, align 16
%60 = extractelement <4 x i32> %59, i64 0
%61 = load <4 x i32>, <4 x i32>* %ww, align 16
%62 = extractelement <4 x i32> %61, i64 1
%63 = load <4 x i32>, <4 x i32>* %ww, align 16
%64 = extractelement <4 x i32> %63, i64 2
%65 = load <4 x i32>, <4 x i32>* %ww, align 16
%66 = extractelement <4 x i32> %65, i64 3
%67 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.5, i32 0, i32 0), i32 %60, i32 %62, i32 %64, i32 %66)
%68 = load <4 x float>, <4 x float>* %y, align 16
%69 = load <4 x float>, <4 x float>* %z, align 16
%gt = fcmp ogt <4 x float> %68, %69
%70 = sext <4 x i1> %gt to <4 x i32>
store <4 x i32> %70, <4 x i32>* %ww, align 16
%71 = load <4 x i32>, <4 x i32>* %ww, align 16
%72 = extractelement <4 x i32> %71, i64 0
%73 = load <4 x i32>, <4 x i32>* %ww, align 16
%74 = extractelement <4 x i32> %73, i64 1
%75 = load <4 x i32>, <4 x i32>* %ww, align 16
%76 = extractelement <4 x i32> %75, i64 2
%77 = load <4 x i32>, <4 x i32>* %ww, align 16
%78 = extractelement <4 x i32> %77, i64 3
%79 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.6, i32 0, i32 0), i32 %72, i32 %74, i32 %76, i32 %78)
%80 = load <4 x float>, <4 x float>* %y, align 16
%81 = load <4 x float>, <4 x float>* %z, align 16
%ge = fcmp oge <4 x float> %80, %81
%82 = sext <4 x i1> %ge to <4 x i32>
store <4 x i32> %82, <4 x i32>* %ww, align 16
%83 = load <4 x i32>, <4 x i32>* %ww, align 16
%84 = extractelement <4 x i32> %83, i64 0
%85 = load <4 x i32>, <4 x i32>* %ww, align 16
%86 = extractelement <4 x i32> %85, i64 1
%87 = load <4 x i32>, <4 x i32>* %ww, align 16
%88 = extractelement <4 x i32> %87, i64 2
%89 = load <4 x i32>, <4 x i32>* %ww, align 16
%90 = extractelement <4 x i32> %89, i64 3
%91 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.7, i32 0, i32 0), i32 %84, i32 %86, i32 %88, i32 %90)
%92 = load <4 x float>, <4 x float>* %y, align 16
%93 = load <4 x float>, <4 x float>* %z, align 16
%eq = fcmp oeq <4 x float> %92, %93
%94 = sext <4 x i1> %eq to <4 x i32>
store <4 x i32> %94, <4 x i32>* %ww, align 16
%95 = load <4 x i32>, <4 x i32>* %ww, align 16
%96 = extractelement <4 x i32> %95, i64 0
%97 = load <4 x i32>, <4 x i32>* %ww, align 16
%98 = extractelement <4 x i32> %97, i64 1
%99 = load <4 x i32>, <4 x i32>* %ww, align 16
%100 = extractelement <4 x i32> %99, i64 2
%101 = load <4 x i32>, <4 x i32>* %ww, align 16
%102 = extractelement <4 x i32> %101, i64 3
%103 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.8, i32 0, i32 0), i32 %96, i32 %98, i32 %100, i32 %102)
%104 = load <4 x float>, <4 x float>* %y, align 16
%105 = load <4 x float>, <4 x float>* %z, align 16
%neq = fcmp one <4 x float> %104, %105
%106 = sext <4 x i1> %neq to <4 x i32>
store <4 x i32> %106, <4 x i32>* %ww, align 16
%107 = load <4 x i32>, <4 x i32>* %ww, align 16
%108 = extractelement <4 x i32> %107, i64 0
%109 = load <4 x i32>, <4 x i32>* %ww, align 16
%110 = extractelement <4 x i32> %109, i64 1
%111 = load <4 x i32>, <4 x i32>* %ww, align 16
%112 = extractelement <4 x i32> %111, i64 2
%113 = load <4 x i32>, <4 x i32>* %ww, align 16
%114 = extractelement <4 x i32> %113, i64 3
%115 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.9, i32 0, i32 0), i32 %108, i32 %110, i32 %112, i32 %114)
ret void
}
; Function Attrs: nounwind
define void @vector_ops.testb() #0 {
entry:
%d = alloca <4 x i8>, align 4
store <4 x i8> <i8 1, i8 0, i8 1, i8 1>, <4 x i8>* %d, align 4
%y = alloca <4 x i8>, align 4
%z = alloca <4 x i8>, align 4
%ww = alloca <4 x i8>, align 4
store <4 x i8> <i8 1, i8 0, i8 1, i8 1>, <4 x i8>* %y, align 4
store <4 x i8> <i8 0, i8 0, i8 1, i8 1>, <4 x i8>* %z, align 4
%0 = load <4 x i8>, <4 x i8>* %y, align 4
%1 = load <4 x i8>, <4 x i8>* %z, align 4
%lt = icmp ult <4 x i8> %0, %1
%2 = sext <4 x i1> %lt to <4 x i8>
store <4 x i8> %2, <4 x i8>* %ww, align 4
%3 = load <4 x i8>, <4 x i8>* %ww, align 4
%4 = extractelement <4 x i8> %3, i64 0
%sisiext = sext i8 %4 to i32
%5 = load <4 x i8>, <4 x i8>* %ww, align 4
%6 = extractelement <4 x i8> %5, i64 1
%sisiext1 = sext i8 %6 to i32
%7 = load <4 x i8>, <4 x i8>* %ww, align 4
%8 = extractelement <4 x i8> %7, i64 2
%sisiext2 = sext i8 %8 to i32
%9 = load <4 x i8>, <4 x i8>* %ww, align 4
%10 = extractelement <4 x i8> %9, i64 3
%sisiext3 = sext i8 %10 to i32
%11 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.10, i32 0, i32 0), i32 %sisiext, i32 %sisiext1, i32 %sisiext2, i32 %sisiext3)
%12 = load <4 x i8>, <4 x i8>* %y, align 4
%13 = load <4 x i8>, <4 x i8>* %z, align 4
%le = icmp ule <4 x i8> %12, %13
%14 = sext <4 x i1> %le to <4 x i8>
store <4 x i8> %14, <4 x i8>* %ww, align 4
%15 = load <4 x i8>, <4 x i8>* %ww, align 4
%16 = extractelement <4 x i8> %15, i64 0
%sisiext4 = sext i8 %16 to i32
%17 = load <4 x i8>, <4 x i8>* %ww, align 4
%18 = extractelement <4 x i8> %17, i64 1
%sisiext5 = sext i8 %18 to i32
%19 = load <4 x i8>, <4 x i8>* %ww, align 4
%20 = extractelement <4 x i8> %19, i64 2
%sisiext6 = sext i8 %20 to i32
%21 = load <4 x i8>, <4 x i8>* %ww, align 4
%22 = extractelement <4 x i8> %21, i64 3
%sisiext7 = sext i8 %22 to i32
%23 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.11, i32 0, i32 0), i32 %sisiext4, i32 %sisiext5, i32 %sisiext6, i32 %sisiext7)
%24 = load <4 x i8>, <4 x i8>* %y, align 4
%25 = load <4 x i8>, <4 x i8>* %z, align 4
%gt = icmp ugt <4 x i8> %24, %25
%26 = sext <4 x i1> %gt to <4 x i8>
store <4 x i8> %26, <4 x i8>* %ww, align 4
%27 = load <4 x i8>, <4 x i8>* %ww, align 4
%28 = extractelement <4 x i8> %27, i64 0
%sisiext8 = sext i8 %28 to i32
%29 = load <4 x i8>, <4 x i8>* %ww, align 4
%30 = extractelement <4 x i8> %29, i64 1
%sisiext9 = sext i8 %30 to i32
%31 = load <4 x i8>, <4 x i8>* %ww, align 4
%32 = extractelement <4 x i8> %31, i64 2
%sisiext10 = sext i8 %32 to i32
%33 = load <4 x i8>, <4 x i8>* %ww, align 4
%34 = extractelement <4 x i8> %33, i64 3
%sisiext11 = sext i8 %34 to i32
%35 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.12, i32 0, i32 0), i32 %sisiext8, i32 %sisiext9, i32 %sisiext10, i32 %sisiext11)
%36 = load <4 x i8>, <4 x i8>* %y, align 4
%37 = load <4 x i8>, <4 x i8>* %z, align 4
%ge = icmp uge <4 x i8> %36, %37
%38 = sext <4 x i1> %ge to <4 x i8>
store <4 x i8> %38, <4 x i8>* %ww, align 4
%39 = load <4 x i8>, <4 x i8>* %ww, align 4
%40 = extractelement <4 x i8> %39, i64 0
%sisiext12 = sext i8 %40 to i32
%41 = load <4 x i8>, <4 x i8>* %ww, align 4
%42 = extractelement <4 x i8> %41, i64 1
%sisiext13 = sext i8 %42 to i32
%43 = load <4 x i8>, <4 x i8>* %ww, align 4
%44 = extractelement <4 x i8> %43, i64 2
%sisiext14 = sext i8 %44 to i32
%45 = load <4 x i8>, <4 x i8>* %ww, align 4
%46 = extractelement <4 x i8> %45, i64 3
%sisiext15 = sext i8 %46 to i32
%47 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.13, i32 0, i32 0), i32 %sisiext12, i32 %sisiext13, i32 %sisiext14, i32 %sisiext15)
%48 = load <4 x i8>, <4 x i8>* %y, align 4
%49 = load <4 x i8>, <4 x i8>* %z, align 4
%eq = icmp eq <4 x i8> %48, %49
%50 = sext <4 x i1> %eq to <4 x i8>
store <4 x i8> %50, <4 x i8>* %ww, align 4
%51 = load <4 x i8>, <4 x i8>* %ww, align 4
%52 = extractelement <4 x i8> %51, i64 0
%sisiext16 = sext i8 %52 to i32
%53 = load <4 x i8>, <4 x i8>* %ww, align 4
%54 = extractelement <4 x i8> %53, i64 1
%sisiext17 = sext i8 %54 to i32
%55 = load <4 x i8>, <4 x i8>* %ww, align 4
%56 = extractelement <4 x i8> %55, i64 2
%sisiext18 = sext i8 %56 to i32
%57 = load <4 x i8>, <4 x i8>* %ww, align 4
%58 = extractelement <4 x i8> %57, i64 3
%sisiext19 = sext i8 %58 to i32
%59 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.14, i32 0, i32 0), i32 %sisiext16, i32 %sisiext17, i32 %sisiext18, i32 %sisiext19)
%60 = load <4 x i8>, <4 x i8>* %y, align 4
%61 = load <4 x i8>, <4 x i8>* %z, align 4
%neq = icmp ne <4 x i8> %60, %61
%62 = sext <4 x i1> %neq to <4 x i8>
store <4 x i8> %62, <4 x i8>* %ww, align 4
%63 = load <4 x i8>, <4 x i8>* %ww, align 4
%64 = extractelement <4 x i8> %63, i64 0
%sisiext20 = sext i8 %64 to i32
%65 = load <4 x i8>, <4 x i8>* %ww, align 4
%66 = extractelement <4 x i8> %65, i64 1
%sisiext21 = sext i8 %66 to i32
%67 = load <4 x i8>, <4 x i8>* %ww, align 4
%68 = extractelement <4 x i8> %67, i64 2
%sisiext22 = sext i8 %68 to i32
%69 = load <4 x i8>, <4 x i8>* %ww, align 4
%70 = extractelement <4 x i8> %69, i64 3
%sisiext23 = sext i8 %70 to i32
%71 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.15, i32 0, i32 0), i32 %sisiext20, i32 %sisiext21, i32 %sisiext22, i32 %sisiext23)
ret void
}
@@ -177,7 +401,7 @@ entry:
%7 = extractelement <4 x i32> %6, i64 2
%8 = load <4 x i32>, <4 x i32>* %w, align 16
%9 = extractelement <4 x i32> %8, i64 3
%10 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.5, i32 0, i32 0), i32 %3, i32 %5, i32 %7, i32 %9)
%10 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.16, i32 0, i32 0), i32 %3, i32 %5, i32 %7, i32 %9)
%11 = load <4 x i32>, <4 x i32>* %y, align 16
%12 = load <4 x i32>, <4 x i32>* %z, align 16
%mul = mul <4 x i32> %11, %12
@@ -190,7 +414,7 @@ entry:
%18 = extractelement <4 x i32> %17, i64 2
%19 = load <4 x i32>, <4 x i32>* %w, align 16
%20 = extractelement <4 x i32> %19, i64 3
%21 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.6, i32 0, i32 0), i32 %14, i32 %16, i32 %18, i32 %20)
%21 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.17, i32 0, i32 0), i32 %14, i32 %16, i32 %18, i32 %20)
%22 = load <4 x i32>, <4 x i32>* %y, align 16
%23 = load <4 x i32>, <4 x i32>* %z, align 16
%sdiv = sdiv <4 x i32> %22, %23
@@ -203,7 +427,7 @@ entry:
%29 = extractelement <4 x i32> %28, i64 2
%30 = load <4 x i32>, <4 x i32>* %w, align 16
%31 = extractelement <4 x i32> %30, i64 3
%32 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.7, i32 0, i32 0), i32 %25, i32 %27, i32 %29, i32 %31)
%32 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.18, i32 0, i32 0), i32 %25, i32 %27, i32 %29, i32 %31)
%33 = load <4 x i32>, <4 x i32>* %y, align 16
%34 = load <4 x i32>, <4 x i32>* %z, align 16
%sub = sub <4 x i32> %33, %34
@@ -216,7 +440,7 @@ entry:
%40 = extractelement <4 x i32> %39, i64 2
%41 = load <4 x i32>, <4 x i32>* %w, align 16
%42 = extractelement <4 x i32> %41, i64 3
%43 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.8, i32 0, i32 0), i32 %36, i32 %38, i32 %40, i32 %42)
%43 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.19, i32 0, i32 0), i32 %36, i32 %38, i32 %40, i32 %42)
%44 = load <4 x i32>, <4 x i32>* %z, align 16
%45 = load <4 x i32>, <4 x i32>* %y, align 16
%ashr = ashr <4 x i32> %44, %45
@@ -230,7 +454,7 @@ entry:
%52 = extractelement <4 x i32> %51, i64 2
%53 = load <4 x i32>, <4 x i32>* %w, align 16
%54 = extractelement <4 x i32> %53, i64 3
%55 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.9, i32 0, i32 0), i32 %48, i32 %50, i32 %52, i32 %54)
%55 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.20, i32 0, i32 0), i32 %48, i32 %50, i32 %52, i32 %54)
%56 = load <4 x i32>, <4 x i32>* %z, align 16
%57 = load <4 x i32>, <4 x i32>* %y, align 16
%shl = shl <4 x i32> %56, %57
@@ -244,7 +468,7 @@ entry:
%64 = extractelement <4 x i32> %63, i64 2
%65 = load <4 x i32>, <4 x i32>* %w, align 16
%66 = extractelement <4 x i32> %65, i64 3
%67 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.10, i32 0, i32 0), i32 %60, i32 %62, i32 %64, i32 %66)
%67 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.21, i32 0, i32 0), i32 %60, i32 %62, i32 %64, i32 %66)
%68 = load <4 x i32>, <4 x i32>* %z, align 16
%69 = load <4 x i32>, <4 x i32>* %y, align 16
%gt = icmp sgt <4 x i32> %68, %69
@@ -258,14 +482,11 @@ entry:
%76 = extractelement <4 x i32> %75, i64 2
%77 = load <4 x i32>, <4 x i32>* %w, align 16
%78 = extractelement <4 x i32> %77, i64 3
%79 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.11, i32 0, i32 0), i32 %72, i32 %74, i32 %76, i32 %78)
store <4 x i32> <i32 2, i32 6, i32 2, i32 1>, <4 x i32>* %uz, align 16
%80 = load <4 x i32>, <4 x i32>* %uz, align 16
%79 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.22, i32 0, i32 0), i32 %72, i32 %74, i32 %76, i32 %78)
%80 = load <4 x i32>, <4 x i32>* %z, align 16
%81 = load <4 x i32>, <4 x i32>* %y, align 16
%lt = icmp slt <4 x i32> %81, %80
%check = icmp slt <4 x i32> %80, zeroinitializer
%siui-lt = or <4 x i1> %check, %lt
%82 = sext <4 x i1> %siui-lt to <4 x i32>
%ge = icmp sge <4 x i32> %80, %81
%82 = sext <4 x i1> %ge to <4 x i32>
store <4 x i32> %82, <4 x i32>* %w, align 16
%83 = load <4 x i32>, <4 x i32>* %w, align 16
%84 = extractelement <4 x i32> %83, i64 0
@@ -275,6 +496,159 @@ entry:
%88 = extractelement <4 x i32> %87, i64 2
%89 = load <4 x i32>, <4 x i32>* %w, align 16
%90 = extractelement <4 x i32> %89, i64 3
%91 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.12, i32 0, i32 0), i32 %84, i32 %86, i32 %88, i32 %90)
%91 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.23, i32 0, i32 0), i32 %84, i32 %86, i32 %88, i32 %90)
%92 = load <4 x i32>, <4 x i32>* %z, align 16
%93 = load <4 x i32>, <4 x i32>* %y, align 16
%lt = icmp slt <4 x i32> %92, %93
%94 = sext <4 x i1> %lt to <4 x i32>
store <4 x i32> %94, <4 x i32>* %w, align 16
%95 = load <4 x i32>, <4 x i32>* %w, align 16
%96 = extractelement <4 x i32> %95, i64 0
%97 = load <4 x i32>, <4 x i32>* %w, align 16
%98 = extractelement <4 x i32> %97, i64 1
%99 = load <4 x i32>, <4 x i32>* %w, align 16
%100 = extractelement <4 x i32> %99, i64 2
%101 = load <4 x i32>, <4 x i32>* %w, align 16
%102 = extractelement <4 x i32> %101, i64 3
%103 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.24, i32 0, i32 0), i32 %96, i32 %98, i32 %100, i32 %102)
%104 = load <4 x i32>, <4 x i32>* %z, align 16
%105 = load <4 x i32>, <4 x i32>* %y, align 16
%le = icmp sle <4 x i32> %104, %105
%106 = sext <4 x i1> %le to <4 x i32>
store <4 x i32> %106, <4 x i32>* %w, align 16
%107 = load <4 x i32>, <4 x i32>* %w, align 16
%108 = extractelement <4 x i32> %107, i64 0
%109 = load <4 x i32>, <4 x i32>* %w, align 16
%110 = extractelement <4 x i32> %109, i64 1
%111 = load <4 x i32>, <4 x i32>* %w, align 16
%112 = extractelement <4 x i32> %111, i64 2
%113 = load <4 x i32>, <4 x i32>* %w, align 16
%114 = extractelement <4 x i32> %113, i64 3
%115 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.25, i32 0, i32 0), i32 %108, i32 %110, i32 %112, i32 %114)
%116 = load <4 x i32>, <4 x i32>* %z, align 16
%117 = load <4 x i32>, <4 x i32>* %y, align 16
%eq = icmp eq <4 x i32> %116, %117
%118 = sext <4 x i1> %eq to <4 x i32>
store <4 x i32> %118, <4 x i32>* %w, align 16
%119 = load <4 x i32>, <4 x i32>* %w, align 16
%120 = extractelement <4 x i32> %119, i64 0
%121 = load <4 x i32>, <4 x i32>* %w, align 16
%122 = extractelement <4 x i32> %121, i64 1
%123 = load <4 x i32>, <4 x i32>* %w, align 16
%124 = extractelement <4 x i32> %123, i64 2
%125 = load <4 x i32>, <4 x i32>* %w, align 16
%126 = extractelement <4 x i32> %125, i64 3
%127 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.26, i32 0, i32 0), i32 %120, i32 %122, i32 %124, i32 %126)
%128 = load <4 x i32>, <4 x i32>* %z, align 16
%129 = load <4 x i32>, <4 x i32>* %y, align 16
%neq = icmp ne <4 x i32> %128, %129
%130 = sext <4 x i1> %neq to <4 x i32>
store <4 x i32> %130, <4 x i32>* %w, align 16
%131 = load <4 x i32>, <4 x i32>* %w, align 16
%132 = extractelement <4 x i32> %131, i64 0
%133 = load <4 x i32>, <4 x i32>* %w, align 16
%134 = extractelement <4 x i32> %133, i64 1
%135 = load <4 x i32>, <4 x i32>* %w, align 16
%136 = extractelement <4 x i32> %135, i64 2
%137 = load <4 x i32>, <4 x i32>* %w, align 16
%138 = extractelement <4 x i32> %137, i64 3
%139 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.27, i32 0, i32 0), i32 %132, i32 %134, i32 %136, i32 %138)
store <4 x i32> <i32 2, i32 6, i32 2, i32 1>, <4 x i32>* %uz, align 16
%140 = load <4 x i32>, <4 x i32>* %uz, align 16
%141 = load <4 x i32>, <4 x i32>* %y, align 16
%lt1 = icmp slt <4 x i32> %141, %140
%check = icmp slt <4 x i32> %140, zeroinitializer
%siui-lt = or <4 x i1> %check, %lt1
%142 = sext <4 x i1> %siui-lt to <4 x i32>
store <4 x i32> %142, <4 x i32>* %w, align 16
%143 = load <4 x i32>, <4 x i32>* %w, align 16
%144 = extractelement <4 x i32> %143, i64 0
%145 = load <4 x i32>, <4 x i32>* %w, align 16
%146 = extractelement <4 x i32> %145, i64 1
%147 = load <4 x i32>, <4 x i32>* %w, align 16
%148 = extractelement <4 x i32> %147, i64 2
%149 = load <4 x i32>, <4 x i32>* %w, align 16
%150 = extractelement <4 x i32> %149, i64 3
%151 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.28, i32 0, i32 0), i32 %144, i32 %146, i32 %148, i32 %150)
%152 = load <4 x i32>, <4 x i32>* %uz, align 16
%153 = load <4 x i32>, <4 x i32>* %y, align 16
%le2 = icmp sle <4 x i32> %153, %152
%check3 = icmp slt <4 x i32> %152, zeroinitializer
%siui-le = or <4 x i1> %check3, %le2
%154 = sext <4 x i1> %siui-le to <4 x i32>
store <4 x i32> %154, <4 x i32>* %w, align 16
%155 = load <4 x i32>, <4 x i32>* %w, align 16
%156 = extractelement <4 x i32> %155, i64 0
%157 = load <4 x i32>, <4 x i32>* %w, align 16
%158 = extractelement <4 x i32> %157, i64 1
%159 = load <4 x i32>, <4 x i32>* %w, align 16
%160 = extractelement <4 x i32> %159, i64 2
%161 = load <4 x i32>, <4 x i32>* %w, align 16
%162 = extractelement <4 x i32> %161, i64 3
%163 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.29, i32 0, i32 0), i32 %156, i32 %158, i32 %160, i32 %162)
%164 = load <4 x i32>, <4 x i32>* %uz, align 16
%165 = load <4 x i32>, <4 x i32>* %y, align 16
%gt4 = icmp sgt <4 x i32> %165, %164
%check5 = icmp sge <4 x i32> %164, zeroinitializer
%siui-gt = and <4 x i1> %check5, %gt4
%166 = sext <4 x i1> %siui-gt to <4 x i32>
store <4 x i32> %166, <4 x i32>* %w, align 16
%167 = load <4 x i32>, <4 x i32>* %w, align 16
%168 = extractelement <4 x i32> %167, i64 0
%169 = load <4 x i32>, <4 x i32>* %w, align 16
%170 = extractelement <4 x i32> %169, i64 1
%171 = load <4 x i32>, <4 x i32>* %w, align 16
%172 = extractelement <4 x i32> %171, i64 2
%173 = load <4 x i32>, <4 x i32>* %w, align 16
%174 = extractelement <4 x i32> %173, i64 3
%175 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.30, i32 0, i32 0), i32 %168, i32 %170, i32 %172, i32 %174)
%176 = load <4 x i32>, <4 x i32>* %uz, align 16
%177 = load <4 x i32>, <4 x i32>* %y, align 16
%ge6 = icmp sge <4 x i32> %177, %176
%check7 = icmp sge <4 x i32> %176, zeroinitializer
%siui-ge = and <4 x i1> %check7, %ge6
%178 = sext <4 x i1> %siui-ge to <4 x i32>
store <4 x i32> %178, <4 x i32>* %w, align 16
%179 = load <4 x i32>, <4 x i32>* %w, align 16
%180 = extractelement <4 x i32> %179, i64 0
%181 = load <4 x i32>, <4 x i32>* %w, align 16
%182 = extractelement <4 x i32> %181, i64 1
%183 = load <4 x i32>, <4 x i32>* %w, align 16
%184 = extractelement <4 x i32> %183, i64 2
%185 = load <4 x i32>, <4 x i32>* %w, align 16
%186 = extractelement <4 x i32> %185, i64 3
%187 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.31, i32 0, i32 0), i32 %180, i32 %182, i32 %184, i32 %186)
%188 = load <4 x i32>, <4 x i32>* %uz, align 16
%189 = load <4 x i32>, <4 x i32>* %y, align 16
%eq8 = icmp eq <4 x i32> %189, %188
%check9 = icmp sge <4 x i32> %189, zeroinitializer
%siui-eq = and <4 x i1> %check9, %eq8
%190 = sext <4 x i1> %siui-eq to <4 x i32>
store <4 x i32> %190, <4 x i32>* %w, align 16
%191 = load <4 x i32>, <4 x i32>* %w, align 16
%192 = extractelement <4 x i32> %191, i64 0
%193 = load <4 x i32>, <4 x i32>* %w, align 16
%194 = extractelement <4 x i32> %193, i64 1
%195 = load <4 x i32>, <4 x i32>* %w, align 16
%196 = extractelement <4 x i32> %195, i64 2
%197 = load <4 x i32>, <4 x i32>* %w, align 16
%198 = extractelement <4 x i32> %197, i64 3
%199 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.32, i32 0, i32 0), i32 %192, i32 %194, i32 %196, i32 %198)
%200 = load <4 x i32>, <4 x i32>* %uz, align 16
%201 = load <4 x i32>, <4 x i32>* %y, align 16
%neq10 = icmp ne <4 x i32> %201, %200
%check11 = icmp slt <4 x i32> %201, zeroinitializer
%siui-ne = or <4 x i1> %check11, %neq10
%202 = sext <4 x i1> %siui-ne to <4 x i32>
store <4 x i32> %202, <4 x i32>* %w, align 16
%203 = load <4 x i32>, <4 x i32>* %w, align 16
%204 = extractelement <4 x i32> %203, i64 0
%205 = load <4 x i32>, <4 x i32>* %w, align 16
%206 = extractelement <4 x i32> %205, i64 1
%207 = load <4 x i32>, <4 x i32>* %w, align 16
%208 = extractelement <4 x i32> %207, i64 2
%209 = load <4 x i32>, <4 x i32>* %w, align 16
%210 = extractelement <4 x i32> %209, i64 3
%211 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.33, i32 0, i32 0), i32 %204, i32 %206, i32 %208, i32 %210)
ret void
}
}

View File

@@ -17,11 +17,34 @@ fn void testf()
libc::printf("%f %f %f %f\n", w[0], w[1], w[2], w[3]);
int[<4>] ww = y < z;
libc::printf("%d %d %d %d\n", ww[0], ww[1], ww[2], ww[3]);
ww = y <= z;
libc::printf("%d %d %d %d\n", ww[0], ww[1], ww[2], ww[3]);
ww = y > z;
libc::printf("%d %d %d %d\n", ww[0], ww[1], ww[2], ww[3]);
ww = y >= z;
libc::printf("%d %d %d %d\n", ww[0], ww[1], ww[2], ww[3]);
ww = y == z;
libc::printf("%d %d %d %d\n", ww[0], ww[1], ww[2], ww[3]);
ww = y != z;
libc::printf("%d %d %d %d\n", ww[0], ww[1], ww[2], ww[3]);
}
fn void testb()
{
bool[<4>] d = { true, false, true, true };
bool[<4>] y = { true, false, true, true };
bool[<4>] z = { false, false, true, true };
ichar[<4>] ww = y < z;
libc::printf("%d %d %d %d\n", ww[0], ww[1], ww[2], ww[3]);
ww = y <= z;
libc::printf("%d %d %d %d\n", ww[0], ww[1], ww[2], ww[3]);
ww = y > z;
libc::printf("%d %d %d %d\n", ww[0], ww[1], ww[2], ww[3]);
ww = y >= z;
libc::printf("%d %d %d %d\n", ww[0], ww[1], ww[2], ww[3]);
ww = y == z;
libc::printf("%d %d %d %d\n", ww[0], ww[1], ww[2], ww[3]);
ww = y != z;
libc::printf("%d %d %d %d\n", ww[0], ww[1], ww[2], ww[3]);
}
fn void testi()
@@ -42,9 +65,29 @@ fn void testi()
libc::printf("%d %d %d %d\n", w[0], w[1], w[2], w[3]);
w = z > y;
libc::printf("%d %d %d %d\n", w[0], w[1], w[2], w[3]);
w = z >= y;
libc::printf("%d %d %d %d\n", w[0], w[1], w[2], w[3]);
w = z < y;
libc::printf("%d %d %d %d\n", w[0], w[1], w[2], w[3]);
w = z <= y;
libc::printf("%d %d %d %d\n", w[0], w[1], w[2], w[3]);
w = z == y;
libc::printf("%d %d %d %d\n", w[0], w[1], w[2], w[3]);
w = z != y;
libc::printf("%d %d %d %d\n", w[0], w[1], w[2], w[3]);
uint[<4>] uz = { 2, 6, 2, 1 };
w = uz > y;
libc::printf("%d %d %d %d\n", w[0], w[1], w[2], w[3]);
w = uz >= y;
libc::printf("%d %d %d %d\n", w[0], w[1], w[2], w[3]);
w = uz < y;
libc::printf("%d %d %d %d\n", w[0], w[1], w[2], w[3]);
w = uz <= y;
libc::printf("%d %d %d %d\n", w[0], w[1], w[2], w[3]);
w = uz == y;
libc::printf("%d %d %d %d\n", w[0], w[1], w[2], w[3]);
w = uz != y;
libc::printf("%d %d %d %d\n", w[0], w[1], w[2], w[3]);
}
fn void main()
@@ -156,14 +199,195 @@ checkok: ; preds = %panic, %entry
%55 = load <4 x i32>, <4 x i32>* %ww, align 16
%56 = extractelement <4 x i32> %55, i64 3
%57 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.4, i32 0, i32 0), i32 %50, i32 %52, i32 %54, i32 %56)
%58 = load <4 x float>, <4 x float>* %y, align 16
%59 = load <4 x float>, <4 x float>* %z, align 16
%le = fcmp ole <4 x float> %58, %59
%60 = sext <4 x i1> %le to <4 x i32>
store <4 x i32> %60, <4 x i32>* %ww, align 16
%61 = load <4 x i32>, <4 x i32>* %ww, align 16
%62 = extractelement <4 x i32> %61, i64 0
%63 = load <4 x i32>, <4 x i32>* %ww, align 16
%64 = extractelement <4 x i32> %63, i64 1
%65 = load <4 x i32>, <4 x i32>* %ww, align 16
%66 = extractelement <4 x i32> %65, i64 2
%67 = load <4 x i32>, <4 x i32>* %ww, align 16
%68 = extractelement <4 x i32> %67, i64 3
%69 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.5, i32 0, i32 0), i32 %62, i32 %64, i32 %66, i32 %68)
%70 = load <4 x float>, <4 x float>* %y, align 16
%71 = load <4 x float>, <4 x float>* %z, align 16
%gt = fcmp ogt <4 x float> %70, %71
%72 = sext <4 x i1> %gt to <4 x i32>
store <4 x i32> %72, <4 x i32>* %ww, align 16
%73 = load <4 x i32>, <4 x i32>* %ww, align 16
%74 = extractelement <4 x i32> %73, i64 0
%75 = load <4 x i32>, <4 x i32>* %ww, align 16
%76 = extractelement <4 x i32> %75, i64 1
%77 = load <4 x i32>, <4 x i32>* %ww, align 16
%78 = extractelement <4 x i32> %77, i64 2
%79 = load <4 x i32>, <4 x i32>* %ww, align 16
%80 = extractelement <4 x i32> %79, i64 3
%81 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.6, i32 0, i32 0), i32 %74, i32 %76, i32 %78, i32 %80)
%82 = load <4 x float>, <4 x float>* %y, align 16
%83 = load <4 x float>, <4 x float>* %z, align 16
%ge = fcmp oge <4 x float> %82, %83
%84 = sext <4 x i1> %ge to <4 x i32>
store <4 x i32> %84, <4 x i32>* %ww, align 16
%85 = load <4 x i32>, <4 x i32>* %ww, align 16
%86 = extractelement <4 x i32> %85, i64 0
%87 = load <4 x i32>, <4 x i32>* %ww, align 16
%88 = extractelement <4 x i32> %87, i64 1
%89 = load <4 x i32>, <4 x i32>* %ww, align 16
%90 = extractelement <4 x i32> %89, i64 2
%91 = load <4 x i32>, <4 x i32>* %ww, align 16
%92 = extractelement <4 x i32> %91, i64 3
%93 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.7, i32 0, i32 0), i32 %86, i32 %88, i32 %90, i32 %92)
%94 = load <4 x float>, <4 x float>* %y, align 16
%95 = load <4 x float>, <4 x float>* %z, align 16
%eq = fcmp oeq <4 x float> %94, %95
%96 = sext <4 x i1> %eq to <4 x i32>
store <4 x i32> %96, <4 x i32>* %ww, align 16
%97 = load <4 x i32>, <4 x i32>* %ww, align 16
%98 = extractelement <4 x i32> %97, i64 0
%99 = load <4 x i32>, <4 x i32>* %ww, align 16
%100 = extractelement <4 x i32> %99, i64 1
%101 = load <4 x i32>, <4 x i32>* %ww, align 16
%102 = extractelement <4 x i32> %101, i64 2
%103 = load <4 x i32>, <4 x i32>* %ww, align 16
%104 = extractelement <4 x i32> %103, i64 3
%105 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.8, i32 0, i32 0), i32 %98, i32 %100, i32 %102, i32 %104)
%106 = load <4 x float>, <4 x float>* %y, align 16
%107 = load <4 x float>, <4 x float>* %z, align 16
%neq = fcmp one <4 x float> %106, %107
%108 = sext <4 x i1> %neq to <4 x i32>
store <4 x i32> %108, <4 x i32>* %ww, align 16
%109 = load <4 x i32>, <4 x i32>* %ww, align 16
%110 = extractelement <4 x i32> %109, i64 0
%111 = load <4 x i32>, <4 x i32>* %ww, align 16
%112 = extractelement <4 x i32> %111, i64 1
%113 = load <4 x i32>, <4 x i32>* %ww, align 16
%114 = extractelement <4 x i32> %113, i64 2
%115 = load <4 x i32>, <4 x i32>* %ww, align 16
%116 = extractelement <4 x i32> %115, i64 3
%117 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.9, i32 0, i32 0), i32 %110, i32 %112, i32 %114, i32 %116)
ret void
}
; Function Attrs: nounwind
define void @test.testb() #0 {
entry:
%d = alloca <4 x i8>, align 4
store <4 x i8> <i8 1, i8 0, i8 1, i8 1>, <4 x i8>* %d, align 4
%y = alloca <4 x i8>, align 4
%z = alloca <4 x i8>, align 4
%ww = alloca <4 x i8>, align 4
store <4 x i8> <i8 1, i8 0, i8 1, i8 1>, <4 x i8>* %y, align 4
store <4 x i8> <i8 0, i8 0, i8 1, i8 1>, <4 x i8>* %z, align 4
%0 = load <4 x i8>, <4 x i8>* %y, align 4
%1 = load <4 x i8>, <4 x i8>* %z, align 4
%lt = icmp ult <4 x i8> %0, %1
%2 = sext <4 x i1> %lt to <4 x i8>
store <4 x i8> %2, <4 x i8>* %ww, align 4
%3 = load <4 x i8>, <4 x i8>* %ww, align 4
%4 = extractelement <4 x i8> %3, i64 0
%sisiext = sext i8 %4 to i32
%5 = load <4 x i8>, <4 x i8>* %ww, align 4
%6 = extractelement <4 x i8> %5, i64 1
%sisiext1 = sext i8 %6 to i32
%7 = load <4 x i8>, <4 x i8>* %ww, align 4
%8 = extractelement <4 x i8> %7, i64 2
%sisiext2 = sext i8 %8 to i32
%9 = load <4 x i8>, <4 x i8>* %ww, align 4
%10 = extractelement <4 x i8> %9, i64 3
%sisiext3 = sext i8 %10 to i32
%11 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.10, i32 0, i32 0), i32 %sisiext, i32 %sisiext1, i32 %sisiext2, i32 %sisiext3)
%12 = load <4 x i8>, <4 x i8>* %y, align 4
%13 = load <4 x i8>, <4 x i8>* %z, align 4
%le = icmp ule <4 x i8> %12, %13
%14 = sext <4 x i1> %le to <4 x i8>
store <4 x i8> %14, <4 x i8>* %ww, align 4
%15 = load <4 x i8>, <4 x i8>* %ww, align 4
%16 = extractelement <4 x i8> %15, i64 0
%sisiext4 = sext i8 %16 to i32
%17 = load <4 x i8>, <4 x i8>* %ww, align 4
%18 = extractelement <4 x i8> %17, i64 1
%sisiext5 = sext i8 %18 to i32
%19 = load <4 x i8>, <4 x i8>* %ww, align 4
%20 = extractelement <4 x i8> %19, i64 2
%sisiext6 = sext i8 %20 to i32
%21 = load <4 x i8>, <4 x i8>* %ww, align 4
%22 = extractelement <4 x i8> %21, i64 3
%sisiext7 = sext i8 %22 to i32
%23 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.11, i32 0, i32 0), i32 %sisiext4, i32 %sisiext5, i32 %sisiext6, i32 %sisiext7)
%24 = load <4 x i8>, <4 x i8>* %y, align 4
%25 = load <4 x i8>, <4 x i8>* %z, align 4
%gt = icmp ugt <4 x i8> %24, %25
%26 = sext <4 x i1> %gt to <4 x i8>
store <4 x i8> %26, <4 x i8>* %ww, align 4
%27 = load <4 x i8>, <4 x i8>* %ww, align 4
%28 = extractelement <4 x i8> %27, i64 0
%sisiext8 = sext i8 %28 to i32
%29 = load <4 x i8>, <4 x i8>* %ww, align 4
%30 = extractelement <4 x i8> %29, i64 1
%sisiext9 = sext i8 %30 to i32
%31 = load <4 x i8>, <4 x i8>* %ww, align 4
%32 = extractelement <4 x i8> %31, i64 2
%sisiext10 = sext i8 %32 to i32
%33 = load <4 x i8>, <4 x i8>* %ww, align 4
%34 = extractelement <4 x i8> %33, i64 3
%sisiext11 = sext i8 %34 to i32
%35 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.12, i32 0, i32 0), i32 %sisiext8, i32 %sisiext9, i32 %sisiext10, i32 %sisiext11)
%36 = load <4 x i8>, <4 x i8>* %y, align 4
%37 = load <4 x i8>, <4 x i8>* %z, align 4
%ge = icmp uge <4 x i8> %36, %37
%38 = sext <4 x i1> %ge to <4 x i8>
store <4 x i8> %38, <4 x i8>* %ww, align 4
%39 = load <4 x i8>, <4 x i8>* %ww, align 4
%40 = extractelement <4 x i8> %39, i64 0
%sisiext12 = sext i8 %40 to i32
%41 = load <4 x i8>, <4 x i8>* %ww, align 4
%42 = extractelement <4 x i8> %41, i64 1
%sisiext13 = sext i8 %42 to i32
%43 = load <4 x i8>, <4 x i8>* %ww, align 4
%44 = extractelement <4 x i8> %43, i64 2
%sisiext14 = sext i8 %44 to i32
%45 = load <4 x i8>, <4 x i8>* %ww, align 4
%46 = extractelement <4 x i8> %45, i64 3
%sisiext15 = sext i8 %46 to i32
%47 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.13, i32 0, i32 0), i32 %sisiext12, i32 %sisiext13, i32 %sisiext14, i32 %sisiext15)
%48 = load <4 x i8>, <4 x i8>* %y, align 4
%49 = load <4 x i8>, <4 x i8>* %z, align 4
%eq = icmp eq <4 x i8> %48, %49
%50 = sext <4 x i1> %eq to <4 x i8>
store <4 x i8> %50, <4 x i8>* %ww, align 4
%51 = load <4 x i8>, <4 x i8>* %ww, align 4
%52 = extractelement <4 x i8> %51, i64 0
%sisiext16 = sext i8 %52 to i32
%53 = load <4 x i8>, <4 x i8>* %ww, align 4
%54 = extractelement <4 x i8> %53, i64 1
%sisiext17 = sext i8 %54 to i32
%55 = load <4 x i8>, <4 x i8>* %ww, align 4
%56 = extractelement <4 x i8> %55, i64 2
%sisiext18 = sext i8 %56 to i32
%57 = load <4 x i8>, <4 x i8>* %ww, align 4
%58 = extractelement <4 x i8> %57, i64 3
%sisiext19 = sext i8 %58 to i32
%59 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.14, i32 0, i32 0), i32 %sisiext16, i32 %sisiext17, i32 %sisiext18, i32 %sisiext19)
%60 = load <4 x i8>, <4 x i8>* %y, align 4
%61 = load <4 x i8>, <4 x i8>* %z, align 4
%neq = icmp ne <4 x i8> %60, %61
%62 = sext <4 x i1> %neq to <4 x i8>
store <4 x i8> %62, <4 x i8>* %ww, align 4
%63 = load <4 x i8>, <4 x i8>* %ww, align 4
%64 = extractelement <4 x i8> %63, i64 0
%sisiext20 = sext i8 %64 to i32
%65 = load <4 x i8>, <4 x i8>* %ww, align 4
%66 = extractelement <4 x i8> %65, i64 1
%sisiext21 = sext i8 %66 to i32
%67 = load <4 x i8>, <4 x i8>* %ww, align 4
%68 = extractelement <4 x i8> %67, i64 2
%sisiext22 = sext i8 %68 to i32
%69 = load <4 x i8>, <4 x i8>* %ww, align 4
%70 = extractelement <4 x i8> %69, i64 3
%sisiext23 = sext i8 %70 to i32
%71 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.15, i32 0, i32 0), i32 %sisiext20, i32 %sisiext21, i32 %sisiext22, i32 %sisiext23)
ret void
}
@@ -188,7 +412,7 @@ entry:
%7 = extractelement <4 x i32> %6, i64 2
%8 = load <4 x i32>, <4 x i32>* %w, align 16
%9 = extractelement <4 x i32> %8, i64 3
%10 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.5, i32 0, i32 0), i32 %3, i32 %5, i32 %7, i32 %9)
%10 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.16, i32 0, i32 0), i32 %3, i32 %5, i32 %7, i32 %9)
%11 = load <4 x i32>, <4 x i32>* %y, align 16
%12 = load <4 x i32>, <4 x i32>* %z, align 16
%mul = mul <4 x i32> %11, %12
@@ -201,7 +425,7 @@ entry:
%18 = extractelement <4 x i32> %17, i64 2
%19 = load <4 x i32>, <4 x i32>* %w, align 16
%20 = extractelement <4 x i32> %19, i64 3
%21 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.6, i32 0, i32 0), i32 %14, i32 %16, i32 %18, i32 %20)
%21 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.17, i32 0, i32 0), i32 %14, i32 %16, i32 %18, i32 %20)
%22 = load <4 x i32>, <4 x i32>* %y, align 16
%23 = load <4 x i32>, <4 x i32>* %z, align 16
%24 = call i32 @llvm.vector.reduce.umin.v4i32(<4 x i32> %23)
@@ -209,7 +433,7 @@ entry:
br i1 %zero, label %panic, label %checkok
panic: ; preds = %entry
call void @"std::builtin.panic"(i8* getelementptr inbounds ([18 x i8], [18 x i8]* @3, i64 0, i64 0), i8* getelementptr inbounds ([15 x i8], [15 x i8]* @4, i64 0, i64 0), i8* getelementptr inbounds ([6 x i8], [6 x i8]* @5, i64 0, i64 0), i32 33)
call void @"std::builtin.panic"(i8* getelementptr inbounds ([18 x i8], [18 x i8]* @3, i64 0, i64 0), i8* getelementptr inbounds ([15 x i8], [15 x i8]* @4, i64 0, i64 0), i8* getelementptr inbounds ([6 x i8], [6 x i8]* @5, i64 0, i64 0), i32 56)
br label %checkok
checkok: ; preds = %panic, %entry
@@ -223,7 +447,7 @@ checkok: ; preds = %panic, %entry
%30 = extractelement <4 x i32> %29, i64 2
%31 = load <4 x i32>, <4 x i32>* %w, align 16
%32 = extractelement <4 x i32> %31, i64 3
%33 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.7, i32 0, i32 0), i32 %26, i32 %28, i32 %30, i32 %32)
%33 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.18, i32 0, i32 0), i32 %26, i32 %28, i32 %30, i32 %32)
%34 = load <4 x i32>, <4 x i32>* %y, align 16
%35 = load <4 x i32>, <4 x i32>* %z, align 16
%sub = sub <4 x i32> %34, %35
@@ -236,7 +460,7 @@ checkok: ; preds = %panic, %entry
%41 = extractelement <4 x i32> %40, i64 2
%42 = load <4 x i32>, <4 x i32>* %w, align 16
%43 = extractelement <4 x i32> %42, i64 3
%44 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.8, i32 0, i32 0), i32 %37, i32 %39, i32 %41, i32 %43)
%44 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.19, i32 0, i32 0), i32 %37, i32 %39, i32 %41, i32 %43)
%45 = load <4 x i32>, <4 x i32>* %z, align 16
%46 = load <4 x i32>, <4 x i32>* %y, align 16
%47 = call i32 @llvm.vector.reduce.smin.v4i32(<4 x i32> %46)
@@ -244,7 +468,7 @@ checkok: ; preds = %panic, %entry
br i1 %shift_underflow, label %panic1, label %checkok2
panic1: ; preds = %checkok
call void @"std::builtin.panic"(i8* getelementptr inbounds ([27 x i8], [27 x i8]* @6, i64 0, i64 0), i8* getelementptr inbounds ([15 x i8], [15 x i8]* @7, i64 0, i64 0), i8* getelementptr inbounds ([6 x i8], [6 x i8]* @8, i64 0, i64 0), i32 37)
call void @"std::builtin.panic"(i8* getelementptr inbounds ([27 x i8], [27 x i8]* @6, i64 0, i64 0), i8* getelementptr inbounds ([15 x i8], [15 x i8]* @7, i64 0, i64 0), i8* getelementptr inbounds ([6 x i8], [6 x i8]* @8, i64 0, i64 0), i32 60)
br label %checkok2
checkok2: ; preds = %panic1, %checkok
@@ -253,7 +477,7 @@ checkok2: ; preds = %panic1, %checkok
br i1 %shift_exceeds, label %panic3, label %checkok4
panic3: ; preds = %checkok2
call void @"std::builtin.panic"(i8* getelementptr inbounds ([27 x i8], [27 x i8]* @9, i64 0, i64 0), i8* getelementptr inbounds ([15 x i8], [15 x i8]* @10, i64 0, i64 0), i8* getelementptr inbounds ([6 x i8], [6 x i8]* @11, i64 0, i64 0), i32 37)
call void @"std::builtin.panic"(i8* getelementptr inbounds ([27 x i8], [27 x i8]* @9, i64 0, i64 0), i8* getelementptr inbounds ([15 x i8], [15 x i8]* @10, i64 0, i64 0), i8* getelementptr inbounds ([6 x i8], [6 x i8]* @11, i64 0, i64 0), i32 60)
br label %checkok4
checkok4: ; preds = %panic3, %checkok2
@@ -268,7 +492,7 @@ checkok4: ; preds = %panic3, %checkok2
%55 = extractelement <4 x i32> %54, i64 2
%56 = load <4 x i32>, <4 x i32>* %w, align 16
%57 = extractelement <4 x i32> %56, i64 3
%58 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.9, i32 0, i32 0), i32 %51, i32 %53, i32 %55, i32 %57)
%58 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.20, i32 0, i32 0), i32 %51, i32 %53, i32 %55, i32 %57)
%59 = load <4 x i32>, <4 x i32>* %z, align 16
%60 = load <4 x i32>, <4 x i32>* %y, align 16
%61 = call i32 @llvm.vector.reduce.smin.v4i32(<4 x i32> %60)
@@ -276,7 +500,7 @@ checkok4: ; preds = %panic3, %checkok2
br i1 %shift_underflow5, label %panic6, label %checkok7
panic6: ; preds = %checkok4
call void @"std::builtin.panic"(i8* getelementptr inbounds ([27 x i8], [27 x i8]* @12, i64 0, i64 0), i8* getelementptr inbounds ([15 x i8], [15 x i8]* @13, i64 0, i64 0), i8* getelementptr inbounds ([6 x i8], [6 x i8]* @14, i64 0, i64 0), i32 39)
call void @"std::builtin.panic"(i8* getelementptr inbounds ([27 x i8], [27 x i8]* @12, i64 0, i64 0), i8* getelementptr inbounds ([15 x i8], [15 x i8]* @13, i64 0, i64 0), i8* getelementptr inbounds ([6 x i8], [6 x i8]* @14, i64 0, i64 0), i32 62)
br label %checkok7
checkok7: ; preds = %panic6, %checkok4
@@ -285,7 +509,7 @@ checkok7: ; preds = %panic6, %checkok4
br i1 %shift_exceeds8, label %panic9, label %checkok10
panic9: ; preds = %checkok7
call void @"std::builtin.panic"(i8* getelementptr inbounds ([27 x i8], [27 x i8]* @15, i64 0, i64 0), i8* getelementptr inbounds ([15 x i8], [15 x i8]* @16, i64 0, i64 0), i8* getelementptr inbounds ([6 x i8], [6 x i8]* @17, i64 0, i64 0), i32 39)
call void @"std::builtin.panic"(i8* getelementptr inbounds ([27 x i8], [27 x i8]* @15, i64 0, i64 0), i8* getelementptr inbounds ([15 x i8], [15 x i8]* @16, i64 0, i64 0), i8* getelementptr inbounds ([6 x i8], [6 x i8]* @17, i64 0, i64 0), i32 62)
br label %checkok10
checkok10: ; preds = %panic9, %checkok7
@@ -300,7 +524,7 @@ checkok10: ; preds = %panic9, %checkok7
%69 = extractelement <4 x i32> %68, i64 2
%70 = load <4 x i32>, <4 x i32>* %w, align 16
%71 = extractelement <4 x i32> %70, i64 3
%72 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.10, i32 0, i32 0), i32 %65, i32 %67, i32 %69, i32 %71)
%72 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.21, i32 0, i32 0), i32 %65, i32 %67, i32 %69, i32 %71)
%73 = load <4 x i32>, <4 x i32>* %z, align 16
%74 = load <4 x i32>, <4 x i32>* %y, align 16
%gt = icmp sgt <4 x i32> %73, %74
@@ -314,14 +538,11 @@ checkok10: ; preds = %panic9, %checkok7
%81 = extractelement <4 x i32> %80, i64 2
%82 = load <4 x i32>, <4 x i32>* %w, align 16
%83 = extractelement <4 x i32> %82, i64 3
%84 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.11, i32 0, i32 0), i32 %77, i32 %79, i32 %81, i32 %83)
store <4 x i32> <i32 2, i32 6, i32 2, i32 1>, <4 x i32>* %uz, align 16
%85 = load <4 x i32>, <4 x i32>* %uz, align 16
%84 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.22, i32 0, i32 0), i32 %77, i32 %79, i32 %81, i32 %83)
%85 = load <4 x i32>, <4 x i32>* %z, align 16
%86 = load <4 x i32>, <4 x i32>* %y, align 16
%lt = icmp slt <4 x i32> %86, %85
%check = icmp slt <4 x i32> %85, zeroinitializer
%siui-lt = or <4 x i1> %check, %lt
%87 = sext <4 x i1> %siui-lt to <4 x i32>
%ge = icmp sge <4 x i32> %85, %86
%87 = sext <4 x i1> %ge to <4 x i32>
store <4 x i32> %87, <4 x i32>* %w, align 16
%88 = load <4 x i32>, <4 x i32>* %w, align 16
%89 = extractelement <4 x i32> %88, i64 0
@@ -331,6 +552,159 @@ checkok10: ; preds = %panic9, %checkok7
%93 = extractelement <4 x i32> %92, i64 2
%94 = load <4 x i32>, <4 x i32>* %w, align 16
%95 = extractelement <4 x i32> %94, i64 3
%96 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.12, i32 0, i32 0), i32 %89, i32 %91, i32 %93, i32 %95)
%96 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.23, i32 0, i32 0), i32 %89, i32 %91, i32 %93, i32 %95)
%97 = load <4 x i32>, <4 x i32>* %z, align 16
%98 = load <4 x i32>, <4 x i32>* %y, align 16
%lt = icmp slt <4 x i32> %97, %98
%99 = sext <4 x i1> %lt to <4 x i32>
store <4 x i32> %99, <4 x i32>* %w, align 16
%100 = load <4 x i32>, <4 x i32>* %w, align 16
%101 = extractelement <4 x i32> %100, i64 0
%102 = load <4 x i32>, <4 x i32>* %w, align 16
%103 = extractelement <4 x i32> %102, i64 1
%104 = load <4 x i32>, <4 x i32>* %w, align 16
%105 = extractelement <4 x i32> %104, i64 2
%106 = load <4 x i32>, <4 x i32>* %w, align 16
%107 = extractelement <4 x i32> %106, i64 3
%108 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.24, i32 0, i32 0), i32 %101, i32 %103, i32 %105, i32 %107)
%109 = load <4 x i32>, <4 x i32>* %z, align 16
%110 = load <4 x i32>, <4 x i32>* %y, align 16
%le = icmp sle <4 x i32> %109, %110
%111 = sext <4 x i1> %le to <4 x i32>
store <4 x i32> %111, <4 x i32>* %w, align 16
%112 = load <4 x i32>, <4 x i32>* %w, align 16
%113 = extractelement <4 x i32> %112, i64 0
%114 = load <4 x i32>, <4 x i32>* %w, align 16
%115 = extractelement <4 x i32> %114, i64 1
%116 = load <4 x i32>, <4 x i32>* %w, align 16
%117 = extractelement <4 x i32> %116, i64 2
%118 = load <4 x i32>, <4 x i32>* %w, align 16
%119 = extractelement <4 x i32> %118, i64 3
%120 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.25, i32 0, i32 0), i32 %113, i32 %115, i32 %117, i32 %119)
%121 = load <4 x i32>, <4 x i32>* %z, align 16
%122 = load <4 x i32>, <4 x i32>* %y, align 16
%eq = icmp eq <4 x i32> %121, %122
%123 = sext <4 x i1> %eq to <4 x i32>
store <4 x i32> %123, <4 x i32>* %w, align 16
%124 = load <4 x i32>, <4 x i32>* %w, align 16
%125 = extractelement <4 x i32> %124, i64 0
%126 = load <4 x i32>, <4 x i32>* %w, align 16
%127 = extractelement <4 x i32> %126, i64 1
%128 = load <4 x i32>, <4 x i32>* %w, align 16
%129 = extractelement <4 x i32> %128, i64 2
%130 = load <4 x i32>, <4 x i32>* %w, align 16
%131 = extractelement <4 x i32> %130, i64 3
%132 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.26, i32 0, i32 0), i32 %125, i32 %127, i32 %129, i32 %131)
%133 = load <4 x i32>, <4 x i32>* %z, align 16
%134 = load <4 x i32>, <4 x i32>* %y, align 16
%neq = icmp ne <4 x i32> %133, %134
%135 = sext <4 x i1> %neq to <4 x i32>
store <4 x i32> %135, <4 x i32>* %w, align 16
%136 = load <4 x i32>, <4 x i32>* %w, align 16
%137 = extractelement <4 x i32> %136, i64 0
%138 = load <4 x i32>, <4 x i32>* %w, align 16
%139 = extractelement <4 x i32> %138, i64 1
%140 = load <4 x i32>, <4 x i32>* %w, align 16
%141 = extractelement <4 x i32> %140, i64 2
%142 = load <4 x i32>, <4 x i32>* %w, align 16
%143 = extractelement <4 x i32> %142, i64 3
%144 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.27, i32 0, i32 0), i32 %137, i32 %139, i32 %141, i32 %143)
store <4 x i32> <i32 2, i32 6, i32 2, i32 1>, <4 x i32>* %uz, align 16
%145 = load <4 x i32>, <4 x i32>* %uz, align 16
%146 = load <4 x i32>, <4 x i32>* %y, align 16
%lt11 = icmp slt <4 x i32> %146, %145
%check = icmp slt <4 x i32> %145, zeroinitializer
%siui-lt = or <4 x i1> %check, %lt11
%147 = sext <4 x i1> %siui-lt to <4 x i32>
store <4 x i32> %147, <4 x i32>* %w, align 16
%148 = load <4 x i32>, <4 x i32>* %w, align 16
%149 = extractelement <4 x i32> %148, i64 0
%150 = load <4 x i32>, <4 x i32>* %w, align 16
%151 = extractelement <4 x i32> %150, i64 1
%152 = load <4 x i32>, <4 x i32>* %w, align 16
%153 = extractelement <4 x i32> %152, i64 2
%154 = load <4 x i32>, <4 x i32>* %w, align 16
%155 = extractelement <4 x i32> %154, i64 3
%156 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.28, i32 0, i32 0), i32 %149, i32 %151, i32 %153, i32 %155)
%157 = load <4 x i32>, <4 x i32>* %uz, align 16
%158 = load <4 x i32>, <4 x i32>* %y, align 16
%le12 = icmp sle <4 x i32> %158, %157
%check13 = icmp slt <4 x i32> %157, zeroinitializer
%siui-le = or <4 x i1> %check13, %le12
%159 = sext <4 x i1> %siui-le to <4 x i32>
store <4 x i32> %159, <4 x i32>* %w, align 16
%160 = load <4 x i32>, <4 x i32>* %w, align 16
%161 = extractelement <4 x i32> %160, i64 0
%162 = load <4 x i32>, <4 x i32>* %w, align 16
%163 = extractelement <4 x i32> %162, i64 1
%164 = load <4 x i32>, <4 x i32>* %w, align 16
%165 = extractelement <4 x i32> %164, i64 2
%166 = load <4 x i32>, <4 x i32>* %w, align 16
%167 = extractelement <4 x i32> %166, i64 3
%168 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.29, i32 0, i32 0), i32 %161, i32 %163, i32 %165, i32 %167)
%169 = load <4 x i32>, <4 x i32>* %uz, align 16
%170 = load <4 x i32>, <4 x i32>* %y, align 16
%gt14 = icmp sgt <4 x i32> %170, %169
%check15 = icmp sge <4 x i32> %169, zeroinitializer
%siui-gt = and <4 x i1> %check15, %gt14
%171 = sext <4 x i1> %siui-gt to <4 x i32>
store <4 x i32> %171, <4 x i32>* %w, align 16
%172 = load <4 x i32>, <4 x i32>* %w, align 16
%173 = extractelement <4 x i32> %172, i64 0
%174 = load <4 x i32>, <4 x i32>* %w, align 16
%175 = extractelement <4 x i32> %174, i64 1
%176 = load <4 x i32>, <4 x i32>* %w, align 16
%177 = extractelement <4 x i32> %176, i64 2
%178 = load <4 x i32>, <4 x i32>* %w, align 16
%179 = extractelement <4 x i32> %178, i64 3
%180 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.30, i32 0, i32 0), i32 %173, i32 %175, i32 %177, i32 %179)
%181 = load <4 x i32>, <4 x i32>* %uz, align 16
%182 = load <4 x i32>, <4 x i32>* %y, align 16
%ge16 = icmp sge <4 x i32> %182, %181
%check17 = icmp sge <4 x i32> %181, zeroinitializer
%siui-ge = and <4 x i1> %check17, %ge16
%183 = sext <4 x i1> %siui-ge to <4 x i32>
store <4 x i32> %183, <4 x i32>* %w, align 16
%184 = load <4 x i32>, <4 x i32>* %w, align 16
%185 = extractelement <4 x i32> %184, i64 0
%186 = load <4 x i32>, <4 x i32>* %w, align 16
%187 = extractelement <4 x i32> %186, i64 1
%188 = load <4 x i32>, <4 x i32>* %w, align 16
%189 = extractelement <4 x i32> %188, i64 2
%190 = load <4 x i32>, <4 x i32>* %w, align 16
%191 = extractelement <4 x i32> %190, i64 3
%192 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.31, i32 0, i32 0), i32 %185, i32 %187, i32 %189, i32 %191)
%193 = load <4 x i32>, <4 x i32>* %uz, align 16
%194 = load <4 x i32>, <4 x i32>* %y, align 16
%eq18 = icmp eq <4 x i32> %194, %193
%check19 = icmp sge <4 x i32> %194, zeroinitializer
%siui-eq = and <4 x i1> %check19, %eq18
%195 = sext <4 x i1> %siui-eq to <4 x i32>
store <4 x i32> %195, <4 x i32>* %w, align 16
%196 = load <4 x i32>, <4 x i32>* %w, align 16
%197 = extractelement <4 x i32> %196, i64 0
%198 = load <4 x i32>, <4 x i32>* %w, align 16
%199 = extractelement <4 x i32> %198, i64 1
%200 = load <4 x i32>, <4 x i32>* %w, align 16
%201 = extractelement <4 x i32> %200, i64 2
%202 = load <4 x i32>, <4 x i32>* %w, align 16
%203 = extractelement <4 x i32> %202, i64 3
%204 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.32, i32 0, i32 0), i32 %197, i32 %199, i32 %201, i32 %203)
%205 = load <4 x i32>, <4 x i32>* %uz, align 16
%206 = load <4 x i32>, <4 x i32>* %y, align 16
%neq20 = icmp ne <4 x i32> %206, %205
%check21 = icmp slt <4 x i32> %206, zeroinitializer
%siui-ne = or <4 x i1> %check21, %neq20
%207 = sext <4 x i1> %siui-ne to <4 x i32>
store <4 x i32> %207, <4 x i32>* %w, align 16
%208 = load <4 x i32>, <4 x i32>* %w, align 16
%209 = extractelement <4 x i32> %208, i64 0
%210 = load <4 x i32>, <4 x i32>* %w, align 16
%211 = extractelement <4 x i32> %210, i64 1
%212 = load <4 x i32>, <4 x i32>* %w, align 16
%213 = extractelement <4 x i32> %212, i64 2
%214 = load <4 x i32>, <4 x i32>* %w, align 16
%215 = extractelement <4 x i32> %214, i64 3
%216 = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([13 x i8], [13 x i8]* @.str.33, i32 0, i32 0), i32 %209, i32 %211, i32 %213, i32 %215)
ret void
}