1/* Verify that we generate movua to load unaligned 32-bit values. */ 2/* { dg-do compile { target "sh*-*-*" } } */ 3/* { dg-options "-O" } */ 4/* { dg-final { scan-assembler-times "\tmovua\\.l\t" 6 } } */ 5 6#ifdef __SH4A__ 7/* Aligned. */ 8struct s0 { long long d : 32; } x0; 9long long f0() { 10 return x0.d; 11} 12 13/* Unaligned load. */ 14struct s1 { long long c : 8; long long d : 32; } x1; 15long long f1() { 16 return x1.d; 17} 18 19/* Unaligned load. */ 20struct s2 { long long c : 16; long long d : 32; } x2; 21long long f2() { 22 return x2.d; 23} 24 25/* Unaligned load. */ 26struct s3 { long long c : 24; long long d : 32; } x3; 27long long f3() { 28 return x3.d; 29} 30 31/* Aligned. */ 32struct s4 { long long c : 32; long long d : 32; } x4; 33long long f4() { 34 return x4.d; 35} 36 37/* Aligned. */ 38struct u0 { unsigned long long d : 32; } y0; 39unsigned long long g0() { 40 return y0.d; 41} 42 43/* Unaligned load. */ 44struct u1 { long long c : 8; unsigned long long d : 32; } y1; 45unsigned long long g1() { 46 return y1.d; 47} 48 49/* Unaligned load. */ 50struct u2 { long long c : 16; unsigned long long d : 32; } y2; 51unsigned long long g2() { 52 return y2.d; 53} 54 55/* Unaligned load. */ 56struct u3 { long long c : 24; unsigned long long d : 32; } y3; 57unsigned long long g3() { 58 return y3.d; 59} 60 61/* Aligned. */ 62struct u4 { long long c : 32; unsigned long long d : 32; } y4; 63unsigned long long g4() { 64 return y4.d; 65} 66#else 67asm ("movua.l\t"); 68asm ("movua.l\t"); 69asm ("movua.l\t"); 70asm ("movua.l\t"); 71asm ("movua.l\t"); 72asm ("movua.l\t"); 73#endif 74