Skip to content

Instantly share code, notes, and snippets.

@aqjune
Created February 18, 2021 09:40
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save aqjune/f5e4430286a259fc6577faa8f7afd97d to your computer and use it in GitHub Desktop.
Save aqjune/f5e4430286a259fc6577faa8f7afd97d to your computer and use it in GitHub Desktop.
select-safe-bool-transforms.ll translation validation
----------------------------------------
define i1 @merge_logical_and_and(i1 %X, i1 %Y) {
%0:
%c = select i1 %X, i1 %Y, i1 0
%res = and i1 %X, %c
ret i1 %res
}
=>
define i1 @merge_logical_and_and(i1 %X, i1 %Y) {
%0:
%c = select i1 %X, i1 %Y, i1 0
ret i1 %c
}
Transformation seems to be correct!
----------------------------------------
define i1 @merge_two_logical_ands(i1 %X, i1 %Y) {
%0:
%c = select i1 %X, i1 %Y, i1 0
%res = select i1 %X, i1 %c, i1 0
ret i1 %res
}
=>
define i1 @merge_two_logical_ands(i1 %X, i1 %Y) {
%0:
%res = select i1 %X, i1 %Y, i1 0
ret i1 %res
}
Transformation seems to be correct!
----------------------------------------
define i1 @merge_and_logical_and(i1 %X, i1 %Y) {
%0:
%c = and i1 %X, %Y
%res = select i1 %X, i1 %c, i1 0
ret i1 %res
}
=>
define i1 @merge_and_logical_and(i1 %X, i1 %Y) {
%0:
%res = select i1 %X, i1 %Y, i1 0
ret i1 %res
}
Transformation seems to be correct!
----------------------------------------
define i1 @merge_logical_and_and2(i1 %X, i1 %Y) {
%0:
%c = select i1 %Y, i1 %X, i1 0
%res = and i1 %X, %c
ret i1 %res
}
=>
define i1 @merge_logical_and_and2(i1 %X, i1 %Y) {
%0:
%c = select i1 %Y, i1 %X, i1 0
ret i1 %c
}
Transformation seems to be correct!
----------------------------------------
define i1 @merge_two_logical_ands2(i1 %X, i1 %Y) {
%0:
%c = select i1 %Y, i1 %X, i1 0
%res = select i1 %X, i1 %c, i1 0
ret i1 %res
}
=>
define i1 @merge_two_logical_ands2(i1 %X, i1 %Y) {
%0:
%res = select i1 %X, i1 %Y, i1 0
ret i1 %res
}
Transformation seems to be correct!
----------------------------------------
define i1 @merge_and_logical_and2(i1 %X, i1 %Y) {
%0:
%c = and i1 %Y, %X
%res = select i1 %X, i1 %c, i1 0
ret i1 %res
}
=>
define i1 @merge_and_logical_and2(i1 %X, i1 %Y) {
%0:
%res = select i1 %X, i1 %Y, i1 0
ret i1 %res
}
Transformation seems to be correct!
----------------------------------------
define i1 @merge_logical_and_and3(i1 %X, i1 %Y) {
%0:
%c = select i1 %X, i1 %Y, i1 0
%res = and i1 %c, %X
ret i1 %res
}
=>
define i1 @merge_logical_and_and3(i1 %X, i1 %Y) {
%0:
%c = select i1 %X, i1 %Y, i1 0
ret i1 %c
}
Transformation seems to be correct!
----------------------------------------
define i1 @merge_two_logical_ands3(i1 %X, i1 %Y) {
%0:
%c = select i1 %X, i1 %Y, i1 0
%res = select i1 %c, i1 %X, i1 0
ret i1 %res
}
=>
define i1 @merge_two_logical_ands3(i1 %X, i1 %Y) {
%0:
%c = select i1 %X, i1 %Y, i1 0
ret i1 %c
}
Transformation seems to be correct!
----------------------------------------
define i1 @merge_and_logical_and3(i1 %X, i1 %Y) {
%0:
%c = and i1 %X, %Y
%res = select i1 %c, i1 %X, i1 0
ret i1 %res
}
=>
define i1 @merge_and_logical_and3(i1 %X, i1 %Y) {
%0:
%c = and i1 %X, %Y
ret i1 %c
}
Transformation seems to be correct!
----------------------------------------
define i1 @merge_logical_and_and4(i1 %X, i1 %Y) {
%0:
%c = select i1 %Y, i1 %X, i1 0
%res = and i1 %c, %X
ret i1 %res
}
=>
define i1 @merge_logical_and_and4(i1 %X, i1 %Y) {
%0:
%c = select i1 %Y, i1 %X, i1 0
ret i1 %c
}
Transformation seems to be correct!
----------------------------------------
define i1 @merge_two_logical_ands4(i1 %X, i1 %Y) {
%0:
%c = select i1 %Y, i1 %X, i1 0
%res = select i1 %c, i1 %X, i1 0
ret i1 %res
}
=>
define i1 @merge_two_logical_ands4(i1 %X, i1 %Y) {
%0:
%res = select i1 %Y, i1 %X, i1 0
ret i1 %res
}
Transformation seems to be correct!
----------------------------------------
define i1 @merge_and_logical_and4(i1 %X, i1 %Y) {
%0:
%c = and i1 %Y, %X
%res = select i1 %c, i1 %X, i1 0
ret i1 %res
}
=>
define i1 @merge_and_logical_and4(i1 %X, i1 %Y) {
%0:
%c = and i1 %Y, %X
ret i1 %c
}
Transformation seems to be correct!
----------------------------------------
define i1 @merge_logical_or_or(i1 %X, i1 %Y) {
%0:
%c = select i1 %X, i1 1, i1 %Y
%res = or i1 %X, %c
ret i1 %res
}
=>
define i1 @merge_logical_or_or(i1 %X, i1 %Y) {
%0:
%c = select i1 %X, i1 1, i1 %Y
ret i1 %c
}
Transformation seems to be correct!
----------------------------------------
define i1 @merge_two_logical_ors(i1 %X, i1 %Y) {
%0:
%c = select i1 %X, i1 1, i1 %Y
%res = select i1 %X, i1 1, i1 %c
ret i1 %res
}
=>
define i1 @merge_two_logical_ors(i1 %X, i1 %Y) {
%0:
%res = select i1 %X, i1 1, i1 %Y
ret i1 %res
}
Transformation seems to be correct!
----------------------------------------
define i1 @merge_or_logical_or(i1 %X, i1 %Y) {
%0:
%c = or i1 %X, %Y
%res = select i1 %X, i1 1, i1 %c
ret i1 %res
}
=>
define i1 @merge_or_logical_or(i1 %X, i1 %Y) {
%0:
%res = select i1 %X, i1 1, i1 %Y
ret i1 %res
}
Transformation seems to be correct!
----------------------------------------
define i1 @merge_logical_or_or2(i1 %X, i1 %Y) {
%0:
%c = select i1 %Y, i1 1, i1 %X
%res = or i1 %X, %c
ret i1 %res
}
=>
define i1 @merge_logical_or_or2(i1 %X, i1 %Y) {
%0:
%c = select i1 %Y, i1 1, i1 %X
ret i1 %c
}
Transformation seems to be correct!
----------------------------------------
define i1 @merge_two_logical_ors2(i1 %X, i1 %Y) {
%0:
%c = select i1 %Y, i1 1, i1 %X
%res = select i1 %X, i1 1, i1 %c
ret i1 %res
}
=>
define i1 @merge_two_logical_ors2(i1 %X, i1 %Y) {
%0:
%res = select i1 %X, i1 1, i1 %Y
ret i1 %res
}
Transformation seems to be correct!
----------------------------------------
define i1 @merge_or_logical_or2(i1 %X, i1 %Y) {
%0:
%c = or i1 %Y, %X
%res = select i1 %X, i1 1, i1 %c
ret i1 %res
}
=>
define i1 @merge_or_logical_or2(i1 %X, i1 %Y) {
%0:
%res = select i1 %X, i1 1, i1 %Y
ret i1 %res
}
Transformation seems to be correct!
----------------------------------------
define i1 @merge_logical_or_or3(i1 %X, i1 %Y) {
%0:
%c = select i1 %X, i1 1, i1 %Y
%res = or i1 %c, %X
ret i1 %res
}
=>
define i1 @merge_logical_or_or3(i1 %X, i1 %Y) {
%0:
%c = select i1 %X, i1 1, i1 %Y
ret i1 %c
}
Transformation seems to be correct!
----------------------------------------
define i1 @merge_two_logical_ors3(i1 %X, i1 %Y) {
%0:
%c = select i1 %X, i1 1, i1 %Y
%res = select i1 %c, i1 1, i1 %X
ret i1 %res
}
=>
define i1 @merge_two_logical_ors3(i1 %X, i1 %Y) {
%0:
%c = select i1 %X, i1 1, i1 %Y
ret i1 %c
}
Transformation seems to be correct!
----------------------------------------
define i1 @merge_or_logical_or3(i1 %X, i1 %Y) {
%0:
%c = or i1 %X, %Y
%res = select i1 %c, i1 1, i1 %X
ret i1 %res
}
=>
define i1 @merge_or_logical_or3(i1 %X, i1 %Y) {
%0:
%c = or i1 %X, %Y
ret i1 %c
}
Transformation seems to be correct!
----------------------------------------
define i1 @merge_logical_or_or4(i1 %X, i1 %Y) {
%0:
%c = select i1 %Y, i1 1, i1 %X
%res = or i1 %c, %X
ret i1 %res
}
=>
define i1 @merge_logical_or_or4(i1 %X, i1 %Y) {
%0:
%c = select i1 %Y, i1 1, i1 %X
ret i1 %c
}
Transformation seems to be correct!
----------------------------------------
define i1 @merge_two_logical_ors4(i1 %X, i1 %Y) {
%0:
%c = select i1 %Y, i1 1, i1 %X
%res = select i1 %c, i1 1, i1 %X
ret i1 %res
}
=>
define i1 @merge_two_logical_ors4(i1 %X, i1 %Y) {
%0:
%res = select i1 %Y, i1 1, i1 %X
ret i1 %res
}
Transformation seems to be correct!
----------------------------------------
define i1 @merge_or_logical_or4(i1 %X, i1 %Y) {
%0:
%c = or i1 %Y, %X
%res = select i1 %c, i1 1, i1 %X
ret i1 %res
}
=>
define i1 @merge_or_logical_or4(i1 %X, i1 %Y) {
%0:
%c = or i1 %Y, %X
ret i1 %c
}
Transformation seems to be correct!
Summary:
24 correct transformations
0 incorrect transformations
0 Alive2 errors
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment