915 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; RUN: llc < %s -mtriple=x86_64-unknown -mattr=+ndd,nf -verify-machineinstrs --show-mc-encoding | FileCheck --check-prefix=NF %s4; RUN: llc < %s -mtriple=x86_64-unknown -mattr=+ndd,nf -x86-enable-apx-for-relocation=true -verify-machineinstrs --show-mc-encoding | FileCheck --check-prefix=NF %s5 6define i8 @add8rr(i8 noundef %a, i8 noundef %b) {7; CHECK-LABEL: add8rr:8; CHECK: # %bb.0: # %entry9; CHECK-NEXT: addb %sil, %dil, %al # encoding: [0x62,0xf4,0x7c,0x18,0x00,0xf7]10; CHECK-NEXT: retq # encoding: [0xc3]11;12; NF-LABEL: add8rr:13; NF: # %bb.0: # %entry14; NF-NEXT: {nf} addb %sil, %dil, %al # EVEX TO EVEX Compression encoding: [0x62,0xf4,0x7c,0x1c,0x00,0xf7]15; NF-NEXT: retq # encoding: [0xc3]16entry:17 %add = add i8 %a, %b18 ret i8 %add19}20 21define i16 @add16rr(i16 noundef %a, i16 noundef %b) {22; CHECK-LABEL: add16rr:23; CHECK: # %bb.0: # %entry24; CHECK-NEXT: addw %si, %di, %ax # encoding: [0x62,0xf4,0x7d,0x18,0x01,0xf7]25; CHECK-NEXT: retq # encoding: [0xc3]26;27; NF-LABEL: add16rr:28; NF: # %bb.0: # %entry29; NF-NEXT: {nf} addw %si, %di, %ax # EVEX TO EVEX Compression encoding: [0x62,0xf4,0x7d,0x1c,0x01,0xf7]30; NF-NEXT: retq # encoding: [0xc3]31entry:32 %add = add i16 %a, %b33 ret i16 %add34}35 36define i32 @add32rr(i32 noundef %a, i32 noundef %b) {37; CHECK-LABEL: add32rr:38; CHECK: # %bb.0: # %entry39; CHECK-NEXT: leal (%rdi,%rsi), %eax # encoding: [0x8d,0x04,0x37]40; CHECK-NEXT: retq # encoding: [0xc3]41;42; NF-LABEL: add32rr:43; NF: # %bb.0: # %entry44; NF-NEXT: leal (%rdi,%rsi), %eax # encoding: [0x8d,0x04,0x37]45; NF-NEXT: retq # encoding: [0xc3]46entry:47 %add = add i32 %a, %b48 ret i32 %add49}50 51define i64 @add64rr(i64 noundef %a, i64 noundef %b) {52; CHECK-LABEL: add64rr:53; CHECK: # %bb.0: # %entry54; CHECK-NEXT: leaq (%rdi,%rsi), %rax # encoding: [0x48,0x8d,0x04,0x37]55; CHECK-NEXT: retq # encoding: [0xc3]56;57; NF-LABEL: add64rr:58; NF: # %bb.0: # %entry59; NF-NEXT: leaq (%rdi,%rsi), %rax # encoding: [0x48,0x8d,0x04,0x37]60; NF-NEXT: retq # encoding: [0xc3]61entry:62 %add = add i64 %a, %b63 ret i64 %add64}65 66define i8 @add8rm(i8 noundef %a, ptr %ptr) {67; CHECK-LABEL: add8rm:68; CHECK: # %bb.0: # %entry69; CHECK-NEXT: addb (%rsi), %dil, %al # encoding: [0x62,0xf4,0x7c,0x18,0x02,0x3e]70; CHECK-NEXT: retq # encoding: [0xc3]71;72; NF-LABEL: add8rm:73; NF: # %bb.0: # %entry74; NF-NEXT: {nf} addb (%rsi), %dil, %al # EVEX TO EVEX Compression encoding: [0x62,0xf4,0x7c,0x1c,0x02,0x3e]75; NF-NEXT: retq # encoding: [0xc3]76entry:77 %b = load i8, ptr %ptr78 %add = add i8 %a, %b79 ret i8 %add80}81 82define i16 @add16rm(i16 noundef %a, ptr %ptr) {83; CHECK-LABEL: add16rm:84; CHECK: # %bb.0: # %entry85; CHECK-NEXT: addw (%rsi), %di, %ax # encoding: [0x62,0xf4,0x7d,0x18,0x03,0x3e]86; CHECK-NEXT: retq # encoding: [0xc3]87;88; NF-LABEL: add16rm:89; NF: # %bb.0: # %entry90; NF-NEXT: {nf} addw (%rsi), %di, %ax # EVEX TO EVEX Compression encoding: [0x62,0xf4,0x7d,0x1c,0x03,0x3e]91; NF-NEXT: retq # encoding: [0xc3]92entry:93 %b = load i16, ptr %ptr94 %add = add i16 %a, %b95 ret i16 %add96}97 98define i32 @add32rm(i32 noundef %a, ptr %ptr) {99; CHECK-LABEL: add32rm:100; CHECK: # %bb.0: # %entry101; CHECK-NEXT: addl (%rsi), %edi, %eax # encoding: [0x62,0xf4,0x7c,0x18,0x03,0x3e]102; CHECK-NEXT: retq # encoding: [0xc3]103;104; NF-LABEL: add32rm:105; NF: # %bb.0: # %entry106; NF-NEXT: {nf} addl (%rsi), %edi, %eax # EVEX TO EVEX Compression encoding: [0x62,0xf4,0x7c,0x1c,0x03,0x3e]107; NF-NEXT: retq # encoding: [0xc3]108entry:109 %b = load i32, ptr %ptr110 %add = add i32 %a, %b111 ret i32 %add112}113 114define i64 @add64rm(i64 noundef %a, ptr %ptr) {115; CHECK-LABEL: add64rm:116; CHECK: # %bb.0: # %entry117; CHECK-NEXT: addq (%rsi), %rdi, %rax # encoding: [0x62,0xf4,0xfc,0x18,0x03,0x3e]118; CHECK-NEXT: retq # encoding: [0xc3]119;120; NF-LABEL: add64rm:121; NF: # %bb.0: # %entry122; NF-NEXT: {nf} addq (%rsi), %rdi, %rax # EVEX TO EVEX Compression encoding: [0x62,0xf4,0xfc,0x1c,0x03,0x3e]123; NF-NEXT: retq # encoding: [0xc3]124entry:125 %b = load i64, ptr %ptr126 %add = add i64 %a, %b127 ret i64 %add128}129 130define i16 @add16ri8(i16 noundef %a) {131; CHECK-LABEL: add16ri8:132; CHECK: # %bb.0: # %entry133; CHECK-NEXT: addw $123, %di, %ax # encoding: [0x62,0xf4,0x7d,0x18,0x83,0xc7,0x7b]134; CHECK-NEXT: retq # encoding: [0xc3]135;136; NF-LABEL: add16ri8:137; NF: # %bb.0: # %entry138; NF-NEXT: {nf} addw $123, %di, %ax # EVEX TO EVEX Compression encoding: [0x62,0xf4,0x7d,0x1c,0x83,0xc7,0x7b]139; NF-NEXT: retq # encoding: [0xc3]140entry:141 %add = add i16 %a, 123142 ret i16 %add143}144 145define i32 @add32ri8(i32 noundef %a) {146; CHECK-LABEL: add32ri8:147; CHECK: # %bb.0: # %entry148; CHECK-NEXT: leal 123(%rdi), %eax # encoding: [0x8d,0x47,0x7b]149; CHECK-NEXT: retq # encoding: [0xc3]150;151; NF-LABEL: add32ri8:152; NF: # %bb.0: # %entry153; NF-NEXT: leal 123(%rdi), %eax # encoding: [0x8d,0x47,0x7b]154; NF-NEXT: retq # encoding: [0xc3]155entry:156 %add = add i32 %a, 123157 ret i32 %add158}159 160define i64 @add64ri8(i64 noundef %a) {161; CHECK-LABEL: add64ri8:162; CHECK: # %bb.0: # %entry163; CHECK-NEXT: leaq 123(%rdi), %rax # encoding: [0x48,0x8d,0x47,0x7b]164; CHECK-NEXT: retq # encoding: [0xc3]165;166; NF-LABEL: add64ri8:167; NF: # %bb.0: # %entry168; NF-NEXT: leaq 123(%rdi), %rax # encoding: [0x48,0x8d,0x47,0x7b]169; NF-NEXT: retq # encoding: [0xc3]170entry:171 %add = add i64 %a, 123172 ret i64 %add173}174 175define i8 @add8ri(i8 noundef %a) {176; CHECK-LABEL: add8ri:177; CHECK: # %bb.0: # %entry178; CHECK-NEXT: addb $123, %dil, %al # encoding: [0x62,0xf4,0x7c,0x18,0x80,0xc7,0x7b]179; CHECK-NEXT: retq # encoding: [0xc3]180;181; NF-LABEL: add8ri:182; NF: # %bb.0: # %entry183; NF-NEXT: {nf} addb $123, %dil, %al # EVEX TO EVEX Compression encoding: [0x62,0xf4,0x7c,0x1c,0x80,0xc7,0x7b]184; NF-NEXT: retq # encoding: [0xc3]185entry:186 %add = add i8 %a, 123187 ret i8 %add188}189 190define i16 @add16ri(i16 noundef %a) {191; CHECK-LABEL: add16ri:192; CHECK: # %bb.0: # %entry193; CHECK-NEXT: addw $1234, %di, %ax # encoding: [0x62,0xf4,0x7d,0x18,0x81,0xc7,0xd2,0x04]194; CHECK-NEXT: # imm = 0x4D2195; CHECK-NEXT: retq # encoding: [0xc3]196;197; NF-LABEL: add16ri:198; NF: # %bb.0: # %entry199; NF-NEXT: {nf} addw $1234, %di, %ax # EVEX TO EVEX Compression encoding: [0x62,0xf4,0x7d,0x1c,0x81,0xc7,0xd2,0x04]200; NF-NEXT: # imm = 0x4D2201; NF-NEXT: retq # encoding: [0xc3]202entry:203 %add = add i16 %a, 1234204 ret i16 %add205}206 207define i32 @add32ri(i32 noundef %a) {208; CHECK-LABEL: add32ri:209; CHECK: # %bb.0: # %entry210; CHECK-NEXT: leal 123456(%rdi), %eax # encoding: [0x8d,0x87,0x40,0xe2,0x01,0x00]211; CHECK-NEXT: retq # encoding: [0xc3]212;213; NF-LABEL: add32ri:214; NF: # %bb.0: # %entry215; NF-NEXT: leal 123456(%rdi), %eax # encoding: [0x8d,0x87,0x40,0xe2,0x01,0x00]216; NF-NEXT: retq # encoding: [0xc3]217entry:218 %add = add i32 %a, 123456219 ret i32 %add220}221 222define i64 @add64ri(i64 noundef %a) {223; CHECK-LABEL: add64ri:224; CHECK: # %bb.0: # %entry225; CHECK-NEXT: leaq 123456(%rdi), %rax # encoding: [0x48,0x8d,0x87,0x40,0xe2,0x01,0x00]226; CHECK-NEXT: retq # encoding: [0xc3]227;228; NF-LABEL: add64ri:229; NF: # %bb.0: # %entry230; NF-NEXT: leaq 123456(%rdi), %rax # encoding: [0x48,0x8d,0x87,0x40,0xe2,0x01,0x00]231; NF-NEXT: retq # encoding: [0xc3]232entry:233 %add = add i64 %a, 123456234 ret i64 %add235}236 237define i8 @add8mr(ptr %a, i8 noundef %b) {238; CHECK-LABEL: add8mr:239; CHECK: # %bb.0: # %entry240; CHECK-NEXT: addb (%rdi), %sil, %al # encoding: [0x62,0xf4,0x7c,0x18,0x02,0x37]241; CHECK-NEXT: retq # encoding: [0xc3]242;243; NF-LABEL: add8mr:244; NF: # %bb.0: # %entry245; NF-NEXT: {nf} addb (%rdi), %sil, %al # EVEX TO EVEX Compression encoding: [0x62,0xf4,0x7c,0x1c,0x02,0x37]246; NF-NEXT: retq # encoding: [0xc3]247entry:248 %t= load i8, ptr %a249 %add = add nsw i8 %t, %b250 ret i8 %add251}252 253define i16 @add16mr(ptr %a, i16 noundef %b) {254; CHECK-LABEL: add16mr:255; CHECK: # %bb.0: # %entry256; CHECK-NEXT: addw (%rdi), %si, %ax # encoding: [0x62,0xf4,0x7d,0x18,0x03,0x37]257; CHECK-NEXT: retq # encoding: [0xc3]258;259; NF-LABEL: add16mr:260; NF: # %bb.0: # %entry261; NF-NEXT: {nf} addw (%rdi), %si, %ax # EVEX TO EVEX Compression encoding: [0x62,0xf4,0x7d,0x1c,0x03,0x37]262; NF-NEXT: retq # encoding: [0xc3]263entry:264 %t= load i16, ptr %a265 %add = add nsw i16 %t, %b266 ret i16 %add267}268 269define i32 @add32mr(ptr %a, i32 noundef %b) {270; CHECK-LABEL: add32mr:271; CHECK: # %bb.0: # %entry272; CHECK-NEXT: addl (%rdi), %esi, %eax # encoding: [0x62,0xf4,0x7c,0x18,0x03,0x37]273; CHECK-NEXT: retq # encoding: [0xc3]274;275; NF-LABEL: add32mr:276; NF: # %bb.0: # %entry277; NF-NEXT: {nf} addl (%rdi), %esi, %eax # EVEX TO EVEX Compression encoding: [0x62,0xf4,0x7c,0x1c,0x03,0x37]278; NF-NEXT: retq # encoding: [0xc3]279entry:280 %t= load i32, ptr %a281 %add = add nsw i32 %t, %b282 ret i32 %add283}284 285define i64 @add64mr(ptr %a, i64 noundef %b) {286; CHECK-LABEL: add64mr:287; CHECK: # %bb.0: # %entry288; CHECK-NEXT: addq (%rdi), %rsi, %rax # encoding: [0x62,0xf4,0xfc,0x18,0x03,0x37]289; CHECK-NEXT: retq # encoding: [0xc3]290;291; NF-LABEL: add64mr:292; NF: # %bb.0: # %entry293; NF-NEXT: {nf} addq (%rdi), %rsi, %rax # EVEX TO EVEX Compression encoding: [0x62,0xf4,0xfc,0x1c,0x03,0x37]294; NF-NEXT: retq # encoding: [0xc3]295entry:296 %t= load i64, ptr %a297 %add = add nsw i64 %t, %b298 ret i64 %add299}300 301define i16 @add16mi8(ptr %a) {302; CHECK-LABEL: add16mi8:303; CHECK: # %bb.0: # %entry304; CHECK-NEXT: addw $123, (%rdi), %ax # encoding: [0x62,0xf4,0x7d,0x18,0x83,0x07,0x7b]305; CHECK-NEXT: retq # encoding: [0xc3]306;307; NF-LABEL: add16mi8:308; NF: # %bb.0: # %entry309; NF-NEXT: {nf} addw $123, (%rdi), %ax # EVEX TO EVEX Compression encoding: [0x62,0xf4,0x7d,0x1c,0x83,0x07,0x7b]310; NF-NEXT: retq # encoding: [0xc3]311entry:312 %t= load i16, ptr %a313 %add = add nsw i16 %t, 123314 ret i16 %add315}316 317define i32 @add32mi8(ptr %a) {318; CHECK-LABEL: add32mi8:319; CHECK: # %bb.0: # %entry320; CHECK-NEXT: addl $123, (%rdi), %eax # encoding: [0x62,0xf4,0x7c,0x18,0x83,0x07,0x7b]321; CHECK-NEXT: retq # encoding: [0xc3]322;323; NF-LABEL: add32mi8:324; NF: # %bb.0: # %entry325; NF-NEXT: {nf} addl $123, (%rdi), %eax # EVEX TO EVEX Compression encoding: [0x62,0xf4,0x7c,0x1c,0x83,0x07,0x7b]326; NF-NEXT: retq # encoding: [0xc3]327entry:328 %t= load i32, ptr %a329 %add = add nsw i32 %t, 123330 ret i32 %add331}332 333define i64 @add64mi8(ptr %a) {334; CHECK-LABEL: add64mi8:335; CHECK: # %bb.0: # %entry336; CHECK-NEXT: addq $123, (%rdi), %rax # encoding: [0x62,0xf4,0xfc,0x18,0x83,0x07,0x7b]337; CHECK-NEXT: retq # encoding: [0xc3]338;339; NF-LABEL: add64mi8:340; NF: # %bb.0: # %entry341; NF-NEXT: {nf} addq $123, (%rdi), %rax # EVEX TO EVEX Compression encoding: [0x62,0xf4,0xfc,0x1c,0x83,0x07,0x7b]342; NF-NEXT: retq # encoding: [0xc3]343entry:344 %t= load i64, ptr %a345 %add = add nsw i64 %t, 123346 ret i64 %add347}348 349define i8 @add8mi(ptr %a) {350; CHECK-LABEL: add8mi:351; CHECK: # %bb.0: # %entry352; CHECK-NEXT: addb $123, (%rdi), %al # encoding: [0x62,0xf4,0x7c,0x18,0x80,0x07,0x7b]353; CHECK-NEXT: retq # encoding: [0xc3]354;355; NF-LABEL: add8mi:356; NF: # %bb.0: # %entry357; NF-NEXT: {nf} addb $123, (%rdi), %al # EVEX TO EVEX Compression encoding: [0x62,0xf4,0x7c,0x1c,0x80,0x07,0x7b]358; NF-NEXT: retq # encoding: [0xc3]359entry:360 %t= load i8, ptr %a361 %add = add nsw i8 %t, 123362 ret i8 %add363}364 365define i16 @add16mi(ptr %a) {366; CHECK-LABEL: add16mi:367; CHECK: # %bb.0: # %entry368; CHECK-NEXT: addw $1234, (%rdi), %ax # encoding: [0x62,0xf4,0x7d,0x18,0x81,0x07,0xd2,0x04]369; CHECK-NEXT: # imm = 0x4D2370; CHECK-NEXT: retq # encoding: [0xc3]371;372; NF-LABEL: add16mi:373; NF: # %bb.0: # %entry374; NF-NEXT: {nf} addw $1234, (%rdi), %ax # EVEX TO EVEX Compression encoding: [0x62,0xf4,0x7d,0x1c,0x81,0x07,0xd2,0x04]375; NF-NEXT: # imm = 0x4D2376; NF-NEXT: retq # encoding: [0xc3]377entry:378 %t= load i16, ptr %a379 %add = add nsw i16 %t, 1234380 ret i16 %add381}382 383define i32 @add32mi(ptr %a) {384; CHECK-LABEL: add32mi:385; CHECK: # %bb.0: # %entry386; CHECK-NEXT: addl $123456, (%rdi), %eax # encoding: [0x62,0xf4,0x7c,0x18,0x81,0x07,0x40,0xe2,0x01,0x00]387; CHECK-NEXT: # imm = 0x1E240388; CHECK-NEXT: retq # encoding: [0xc3]389;390; NF-LABEL: add32mi:391; NF: # %bb.0: # %entry392; NF-NEXT: {nf} addl $123456, (%rdi), %eax # EVEX TO EVEX Compression encoding: [0x62,0xf4,0x7c,0x1c,0x81,0x07,0x40,0xe2,0x01,0x00]393; NF-NEXT: # imm = 0x1E240394; NF-NEXT: retq # encoding: [0xc3]395entry:396 %t= load i32, ptr %a397 %add = add nsw i32 %t, 123456398 ret i32 %add399}400 401define i64 @add64mi(ptr %a) {402; CHECK-LABEL: add64mi:403; CHECK: # %bb.0: # %entry404; CHECK-NEXT: addq $123456, (%rdi), %rax # encoding: [0x62,0xf4,0xfc,0x18,0x81,0x07,0x40,0xe2,0x01,0x00]405; CHECK-NEXT: # imm = 0x1E240406; CHECK-NEXT: retq # encoding: [0xc3]407;408; NF-LABEL: add64mi:409; NF: # %bb.0: # %entry410; NF-NEXT: {nf} addq $123456, (%rdi), %rax # EVEX TO EVEX Compression encoding: [0x62,0xf4,0xfc,0x1c,0x81,0x07,0x40,0xe2,0x01,0x00]411; NF-NEXT: # imm = 0x1E240412; NF-NEXT: retq # encoding: [0xc3]413entry:414 %t= load i64, ptr %a415 %add = add nsw i64 %t, 123456416 ret i64 %add417}418 419declare i8 @llvm.uadd.sat.i8(i8, i8)420declare i16 @llvm.uadd.sat.i16(i16, i16)421declare i32 @llvm.uadd.sat.i32(i32, i32)422declare i64 @llvm.uadd.sat.i64(i64, i64)423 424define i8 @addflag8rr(i8 noundef %a, i8 noundef %b) {425; CHECK-LABEL: addflag8rr:426; CHECK: # %bb.0: # %entry427; CHECK-NEXT: addb %sil, %dil, %al # encoding: [0x62,0xf4,0x7c,0x18,0x00,0xf7]428; CHECK-NEXT: movzbl %al, %eax # encoding: [0x0f,0xb6,0xc0]429; CHECK-NEXT: movl $255, %ecx # encoding: [0xb9,0xff,0x00,0x00,0x00]430; CHECK-NEXT: cmovbl %ecx, %eax # EVEX TO LEGACY Compression encoding: [0x0f,0x42,0xc1]431; CHECK-NEXT: # kill: def $al killed $al killed $eax432; CHECK-NEXT: retq # encoding: [0xc3]433;434; NF-LABEL: addflag8rr:435; NF: # %bb.0: # %entry436; NF-NEXT: addb %sil, %dil, %al # encoding: [0x62,0xf4,0x7c,0x18,0x00,0xf7]437; NF-NEXT: movzbl %al, %eax # encoding: [0x0f,0xb6,0xc0]438; NF-NEXT: movl $255, %ecx # encoding: [0xb9,0xff,0x00,0x00,0x00]439; NF-NEXT: cmovbl %ecx, %eax # EVEX TO LEGACY Compression encoding: [0x0f,0x42,0xc1]440; NF-NEXT: # kill: def $al killed $al killed $eax441; NF-NEXT: retq # encoding: [0xc3]442entry:443 %add = call i8 @llvm.uadd.sat.i8(i8 %a, i8 %b)444 ret i8 %add445}446 447define i16 @addflag16rr(i16 noundef %a, i16 noundef %b) {448; CHECK-LABEL: addflag16rr:449; CHECK: # %bb.0: # %entry450; CHECK-NEXT: addw %si, %di, %ax # encoding: [0x62,0xf4,0x7d,0x18,0x01,0xf7]451; CHECK-NEXT: movl $65535, %ecx # encoding: [0xb9,0xff,0xff,0x00,0x00]452; CHECK-NEXT: # imm = 0xFFFF453; CHECK-NEXT: cmovbl %ecx, %eax # EVEX TO LEGACY Compression encoding: [0x0f,0x42,0xc1]454; CHECK-NEXT: # kill: def $ax killed $ax killed $eax455; CHECK-NEXT: retq # encoding: [0xc3]456;457; NF-LABEL: addflag16rr:458; NF: # %bb.0: # %entry459; NF-NEXT: addw %si, %di, %ax # encoding: [0x62,0xf4,0x7d,0x18,0x01,0xf7]460; NF-NEXT: movl $65535, %ecx # encoding: [0xb9,0xff,0xff,0x00,0x00]461; NF-NEXT: # imm = 0xFFFF462; NF-NEXT: cmovbl %ecx, %eax # EVEX TO LEGACY Compression encoding: [0x0f,0x42,0xc1]463; NF-NEXT: # kill: def $ax killed $ax killed $eax464; NF-NEXT: retq # encoding: [0xc3]465entry:466 %add = call i16 @llvm.uadd.sat.i16(i16 %a, i16 %b)467 ret i16 %add468}469 470define i32 @addflag32rr(i32 noundef %a, i32 noundef %b) {471; CHECK-LABEL: addflag32rr:472; CHECK: # %bb.0: # %entry473; CHECK-NEXT: addl %esi, %edi, %eax # encoding: [0x62,0xf4,0x7c,0x18,0x01,0xf7]474; CHECK-NEXT: movl $-1, %ecx # encoding: [0xb9,0xff,0xff,0xff,0xff]475; CHECK-NEXT: cmovbl %ecx, %eax # EVEX TO LEGACY Compression encoding: [0x0f,0x42,0xc1]476; CHECK-NEXT: retq # encoding: [0xc3]477;478; NF-LABEL: addflag32rr:479; NF: # %bb.0: # %entry480; NF-NEXT: addl %esi, %edi, %eax # encoding: [0x62,0xf4,0x7c,0x18,0x01,0xf7]481; NF-NEXT: movl $-1, %ecx # encoding: [0xb9,0xff,0xff,0xff,0xff]482; NF-NEXT: cmovbl %ecx, %eax # EVEX TO LEGACY Compression encoding: [0x0f,0x42,0xc1]483; NF-NEXT: retq # encoding: [0xc3]484entry:485 %add = call i32 @llvm.uadd.sat.i32(i32 %a, i32 %b)486 ret i32 %add487}488 489define i64 @addflag64rr(i64 noundef %a, i64 noundef %b) {490; CHECK-LABEL: addflag64rr:491; CHECK: # %bb.0: # %entry492; CHECK-NEXT: addq %rsi, %rdi, %rax # encoding: [0x62,0xf4,0xfc,0x18,0x01,0xf7]493; CHECK-NEXT: movq $-1, %rcx # encoding: [0x48,0xc7,0xc1,0xff,0xff,0xff,0xff]494; CHECK-NEXT: cmovbq %rcx, %rax # EVEX TO LEGACY Compression encoding: [0x48,0x0f,0x42,0xc1]495; CHECK-NEXT: retq # encoding: [0xc3]496;497; NF-LABEL: addflag64rr:498; NF: # %bb.0: # %entry499; NF-NEXT: addq %rsi, %rdi, %rax # encoding: [0x62,0xf4,0xfc,0x18,0x01,0xf7]500; NF-NEXT: movq $-1, %rcx # encoding: [0x48,0xc7,0xc1,0xff,0xff,0xff,0xff]501; NF-NEXT: cmovbq %rcx, %rax # EVEX TO LEGACY Compression encoding: [0x48,0x0f,0x42,0xc1]502; NF-NEXT: retq # encoding: [0xc3]503entry:504 %add = call i64 @llvm.uadd.sat.i64(i64 %a, i64 %b)505 ret i64 %add506}507 508define i8 @addflag8rm(i8 noundef %a, ptr %b) {509; CHECK-LABEL: addflag8rm:510; CHECK: # %bb.0: # %entry511; CHECK-NEXT: addb (%rsi), %dil, %al # encoding: [0x62,0xf4,0x7c,0x18,0x02,0x3e]512; CHECK-NEXT: movzbl %al, %eax # encoding: [0x0f,0xb6,0xc0]513; CHECK-NEXT: movl $255, %ecx # encoding: [0xb9,0xff,0x00,0x00,0x00]514; CHECK-NEXT: cmovbl %ecx, %eax # EVEX TO LEGACY Compression encoding: [0x0f,0x42,0xc1]515; CHECK-NEXT: # kill: def $al killed $al killed $eax516; CHECK-NEXT: retq # encoding: [0xc3]517;518; NF-LABEL: addflag8rm:519; NF: # %bb.0: # %entry520; NF-NEXT: addb (%rsi), %dil, %al # encoding: [0x62,0xf4,0x7c,0x18,0x02,0x3e]521; NF-NEXT: movzbl %al, %eax # encoding: [0x0f,0xb6,0xc0]522; NF-NEXT: movl $255, %ecx # encoding: [0xb9,0xff,0x00,0x00,0x00]523; NF-NEXT: cmovbl %ecx, %eax # EVEX TO LEGACY Compression encoding: [0x0f,0x42,0xc1]524; NF-NEXT: # kill: def $al killed $al killed $eax525; NF-NEXT: retq # encoding: [0xc3]526entry:527 %t = load i8, ptr %b528 %add = call i8 @llvm.uadd.sat.i8(i8 %a, i8 %t)529 ret i8 %add530}531 532define i16 @addflag16rm(i16 noundef %a, ptr %b) {533; CHECK-LABEL: addflag16rm:534; CHECK: # %bb.0: # %entry535; CHECK-NEXT: addw (%rsi), %di, %ax # encoding: [0x62,0xf4,0x7d,0x18,0x03,0x3e]536; CHECK-NEXT: movl $65535, %ecx # encoding: [0xb9,0xff,0xff,0x00,0x00]537; CHECK-NEXT: # imm = 0xFFFF538; CHECK-NEXT: cmovbl %ecx, %eax # EVEX TO LEGACY Compression encoding: [0x0f,0x42,0xc1]539; CHECK-NEXT: # kill: def $ax killed $ax killed $eax540; CHECK-NEXT: retq # encoding: [0xc3]541;542; NF-LABEL: addflag16rm:543; NF: # %bb.0: # %entry544; NF-NEXT: addw (%rsi), %di, %ax # encoding: [0x62,0xf4,0x7d,0x18,0x03,0x3e]545; NF-NEXT: movl $65535, %ecx # encoding: [0xb9,0xff,0xff,0x00,0x00]546; NF-NEXT: # imm = 0xFFFF547; NF-NEXT: cmovbl %ecx, %eax # EVEX TO LEGACY Compression encoding: [0x0f,0x42,0xc1]548; NF-NEXT: # kill: def $ax killed $ax killed $eax549; NF-NEXT: retq # encoding: [0xc3]550entry:551 %t = load i16, ptr %b552 %add = call i16 @llvm.uadd.sat.i16(i16 %a, i16 %t)553 ret i16 %add554}555 556define i32 @addflag32rm(i32 noundef %a, ptr %b) {557; CHECK-LABEL: addflag32rm:558; CHECK: # %bb.0: # %entry559; CHECK-NEXT: addl (%rsi), %edi, %eax # encoding: [0x62,0xf4,0x7c,0x18,0x03,0x3e]560; CHECK-NEXT: movl $-1, %ecx # encoding: [0xb9,0xff,0xff,0xff,0xff]561; CHECK-NEXT: cmovbl %ecx, %eax # EVEX TO LEGACY Compression encoding: [0x0f,0x42,0xc1]562; CHECK-NEXT: retq # encoding: [0xc3]563;564; NF-LABEL: addflag32rm:565; NF: # %bb.0: # %entry566; NF-NEXT: addl (%rsi), %edi, %eax # encoding: [0x62,0xf4,0x7c,0x18,0x03,0x3e]567; NF-NEXT: movl $-1, %ecx # encoding: [0xb9,0xff,0xff,0xff,0xff]568; NF-NEXT: cmovbl %ecx, %eax # EVEX TO LEGACY Compression encoding: [0x0f,0x42,0xc1]569; NF-NEXT: retq # encoding: [0xc3]570entry:571 %t = load i32, ptr %b572 %add = call i32 @llvm.uadd.sat.i32(i32 %a, i32 %t)573 ret i32 %add574}575 576define i64 @addflag64rm(i64 noundef %a, ptr %b) {577; CHECK-LABEL: addflag64rm:578; CHECK: # %bb.0: # %entry579; CHECK-NEXT: addq (%rsi), %rdi, %rax # encoding: [0x62,0xf4,0xfc,0x18,0x03,0x3e]580; CHECK-NEXT: movq $-1, %rcx # encoding: [0x48,0xc7,0xc1,0xff,0xff,0xff,0xff]581; CHECK-NEXT: cmovbq %rcx, %rax # EVEX TO LEGACY Compression encoding: [0x48,0x0f,0x42,0xc1]582; CHECK-NEXT: retq # encoding: [0xc3]583;584; NF-LABEL: addflag64rm:585; NF: # %bb.0: # %entry586; NF-NEXT: addq (%rsi), %rdi, %rax # encoding: [0x62,0xf4,0xfc,0x18,0x03,0x3e]587; NF-NEXT: movq $-1, %rcx # encoding: [0x48,0xc7,0xc1,0xff,0xff,0xff,0xff]588; NF-NEXT: cmovbq %rcx, %rax # EVEX TO LEGACY Compression encoding: [0x48,0x0f,0x42,0xc1]589; NF-NEXT: retq # encoding: [0xc3]590entry:591 %t = load i64, ptr %b592 %add = call i64 @llvm.uadd.sat.i64(i64 %a, i64 %t)593 ret i64 %add594}595 596define i16 @addflag16ri8(i16 noundef %a) {597; CHECK-LABEL: addflag16ri8:598; CHECK: # %bb.0: # %entry599; CHECK-NEXT: addw $123, %di, %ax # encoding: [0x62,0xf4,0x7d,0x18,0x83,0xc7,0x7b]600; CHECK-NEXT: movl $65535, %ecx # encoding: [0xb9,0xff,0xff,0x00,0x00]601; CHECK-NEXT: # imm = 0xFFFF602; CHECK-NEXT: cmovbl %ecx, %eax # EVEX TO LEGACY Compression encoding: [0x0f,0x42,0xc1]603; CHECK-NEXT: # kill: def $ax killed $ax killed $eax604; CHECK-NEXT: retq # encoding: [0xc3]605;606; NF-LABEL: addflag16ri8:607; NF: # %bb.0: # %entry608; NF-NEXT: addw $123, %di, %ax # encoding: [0x62,0xf4,0x7d,0x18,0x83,0xc7,0x7b]609; NF-NEXT: movl $65535, %ecx # encoding: [0xb9,0xff,0xff,0x00,0x00]610; NF-NEXT: # imm = 0xFFFF611; NF-NEXT: cmovbl %ecx, %eax # EVEX TO LEGACY Compression encoding: [0x0f,0x42,0xc1]612; NF-NEXT: # kill: def $ax killed $ax killed $eax613; NF-NEXT: retq # encoding: [0xc3]614entry:615 %add = call i16 @llvm.uadd.sat.i16(i16 %a, i16 123)616 ret i16 %add617}618 619define i32 @addflag32ri8(i32 noundef %a) {620; CHECK-LABEL: addflag32ri8:621; CHECK: # %bb.0: # %entry622; CHECK-NEXT: addl $123, %edi, %eax # encoding: [0x62,0xf4,0x7c,0x18,0x83,0xc7,0x7b]623; CHECK-NEXT: movl $-1, %ecx # encoding: [0xb9,0xff,0xff,0xff,0xff]624; CHECK-NEXT: cmovbl %ecx, %eax # EVEX TO LEGACY Compression encoding: [0x0f,0x42,0xc1]625; CHECK-NEXT: retq # encoding: [0xc3]626;627; NF-LABEL: addflag32ri8:628; NF: # %bb.0: # %entry629; NF-NEXT: addl $123, %edi, %eax # encoding: [0x62,0xf4,0x7c,0x18,0x83,0xc7,0x7b]630; NF-NEXT: movl $-1, %ecx # encoding: [0xb9,0xff,0xff,0xff,0xff]631; NF-NEXT: cmovbl %ecx, %eax # EVEX TO LEGACY Compression encoding: [0x0f,0x42,0xc1]632; NF-NEXT: retq # encoding: [0xc3]633entry:634 %add = call i32 @llvm.uadd.sat.i32(i32 %a, i32 123)635 ret i32 %add636}637 638define i64 @addflag64ri8(i64 noundef %a) {639; CHECK-LABEL: addflag64ri8:640; CHECK: # %bb.0: # %entry641; CHECK-NEXT: addq $123, %rdi, %rax # encoding: [0x62,0xf4,0xfc,0x18,0x83,0xc7,0x7b]642; CHECK-NEXT: movq $-1, %rcx # encoding: [0x48,0xc7,0xc1,0xff,0xff,0xff,0xff]643; CHECK-NEXT: cmovbq %rcx, %rax # EVEX TO LEGACY Compression encoding: [0x48,0x0f,0x42,0xc1]644; CHECK-NEXT: retq # encoding: [0xc3]645;646; NF-LABEL: addflag64ri8:647; NF: # %bb.0: # %entry648; NF-NEXT: addq $123, %rdi, %rax # encoding: [0x62,0xf4,0xfc,0x18,0x83,0xc7,0x7b]649; NF-NEXT: movq $-1, %rcx # encoding: [0x48,0xc7,0xc1,0xff,0xff,0xff,0xff]650; NF-NEXT: cmovbq %rcx, %rax # EVEX TO LEGACY Compression encoding: [0x48,0x0f,0x42,0xc1]651; NF-NEXT: retq # encoding: [0xc3]652entry:653 %add = call i64 @llvm.uadd.sat.i64(i64 %a, i64 123)654 ret i64 %add655}656 657define i8 @addflag8ri(i8 noundef %a) {658; CHECK-LABEL: addflag8ri:659; CHECK: # %bb.0: # %entry660; CHECK-NEXT: addb $123, %dil, %al # encoding: [0x62,0xf4,0x7c,0x18,0x80,0xc7,0x7b]661; CHECK-NEXT: movzbl %al, %eax # encoding: [0x0f,0xb6,0xc0]662; CHECK-NEXT: movl $255, %ecx # encoding: [0xb9,0xff,0x00,0x00,0x00]663; CHECK-NEXT: cmovbl %ecx, %eax # EVEX TO LEGACY Compression encoding: [0x0f,0x42,0xc1]664; CHECK-NEXT: # kill: def $al killed $al killed $eax665; CHECK-NEXT: retq # encoding: [0xc3]666;667; NF-LABEL: addflag8ri:668; NF: # %bb.0: # %entry669; NF-NEXT: addb $123, %dil, %al # encoding: [0x62,0xf4,0x7c,0x18,0x80,0xc7,0x7b]670; NF-NEXT: movzbl %al, %eax # encoding: [0x0f,0xb6,0xc0]671; NF-NEXT: movl $255, %ecx # encoding: [0xb9,0xff,0x00,0x00,0x00]672; NF-NEXT: cmovbl %ecx, %eax # EVEX TO LEGACY Compression encoding: [0x0f,0x42,0xc1]673; NF-NEXT: # kill: def $al killed $al killed $eax674; NF-NEXT: retq # encoding: [0xc3]675entry:676 %add = call i8 @llvm.uadd.sat.i8(i8 %a, i8 123)677 ret i8 %add678}679 680define i16 @addflag16ri(i16 noundef %a) {681; CHECK-LABEL: addflag16ri:682; CHECK: # %bb.0: # %entry683; CHECK-NEXT: addw $1234, %di, %ax # encoding: [0x62,0xf4,0x7d,0x18,0x81,0xc7,0xd2,0x04]684; CHECK-NEXT: # imm = 0x4D2685; CHECK-NEXT: movl $65535, %ecx # encoding: [0xb9,0xff,0xff,0x00,0x00]686; CHECK-NEXT: # imm = 0xFFFF687; CHECK-NEXT: cmovbl %ecx, %eax # EVEX TO LEGACY Compression encoding: [0x0f,0x42,0xc1]688; CHECK-NEXT: # kill: def $ax killed $ax killed $eax689; CHECK-NEXT: retq # encoding: [0xc3]690;691; NF-LABEL: addflag16ri:692; NF: # %bb.0: # %entry693; NF-NEXT: addw $1234, %di, %ax # encoding: [0x62,0xf4,0x7d,0x18,0x81,0xc7,0xd2,0x04]694; NF-NEXT: # imm = 0x4D2695; NF-NEXT: movl $65535, %ecx # encoding: [0xb9,0xff,0xff,0x00,0x00]696; NF-NEXT: # imm = 0xFFFF697; NF-NEXT: cmovbl %ecx, %eax # EVEX TO LEGACY Compression encoding: [0x0f,0x42,0xc1]698; NF-NEXT: # kill: def $ax killed $ax killed $eax699; NF-NEXT: retq # encoding: [0xc3]700entry:701 %add = call i16 @llvm.uadd.sat.i16(i16 %a, i16 1234)702 ret i16 %add703}704 705define i32 @addflag32ri(i32 noundef %a) {706; CHECK-LABEL: addflag32ri:707; CHECK: # %bb.0: # %entry708; CHECK-NEXT: addl $123456, %edi, %eax # encoding: [0x62,0xf4,0x7c,0x18,0x81,0xc7,0x40,0xe2,0x01,0x00]709; CHECK-NEXT: # imm = 0x1E240710; CHECK-NEXT: movl $-1, %ecx # encoding: [0xb9,0xff,0xff,0xff,0xff]711; CHECK-NEXT: cmovbl %ecx, %eax # EVEX TO LEGACY Compression encoding: [0x0f,0x42,0xc1]712; CHECK-NEXT: retq # encoding: [0xc3]713;714; NF-LABEL: addflag32ri:715; NF: # %bb.0: # %entry716; NF-NEXT: addl $123456, %edi, %eax # encoding: [0x62,0xf4,0x7c,0x18,0x81,0xc7,0x40,0xe2,0x01,0x00]717; NF-NEXT: # imm = 0x1E240718; NF-NEXT: movl $-1, %ecx # encoding: [0xb9,0xff,0xff,0xff,0xff]719; NF-NEXT: cmovbl %ecx, %eax # EVEX TO LEGACY Compression encoding: [0x0f,0x42,0xc1]720; NF-NEXT: retq # encoding: [0xc3]721entry:722 %add = call i32 @llvm.uadd.sat.i32(i32 %a, i32 123456)723 ret i32 %add724}725 726define i64 @addflag64ri(i64 noundef %a) {727; CHECK-LABEL: addflag64ri:728; CHECK: # %bb.0: # %entry729; CHECK-NEXT: addq $123456, %rdi, %rax # encoding: [0x62,0xf4,0xfc,0x18,0x81,0xc7,0x40,0xe2,0x01,0x00]730; CHECK-NEXT: # imm = 0x1E240731; CHECK-NEXT: movq $-1, %rcx # encoding: [0x48,0xc7,0xc1,0xff,0xff,0xff,0xff]732; CHECK-NEXT: cmovbq %rcx, %rax # EVEX TO LEGACY Compression encoding: [0x48,0x0f,0x42,0xc1]733; CHECK-NEXT: retq # encoding: [0xc3]734;735; NF-LABEL: addflag64ri:736; NF: # %bb.0: # %entry737; NF-NEXT: addq $123456, %rdi, %rax # encoding: [0x62,0xf4,0xfc,0x18,0x81,0xc7,0x40,0xe2,0x01,0x00]738; NF-NEXT: # imm = 0x1E240739; NF-NEXT: movq $-1, %rcx # encoding: [0x48,0xc7,0xc1,0xff,0xff,0xff,0xff]740; NF-NEXT: cmovbq %rcx, %rax # EVEX TO LEGACY Compression encoding: [0x48,0x0f,0x42,0xc1]741; NF-NEXT: retq # encoding: [0xc3]742entry:743 %add = call i64 @llvm.uadd.sat.i64(i64 %a, i64 123456)744 ret i64 %add745}746 747@val = external dso_local global i16, align 4748 749define i1 @add64ri_reloc(i16 %k) {750; CHECK-LABEL: add64ri_reloc:751; CHECK: # %bb.0:752; CHECK-NEXT: # kill: def $edi killed $edi def $rdi753; CHECK-NEXT: movswq %di, %rax # encoding: [0x48,0x0f,0xbf,0xc7]754; CHECK-NEXT: addq %rax, %rax # EVEX TO LEGACY Compression encoding: [0x48,0x01,0xc0]755; CHECK-NEXT: addq $val, %rax # EVEX TO LEGACY Compression encoding: [0x48,0x05,A,A,A,A]756; CHECK-NEXT: # fixup A - offset: 2, value: val, kind: reloc_signed_4byte757; CHECK-NEXT: setne %al # encoding: [0x0f,0x95,0xc0]758; CHECK-NEXT: retq # encoding: [0xc3]759;760; NF-LABEL: add64ri_reloc:761; NF: # %bb.0:762; NF-NEXT: # kill: def $edi killed $edi def $rdi763; NF-NEXT: movswq %di, %rax # encoding: [0x48,0x0f,0xbf,0xc7]764; NF-NEXT: addq %rax, %rax # EVEX TO LEGACY Compression encoding: [0x48,0x01,0xc0]765; NF-NEXT: addq $val, %rax # EVEX TO LEGACY Compression encoding: [0x48,0x05,A,A,A,A]766; NF-NEXT: # fixup A - offset: 2, value: val, kind: reloc_signed_4byte767; NF-NEXT: setne %al # encoding: [0x0f,0x95,0xc0]768; NF-NEXT: retq # encoding: [0xc3]769 %g = getelementptr inbounds i16, ptr @val, i16 %k770 %cmp = icmp ne ptr %g, null771 ret i1 %cmp772}773 774define void @add8mr_legacy(ptr %a, i8 noundef %b) {775; CHECK-LABEL: add8mr_legacy:776; CHECK: # %bb.0: # %entry777; CHECK-NEXT: addb %sil, (%rdi) # encoding: [0x40,0x00,0x37]778; CHECK-NEXT: retq # encoding: [0xc3]779;780; NF-LABEL: add8mr_legacy:781; NF: # %bb.0: # %entry782; NF-NEXT: addb %sil, (%rdi) # encoding: [0x40,0x00,0x37]783; NF-NEXT: retq # encoding: [0xc3]784entry:785 %t= load i8, ptr %a786 %add = add i8 %t, %b787 store i8 %add, ptr %a788 ret void789}790 791define void @add16mr_legacy(ptr %a, i16 noundef %b) {792; CHECK-LABEL: add16mr_legacy:793; CHECK: # %bb.0: # %entry794; CHECK-NEXT: addw %si, (%rdi) # encoding: [0x66,0x01,0x37]795; CHECK-NEXT: retq # encoding: [0xc3]796;797; NF-LABEL: add16mr_legacy:798; NF: # %bb.0: # %entry799; NF-NEXT: addw %si, (%rdi) # encoding: [0x66,0x01,0x37]800; NF-NEXT: retq # encoding: [0xc3]801entry:802 %t= load i16, ptr %a803 %add = add i16 %t, %b804 store i16 %add, ptr %a805 ret void806}807 808define void @add32mr_legacy(ptr %a, i32 noundef %b) {809; CHECK-LABEL: add32mr_legacy:810; CHECK: # %bb.0: # %entry811; CHECK-NEXT: addl %esi, (%rdi) # encoding: [0x01,0x37]812; CHECK-NEXT: retq # encoding: [0xc3]813;814; NF-LABEL: add32mr_legacy:815; NF: # %bb.0: # %entry816; NF-NEXT: addl %esi, (%rdi) # encoding: [0x01,0x37]817; NF-NEXT: retq # encoding: [0xc3]818entry:819 %t= load i32, ptr %a820 %add = add i32 %t, %b821 store i32 %add, ptr %a822 ret void823}824 825define void @add64mr_legacy(ptr %a, i64 noundef %b) {826; CHECK-LABEL: add64mr_legacy:827; CHECK: # %bb.0: # %entry828; CHECK-NEXT: addq %rsi, (%rdi) # encoding: [0x48,0x01,0x37]829; CHECK-NEXT: retq # encoding: [0xc3]830;831; NF-LABEL: add64mr_legacy:832; NF: # %bb.0: # %entry833; NF-NEXT: addq %rsi, (%rdi) # encoding: [0x48,0x01,0x37]834; NF-NEXT: retq # encoding: [0xc3]835entry:836 %t= load i64, ptr %a837 %add = add i64 %t, %b838 store i64 %add, ptr %a839 ret void840}841 842define void @add8mi_legacy(ptr %a) {843; CHECK-LABEL: add8mi_legacy:844; CHECK: # %bb.0: # %entry845; CHECK-NEXT: addb $123, (%rdi) # encoding: [0x80,0x07,0x7b]846; CHECK-NEXT: retq # encoding: [0xc3]847;848; NF-LABEL: add8mi_legacy:849; NF: # %bb.0: # %entry850; NF-NEXT: addb $123, (%rdi) # encoding: [0x80,0x07,0x7b]851; NF-NEXT: retq # encoding: [0xc3]852entry:853 %t= load i8, ptr %a854 %add = add nsw i8 %t, 123855 store i8 %add, ptr %a856 ret void857}858 859define void @add16mi_legacy(ptr %a) {860; CHECK-LABEL: add16mi_legacy:861; CHECK: # %bb.0: # %entry862; CHECK-NEXT: addw $1234, (%rdi) # encoding: [0x66,0x81,0x07,0xd2,0x04]863; CHECK-NEXT: # imm = 0x4D2864; CHECK-NEXT: retq # encoding: [0xc3]865;866; NF-LABEL: add16mi_legacy:867; NF: # %bb.0: # %entry868; NF-NEXT: addw $1234, (%rdi) # encoding: [0x66,0x81,0x07,0xd2,0x04]869; NF-NEXT: # imm = 0x4D2870; NF-NEXT: retq # encoding: [0xc3]871entry:872 %t= load i16, ptr %a873 %add = add nsw i16 %t, 1234874 store i16 %add, ptr %a875 ret void876}877 878define void @add32mi_legacy(ptr %a) {879; CHECK-LABEL: add32mi_legacy:880; CHECK: # %bb.0: # %entry881; CHECK-NEXT: addl $123456, (%rdi) # encoding: [0x81,0x07,0x40,0xe2,0x01,0x00]882; CHECK-NEXT: # imm = 0x1E240883; CHECK-NEXT: retq # encoding: [0xc3]884;885; NF-LABEL: add32mi_legacy:886; NF: # %bb.0: # %entry887; NF-NEXT: addl $123456, (%rdi) # encoding: [0x81,0x07,0x40,0xe2,0x01,0x00]888; NF-NEXT: # imm = 0x1E240889; NF-NEXT: retq # encoding: [0xc3]890entry:891 %t= load i32, ptr %a892 %add = add nsw i32 %t, 123456893 store i32 %add, ptr %a894 ret void895}896 897define void @add64mi_legacy(ptr %a) {898; CHECK-LABEL: add64mi_legacy:899; CHECK: # %bb.0: # %entry900; CHECK-NEXT: addq $123456, (%rdi) # encoding: [0x48,0x81,0x07,0x40,0xe2,0x01,0x00]901; CHECK-NEXT: # imm = 0x1E240902; CHECK-NEXT: retq # encoding: [0xc3]903;904; NF-LABEL: add64mi_legacy:905; NF: # %bb.0: # %entry906; NF-NEXT: addq $123456, (%rdi) # encoding: [0x48,0x81,0x07,0x40,0xe2,0x01,0x00]907; NF-NEXT: # imm = 0x1E240908; NF-NEXT: retq # encoding: [0xc3]909entry:910 %t= load i64, ptr %a911 %add = add nsw i64 %t, 123456912 store i64 %add, ptr %a913 ret void914}915