aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/validation/linear
diff options
authorLuc Van Oostenryck <luc.vanoostenryck@gmail.com>2018-06-18 11:49:03 +0200
committerLuc Van Oostenryck <luc.vanoostenryck@gmail.com>2018-06-26 14:01:50 +0200
commit1ed0dfb473629202784f9701991671a6f9c6ff6e (patch)
treea72f796ba6d173eed9ac585363fb41ff097f1b06 /validation/linear
parent4d851248702bebe6c8ecdd1cef54e7782c72b8a2 (diff)
downloadsparse-dev-1ed0dfb473629202784f9701991671a6f9c6ff6e.tar.gz
cast: simplify TRUNC + ZEXT to AND
A truncation followed by a zero-extension to the original size, which is produced when loading a storing bitfields, is equivalent to a simple AND masking. Often, this AND can then trigger even more optimizations. So, replace TRUNC + ZEXT instructions by the equivalent AND. Signed-off-by: Luc Van Oostenryck <luc.vanoostenryck@gmail.com>
Diffstat (limited to 'validation/linear')
-rw-r--r--validation/linear/bitfield-init-zero.c106
1 files changed, 0 insertions, 106 deletions
diff --git a/validation/linear/bitfield-init-zero.c b/validation/linear/bitfield-init-zero.c
deleted file mode 100644
index 16422c19..00000000
--- a/validation/linear/bitfield-init-zero.c
+++ /dev/null
@@ -1,106 +0,0 @@
-struct bfu {
- unsigned int a:11;
- unsigned int f:9;
- unsigned int :2;
- unsigned int z:3;
-};
-
-struct bfu bfuu_init(unsigned int a)
-{
- struct bfu bf = { .f = a, };
- return bf;
-}
-
-struct bfu bfus_init(int a)
-{
- struct bfu bf = { .f = a, };
- return bf;
-}
-
-unsigned int bfu_get0(void)
-{
- struct bfu bf = { };
- return bf.f;
-}
-
-
-struct bfs {
- signed int a:11;
- signed int f:9;
- signed int :2;
- signed int z:3;
-};
-
-struct bfs bfsu_init(unsigned int a)
-{
- struct bfs bf = { .f = a, };
- return bf;
-}
-
-struct bfs bfss_init(int a)
-{
- struct bfs bf = { .f = a, };
- return bf;
-}
-
-int bfs_get0(void)
-{
- struct bfs bf = { };
- return bf.f;
-}
-
-/*
- * check-name: bitfield implicit init zero
- * check-command: test-linearize -Wno-decl $file
- *
- * check-output-start
-bfuu_init:
-.L0:
- <entry-point>
- trunc.9 %r2 <- (32) %arg1
- zext.32 %r4 <- (9) %r2
- shl.32 %r5 <- %r4, $11
- ret.32 %r5
-
-
-bfus_init:
-.L2:
- <entry-point>
- trunc.9 %r11 <- (32) %arg1
- zext.32 %r13 <- (9) %r11
- shl.32 %r14 <- %r13, $11
- ret.32 %r14
-
-
-bfu_get0:
-.L4:
- <entry-point>
- ret.32 $0
-
-
-bfsu_init:
-.L6:
- <entry-point>
- trunc.9 %r25 <- (32) %arg1
- zext.32 %r27 <- (9) %r25
- shl.32 %r28 <- %r27, $11
- ret.32 %r28
-
-
-bfss_init:
-.L8:
- <entry-point>
- trunc.9 %r34 <- (32) %arg1
- zext.32 %r36 <- (9) %r34
- shl.32 %r37 <- %r36, $11
- ret.32 %r37
-
-
-bfs_get0:
-.L10:
- <entry-point>
- ret.32 $0
-
-
- * check-output-end
- */