@@ -1331,3 +1331,34 @@ define i64 @test_load_bswap_to_rotate(ptr %p) {
13311331 %or = or disjoint i64 %shl , %conv2
13321332 ret i64 %or
13331333}
1334+
1335+ define i64 @test_load_rotate_zext (ptr %p ) {
1336+ ; CHECK64-LABEL: test_load_rotate_zext:
1337+ ; CHECK64: # %bb.0:
1338+ ; CHECK64-NEXT: movl (%rdi), %eax
1339+ ; CHECK64-NEXT: rorl $8, %eax
1340+ ; CHECK64-NEXT: retq
1341+ %p1 = getelementptr inbounds i8 , ptr %p , i64 1
1342+ %l1 = load i8 , ptr %p1 , align 1
1343+ %e1 = zext i8 %l1 to i64
1344+
1345+ %p2 = getelementptr inbounds i8 , ptr %p , i64 2
1346+ %l2 = load i8 , ptr %p2 , align 1
1347+ %e2 = zext i8 %l2 to i64
1348+ %s2 = shl i64 %e2 , 8
1349+
1350+ %p3 = getelementptr inbounds i8 , ptr %p , i64 3
1351+ %l3 = load i8 , ptr %p3 , align 1
1352+ %e3 = zext i8 %l3 to i64
1353+ %s3 = shl i64 %e3 , 16
1354+
1355+ %p0 = getelementptr inbounds i8 , ptr %p , i64 0
1356+ %l0 = load i8 , ptr %p0 , align 1
1357+ %e0 = zext i8 %l0 to i64
1358+ %s0 = shl i64 %e0 , 24
1359+
1360+ %or1 = or i64 %e1 , %s2
1361+ %or2 = or i64 %or1 , %s3
1362+ %or3 = or i64 %or2 , %s0
1363+ ret i64 %or3
1364+ }
0 commit comments