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