1 /* Check that no unnecessary T bit stores are done before conditional
3 This case was extracted from the CSiBE set and contained the following
10 In this reduced code the movt and tst insns were only present in the
11 unwanted sequence. Thus, if we see any tst or movt insns, something is
12 not working as expected. This test requires -O2 because the T bit stores
13 in question will be eliminated in additional insn split passes after
15 /* { dg-do compile } */
16 /* { dg-options "-O2" } */
17 /* { dg-final { scan-assembler-not "movt|tst" } } */
20 typedef unsigned char Bool
;
21 typedef unsigned char UChar
;
23 typedef unsigned int UInt32
;
25 typedef unsigned short UInt16
;
28 mainGtU (UInt32 i1
, UInt32 i2
, UChar
* block
, UInt16
* quadrant
, UInt32 nblock
,
54 mainSimpleSort (UInt32
* ptr
, UChar
* block
, UInt16
* quadrant
, Int32 nblock
,
55 Int32 lo
, Int32 hi
, Int32 d
, Int32
* budget
)
57 Int32 i
, j
, h
, bigN
, hp
;
65 while (mainGtU (ptr
[j
-h
]+d
, v
+d
, block
, quadrant
, nblock
, budget
))
73 mainQSort3 (UInt32
* ptr
, UChar
* block
, UInt16
* quadrant
, Int32 nblock
,
74 Int32 loSt
, Int32 hiSt
, Int32 dSt
, Int32
* budget
)
76 Int32 unLo
, unHi
, ltLo
, gtHi
;
90 mainSimpleSort (ptr
, block
, quadrant
, nblock
, lo
, hi
, d
, budget
);
94 mainSort (UInt32
* ptr
, UChar
* block
, UInt16
* quadrant
, UInt32
* ftab
,
95 Int32 nblock
, Int32 verb
, Int32
* budget
)
98 Int32 lo
= ftab
[sb
] & (~((1 << 21)));
99 Int32 hi
= (ftab
[sb
+1] & (~((1 << 21)))) - 1;
100 mainQSort3 (ptr
, block
, quadrant
, nblock
, lo
, hi
, 2, budget
);