brintos

brintos / llvm-project-archived public Read only

0
0
Text · 15.8 KiB · 58ddc55 Raw
583 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -mtriple=x86_64-unknown -mattr=+ndd -verify-machineinstrs --show-mc-encoding | FileCheck %s3 4define i8 @rol8m1(ptr %ptr) {5; CHECK-LABEL: rol8m1:6; CHECK:       # %bb.0: # %entry7; CHECK-NEXT:    rolb (%rdi), %al # encoding: [0x62,0xf4,0x7c,0x18,0xd0,0x07]8; CHECK-NEXT:    retq # encoding: [0xc3]9entry:10  %a = load i8, ptr %ptr11  %0 = shl i8 %a, 112  %1 = lshr i8 %a, 713  %rol = or i8 %0, %114  ret i8 %rol15}16 17define i8 @rol8m1_intrinsic(ptr %ptr)  {18; CHECK-LABEL: rol8m1_intrinsic:19; CHECK:       # %bb.0:20; CHECK-NEXT:    rolb (%rdi), %al # encoding: [0x62,0xf4,0x7c,0x18,0xd0,0x07]21; CHECK-NEXT:    retq # encoding: [0xc3]22  %a = load i8, ptr %ptr23  %f = call i8 @llvm.fshr.i8(i8 %a, i8 %a, i8 7)24  ret i8 %f25}26 27define i16 @rol16m1(ptr %ptr) {28; CHECK-LABEL: rol16m1:29; CHECK:       # %bb.0: # %entry30; CHECK-NEXT:    rolw (%rdi), %ax # encoding: [0x62,0xf4,0x7d,0x18,0xd1,0x07]31; CHECK-NEXT:    retq # encoding: [0xc3]32entry:33  %a = load i16, ptr %ptr34  %0 = shl i16 %a, 135  %1 = lshr i16 %a, 1536  %rol = or i16 %0, %137  ret i16 %rol38}39 40define i16 @rol16m1_intrinsic(ptr %ptr)  {41; CHECK-LABEL: rol16m1_intrinsic:42; CHECK:       # %bb.0:43; CHECK-NEXT:    rolw (%rdi), %ax # encoding: [0x62,0xf4,0x7d,0x18,0xd1,0x07]44; CHECK-NEXT:    retq # encoding: [0xc3]45  %a = load i16, ptr %ptr46  %f = call i16 @llvm.fshr.i16(i16 %a, i16 %a, i16 15)47  ret i16 %f48}49 50define i32 @rol32m1(ptr %ptr) {51; CHECK-LABEL: rol32m1:52; CHECK:       # %bb.0: # %entry53; CHECK-NEXT:    roll (%rdi), %eax # encoding: [0x62,0xf4,0x7c,0x18,0xd1,0x07]54; CHECK-NEXT:    retq # encoding: [0xc3]55entry:56  %a = load i32, ptr %ptr57  %0 = shl i32 %a, 158  %1 = lshr i32 %a, 3159  %rol = or i32 %0, %160  ret i32 %rol61}62 63define i32 @rol32m1_intrinsic(ptr %ptr)  {64; CHECK-LABEL: rol32m1_intrinsic:65; CHECK:       # %bb.0:66; CHECK-NEXT:    roll (%rdi), %eax # encoding: [0x62,0xf4,0x7c,0x18,0xd1,0x07]67; CHECK-NEXT:    retq # encoding: [0xc3]68  %a = load i32, ptr %ptr69  %f = call i32 @llvm.fshr.i32(i32 %a, i32 %a, i32 31)70  ret i32 %f71}72 73define i64 @rol64m1(ptr %ptr) {74; CHECK-LABEL: rol64m1:75; CHECK:       # %bb.0: # %entry76; CHECK-NEXT:    rolq (%rdi), %rax # encoding: [0x62,0xf4,0xfc,0x18,0xd1,0x07]77; CHECK-NEXT:    retq # encoding: [0xc3]78entry:79  %a = load i64, ptr %ptr80  %0 = shl i64 %a, 181  %1 = lshr i64 %a, 6382  %rol = or i64 %0, %183  ret i64 %rol84}85 86define i64 @rol64m1_intrinsic(ptr %ptr)  {87; CHECK-LABEL: rol64m1_intrinsic:88; CHECK:       # %bb.0:89; CHECK-NEXT:    rolq (%rdi), %rax # encoding: [0x62,0xf4,0xfc,0x18,0xd1,0x07]90; CHECK-NEXT:    retq # encoding: [0xc3]91  %a = load i64, ptr %ptr92  %f = call i64 @llvm.fshr.i64(i64 %a, i64 %a, i64 63)93  ret i64 %f94}95 96define i8 @rol8mcl(ptr %ptr, i8 %cl) {97; CHECK-LABEL: rol8mcl:98; CHECK:       # %bb.0: # %entry99; CHECK-NEXT:    movl %esi, %ecx # encoding: [0x89,0xf1]100; CHECK-NEXT:    # kill: def $cl killed $cl killed $ecx101; CHECK-NEXT:    rolb %cl, (%rdi), %al # encoding: [0x62,0xf4,0x7c,0x18,0xd2,0x07]102; CHECK-NEXT:    retq # encoding: [0xc3]103entry:104  %a = load i8, ptr %ptr105  %0 = shl i8 %a, %cl106  %1 = sub i8 8, %cl107  %2 = lshr i8 %a, %1108  %rol = or i8 %0, %2109  ret i8 %rol110}111 112define i16 @rol16mcl(ptr %ptr, i16 %cl) {113; CHECK-LABEL: rol16mcl:114; CHECK:       # %bb.0: # %entry115; CHECK-NEXT:    movl %esi, %ecx # encoding: [0x89,0xf1]116; CHECK-NEXT:    # kill: def $cl killed $cl killed $ecx117; CHECK-NEXT:    rolw %cl, (%rdi), %ax # encoding: [0x62,0xf4,0x7d,0x18,0xd3,0x07]118; CHECK-NEXT:    retq # encoding: [0xc3]119entry:120  %a = load i16, ptr %ptr121  %0 = shl i16 %a, %cl122  %1 = sub i16 16, %cl123  %2 = lshr i16 %a, %1124  %rol = or i16 %0, %2125  ret i16 %rol126}127 128define i32 @rol32mcl(ptr %ptr, i32 %cl) {129; CHECK-LABEL: rol32mcl:130; CHECK:       # %bb.0: # %entry131; CHECK-NEXT:    movl %esi, %ecx # encoding: [0x89,0xf1]132; CHECK-NEXT:    # kill: def $cl killed $cl killed $ecx133; CHECK-NEXT:    roll %cl, (%rdi), %eax # encoding: [0x62,0xf4,0x7c,0x18,0xd3,0x07]134; CHECK-NEXT:    retq # encoding: [0xc3]135entry:136  %a = load i32, ptr %ptr137  %0 = shl i32 %a, %cl138  %1 = sub i32 32, %cl139  %2 = lshr i32 %a, %1140  %rol = or i32 %0, %2141  ret i32 %rol142}143 144define i64 @rol64mcl(ptr %ptr, i64 %cl) {145; CHECK-LABEL: rol64mcl:146; CHECK:       # %bb.0: # %entry147; CHECK-NEXT:    movq %rsi, %rcx # encoding: [0x48,0x89,0xf1]148; CHECK-NEXT:    # kill: def $cl killed $cl killed $rcx149; CHECK-NEXT:    rolq %cl, (%rdi), %rax # encoding: [0x62,0xf4,0xfc,0x18,0xd3,0x07]150; CHECK-NEXT:    retq # encoding: [0xc3]151entry:152  %a = load i64, ptr %ptr153  %0 = shl i64 %a, %cl154  %1 = sub i64 64, %cl155  %2 = lshr i64 %a, %1156  %rol = or i64 %0, %2157  ret i64 %rol158}159 160define i8 @rol8mi(ptr %ptr) {161; CHECK-LABEL: rol8mi:162; CHECK:       # %bb.0: # %entry163; CHECK-NEXT:    rolb $3, (%rdi), %al # encoding: [0x62,0xf4,0x7c,0x18,0xc0,0x07,0x03]164; CHECK-NEXT:    retq # encoding: [0xc3]165entry:166  %a = load i8, ptr %ptr167  %0 = shl i8 %a, 3168  %1 = lshr i8 %a, 5169  %rol = or i8 %0, %1170  ret i8 %rol171}172 173define i16 @rol16mi(ptr %ptr) {174; CHECK-LABEL: rol16mi:175; CHECK:       # %bb.0: # %entry176; CHECK-NEXT:    rolw $3, (%rdi), %ax # encoding: [0x62,0xf4,0x7d,0x18,0xc1,0x07,0x03]177; CHECK-NEXT:    retq # encoding: [0xc3]178entry:179  %a = load i16, ptr %ptr180  %0 = shl i16 %a, 3181  %1 = lshr i16 %a, 13182  %rol = or i16 %0, %1183  ret i16 %rol184}185 186define i32 @rol32mi(ptr %ptr) {187; CHECK-LABEL: rol32mi:188; CHECK:       # %bb.0: # %entry189; CHECK-NEXT:    roll $3, (%rdi), %eax # encoding: [0x62,0xf4,0x7c,0x18,0xc1,0x07,0x03]190; CHECK-NEXT:    retq # encoding: [0xc3]191entry:192  %a = load i32, ptr %ptr193  %0 = shl i32 %a, 3194  %1 = lshr i32 %a, 29195  %rol = or i32 %0, %1196  ret i32 %rol197}198 199define i64 @rol64mi(ptr %ptr) {200; CHECK-LABEL: rol64mi:201; CHECK:       # %bb.0: # %entry202; CHECK-NEXT:    rolq $3, (%rdi), %rax # encoding: [0x62,0xf4,0xfc,0x18,0xc1,0x07,0x03]203; CHECK-NEXT:    retq # encoding: [0xc3]204entry:205  %a = load i64, ptr %ptr206  %0 = shl i64 %a, 3207  %1 = lshr i64 %a, 61208  %rol = or i64 %0, %1209  ret i64 %rol210}211 212define i8 @rol8r1(i8 noundef %a) {213; CHECK-LABEL: rol8r1:214; CHECK:       # %bb.0: # %entry215; CHECK-NEXT:    rolb %dil, %al # encoding: [0x62,0xf4,0x7c,0x18,0xd0,0xc7]216; CHECK-NEXT:    retq # encoding: [0xc3]217entry:218  %0 = shl i8 %a, 1219  %1 = lshr i8 %a, 7220  %rol = or i8 %0, %1221  ret i8 %rol222}223 224define i8 @rol8r1_intrinsic(i8 noundef %a)  {225; CHECK-LABEL: rol8r1_intrinsic:226; CHECK:       # %bb.0:227; CHECK-NEXT:    rolb %dil, %al # encoding: [0x62,0xf4,0x7c,0x18,0xd0,0xc7]228; CHECK-NEXT:    retq # encoding: [0xc3]229  %f = call i8 @llvm.fshr.i8(i8 %a, i8 %a, i8 7)230  ret i8 %f231}232 233define i16 @rol16r1(i16 noundef %a) {234; CHECK-LABEL: rol16r1:235; CHECK:       # %bb.0: # %entry236; CHECK-NEXT:    rolw %di, %ax # encoding: [0x62,0xf4,0x7d,0x18,0xd1,0xc7]237; CHECK-NEXT:    retq # encoding: [0xc3]238entry:239  %0 = shl i16 %a, 1240  %1 = lshr i16 %a, 15241  %rol = or i16 %0, %1242  ret i16 %rol243}244 245define i16 @rol16r1_intrinsic(i16 noundef %a)  {246; CHECK-LABEL: rol16r1_intrinsic:247; CHECK:       # %bb.0:248; CHECK-NEXT:    rolw %di, %ax # encoding: [0x62,0xf4,0x7d,0x18,0xd1,0xc7]249; CHECK-NEXT:    retq # encoding: [0xc3]250  %f = call i16 @llvm.fshr.i16(i16 %a, i16 %a, i16 15)251  ret i16 %f252}253 254define i32 @rol32r1(i32 noundef %a) {255; CHECK-LABEL: rol32r1:256; CHECK:       # %bb.0: # %entry257; CHECK-NEXT:    roll %edi, %eax # encoding: [0x62,0xf4,0x7c,0x18,0xd1,0xc7]258; CHECK-NEXT:    retq # encoding: [0xc3]259entry:260  %0 = shl i32 %a, 1261  %1 = lshr i32 %a, 31262  %rol = or i32 %0, %1263  ret i32 %rol264}265 266define i32 @rol32r1_intrinsic(i32 noundef %a)  {267; CHECK-LABEL: rol32r1_intrinsic:268; CHECK:       # %bb.0:269; CHECK-NEXT:    roll %edi, %eax # encoding: [0x62,0xf4,0x7c,0x18,0xd1,0xc7]270; CHECK-NEXT:    retq # encoding: [0xc3]271  %f = call i32 @llvm.fshr.i32(i32 %a, i32 %a, i32 31)272  ret i32 %f273}274 275define i64 @rol64r1(i64 noundef %a) {276; CHECK-LABEL: rol64r1:277; CHECK:       # %bb.0: # %entry278; CHECK-NEXT:    rolq %rdi, %rax # encoding: [0x62,0xf4,0xfc,0x18,0xd1,0xc7]279; CHECK-NEXT:    retq # encoding: [0xc3]280entry:281  %0 = shl i64 %a, 1282  %1 = lshr i64 %a, 63283  %rol = or i64 %0, %1284  ret i64 %rol285}286 287define i64 @rol64r1_intrinsic(i64 noundef %a)  {288; CHECK-LABEL: rol64r1_intrinsic:289; CHECK:       # %bb.0:290; CHECK-NEXT:    rolq %rdi, %rax # encoding: [0x62,0xf4,0xfc,0x18,0xd1,0xc7]291; CHECK-NEXT:    retq # encoding: [0xc3]292  %f = call i64 @llvm.fshr.i64(i64 %a, i64 %a, i64 63)293  ret i64 %f294}295 296define i8 @rol8rcl(i8 noundef %a, i8 %cl) {297; CHECK-LABEL: rol8rcl:298; CHECK:       # %bb.0: # %entry299; CHECK-NEXT:    movl %esi, %ecx # encoding: [0x89,0xf1]300; CHECK-NEXT:    # kill: def $cl killed $cl killed $ecx301; CHECK-NEXT:    rolb %cl, %dil, %al # encoding: [0x62,0xf4,0x7c,0x18,0xd2,0xc7]302; CHECK-NEXT:    retq # encoding: [0xc3]303entry:304  %0 = shl i8 %a, %cl305  %1 = sub i8 8, %cl306  %2 = lshr i8 %a, %1307  %rol = or i8 %0, %2308  ret i8 %rol309}310 311define i16 @rol16rcl(i16 noundef %a, i16 %cl) {312; CHECK-LABEL: rol16rcl:313; CHECK:       # %bb.0: # %entry314; CHECK-NEXT:    movl %esi, %ecx # encoding: [0x89,0xf1]315; CHECK-NEXT:    # kill: def $cl killed $cl killed $ecx316; CHECK-NEXT:    rolw %cl, %di, %ax # encoding: [0x62,0xf4,0x7d,0x18,0xd3,0xc7]317; CHECK-NEXT:    retq # encoding: [0xc3]318entry:319  %0 = shl i16 %a, %cl320  %1 = sub i16 16, %cl321  %2 = lshr i16 %a, %1322  %rol = or i16 %0, %2323  ret i16 %rol324}325 326define i32 @rol32rcl(i32 noundef %a, i32 %cl) {327; CHECK-LABEL: rol32rcl:328; CHECK:       # %bb.0: # %entry329; CHECK-NEXT:    movl %esi, %ecx # encoding: [0x89,0xf1]330; CHECK-NEXT:    # kill: def $cl killed $cl killed $ecx331; CHECK-NEXT:    roll %cl, %edi, %eax # encoding: [0x62,0xf4,0x7c,0x18,0xd3,0xc7]332; CHECK-NEXT:    retq # encoding: [0xc3]333entry:334  %0 = shl i32 %a, %cl335  %1 = sub i32 32, %cl336  %2 = lshr i32 %a, %1337  %rol = or i32 %0, %2338  ret i32 %rol339}340 341define i64 @rol64rcl(i64 noundef %a, i64 %cl) {342; CHECK-LABEL: rol64rcl:343; CHECK:       # %bb.0: # %entry344; CHECK-NEXT:    movq %rsi, %rcx # encoding: [0x48,0x89,0xf1]345; CHECK-NEXT:    # kill: def $cl killed $cl killed $rcx346; CHECK-NEXT:    rolq %cl, %rdi, %rax # encoding: [0x62,0xf4,0xfc,0x18,0xd3,0xc7]347; CHECK-NEXT:    retq # encoding: [0xc3]348entry:349  %0 = shl i64 %a, %cl350  %1 = sub i64 64, %cl351  %2 = lshr i64 %a, %1352  %rol = or i64 %0, %2353  ret i64 %rol354}355 356define i8 @rol8ri(i8 noundef %a) {357; CHECK-LABEL: rol8ri:358; CHECK:       # %bb.0: # %entry359; CHECK-NEXT:    rolb $3, %dil, %al # encoding: [0x62,0xf4,0x7c,0x18,0xc0,0xc7,0x03]360; CHECK-NEXT:    retq # encoding: [0xc3]361entry:362  %0 = shl i8 %a, 3363  %1 = lshr i8 %a, 5364  %rol = or i8 %0, %1365  ret i8 %rol366}367 368define i16 @rol16ri(i16 noundef %a) {369; CHECK-LABEL: rol16ri:370; CHECK:       # %bb.0: # %entry371; CHECK-NEXT:    rolw $3, %di, %ax # encoding: [0x62,0xf4,0x7d,0x18,0xc1,0xc7,0x03]372; CHECK-NEXT:    retq # encoding: [0xc3]373entry:374  %0 = shl i16 %a, 3375  %1 = lshr i16 %a, 13376  %rol = or i16 %0, %1377  ret i16 %rol378}379 380define i32 @rol32ri(i32 noundef %a) {381; CHECK-LABEL: rol32ri:382; CHECK:       # %bb.0: # %entry383; CHECK-NEXT:    roll $3, %edi, %eax # encoding: [0x62,0xf4,0x7c,0x18,0xc1,0xc7,0x03]384; CHECK-NEXT:    retq # encoding: [0xc3]385entry:386  %0 = shl i32 %a, 3387  %1 = lshr i32 %a, 29388  %rol = or i32 %0, %1389  ret i32 %rol390}391 392define i64 @rol64ri(i64 noundef %a) {393; CHECK-LABEL: rol64ri:394; CHECK:       # %bb.0: # %entry395; CHECK-NEXT:    rolq $3, %rdi, %rax # encoding: [0x62,0xf4,0xfc,0x18,0xc1,0xc7,0x03]396; CHECK-NEXT:    retq # encoding: [0xc3]397entry:398  %0 = shl i64 %a, 3399  %1 = lshr i64 %a, 61400  %rol = or i64 %0, %1401  ret i64 %rol402}403 404define void @rol8m1_legacy(ptr %ptr) {405; CHECK-LABEL: rol8m1_legacy:406; CHECK:       # %bb.0: # %entry407; CHECK-NEXT:    rolb (%rdi) # encoding: [0xd0,0x07]408; CHECK-NEXT:    retq # encoding: [0xc3]409entry:410  %a = load i8, ptr %ptr411  %0 = shl i8 %a, 1412  %1 = lshr i8 %a, 7413  %rol = or i8 %0, %1414  store i8 %rol, ptr %ptr415  ret void416}417 418define void @rol16m1_legacy(ptr %ptr) {419; CHECK-LABEL: rol16m1_legacy:420; CHECK:       # %bb.0: # %entry421; CHECK-NEXT:    rolw (%rdi) # encoding: [0x66,0xd1,0x07]422; CHECK-NEXT:    retq # encoding: [0xc3]423entry:424  %a = load i16, ptr %ptr425  %0 = shl i16 %a, 1426  %1 = lshr i16 %a, 15427  %rol = or i16 %0, %1428  store i16 %rol, ptr %ptr429  ret void430}431 432define void @rol32m1_legacy(ptr %ptr) {433; CHECK-LABEL: rol32m1_legacy:434; CHECK:       # %bb.0: # %entry435; CHECK-NEXT:    roll (%rdi) # encoding: [0xd1,0x07]436; CHECK-NEXT:    retq # encoding: [0xc3]437entry:438  %a = load i32, ptr %ptr439  %0 = shl i32 %a, 1440  %1 = lshr i32 %a, 31441  %rol = or i32 %0, %1442  store i32 %rol, ptr %ptr443  ret void444}445 446define void @rol64m1_legacy(ptr %ptr) {447; CHECK-LABEL: rol64m1_legacy:448; CHECK:       # %bb.0: # %entry449; CHECK-NEXT:    rolq (%rdi) # encoding: [0x48,0xd1,0x07]450; CHECK-NEXT:    retq # encoding: [0xc3]451entry:452  %a = load i64, ptr %ptr453  %0 = shl i64 %a, 1454  %1 = lshr i64 %a, 63455  %rol = or i64 %0, %1456  store i64 %rol, ptr %ptr457  ret void458}459 460define void @rol8mcl_legacy(ptr %ptr, i8 %cl) {461; CHECK-LABEL: rol8mcl_legacy:462; CHECK:       # %bb.0: # %entry463; CHECK-NEXT:    movl %esi, %ecx # encoding: [0x89,0xf1]464; CHECK-NEXT:    # kill: def $cl killed $cl killed $ecx465; CHECK-NEXT:    rolb %cl, (%rdi) # encoding: [0xd2,0x07]466; CHECK-NEXT:    retq # encoding: [0xc3]467entry:468  %a = load i8, ptr %ptr469  %0 = shl i8 %a, %cl470  %1 = sub i8 8, %cl471  %2 = lshr i8 %a, %1472  %rol = or i8 %0, %2473  store i8 %rol, ptr %ptr474  ret void475}476 477define void @rol16mcl_legacy(ptr %ptr, i16 %cl) {478; CHECK-LABEL: rol16mcl_legacy:479; CHECK:       # %bb.0: # %entry480; CHECK-NEXT:    movl %esi, %ecx # encoding: [0x89,0xf1]481; CHECK-NEXT:    # kill: def $cl killed $cl killed $ecx482; CHECK-NEXT:    rolw %cl, (%rdi) # encoding: [0x66,0xd3,0x07]483; CHECK-NEXT:    retq # encoding: [0xc3]484entry:485  %a = load i16, ptr %ptr486  %0 = shl i16 %a, %cl487  %1 = sub i16 16, %cl488  %2 = lshr i16 %a, %1489  %rol = or i16 %0, %2490  store i16 %rol, ptr %ptr491  ret void492}493 494define void @rol32mcl_legacy(ptr %ptr, i32 %cl) {495; CHECK-LABEL: rol32mcl_legacy:496; CHECK:       # %bb.0: # %entry497; CHECK-NEXT:    movl %esi, %ecx # encoding: [0x89,0xf1]498; CHECK-NEXT:    # kill: def $cl killed $cl killed $ecx499; CHECK-NEXT:    roll %cl, (%rdi) # encoding: [0xd3,0x07]500; CHECK-NEXT:    retq # encoding: [0xc3]501entry:502  %a = load i32, ptr %ptr503  %0 = shl i32 %a, %cl504  %1 = sub i32 32, %cl505  %2 = lshr i32 %a, %1506  %rol = or i32 %0, %2507  store i32 %rol, ptr %ptr508  ret void509}510 511define void @rol64mcl_legacy(ptr %ptr, i64 %cl) {512; CHECK-LABEL: rol64mcl_legacy:513; CHECK:       # %bb.0: # %entry514; CHECK-NEXT:    movq %rsi, %rcx # encoding: [0x48,0x89,0xf1]515; CHECK-NEXT:    # kill: def $cl killed $cl killed $rcx516; CHECK-NEXT:    rolq %cl, (%rdi) # encoding: [0x48,0xd3,0x07]517; CHECK-NEXT:    retq # encoding: [0xc3]518entry:519  %a = load i64, ptr %ptr520  %0 = shl i64 %a, %cl521  %1 = sub i64 64, %cl522  %2 = lshr i64 %a, %1523  %rol = or i64 %0, %2524  store i64 %rol, ptr %ptr525  ret void526}527 528define void @rol8mi_legacy(ptr %ptr) {529; CHECK-LABEL: rol8mi_legacy:530; CHECK:       # %bb.0: # %entry531; CHECK-NEXT:    rolb $3, (%rdi) # encoding: [0xc0,0x07,0x03]532; CHECK-NEXT:    retq # encoding: [0xc3]533entry:534  %a = load i8, ptr %ptr535  %0 = shl i8 %a, 3536  %1 = lshr i8 %a, 5537  %rol = or i8 %0, %1538  store i8 %rol, ptr %ptr539  ret void540}541 542define void @rol16mi_legacy(ptr %ptr) {543; CHECK-LABEL: rol16mi_legacy:544; CHECK:       # %bb.0: # %entry545; CHECK-NEXT:    rolw $3, (%rdi) # encoding: [0x66,0xc1,0x07,0x03]546; CHECK-NEXT:    retq # encoding: [0xc3]547entry:548  %a = load i16, ptr %ptr549  %0 = shl i16 %a, 3550  %1 = lshr i16 %a, 13551  %rol = or i16 %0, %1552  store i16 %rol, ptr %ptr553  ret void554}555 556define void @rol32mi_legacy(ptr %ptr) {557; CHECK-LABEL: rol32mi_legacy:558; CHECK:       # %bb.0: # %entry559; CHECK-NEXT:    roll $3, (%rdi) # encoding: [0xc1,0x07,0x03]560; CHECK-NEXT:    retq # encoding: [0xc3]561entry:562  %a = load i32, ptr %ptr563  %0 = shl i32 %a, 3564  %1 = lshr i32 %a, 29565  %rol = or i32 %0, %1566  store i32 %rol, ptr %ptr567  ret void568}569 570define void @rol64mi_legacy(ptr %ptr) {571; CHECK-LABEL: rol64mi_legacy:572; CHECK:       # %bb.0: # %entry573; CHECK-NEXT:    rolq $3, (%rdi) # encoding: [0x48,0xc1,0x07,0x03]574; CHECK-NEXT:    retq # encoding: [0xc3]575entry:576  %a = load i64, ptr %ptr577  %0 = shl i64 %a, 3578  %1 = lshr i64 %a, 61579  %rol = or i64 %0, %1580  store i64 %rol, ptr %ptr581  ret void582}583