diff options
Diffstat (limited to 'validation/linear')
| -rw-r--r-- | validation/linear/bitfield-inc.c | 16 | ||||
| -rw-r--r-- | validation/linear/bitfield-preinc.c | 18 | ||||
| -rw-r--r-- | validation/linear/bitfield-size.c | 142 | ||||
| -rw-r--r-- | validation/linear/bitfield-store.c | 22 | ||||
| -rw-r--r-- | validation/linear/call-complex-pointer.c | 10 | ||||
| -rw-r--r-- | validation/linear/cast-constant-to-float.c | 6 | ||||
| -rw-r--r-- | validation/linear/cast-constants.c | 20 | ||||
| -rw-r--r-- | validation/linear/cast-kinds.c | 405 | ||||
| -rw-r--r-- | validation/linear/logical.c | 259 |
9 files changed, 408 insertions, 490 deletions
diff --git a/validation/linear/bitfield-inc.c b/validation/linear/bitfield-inc.c new file mode 100644 index 00000000..56997592 --- /dev/null +++ b/validation/linear/bitfield-inc.c @@ -0,0 +1,16 @@ +struct s { + int f:5; +}; + +void inc(struct s *p) +{ + p->f++; +} + +/* + * check-name: bitfield-inc + * check-command: test-linearize -Wno-decl $file + * + * check-output-ignore + * check-output-excludes: add\\.5 + */ diff --git a/validation/linear/bitfield-preinc.c b/validation/linear/bitfield-preinc.c new file mode 100644 index 00000000..783327ae --- /dev/null +++ b/validation/linear/bitfield-preinc.c @@ -0,0 +1,18 @@ +struct s { + int f:3; +}; + +int preinc(void) +{ + struct s s = { 7 }; + return ++s.f; +} + +/* + * check-name: bitfield-preinc + * check-description: ++X is equivalent to X+=1 + * check-command: test-linearize -Wno-decl $file + * + * check-output-ignore + * check-output-contains: ret.32 *\\$0 + */ diff --git a/validation/linear/bitfield-size.c b/validation/linear/bitfield-size.c index 963f6e28..841bdd0a 100644 --- a/validation/linear/bitfield-size.c +++ b/validation/linear/bitfield-size.c @@ -49,41 +49,45 @@ upostinc: load.64 %r1 <- 0[x] load.32 %r2 <- 0[%r1] trunc.3 %r3 <- (32) %r2 - add.3 %r4 <- %r3, $1 - load.32 %r5 <- 0[%r1] - zext.32 %r6 <- (3) %r4 - and.32 %r7 <- %r5, $-8 - or.32 %r8 <- %r7, %r6 - store.32 %r8 -> 0[%r1] - zext.32 %r9 <- (3) %r3 - phisrc.32 %phi1(return) <- %r9 + zext.32 %r4 <- (3) %r3 + add.32 %r5 <- %r4, $1 + trunc.3 %r6 <- (32) %r5 + load.32 %r7 <- 0[%r1] + zext.32 %r8 <- (3) %r6 + and.32 %r9 <- %r7, $0xfffffff8 + or.32 %r10 <- %r9, %r8 + store.32 %r10 -> 0[%r1] + zext.32 %r11 <- (3) %r4 + phisrc.32 %phi1(return) <- %r11 br .L1 .L1: - phi.32 %r10 <- %phi1(return) - ret.32 %r10 + phi.32 %r12 <- %phi1(return) + ret.32 %r12 upreinc: .L2: <entry-point> store.64 %arg1 -> 0[x] - load.64 %r11 <- 0[x] - load.32 %r12 <- 0[%r11] - trunc.3 %r13 <- (32) %r12 - add.3 %r14 <- %r13, $1 - load.32 %r15 <- 0[%r11] - zext.32 %r16 <- (3) %r14 - and.32 %r17 <- %r15, $-8 - or.32 %r18 <- %r17, %r16 - store.32 %r18 -> 0[%r11] - zext.32 %r19 <- (3) %r14 - phisrc.32 %phi2(return) <- %r19 + load.64 %r13 <- 0[x] + load.32 %r14 <- 0[%r13] + trunc.3 %r15 <- (32) %r14 + zext.32 %r16 <- (3) %r15 + add.32 %r17 <- %r16, $1 + trunc.3 %r18 <- (32) %r17 + load.32 %r19 <- 0[%r13] + zext.32 %r20 <- (3) %r18 + and.32 %r21 <- %r19, $0xfffffff8 + or.32 %r22 <- %r21, %r20 + store.32 %r22 -> 0[%r13] + zext.32 %r23 <- (3) %r18 + phisrc.32 %phi2(return) <- %r23 br .L3 .L3: - phi.32 %r20 <- %phi2(return) - ret.32 %r20 + phi.32 %r24 <- %phi2(return) + ret.32 %r24 ucpy: @@ -91,15 +95,15 @@ ucpy: <entry-point> store.64 %arg1 -> 0[d] store.64 %arg2 -> 0[s] - load.64 %r21 <- 0[s] - load.32 %r22 <- 0[%r21] - trunc.3 %r23 <- (32) %r22 - load.64 %r24 <- 0[d] - load.32 %r25 <- 0[%r24] - zext.32 %r26 <- (3) %r23 - and.32 %r27 <- %r25, $-8 - or.32 %r28 <- %r27, %r26 - store.32 %r28 -> 0[%r24] + load.64 %r25 <- 0[s] + load.32 %r26 <- 0[%r25] + trunc.3 %r27 <- (32) %r26 + load.64 %r28 <- 0[d] + load.32 %r29 <- 0[%r28] + zext.32 %r30 <- (3) %r27 + and.32 %r31 <- %r29, $0xfffffff8 + or.32 %r32 <- %r31, %r30 + store.32 %r32 -> 0[%r28] br .L5 .L5: @@ -110,44 +114,48 @@ spostinc: .L6: <entry-point> store.64 %arg1 -> 0[x] - load.64 %r29 <- 0[x] - load.32 %r30 <- 0[%r29] - trunc.3 %r31 <- (32) %r30 - add.3 %r32 <- %r31, $1 - load.32 %r33 <- 0[%r29] - zext.32 %r34 <- (3) %r32 - and.32 %r35 <- %r33, $-8 - or.32 %r36 <- %r35, %r34 - store.32 %r36 -> 0[%r29] - zext.32 %r37 <- (3) %r31 - phisrc.32 %phi3(return) <- %r37 + load.64 %r33 <- 0[x] + load.32 %r34 <- 0[%r33] + trunc.3 %r35 <- (32) %r34 + zext.32 %r36 <- (3) %r35 + add.32 %r37 <- %r36, $1 + trunc.3 %r38 <- (32) %r37 + load.32 %r39 <- 0[%r33] + zext.32 %r40 <- (3) %r38 + and.32 %r41 <- %r39, $0xfffffff8 + or.32 %r42 <- %r41, %r40 + store.32 %r42 -> 0[%r33] + zext.32 %r43 <- (3) %r36 + phisrc.32 %phi3(return) <- %r43 br .L7 .L7: - phi.32 %r38 <- %phi3(return) - ret.32 %r38 + phi.32 %r44 <- %phi3(return) + ret.32 %r44 spreinc: .L8: <entry-point> store.64 %arg1 -> 0[x] - load.64 %r39 <- 0[x] - load.32 %r40 <- 0[%r39] - trunc.3 %r41 <- (32) %r40 - add.3 %r42 <- %r41, $1 - load.32 %r43 <- 0[%r39] - zext.32 %r44 <- (3) %r42 - and.32 %r45 <- %r43, $-8 - or.32 %r46 <- %r45, %r44 - store.32 %r46 -> 0[%r39] - zext.32 %r47 <- (3) %r42 - phisrc.32 %phi4(return) <- %r47 + load.64 %r45 <- 0[x] + load.32 %r46 <- 0[%r45] + trunc.3 %r47 <- (32) %r46 + zext.32 %r48 <- (3) %r47 + add.32 %r49 <- %r48, $1 + trunc.3 %r50 <- (32) %r49 + load.32 %r51 <- 0[%r45] + zext.32 %r52 <- (3) %r50 + and.32 %r53 <- %r51, $0xfffffff8 + or.32 %r54 <- %r53, %r52 + store.32 %r54 -> 0[%r45] + zext.32 %r55 <- (3) %r50 + phisrc.32 %phi4(return) <- %r55 br .L9 .L9: - phi.32 %r48 <- %phi4(return) - ret.32 %r48 + phi.32 %r56 <- %phi4(return) + ret.32 %r56 scpy: @@ -155,15 +163,15 @@ scpy: <entry-point> store.64 %arg1 -> 0[d] store.64 %arg2 -> 0[s] - load.64 %r49 <- 0[s] - load.32 %r50 <- 0[%r49] - trunc.3 %r51 <- (32) %r50 - load.64 %r52 <- 0[d] - load.32 %r53 <- 0[%r52] - zext.32 %r54 <- (3) %r51 - and.32 %r55 <- %r53, $-8 - or.32 %r56 <- %r55, %r54 - store.32 %r56 -> 0[%r52] + load.64 %r57 <- 0[s] + load.32 %r58 <- 0[%r57] + trunc.3 %r59 <- (32) %r58 + load.64 %r60 <- 0[d] + load.32 %r61 <- 0[%r60] + zext.32 %r62 <- (3) %r59 + and.32 %r63 <- %r61, $0xfffffff8 + or.32 %r64 <- %r63, %r62 + store.32 %r64 -> 0[%r60] br .L11 .L11: diff --git a/validation/linear/bitfield-store.c b/validation/linear/bitfield-store.c new file mode 100644 index 00000000..3d952c8d --- /dev/null +++ b/validation/linear/bitfield-store.c @@ -0,0 +1,22 @@ +int foo(void) +{ + struct { + int a:8; + int b:16; + int c:8; + } s = { 0xff, 0x0000, 0xff }; + + return s.b = 0x56781234; +} + +/* + * check-name: bitfield-store + * check-command: test-linearize -Wno-decl $file + * + * check-output-ignore + * check-output-contains: ret\\..*\\$0x1234 + * + * check-error-start +linear/bitfield-store.c:9:22: warning: cast truncates bits from constant value (56781234 becomes 1234) + * check-error-end + */ diff --git a/validation/linear/call-complex-pointer.c b/validation/linear/call-complex-pointer.c index ea8232f1..dc0ab07b 100644 --- a/validation/linear/call-complex-pointer.c +++ b/validation/linear/call-complex-pointer.c @@ -18,14 +18,14 @@ foo: br .L4 .L3: - ptrcast.64 %r5 <- (64) %arg3 - phisrc.64 %phi2 <- %r5 + ptrcast.64 %r6 <- (64) %arg3 + phisrc.64 %phi2 <- %r6 br .L4 .L4: - phi.64 %r6 <- %phi1, %phi2 - call.32 %r7 <- %r6, %arg4 - ret.32 %r7 + phi.64 %r7 <- %phi1, %phi2 + call.32 %r8 <- %r7, %arg4 + ret.32 %r8 * check-output-end diff --git a/validation/linear/cast-constant-to-float.c b/validation/linear/cast-constant-to-float.c index ef7892f1..ac4eff0f 100644 --- a/validation/linear/cast-constant-to-float.c +++ b/validation/linear/cast-constant-to-float.c @@ -13,21 +13,21 @@ double f3(void) { return -1.0; } f1: .L0: <entry-point> - setfval.64 %r1 <- -1.000000 + setfval.64 %r1 <- -1.000000e+00 ret.64 %r1 f2: .L2: <entry-point> - setfval.64 %r3 <- -1.000000 + setfval.64 %r3 <- -1.000000e+00 ret.64 %r3 f3: .L4: <entry-point> - setfval.64 %r5 <- -1.000000 + setfval.64 %r5 <- -1.000000e+00 ret.64 %r5 diff --git a/validation/linear/cast-constants.c b/validation/linear/cast-constants.c index 9e200672..c1fdab41 100644 --- a/validation/linear/cast-constants.c +++ b/validation/linear/cast-constants.c @@ -286,70 +286,70 @@ vptr_2_iptr: int_2_float: .L76: <entry-point> - setfval.32 %r39 <- 123.000000 + setfval.32 %r39 <- 1.230000e+02 ret.32 %r39 uint_2_float: .L78: <entry-point> - setfval.32 %r41 <- 123.000000 + setfval.32 %r41 <- 1.230000e+02 ret.32 %r41 long_2_float: .L80: <entry-point> - setfval.32 %r43 <- 123.000000 + setfval.32 %r43 <- 1.230000e+02 ret.32 %r43 ulong_2_float: .L82: <entry-point> - setfval.32 %r45 <- 123.000000 + setfval.32 %r45 <- 1.230000e+02 ret.32 %r45 double_2_float: .L84: <entry-point> - setfval.32 %r47 <- 1.123000 + setfval.32 %r47 <- 1.123000e+00 ret.32 %r47 int_2_double: .L86: <entry-point> - setfval.64 %r49 <- 123.000000 + setfval.64 %r49 <- 1.230000e+02 ret.64 %r49 uint_2_double: .L88: <entry-point> - setfval.64 %r51 <- 123.000000 + setfval.64 %r51 <- 1.230000e+02 ret.64 %r51 long_2_double: .L90: <entry-point> - setfval.64 %r53 <- 123.000000 + setfval.64 %r53 <- 1.230000e+02 ret.64 %r53 ulong_2_double: .L92: <entry-point> - setfval.64 %r55 <- 123.000000 + setfval.64 %r55 <- 1.230000e+02 ret.64 %r55 float_2_double: .L94: <entry-point> - setfval.64 %r57 <- 1.123000 + setfval.64 %r57 <- 1.123000e+00 ret.64 %r57 diff --git a/validation/linear/cast-kinds.c b/validation/linear/cast-kinds.c deleted file mode 100644 index 5df307bc..00000000 --- a/validation/linear/cast-kinds.c +++ /dev/null @@ -1,405 +0,0 @@ -typedef unsigned int uint; -typedef unsigned long ulong; - -static int uint_2_int(uint a) { return (int)a; } -static int long_2_int(long a) { return (int)a; } -static int ulong_2_int(ulong a) { return (int)a; } -static int vptr_2_int(void *a) { return (int)a; } -static int iptr_2_int(int *a) { return (int)a; } -static int float_2_int(float a) { return (int)a; } -static int double_2_int(double a) { return (int)a; } -static uint int_2_uint(int a) { return (uint)a; } -static uint long_2_uint(long a) { return (uint)a; } -static uint ulong_2_uint(ulong a) { return (uint)a; } -static uint vptr_2_uint(void *a) { return (uint)a; } -static uint iptr_2_uint(int *a) { return (uint)a; } -static uint float_2_uint(float a) { return (uint)a; } -static uint double_2_uint(double a) { return (uint)a; } -static long int_2_long(int a) { return (long)a; } -static long uint_2_long(uint a) { return (long)a; } -static long ulong_2_long(ulong a) { return (long)a; } -static long vptr_2_long(void *a) { return (long)a; } -static long iptr_2_long(int *a) { return (long)a; } -static long float_2_long(float a) { return (long)a; } -static long double_2_long(double a) { return (long)a; } -static ulong int_2_ulong(int a) { return (ulong)a; } -static ulong uint_2_ulong(uint a) { return (ulong)a; } -static ulong long_2_ulong(long a) { return (ulong)a; } -static ulong vptr_2_ulong(void *a) { return (ulong)a; } -static ulong iptr_2_ulong(int *a) { return (ulong)a; } -static ulong float_2_ulong(float a) { return (ulong)a; } -static ulong double_2_ulong(double a) { return (ulong)a; } -static void * int_2_vptr(int a) { return (void *)a; } -static void * uint_2_vptr(uint a) { return (void *)a; } -static void * long_2_vptr(long a) { return (void *)a; } -static void * ulong_2_vptr(ulong a) { return (void *)a; } -static void * iptr_2_vptr(int *a) { return (void *)a; } -static int * int_2_iptr(int a) { return (int *)a; } -static int * uint_2_iptr(uint a) { return (int *)a; } -static int * long_2_iptr(long a) { return (int *)a; } -static int * ulong_2_iptr(ulong a) { return (int *)a; } -static int * vptr_2_iptr(void *a) { return (int *)a; } -static float int_2_float(int a) { return (float)a; } -static float uint_2_float(uint a) { return (float)a; } -static float long_2_float(long a) { return (float)a; } -static float ulong_2_float(ulong a) { return (float)a; } -static float double_2_float(double a) { return (float)a; } -static double int_2_double(int a) { return (double)a; } -static double uint_2_double(uint a) { return (double)a; } -static double long_2_double(long a) { return (double)a; } -static double ulong_2_double(ulong a) { return (double)a; } -static double float_2_double(float a) { return (double)a; } - -static float float_2_float(float a) { return a; } -static double double_2_double(double a) { return a; } - -/* - * check-name: cast-kinds - * check-command: test-linearize -Wno-int-to-pointer-cast -Wno-pointer-to-int-cast -m64 $file - * - * check-output-start -uint_2_int: -.L0: - <entry-point> - ret.32 %arg1 - - -long_2_int: -.L2: - <entry-point> - trunc.32 %r4 <- (64) %arg1 - ret.32 %r4 - - -ulong_2_int: -.L4: - <entry-point> - trunc.32 %r7 <- (64) %arg1 - ret.32 %r7 - - -vptr_2_int: -.L6: - <entry-point> - trunc.32 %r10 <- (64) %arg1 - ret.32 %r10 - - -iptr_2_int: -.L8: - <entry-point> - ptrtu.64 %r13 <- (64) %arg1 - trunc.32 %r14 <- (64) %r13 - ret.32 %r14 - - -float_2_int: -.L10: - <entry-point> - fcvts.32 %r17 <- (32) %arg1 - ret.32 %r17 - - -double_2_int: -.L12: - <entry-point> - fcvts.32 %r20 <- (64) %arg1 - ret.32 %r20 - - -int_2_uint: -.L14: - <entry-point> - ret.32 %arg1 - - -long_2_uint: -.L16: - <entry-point> - trunc.32 %r25 <- (64) %arg1 - ret.32 %r25 - - -ulong_2_uint: -.L18: - <entry-point> - trunc.32 %r28 <- (64) %arg1 - ret.32 %r28 - - -vptr_2_uint: -.L20: - <entry-point> - trunc.32 %r31 <- (64) %arg1 - ret.32 %r31 - - -iptr_2_uint: -.L22: - <entry-point> - ptrtu.64 %r34 <- (64) %arg1 - trunc.32 %r35 <- (64) %r34 - ret.32 %r35 - - -float_2_uint: -.L24: - <entry-point> - fcvtu.32 %r38 <- (32) %arg1 - ret.32 %r38 - - -double_2_uint: -.L26: - <entry-point> - fcvtu.32 %r41 <- (64) %arg1 - ret.32 %r41 - - -int_2_long: -.L28: - <entry-point> - sext.64 %r44 <- (32) %arg1 - ret.64 %r44 - - -uint_2_long: -.L30: - <entry-point> - zext.64 %r47 <- (32) %arg1 - ret.64 %r47 - - -ulong_2_long: -.L32: - <entry-point> - ret.64 %arg1 - - -vptr_2_long: -.L34: - <entry-point> - ret.64 %arg1 - - -iptr_2_long: -.L36: - <entry-point> - ptrtu.64 %r54 <- (64) %arg1 - ret.64 %r54 - - -float_2_long: -.L38: - <entry-point> - fcvts.64 %r57 <- (32) %arg1 - ret.64 %r57 - - -double_2_long: -.L40: - <entry-point> - fcvts.64 %r60 <- (64) %arg1 - ret.64 %r60 - - -int_2_ulong: -.L42: - <entry-point> - sext.64 %r63 <- (32) %arg1 - ret.64 %r63 - - -uint_2_ulong: -.L44: - <entry-point> - zext.64 %r66 <- (32) %arg1 - ret.64 %r66 - - -long_2_ulong: -.L46: - <entry-point> - ret.64 %arg1 - - -vptr_2_ulong: -.L48: - <entry-point> - ret.64 %arg1 - - -iptr_2_ulong: -.L50: - <entry-point> - ptrtu.64 %r73 <- (64) %arg1 - ret.64 %r73 - - -float_2_ulong: -.L52: - <entry-point> - fcvtu.64 %r76 <- (32) %arg1 - ret.64 %r76 - - -double_2_ulong: -.L54: - <entry-point> - fcvtu.64 %r79 <- (64) %arg1 - ret.64 %r79 - - -int_2_vptr: -.L56: - <entry-point> - sext.64 %r82 <- (32) %arg1 - ret.64 %r82 - - -uint_2_vptr: -.L58: - <entry-point> - zext.64 %r85 <- (32) %arg1 - ret.64 %r85 - - -long_2_vptr: -.L60: - <entry-point> - ret.64 %arg1 - - -ulong_2_vptr: -.L62: - <entry-point> - ret.64 %arg1 - - -iptr_2_vptr: -.L64: - <entry-point> - ret.64 %arg1 - - -int_2_iptr: -.L66: - <entry-point> - sext.64 %r94 <- (32) %arg1 - utptr.64 %r95 <- (64) %r94 - ret.64 %r95 - - -uint_2_iptr: -.L68: - <entry-point> - zext.64 %r98 <- (32) %arg1 - utptr.64 %r99 <- (64) %r98 - ret.64 %r99 - - -long_2_iptr: -.L70: - <entry-point> - utptr.64 %r102 <- (64) %arg1 - ret.64 %r102 - - -ulong_2_iptr: -.L72: - <entry-point> - utptr.64 %r105 <- (64) %arg1 - ret.64 %r105 - - -vptr_2_iptr: -.L74: - <entry-point> - ptrcast.64 %r108 <- (64) %arg1 - ret.64 %r108 - - -int_2_float: -.L76: - <entry-point> - scvtf.32 %r111 <- (32) %arg1 - ret.32 %r111 - - -uint_2_float: -.L78: - <entry-point> - ucvtf.32 %r114 <- (32) %arg1 - ret.32 %r114 - - -long_2_float: -.L80: - <entry-point> - scvtf.32 %r117 <- (64) %arg1 - ret.32 %r117 - - -ulong_2_float: -.L82: - <entry-point> - ucvtf.32 %r120 <- (64) %arg1 - ret.32 %r120 - - -double_2_float: -.L84: - <entry-point> - fcvtf.32 %r123 <- (64) %arg1 - ret.32 %r123 - - -int_2_double: -.L86: - <entry-point> - scvtf.64 %r126 <- (32) %arg1 - ret.64 %r126 - - -uint_2_double: -.L88: - <entry-point> - ucvtf.64 %r129 <- (32) %arg1 - ret.64 %r129 - - -long_2_double: -.L90: - <entry-point> - scvtf.64 %r132 <- (64) %arg1 - ret.64 %r132 - - -ulong_2_double: -.L92: - <entry-point> - ucvtf.64 %r135 <- (64) %arg1 - ret.64 %r135 - - -float_2_double: -.L94: - <entry-point> - fcvtf.64 %r138 <- (32) %arg1 - ret.64 %r138 - - -float_2_float: -.L96: - <entry-point> - ret.32 %arg1 - - -double_2_double: -.L98: - <entry-point> - ret.64 %arg1 - - - * check-output-end - */ diff --git a/validation/linear/logical.c b/validation/linear/logical.c new file mode 100644 index 00000000..0f502c6b --- /dev/null +++ b/validation/linear/logical.c @@ -0,0 +1,259 @@ +struct S { + int :1; + signed int s:2; + unsigned int u:3; + long l; + double d; +}; + +int os(int i, struct S *b) { return i || b->s; } +int ou(int i, struct S *b) { return i || b->u; } +int ol(int i, struct S *b) { return i || b->l; } +int od(int i, struct S *b) { return i || b->d; } + +int as(int i, struct S *b) { return i && b->s; } +int au(int i, struct S *b) { return i && b->u; } +int al(int i, struct S *b) { return i && b->l; } +int ad(int i, struct S *b) { return i && b->d; } + +/* + * check-name: logical + * check-command: test-linearize -m64 -fdump-ir -Wno-decl $file + * + * check-output-start +os: +.L0: + <entry-point> + store.32 %arg1 -> 0[i] + store.64 %arg2 -> 0[b] + phisrc.32 %phi1 <- $1 + load.32 %r1 <- 0[i] + setne.1 %r2 <- %r1, $0 + cbr %r2, .L3, .L2 + +.L2: + load.64 %r3 <- 0[b] + load.32 %r4 <- 0[%r3] + lsr.32 %r5 <- %r4, $1 + trunc.2 %r6 <- (32) %r5 + setne.1 %r7 <- %r6, $0 + zext.32 %r8 <- (1) %r7 + phisrc.32 %phi2 <- %r8 + br .L3 + +.L3: + phi.32 %r9 <- %phi1, %phi2 + phisrc.32 %phi3(return) <- %r9 + br .L1 + +.L1: + phi.32 %r10 <- %phi3(return) + ret.32 %r10 + + +ou: +.L4: + <entry-point> + store.32 %arg1 -> 0[i] + store.64 %arg2 -> 0[b] + phisrc.32 %phi4 <- $1 + load.32 %r11 <- 0[i] + setne.1 %r12 <- %r11, $0 + cbr %r12, .L7, .L6 + +.L6: + load.64 %r13 <- 0[b] + load.32 %r14 <- 0[%r13] + lsr.32 %r15 <- %r14, $3 + trunc.3 %r16 <- (32) %r15 + setne.1 %r17 <- %r16, $0 + zext.32 %r18 <- (1) %r17 + phisrc.32 %phi5 <- %r18 + br .L7 + +.L7: + phi.32 %r19 <- %phi4, %phi5 + phisrc.32 %phi6(return) <- %r19 + br .L5 + +.L5: + phi.32 %r20 <- %phi6(return) + ret.32 %r20 + + +ol: +.L8: + <entry-point> + store.32 %arg1 -> 0[i] + store.64 %arg2 -> 0[b] + phisrc.32 %phi7 <- $1 + load.32 %r21 <- 0[i] + setne.1 %r22 <- %r21, $0 + cbr %r22, .L11, .L10 + +.L10: + load.64 %r23 <- 0[b] + load.64 %r24 <- 8[%r23] + setne.1 %r25 <- %r24, $0 + zext.32 %r26 <- (1) %r25 + phisrc.32 %phi8 <- %r26 + br .L11 + +.L11: + phi.32 %r27 <- %phi7, %phi8 + phisrc.32 %phi9(return) <- %r27 + br .L9 + +.L9: + phi.32 %r28 <- %phi9(return) + ret.32 %r28 + + +od: +.L12: + <entry-point> + store.32 %arg1 -> 0[i] + store.64 %arg2 -> 0[b] + phisrc.32 %phi10 <- $1 + load.32 %r29 <- 0[i] + setne.1 %r30 <- %r29, $0 + cbr %r30, .L15, .L14 + +.L14: + load.64 %r31 <- 0[b] + load.64 %r32 <- 16[%r31] + setfval.64 %r33 <- 0.000000e+00 + fcmpune.1 %r34 <- %r32, %r33 + zext.32 %r35 <- (1) %r34 + phisrc.32 %phi11 <- %r35 + br .L15 + +.L15: + phi.32 %r36 <- %phi10, %phi11 + phisrc.32 %phi12(return) <- %r36 + br .L13 + +.L13: + phi.32 %r37 <- %phi12(return) + ret.32 %r37 + + +as: +.L16: + <entry-point> + store.32 %arg1 -> 0[i] + store.64 %arg2 -> 0[b] + phisrc.32 %phi13 <- $0 + load.32 %r38 <- 0[i] + setne.1 %r39 <- %r38, $0 + cbr %r39, .L18, .L19 + +.L18: + load.64 %r40 <- 0[b] + load.32 %r41 <- 0[%r40] + lsr.32 %r42 <- %r41, $1 + trunc.2 %r43 <- (32) %r42 + setne.1 %r44 <- %r43, $0 + zext.32 %r45 <- (1) %r44 + phisrc.32 %phi14 <- %r45 + br .L19 + +.L19: + phi.32 %r46 <- %phi14, %phi13 + phisrc.32 %phi15(return) <- %r46 + br .L17 + +.L17: + phi.32 %r47 <- %phi15(return) + ret.32 %r47 + + +au: +.L20: + <entry-point> + store.32 %arg1 -> 0[i] + store.64 %arg2 -> 0[b] + phisrc.32 %phi16 <- $0 + load.32 %r48 <- 0[i] + setne.1 %r49 <- %r48, $0 + cbr %r49, .L22, .L23 + +.L22: + load.64 %r50 <- 0[b] + load.32 %r51 <- 0[%r50] + lsr.32 %r52 <- %r51, $3 + trunc.3 %r53 <- (32) %r52 + setne.1 %r54 <- %r53, $0 + zext.32 %r55 <- (1) %r54 + phisrc.32 %phi17 <- %r55 + br .L23 + +.L23: + phi.32 %r56 <- %phi17, %phi16 + phisrc.32 %phi18(return) <- %r56 + br .L21 + +.L21: + phi.32 %r57 <- %phi18(return) + ret.32 %r57 + + +al: +.L24: + <entry-point> + store.32 %arg1 -> 0[i] + store.64 %arg2 -> 0[b] + phisrc.32 %phi19 <- $0 + load.32 %r58 <- 0[i] + setne.1 %r59 <- %r58, $0 + cbr %r59, .L26, .L27 + +.L26: + load.64 %r60 <- 0[b] + load.64 %r61 <- 8[%r60] + setne.1 %r62 <- %r61, $0 + zext.32 %r63 <- (1) %r62 + phisrc.32 %phi20 <- %r63 + br .L27 + +.L27: + phi.32 %r64 <- %phi20, %phi19 + phisrc.32 %phi21(return) <- %r64 + br .L25 + +.L25: + phi.32 %r65 <- %phi21(return) + ret.32 %r65 + + +ad: +.L28: + <entry-point> + store.32 %arg1 -> 0[i] + store.64 %arg2 -> 0[b] + phisrc.32 %phi22 <- $0 + load.32 %r66 <- 0[i] + setne.1 %r67 <- %r66, $0 + cbr %r67, .L30, .L31 + +.L30: + load.64 %r68 <- 0[b] + load.64 %r69 <- 16[%r68] + setfval.64 %r70 <- 0.000000e+00 + fcmpune.1 %r71 <- %r69, %r70 + zext.32 %r72 <- (1) %r71 + phisrc.32 %phi23 <- %r72 + br .L31 + +.L31: + phi.32 %r73 <- %phi23, %phi22 + phisrc.32 %phi24(return) <- %r73 + br .L29 + +.L29: + phi.32 %r74 <- %phi24(return) + ret.32 %r74 + + + * check-output-end + */ |
