brintos

brintos / llvm-project-archived public Read only

0
0
Text · 17.4 KiB · e2b65e7 Raw
639 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 @ror8m1(ptr %ptr) {5; CHECK-LABEL: ror8m1:6; CHECK:       # %bb.0: # %entry7; CHECK-NEXT:    rorb (%rdi), %al # encoding: [0x62,0xf4,0x7c,0x18,0xd0,0x0f]8; CHECK-NEXT:    retq # encoding: [0xc3]9entry:10  %a = load i8, ptr %ptr11  %0 = lshr i8 %a, 112  %1 = shl i8 %a, 713  %ror = or i8 %0, %114  ret i8 %ror15}16 17define i16 @ror16m1(ptr %ptr) {18; CHECK-LABEL: ror16m1:19; CHECK:       # %bb.0: # %entry20; CHECK-NEXT:    rorw (%rdi), %ax # encoding: [0x62,0xf4,0x7d,0x18,0xd1,0x0f]21; CHECK-NEXT:    retq # encoding: [0xc3]22entry:23  %a = load i16, ptr %ptr24  %0 = lshr i16 %a, 125  %1 = shl i16 %a, 1526  %ror = or i16 %0, %127  ret i16 %ror28}29 30define i32 @ror32m1(ptr %ptr) {31; CHECK-LABEL: ror32m1:32; CHECK:       # %bb.0: # %entry33; CHECK-NEXT:    rorl (%rdi), %eax # encoding: [0x62,0xf4,0x7c,0x18,0xd1,0x0f]34; CHECK-NEXT:    retq # encoding: [0xc3]35entry:36  %a = load i32, ptr %ptr37  %0 = lshr i32 %a, 138  %1 = shl i32 %a, 3139  %ror = or i32 %0, %140  ret i32 %ror41}42 43define i64 @ror64m1(ptr %ptr) {44; CHECK-LABEL: ror64m1:45; CHECK:       # %bb.0: # %entry46; CHECK-NEXT:    rorq (%rdi), %rax # encoding: [0x62,0xf4,0xfc,0x18,0xd1,0x0f]47; CHECK-NEXT:    retq # encoding: [0xc3]48entry:49  %a = load i64, ptr %ptr50  %0 = lshr i64 %a, 151  %1 = shl i64 %a, 6352  %ror = or i64 %0, %153  ret i64 %ror54}55 56define i8 @ror8mcl(ptr %ptr, i8 %cl) {57; CHECK-LABEL: ror8mcl:58; CHECK:       # %bb.0: # %entry59; CHECK-NEXT:    movl %esi, %ecx # encoding: [0x89,0xf1]60; CHECK-NEXT:    # kill: def $cl killed $cl killed $ecx61; CHECK-NEXT:    rorb %cl, (%rdi), %al # encoding: [0x62,0xf4,0x7c,0x18,0xd2,0x0f]62; CHECK-NEXT:    retq # encoding: [0xc3]63entry:64  %a = load i8, ptr %ptr65  %0 = lshr i8 %a, %cl66  %1 = sub i8 8, %cl67  %2 = shl i8 %a, %168  %ror = or i8 %0, %269  ret i8 %ror70}71 72define i8 @ror8mcl_mask(ptr %ptr, i8 %cl) {73; CHECK-LABEL: ror8mcl_mask:74; CHECK:       # %bb.0: # %entry75; CHECK-NEXT:    movl %esi, %ecx # encoding: [0x89,0xf1]76; CHECK-NEXT:    # kill: def $cl killed $cl killed $ecx77; CHECK-NEXT:    rorb %cl, (%rdi), %al # encoding: [0x62,0xf4,0x7c,0x18,0xd2,0x0f]78; CHECK-NEXT:    retq # encoding: [0xc3]79entry:80  %shamt = and i8 %cl, 3181  %a = load i8, ptr %ptr82  %0 = lshr i8 %a, %shamt83  %1 = sub i8 8, %shamt84  %2 = shl i8 %a, %185  %ror = or i8 %0, %286  ret i8 %ror87}88 89define i16 @ror16mcl(ptr %ptr, i16 %cl) {90; CHECK-LABEL: ror16mcl:91; CHECK:       # %bb.0: # %entry92; CHECK-NEXT:    movl %esi, %ecx # encoding: [0x89,0xf1]93; CHECK-NEXT:    # kill: def $cl killed $cl killed $ecx94; CHECK-NEXT:    rorw %cl, (%rdi), %ax # encoding: [0x62,0xf4,0x7d,0x18,0xd3,0x0f]95; CHECK-NEXT:    retq # encoding: [0xc3]96entry:97  %a = load i16, ptr %ptr98  %0 = lshr i16 %a, %cl99  %1 = sub i16 16, %cl100  %2 = shl i16 %a, %1101  %ror = or i16 %0, %2102  ret i16 %ror103}104 105define i16 @ror16mcl_mask(ptr %ptr, i16 %cl) {106; CHECK-LABEL: ror16mcl_mask:107; CHECK:       # %bb.0: # %entry108; CHECK-NEXT:    movl %esi, %ecx # encoding: [0x89,0xf1]109; CHECK-NEXT:    # kill: def $cl killed $cl killed $ecx110; CHECK-NEXT:    rorw %cl, (%rdi), %ax # encoding: [0x62,0xf4,0x7d,0x18,0xd3,0x0f]111; CHECK-NEXT:    retq # encoding: [0xc3]112entry:113  %shamt = and i16 %cl, 31114  %a = load i16, ptr %ptr115  %0 = lshr i16 %a, %shamt116  %1 = sub i16 16, %shamt117  %2 = shl i16 %a, %1118  %ror = or i16 %0, %2119  ret i16 %ror120}121 122define i32 @ror32mcl(ptr %ptr, i32 %cl) {123; CHECK-LABEL: ror32mcl:124; CHECK:       # %bb.0: # %entry125; CHECK-NEXT:    movl %esi, %ecx # encoding: [0x89,0xf1]126; CHECK-NEXT:    # kill: def $cl killed $cl killed $ecx127; CHECK-NEXT:    rorl %cl, (%rdi), %eax # encoding: [0x62,0xf4,0x7c,0x18,0xd3,0x0f]128; CHECK-NEXT:    retq # encoding: [0xc3]129entry:130  %a = load i32, ptr %ptr131  %0 = lshr i32 %a, %cl132  %1 = sub i32 32, %cl133  %2 = shl i32 %a, %1134  %ror = or i32 %0, %2135  ret i32 %ror136}137 138define i32 @ror32mcl_mask(ptr %ptr, i32 %cl) {139; CHECK-LABEL: ror32mcl_mask:140; CHECK:       # %bb.0: # %entry141; CHECK-NEXT:    movl %esi, %ecx # encoding: [0x89,0xf1]142; CHECK-NEXT:    # kill: def $cl killed $cl killed $ecx143; CHECK-NEXT:    rorl %cl, (%rdi), %eax # encoding: [0x62,0xf4,0x7c,0x18,0xd3,0x0f]144; CHECK-NEXT:    retq # encoding: [0xc3]145entry:146  %shamt = and i32 %cl, 31147  %a = load i32, ptr %ptr148  %0 = lshr i32 %a, %shamt149  %1 = sub i32 32, %shamt150  %2 = shl i32 %a, %1151  %ror = or i32 %0, %2152  ret i32 %ror153}154 155define i64 @ror64mcl(ptr %ptr, i64 %cl) {156; CHECK-LABEL: ror64mcl:157; CHECK:       # %bb.0: # %entry158; CHECK-NEXT:    movq %rsi, %rcx # encoding: [0x48,0x89,0xf1]159; CHECK-NEXT:    # kill: def $cl killed $cl killed $rcx160; CHECK-NEXT:    rorq %cl, (%rdi), %rax # encoding: [0x62,0xf4,0xfc,0x18,0xd3,0x0f]161; CHECK-NEXT:    retq # encoding: [0xc3]162entry:163  %a = load i64, ptr %ptr164  %0 = lshr i64 %a, %cl165  %1 = sub i64 64, %cl166  %2 = shl i64 %a, %1167  %ror = or i64 %0, %2168  ret i64 %ror169}170 171define i64 @ror64mcl_mask(ptr %ptr, i64 %cl) {172; CHECK-LABEL: ror64mcl_mask:173; CHECK:       # %bb.0: # %entry174; CHECK-NEXT:    movq %rsi, %rcx # encoding: [0x48,0x89,0xf1]175; CHECK-NEXT:    # kill: def $cl killed $cl killed $rcx176; CHECK-NEXT:    rorq %cl, (%rdi), %rax # encoding: [0x62,0xf4,0xfc,0x18,0xd3,0x0f]177; CHECK-NEXT:    retq # encoding: [0xc3]178entry:179  %shamt = and i64 %cl, 63180  %a = load i64, ptr %ptr181  %0 = lshr i64 %a, %shamt182  %1 = sub i64 64, %shamt183  %2 = shl i64 %a, %1184  %ror = or i64 %0, %2185  ret i64 %ror186}187 188define i8 @ror8mi(ptr %ptr) {189; CHECK-LABEL: ror8mi:190; CHECK:       # %bb.0: # %entry191; CHECK-NEXT:    rolb $5, (%rdi), %al # encoding: [0x62,0xf4,0x7c,0x18,0xc0,0x07,0x05]192; CHECK-NEXT:    retq # encoding: [0xc3]193entry:194  %a = load i8, ptr %ptr195  %0 = lshr i8 %a, 3196  %1 = shl i8 %a, 5197  %ror = or i8 %0, %1198  ret i8 %ror199}200 201define i16 @ror16mi(ptr %ptr) {202; CHECK-LABEL: ror16mi:203; CHECK:       # %bb.0: # %entry204; CHECK-NEXT:    rolw $13, (%rdi), %ax # encoding: [0x62,0xf4,0x7d,0x18,0xc1,0x07,0x0d]205; CHECK-NEXT:    retq # encoding: [0xc3]206entry:207  %a = load i16, ptr %ptr208  %0 = lshr i16 %a, 3209  %1 = shl i16 %a, 13210  %ror = or i16 %0, %1211  ret i16 %ror212}213 214define i32 @ror32mi(ptr %ptr) {215; CHECK-LABEL: ror32mi:216; CHECK:       # %bb.0: # %entry217; CHECK-NEXT:    roll $29, (%rdi), %eax # encoding: [0x62,0xf4,0x7c,0x18,0xc1,0x07,0x1d]218; CHECK-NEXT:    retq # encoding: [0xc3]219entry:220  %a = load i32, ptr %ptr221  %0 = lshr i32 %a, 3222  %1 = shl i32 %a, 29223  %ror = or i32 %0, %1224  ret i32 %ror225}226 227define i64 @ror64mi(ptr %ptr) {228; CHECK-LABEL: ror64mi:229; CHECK:       # %bb.0: # %entry230; CHECK-NEXT:    rolq $61, (%rdi), %rax # encoding: [0x62,0xf4,0xfc,0x18,0xc1,0x07,0x3d]231; CHECK-NEXT:    retq # encoding: [0xc3]232entry:233  %a = load i64, ptr %ptr234  %0 = lshr i64 %a, 3235  %1 = shl i64 %a, 61236  %ror = or i64 %0, %1237  ret i64 %ror238}239 240define i8 @ror8r1(i8 noundef %a) {241; CHECK-LABEL: ror8r1:242; CHECK:       # %bb.0: # %entry243; CHECK-NEXT:    rorb %dil, %al # encoding: [0x62,0xf4,0x7c,0x18,0xd0,0xcf]244; CHECK-NEXT:    retq # encoding: [0xc3]245entry:246  %0 = lshr i8 %a, 1247  %1 = shl i8 %a, 7248  %ror = or i8 %0, %1249  ret i8 %ror250}251 252define i16 @ror16r1(i16 noundef %a) {253; CHECK-LABEL: ror16r1:254; CHECK:       # %bb.0: # %entry255; CHECK-NEXT:    rorw %di, %ax # encoding: [0x62,0xf4,0x7d,0x18,0xd1,0xcf]256; CHECK-NEXT:    retq # encoding: [0xc3]257entry:258  %0 = lshr i16 %a, 1259  %1 = shl i16 %a, 15260  %ror = or i16 %0, %1261  ret i16 %ror262}263 264define i32 @ror32r1(i32 noundef %a) {265; CHECK-LABEL: ror32r1:266; CHECK:       # %bb.0: # %entry267; CHECK-NEXT:    rorl %edi, %eax # encoding: [0x62,0xf4,0x7c,0x18,0xd1,0xcf]268; CHECK-NEXT:    retq # encoding: [0xc3]269entry:270  %0 = lshr i32 %a, 1271  %1 = shl i32 %a, 31272  %ror = or i32 %0, %1273  ret i32 %ror274}275 276define i64 @ror64r1(i64 noundef %a) {277; CHECK-LABEL: ror64r1:278; CHECK:       # %bb.0: # %entry279; CHECK-NEXT:    rorq %rdi, %rax # encoding: [0x62,0xf4,0xfc,0x18,0xd1,0xcf]280; CHECK-NEXT:    retq # encoding: [0xc3]281entry:282  %0 = lshr i64 %a, 1283  %1 = shl i64 %a, 63284  %ror = or i64 %0, %1285  ret i64 %ror286}287 288define i8 @ror8rcl(i8 noundef %a, i8 %cl) {289; CHECK-LABEL: ror8rcl:290; CHECK:       # %bb.0: # %entry291; CHECK-NEXT:    movl %esi, %ecx # encoding: [0x89,0xf1]292; CHECK-NEXT:    # kill: def $cl killed $cl killed $ecx293; CHECK-NEXT:    rorb %cl, %dil, %al # encoding: [0x62,0xf4,0x7c,0x18,0xd2,0xcf]294; CHECK-NEXT:    retq # encoding: [0xc3]295entry:296  %0 = lshr i8 %a, %cl297  %1 = sub i8 8, %cl298  %2 = shl i8 %a, %1299  %ror = or i8 %0, %2300  ret i8 %ror301}302 303define i8 @ror8rcl_mask(i8 noundef %a, i8 %cl) {304; CHECK-LABEL: ror8rcl_mask:305; CHECK:       # %bb.0: # %entry306; CHECK-NEXT:    movl %esi, %ecx # encoding: [0x89,0xf1]307; CHECK-NEXT:    # kill: def $cl killed $cl killed $ecx308; CHECK-NEXT:    rorb %cl, %dil, %al # encoding: [0x62,0xf4,0x7c,0x18,0xd2,0xcf]309; CHECK-NEXT:    retq # encoding: [0xc3]310entry:311  %shamt = and i8 %cl, 31312  %0 = lshr i8 %a, %shamt313  %1 = sub i8 8, %shamt314  %2 = shl i8 %a, %1315  %ror = or i8 %0, %2316  ret i8 %ror317}318 319define i16 @ror16rcl(i16 noundef %a, i16 %cl) {320; CHECK-LABEL: ror16rcl:321; CHECK:       # %bb.0: # %entry322; CHECK-NEXT:    movl %esi, %ecx # encoding: [0x89,0xf1]323; CHECK-NEXT:    # kill: def $cl killed $cl killed $ecx324; CHECK-NEXT:    rorw %cl, %di, %ax # encoding: [0x62,0xf4,0x7d,0x18,0xd3,0xcf]325; CHECK-NEXT:    retq # encoding: [0xc3]326entry:327  %0 = lshr i16 %a, %cl328  %1 = sub i16 16, %cl329  %2 = shl i16 %a, %1330  %ror = or i16 %0, %2331  ret i16 %ror332}333 334define i16 @ror16rcl_mask(i16 noundef %a, i16 %cl) {335; CHECK-LABEL: ror16rcl_mask:336; CHECK:       # %bb.0: # %entry337; CHECK-NEXT:    movl %esi, %ecx # encoding: [0x89,0xf1]338; CHECK-NEXT:    # kill: def $cl killed $cl killed $ecx339; CHECK-NEXT:    rorw %cl, %di, %ax # encoding: [0x62,0xf4,0x7d,0x18,0xd3,0xcf]340; CHECK-NEXT:    retq # encoding: [0xc3]341entry:342  %shamt = and i16 %cl, 31343  %0 = lshr i16 %a, %shamt344  %1 = sub i16 16, %shamt345  %2 = shl i16 %a, %1346  %ror = or i16 %0, %2347  ret i16 %ror348}349 350define i32 @ror32rcl(i32 noundef %a, i32 %cl) {351; CHECK-LABEL: ror32rcl:352; CHECK:       # %bb.0: # %entry353; CHECK-NEXT:    movl %esi, %ecx # encoding: [0x89,0xf1]354; CHECK-NEXT:    # kill: def $cl killed $cl killed $ecx355; CHECK-NEXT:    rorl %cl, %edi, %eax # encoding: [0x62,0xf4,0x7c,0x18,0xd3,0xcf]356; CHECK-NEXT:    retq # encoding: [0xc3]357entry:358  %0 = lshr i32 %a, %cl359  %1 = sub i32 32, %cl360  %2 = shl i32 %a, %1361  %ror = or i32 %0, %2362  ret i32 %ror363}364 365define i32 @ror32rcl_mask(i32 noundef %a, i32 %cl) {366; CHECK-LABEL: ror32rcl_mask:367; CHECK:       # %bb.0: # %entry368; CHECK-NEXT:    movl %esi, %ecx # encoding: [0x89,0xf1]369; CHECK-NEXT:    # kill: def $cl killed $cl killed $ecx370; CHECK-NEXT:    rorl %cl, %edi, %eax # encoding: [0x62,0xf4,0x7c,0x18,0xd3,0xcf]371; CHECK-NEXT:    retq # encoding: [0xc3]372entry:373  %shamt = and i32 %cl, 31374  %0 = lshr i32 %a, %shamt375  %1 = sub i32 32, %shamt376  %2 = shl i32 %a, %1377  %ror = or i32 %0, %2378  ret i32 %ror379}380 381define i64 @ror64rcl(i64 noundef %a, i64 %cl) {382; CHECK-LABEL: ror64rcl:383; CHECK:       # %bb.0: # %entry384; CHECK-NEXT:    movq %rsi, %rcx # encoding: [0x48,0x89,0xf1]385; CHECK-NEXT:    # kill: def $cl killed $cl killed $rcx386; CHECK-NEXT:    rorq %cl, %rdi, %rax # encoding: [0x62,0xf4,0xfc,0x18,0xd3,0xcf]387; CHECK-NEXT:    retq # encoding: [0xc3]388entry:389  %0 = lshr i64 %a, %cl390  %1 = sub i64 64, %cl391  %2 = shl i64 %a, %1392  %ror = or i64 %0, %2393  ret i64 %ror394}395 396define i64 @ror64rcl_mask(i64 noundef %a, i64 %cl) {397; CHECK-LABEL: ror64rcl_mask:398; CHECK:       # %bb.0: # %entry399; CHECK-NEXT:    movq %rsi, %rcx # encoding: [0x48,0x89,0xf1]400; CHECK-NEXT:    # kill: def $cl killed $cl killed $rcx401; CHECK-NEXT:    rorq %cl, %rdi, %rax # encoding: [0x62,0xf4,0xfc,0x18,0xd3,0xcf]402; CHECK-NEXT:    retq # encoding: [0xc3]403entry:404  %shamt = and i64 %cl, 63405  %0 = lshr i64 %a, %shamt406  %1 = sub i64 64, %shamt407  %2 = shl i64 %a, %1408  %ror = or i64 %0, %2409  ret i64 %ror410}411 412define i8 @ror8ri(i8 noundef %a) {413; CHECK-LABEL: ror8ri:414; CHECK:       # %bb.0: # %entry415; CHECK-NEXT:    rolb $5, %dil, %al # encoding: [0x62,0xf4,0x7c,0x18,0xc0,0xc7,0x05]416; CHECK-NEXT:    retq # encoding: [0xc3]417entry:418  %0 = lshr i8 %a, 3419  %1 = shl i8 %a, 5420  %ror = or i8 %0, %1421  ret i8 %ror422}423 424define i16 @ror16ri(i16 noundef %a) {425; CHECK-LABEL: ror16ri:426; CHECK:       # %bb.0: # %entry427; CHECK-NEXT:    rolw $13, %di, %ax # encoding: [0x62,0xf4,0x7d,0x18,0xc1,0xc7,0x0d]428; CHECK-NEXT:    retq # encoding: [0xc3]429entry:430  %0 = lshr i16 %a, 3431  %1 = shl i16 %a, 13432  %ror = or i16 %0, %1433  ret i16 %ror434}435 436define i32 @ror32ri(i32 noundef %a) {437; CHECK-LABEL: ror32ri:438; CHECK:       # %bb.0: # %entry439; CHECK-NEXT:    roll $29, %edi, %eax # encoding: [0x62,0xf4,0x7c,0x18,0xc1,0xc7,0x1d]440; CHECK-NEXT:    retq # encoding: [0xc3]441entry:442  %0 = lshr i32 %a, 3443  %1 = shl i32 %a, 29444  %ror = or i32 %0, %1445  ret i32 %ror446}447 448define i64 @ror64ri(i64 noundef %a) {449; CHECK-LABEL: ror64ri:450; CHECK:       # %bb.0: # %entry451; CHECK-NEXT:    rolq $61, %rdi, %rax # encoding: [0x62,0xf4,0xfc,0x18,0xc1,0xc7,0x3d]452; CHECK-NEXT:    retq # encoding: [0xc3]453entry:454  %0 = lshr i64 %a, 3455  %1 = shl i64 %a, 61456  %ror = or i64 %0, %1457  ret i64 %ror458}459 460define void @ror8m1_legacy(ptr %ptr) {461; CHECK-LABEL: ror8m1_legacy:462; CHECK:       # %bb.0: # %entry463; CHECK-NEXT:    rorb (%rdi) # encoding: [0xd0,0x0f]464; CHECK-NEXT:    retq # encoding: [0xc3]465entry:466  %a = load i8, ptr %ptr467  %0 = lshr i8 %a, 1468  %1 = shl i8 %a, 7469  %ror = or i8 %0, %1470  store i8 %ror, ptr %ptr471  ret void472}473 474define void @ror16m1_legacy(ptr %ptr) {475; CHECK-LABEL: ror16m1_legacy:476; CHECK:       # %bb.0: # %entry477; CHECK-NEXT:    rorw (%rdi) # encoding: [0x66,0xd1,0x0f]478; CHECK-NEXT:    retq # encoding: [0xc3]479entry:480  %a = load i16, ptr %ptr481  %0 = lshr i16 %a, 1482  %1 = shl i16 %a, 15483  %ror = or i16 %0, %1484  store i16 %ror, ptr %ptr485  ret void486}487 488define void @ror32m1_legacy(ptr %ptr) {489; CHECK-LABEL: ror32m1_legacy:490; CHECK:       # %bb.0: # %entry491; CHECK-NEXT:    rorl (%rdi) # encoding: [0xd1,0x0f]492; CHECK-NEXT:    retq # encoding: [0xc3]493entry:494  %a = load i32, ptr %ptr495  %0 = lshr i32 %a, 1496  %1 = shl i32 %a, 31497  %ror = or i32 %0, %1498  store i32 %ror, ptr %ptr499  ret void500}501 502define void @ror64m1_legacy(ptr %ptr) {503; CHECK-LABEL: ror64m1_legacy:504; CHECK:       # %bb.0: # %entry505; CHECK-NEXT:    rorq (%rdi) # encoding: [0x48,0xd1,0x0f]506; CHECK-NEXT:    retq # encoding: [0xc3]507entry:508  %a = load i64, ptr %ptr509  %0 = lshr i64 %a, 1510  %1 = shl i64 %a, 63511  %ror = or i64 %0, %1512  store i64 %ror, ptr %ptr513  ret void514}515 516define void @ror8mcl_legacy(ptr %ptr, i8 %cl) {517; CHECK-LABEL: ror8mcl_legacy:518; CHECK:       # %bb.0: # %entry519; CHECK-NEXT:    movl %esi, %ecx # encoding: [0x89,0xf1]520; CHECK-NEXT:    # kill: def $cl killed $cl killed $ecx521; CHECK-NEXT:    rorb %cl, (%rdi) # encoding: [0xd2,0x0f]522; CHECK-NEXT:    retq # encoding: [0xc3]523entry:524  %a = load i8, ptr %ptr525  %0 = lshr i8 %a, %cl526  %1 = sub i8 8, %cl527  %2 = shl i8 %a, %1528  %ror = or i8 %0, %2529  store i8 %ror, ptr %ptr530  ret void531}532 533define void @ror16mcl_legacy(ptr %ptr, i16 %cl) {534; CHECK-LABEL: ror16mcl_legacy:535; CHECK:       # %bb.0: # %entry536; CHECK-NEXT:    movl %esi, %ecx # encoding: [0x89,0xf1]537; CHECK-NEXT:    # kill: def $cl killed $cl killed $ecx538; CHECK-NEXT:    rorw %cl, (%rdi) # encoding: [0x66,0xd3,0x0f]539; CHECK-NEXT:    retq # encoding: [0xc3]540entry:541  %a = load i16, ptr %ptr542  %0 = lshr i16 %a, %cl543  %1 = sub i16 16, %cl544  %2 = shl i16 %a, %1545  %ror = or i16 %0, %2546  store i16 %ror, ptr %ptr547  ret void548}549 550define void @ror32mcl_legacy(ptr %ptr, i32 %cl) {551; CHECK-LABEL: ror32mcl_legacy:552; CHECK:       # %bb.0: # %entry553; CHECK-NEXT:    movl %esi, %ecx # encoding: [0x89,0xf1]554; CHECK-NEXT:    # kill: def $cl killed $cl killed $ecx555; CHECK-NEXT:    rorl %cl, (%rdi) # encoding: [0xd3,0x0f]556; CHECK-NEXT:    retq # encoding: [0xc3]557entry:558  %a = load i32, ptr %ptr559  %0 = lshr i32 %a, %cl560  %1 = sub i32 32, %cl561  %2 = shl i32 %a, %1562  %ror = or i32 %0, %2563  store i32 %ror, ptr %ptr564  ret void565}566 567define void @ror64mcl_legacy(ptr %ptr, i64 %cl) {568; CHECK-LABEL: ror64mcl_legacy:569; CHECK:       # %bb.0: # %entry570; CHECK-NEXT:    movq %rsi, %rcx # encoding: [0x48,0x89,0xf1]571; CHECK-NEXT:    # kill: def $cl killed $cl killed $rcx572; CHECK-NEXT:    rorq %cl, (%rdi) # encoding: [0x48,0xd3,0x0f]573; CHECK-NEXT:    retq # encoding: [0xc3]574entry:575  %a = load i64, ptr %ptr576  %0 = lshr i64 %a, %cl577  %1 = sub i64 64, %cl578  %2 = shl i64 %a, %1579  %ror = or i64 %0, %2580  store i64 %ror, ptr %ptr581  ret void582}583 584define void @ror8mi_legacy(ptr %ptr) {585; CHECK-LABEL: ror8mi_legacy:586; CHECK:       # %bb.0: # %entry587; CHECK-NEXT:    rolb $5, (%rdi) # encoding: [0xc0,0x07,0x05]588; CHECK-NEXT:    retq # encoding: [0xc3]589entry:590  %a = load i8, ptr %ptr591  %0 = lshr i8 %a, 3592  %1 = shl i8 %a, 5593  %ror = or i8 %0, %1594  store i8 %ror, ptr %ptr595  ret void596}597 598define void @ror16mi_legacy(ptr %ptr) {599; CHECK-LABEL: ror16mi_legacy:600; CHECK:       # %bb.0: # %entry601; CHECK-NEXT:    rolw $13, (%rdi) # encoding: [0x66,0xc1,0x07,0x0d]602; CHECK-NEXT:    retq # encoding: [0xc3]603entry:604  %a = load i16, ptr %ptr605  %0 = lshr i16 %a, 3606  %1 = shl i16 %a, 13607  %ror = or i16 %0, %1608  store i16 %ror, ptr %ptr609  ret void610}611 612define void @ror32mi_legacy(ptr %ptr) {613; CHECK-LABEL: ror32mi_legacy:614; CHECK:       # %bb.0: # %entry615; CHECK-NEXT:    roll $29, (%rdi) # encoding: [0xc1,0x07,0x1d]616; CHECK-NEXT:    retq # encoding: [0xc3]617entry:618  %a = load i32, ptr %ptr619  %0 = lshr i32 %a, 3620  %1 = shl i32 %a, 29621  %ror = or i32 %0, %1622  store i32 %ror, ptr %ptr623  ret void624}625 626define void @ror64mi_legacy(ptr %ptr) {627; CHECK-LABEL: ror64mi_legacy:628; CHECK:       # %bb.0: # %entry629; CHECK-NEXT:    rolq $61, (%rdi) # encoding: [0x48,0xc1,0x07,0x3d]630; CHECK-NEXT:    retq # encoding: [0xc3]631entry:632  %a = load i64, ptr %ptr633  %0 = lshr i64 %a, 3634  %1 = shl i64 %a, 61635  %ror = or i64 %0, %1636  store i64 %ror, ptr %ptr637  ret void638}639