1f08c3bdfSopenharmony_ciint asr(int s) 2f08c3bdfSopenharmony_ci{ 3f08c3bdfSopenharmony_ci s >>= 11U; 4f08c3bdfSopenharmony_ci return s; 5f08c3bdfSopenharmony_ci} 6f08c3bdfSopenharmony_ci 7f08c3bdfSopenharmony_ciunsigned int lsr(unsigned int u) 8f08c3bdfSopenharmony_ci{ 9f08c3bdfSopenharmony_ci u >>= 11; 10f08c3bdfSopenharmony_ci return u; 11f08c3bdfSopenharmony_ci} 12f08c3bdfSopenharmony_ci 13f08c3bdfSopenharmony_ciint divr(int s, unsigned long long u) 14f08c3bdfSopenharmony_ci{ 15f08c3bdfSopenharmony_ci extern int use(int, unsigned); 16f08c3bdfSopenharmony_ci int t = s; 17f08c3bdfSopenharmony_ci s = s / u; 18f08c3bdfSopenharmony_ci u = u / t; 19f08c3bdfSopenharmony_ci return use(s, u); 20f08c3bdfSopenharmony_ci} 21f08c3bdfSopenharmony_ci 22f08c3bdfSopenharmony_ciint sdivul(int s, unsigned long long u) 23f08c3bdfSopenharmony_ci{ 24f08c3bdfSopenharmony_ci s /= u; // divu 25f08c3bdfSopenharmony_ci return s; 26f08c3bdfSopenharmony_ci} 27f08c3bdfSopenharmony_ci 28f08c3bdfSopenharmony_ciunsigned int udivsl(unsigned int u, long long s) 29f08c3bdfSopenharmony_ci{ 30f08c3bdfSopenharmony_ci u /= s; // divs 31f08c3bdfSopenharmony_ci return u; 32f08c3bdfSopenharmony_ci} 33f08c3bdfSopenharmony_ci 34f08c3bdfSopenharmony_ciint uldivs(int s, unsigned long long u) 35f08c3bdfSopenharmony_ci{ 36f08c3bdfSopenharmony_ci u /= s; // divu 37f08c3bdfSopenharmony_ci return u; 38f08c3bdfSopenharmony_ci} 39f08c3bdfSopenharmony_ci 40f08c3bdfSopenharmony_ciunsigned int sldivu(unsigned int u, long long s) 41f08c3bdfSopenharmony_ci{ 42f08c3bdfSopenharmony_ci s /= u; // divs 43f08c3bdfSopenharmony_ci return s; 44f08c3bdfSopenharmony_ci} 45f08c3bdfSopenharmony_ci 46f08c3bdfSopenharmony_ci/* 47f08c3bdfSopenharmony_ci * check-name: bug-assign-op0 48f08c3bdfSopenharmony_ci * check-command: test-linearize -Wno-decl $file 49f08c3bdfSopenharmony_ci * 50f08c3bdfSopenharmony_ci * check-output-start 51f08c3bdfSopenharmony_ciasr: 52f08c3bdfSopenharmony_ci.L0: 53f08c3bdfSopenharmony_ci <entry-point> 54f08c3bdfSopenharmony_ci asr.32 %r2 <- %arg1, $11 55f08c3bdfSopenharmony_ci ret.32 %r2 56f08c3bdfSopenharmony_ci 57f08c3bdfSopenharmony_ci 58f08c3bdfSopenharmony_cilsr: 59f08c3bdfSopenharmony_ci.L2: 60f08c3bdfSopenharmony_ci <entry-point> 61f08c3bdfSopenharmony_ci lsr.32 %r6 <- %arg1, $11 62f08c3bdfSopenharmony_ci ret.32 %r6 63f08c3bdfSopenharmony_ci 64f08c3bdfSopenharmony_ci 65f08c3bdfSopenharmony_cidivr: 66f08c3bdfSopenharmony_ci.L4: 67f08c3bdfSopenharmony_ci <entry-point> 68f08c3bdfSopenharmony_ci sext.64 %r11 <- (32) %arg1 69f08c3bdfSopenharmony_ci divu.64 %r13 <- %r11, %arg2 70f08c3bdfSopenharmony_ci trunc.32 %r14 <- (64) %r13 71f08c3bdfSopenharmony_ci divu.64 %r18 <- %arg2, %r11 72f08c3bdfSopenharmony_ci trunc.32 %r21 <- (64) %r18 73f08c3bdfSopenharmony_ci call.32 %r22 <- use, %r14, %r21 74f08c3bdfSopenharmony_ci ret.32 %r22 75f08c3bdfSopenharmony_ci 76f08c3bdfSopenharmony_ci 77f08c3bdfSopenharmony_cisdivul: 78f08c3bdfSopenharmony_ci.L6: 79f08c3bdfSopenharmony_ci <entry-point> 80f08c3bdfSopenharmony_ci sext.64 %r26 <- (32) %arg1 81f08c3bdfSopenharmony_ci divu.64 %r27 <- %r26, %arg2 82f08c3bdfSopenharmony_ci trunc.32 %r28 <- (64) %r27 83f08c3bdfSopenharmony_ci ret.32 %r28 84f08c3bdfSopenharmony_ci 85f08c3bdfSopenharmony_ci 86f08c3bdfSopenharmony_ciudivsl: 87f08c3bdfSopenharmony_ci.L8: 88f08c3bdfSopenharmony_ci <entry-point> 89f08c3bdfSopenharmony_ci zext.64 %r33 <- (32) %arg1 90f08c3bdfSopenharmony_ci divs.64 %r34 <- %r33, %arg2 91f08c3bdfSopenharmony_ci trunc.32 %r35 <- (64) %r34 92f08c3bdfSopenharmony_ci ret.32 %r35 93f08c3bdfSopenharmony_ci 94f08c3bdfSopenharmony_ci 95f08c3bdfSopenharmony_ciuldivs: 96f08c3bdfSopenharmony_ci.L10: 97f08c3bdfSopenharmony_ci <entry-point> 98f08c3bdfSopenharmony_ci sext.64 %r39 <- (32) %arg1 99f08c3bdfSopenharmony_ci divu.64 %r41 <- %arg2, %r39 100f08c3bdfSopenharmony_ci trunc.32 %r43 <- (64) %r41 101f08c3bdfSopenharmony_ci ret.32 %r43 102f08c3bdfSopenharmony_ci 103f08c3bdfSopenharmony_ci 104f08c3bdfSopenharmony_cisldivu: 105f08c3bdfSopenharmony_ci.L12: 106f08c3bdfSopenharmony_ci <entry-point> 107f08c3bdfSopenharmony_ci zext.64 %r46 <- (32) %arg1 108f08c3bdfSopenharmony_ci divs.64 %r48 <- %arg2, %r46 109f08c3bdfSopenharmony_ci trunc.32 %r50 <- (64) %r48 110f08c3bdfSopenharmony_ci ret.32 %r50 111f08c3bdfSopenharmony_ci 112f08c3bdfSopenharmony_ci 113f08c3bdfSopenharmony_ci * check-output-end 114f08c3bdfSopenharmony_ci */ 115