typedef unsigned int uint; typedef _Bool bool; static uint ini(uint a) { return !a; } static bool bni(uint a) { return !a; } static uint ioii(uint a, uint b) { return a || b; } static uint iaii(uint a, uint b) { return a && b; } static bool boii(uint a, uint b) { return a || b; } static bool baii(uint a, uint b) { return a && b; } static uint ioiii(uint a, uint b, uint c) { return a || b || c; } static uint iaiii(uint a, uint b, uint c) { return a && b && c; } static bool boiii(uint a, uint b, uint c) { return a || b || c; } static bool baiii(uint a, uint b, uint c) { return a && b && c; } static uint inb(bool a) { return !a; } static bool bnb(bool a) { return !a; } static uint iobb(bool a, bool b) { return a || b; } static uint iabb(bool a, bool b) { return a && b; } static bool bobb(bool a, bool b) { return a || b; } static bool babb(bool a, bool b) { return a && b; } static uint iobbb(bool a, bool b, bool c) { return a || b || c; } static uint iabbb(bool a, bool b, bool c) { return a && b && c; } static bool bobbb(bool a, bool b, bool c) { return a || b || c; } static bool babbb(bool a, bool b, bool c) { return a && b && c; } /* * check-name: bool-simplify2 * check-command: test-linearize $file * * check-output-pattern(20): setne\\. * check-output-pattern(4): seteq\\. * check-output-pattern(8): zext\\. * check-output-pattern(12): and * check-output-pattern(12): or * check-output-end * * check-output-start ini: .L0: seteq.32 %r2 <- %arg1, $0 ret.32 %r2 bni: .L2: seteq.1 %r6 <- %arg1, $0 ret.1 %r6 ioii: .L4: setne.1 %r9 <- %arg1, $0 setne.1 %r11 <- %arg2, $0 or.1 %r12 <- %r9, %r11 zext.32 %r13 <- (1) %r12 ret.32 %r13 iaii: .L6: setne.1 %r16 <- %arg1, $0 setne.1 %r18 <- %arg2, $0 and.1 %r19 <- %r16, %r18 zext.32 %r20 <- (1) %r19 ret.32 %r20 boii: .L8: setne.1 %r23 <- %arg1, $0 setne.1 %r25 <- %arg2, $0 or.1 %r26 <- %r23, %r25 ret.1 %r26 baii: .L10: setne.1 %r31 <- %arg1, $0 setne.1 %r33 <- %arg2, $0 and.1 %r34 <- %r31, %r33 ret.1 %r34 ioiii: .L12: setne.1 %r39 <- %arg1, $0 setne.1 %r41 <- %arg2, $0 or.1 %r42 <- %r39, %r41 setne.1 %r46 <- %arg3, $0 or.1 %r47 <- %r42, %r46 zext.32 %r48 <- (1) %r47 ret.32 %r48 iaiii: .L14: setne.1 %r51 <- %arg1, $0 setne.1 %r53 <- %arg2, $0 and.1 %r54 <- %r51, %r53 setne.1 %r58 <- %arg3, $0 and.1 %r59 <- %r54, %r58 zext.32 %r60 <- (1) %r59 ret.32 %r60 boiii: .L16: setne.1 %r63 <- %arg1, $0 setne.1 %r65 <- %arg2, $0 or.1 %r66 <- %r63, %r65 setne.1 %r70 <- %arg3, $0 or.1 %r71 <- %r66, %r70 ret.1 %r71 baiii: .L18: setne.1 %r76 <- %arg1, $0 setne.1 %r78 <- %arg2, $0 and.1 %r79 <- %r76, %r78 setne.1 %r83 <- %arg3, $0 and.1 %r84 <- %r79, %r83 ret.1 %r84 inb: .L20: seteq.32 %r89 <- %arg1, $0 ret.32 %r89 bnb: .L22: seteq.1 %r93 <- %arg1, $0 ret.1 %r93 iobb: .L24: or.1 %r97 <- %arg1, %arg2 zext.32 %r98 <- (1) %r97 ret.32 %r98 iabb: .L26: and.1 %r102 <- %arg1, %arg2 zext.32 %r103 <- (1) %r102 ret.32 %r103 bobb: .L28: or.1 %r107 <- %arg1, %arg2 ret.1 %r107 babb: .L30: and.1 %r113 <- %arg1, %arg2 ret.1 %r113 iobbb: .L32: or.1 %r119 <- %arg1, %arg2 or.1 %r123 <- %r119, %arg3 zext.32 %r124 <- (1) %r123 ret.32 %r124 iabbb: .L34: and.1 %r128 <- %arg1, %arg2 and.1 %r132 <- %r128, %arg3 zext.32 %r133 <- (1) %r132 ret.32 %r133 bobbb: .L36: or.1 %r137 <- %arg1, %arg2 or.1 %r141 <- %r137, %arg3 ret.1 %r141 babbb: .L38: and.1 %r147 <- %arg1, %arg2 and.1 %r151 <- %r147, %arg3 ret.1 %r151 * check-output-end */