552 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -verify-machineinstrs -mtriple=x86_64-unknown-unknown --show-mc-encoding -mattr=+cmpccxadd | FileCheck %s3; RUN: llc < %s -verify-machineinstrs -mtriple=x86_64-unknown-unknown --show-mc-encoding -mattr=+cmpccxadd,+egpr | FileCheck %s --check-prefix=EGPR4 5define dso_local i32 @test_cmpbexadd32(ptr %__A, i32 %__B, i32 %__C) nounwind {6; CHECK-LABEL: test_cmpbexadd32:7; CHECK: # %bb.0: # %entry8; CHECK-NEXT: movl %esi, %eax # encoding: [0x89,0xf0]9; CHECK-NEXT: cmpoxadd %edx, %eax, (%rdi) # encoding: [0xc4,0xe2,0x69,0xe0,0x07]10; CHECK-NEXT: retq # encoding: [0xc3]11;12; EGPR-LABEL: test_cmpbexadd32:13; EGPR: # %bb.0: # %entry14; EGPR-NEXT: movl %esi, %eax # encoding: [0x89,0xf0]15; EGPR-NEXT: cmpoxadd %edx, %eax, (%rdi) # EVEX TO VEX Compression encoding: [0xc4,0xe2,0x69,0xe0,0x07]16; EGPR-NEXT: retq # encoding: [0xc3]17entry:18 %0 = tail call i32 @llvm.x86.cmpccxadd32(ptr %__A, i32 %__B, i32 %__C, i32 0)19 ret i32 %020}21 22declare i32 @llvm.x86.cmpccxadd32(ptr, i32, i32, i32 immarg)23 24define dso_local i64 @test_cmpbexadd64(ptr %__A, i64 %__B, i64 %__C) nounwind {25; CHECK-LABEL: test_cmpbexadd64:26; CHECK: # %bb.0: # %entry27; CHECK-NEXT: movq %rsi, %rax # encoding: [0x48,0x89,0xf0]28; CHECK-NEXT: cmpoxadd %rdx, %rax, (%rdi) # encoding: [0xc4,0xe2,0xe9,0xe0,0x07]29; CHECK-NEXT: retq # encoding: [0xc3]30;31; EGPR-LABEL: test_cmpbexadd64:32; EGPR: # %bb.0: # %entry33; EGPR-NEXT: movq %rsi, %rax # encoding: [0x48,0x89,0xf0]34; EGPR-NEXT: cmpoxadd %rdx, %rax, (%rdi) # EVEX TO VEX Compression encoding: [0xc4,0xe2,0xe9,0xe0,0x07]35; EGPR-NEXT: retq # encoding: [0xc3]36entry:37 %0 = tail call i64 @llvm.x86.cmpccxadd64(ptr %__A, i64 %__B, i64 %__C, i32 0)38 ret i64 %039}40 41declare i64 @llvm.x86.cmpccxadd64(ptr, i64, i64, i32 immarg)42 43define dso_local i32 @test_cmpbxadd32(ptr %__A, i32 %__B, i32 %__C) nounwind {44; CHECK-LABEL: test_cmpbxadd32:45; CHECK: # %bb.0: # %entry46; CHECK-NEXT: movl %esi, %eax # encoding: [0x89,0xf0]47; CHECK-NEXT: cmpnoxadd %edx, %eax, (%rdi) # encoding: [0xc4,0xe2,0x69,0xe1,0x07]48; CHECK-NEXT: retq # encoding: [0xc3]49;50; EGPR-LABEL: test_cmpbxadd32:51; EGPR: # %bb.0: # %entry52; EGPR-NEXT: movl %esi, %eax # encoding: [0x89,0xf0]53; EGPR-NEXT: cmpnoxadd %edx, %eax, (%rdi) # EVEX TO VEX Compression encoding: [0xc4,0xe2,0x69,0xe1,0x07]54; EGPR-NEXT: retq # encoding: [0xc3]55entry:56 %0 = tail call i32 @llvm.x86.cmpccxadd32(ptr %__A, i32 %__B, i32 %__C, i32 1)57 ret i32 %058}59 60define dso_local i64 @test_cmpbxadd64(ptr %__A, i64 %__B, i64 %__C) nounwind {61; CHECK-LABEL: test_cmpbxadd64:62; CHECK: # %bb.0: # %entry63; CHECK-NEXT: movq %rsi, %rax # encoding: [0x48,0x89,0xf0]64; CHECK-NEXT: cmpnoxadd %rdx, %rax, (%rdi) # encoding: [0xc4,0xe2,0xe9,0xe1,0x07]65; CHECK-NEXT: retq # encoding: [0xc3]66;67; EGPR-LABEL: test_cmpbxadd64:68; EGPR: # %bb.0: # %entry69; EGPR-NEXT: movq %rsi, %rax # encoding: [0x48,0x89,0xf0]70; EGPR-NEXT: cmpnoxadd %rdx, %rax, (%rdi) # EVEX TO VEX Compression encoding: [0xc4,0xe2,0xe9,0xe1,0x07]71; EGPR-NEXT: retq # encoding: [0xc3]72entry:73 %0 = tail call i64 @llvm.x86.cmpccxadd64(ptr %__A, i64 %__B, i64 %__C, i32 1)74 ret i64 %075}76 77define dso_local i32 @test_cmplexadd32(ptr %__A, i32 %__B, i32 %__C) nounwind {78; CHECK-LABEL: test_cmplexadd32:79; CHECK: # %bb.0: # %entry80; CHECK-NEXT: movl %esi, %eax # encoding: [0x89,0xf0]81; CHECK-NEXT: cmpbxadd %edx, %eax, (%rdi) # encoding: [0xc4,0xe2,0x69,0xe2,0x07]82; CHECK-NEXT: retq # encoding: [0xc3]83;84; EGPR-LABEL: test_cmplexadd32:85; EGPR: # %bb.0: # %entry86; EGPR-NEXT: movl %esi, %eax # encoding: [0x89,0xf0]87; EGPR-NEXT: cmpbxadd %edx, %eax, (%rdi) # EVEX TO VEX Compression encoding: [0xc4,0xe2,0x69,0xe2,0x07]88; EGPR-NEXT: retq # encoding: [0xc3]89entry:90 %0 = tail call i32 @llvm.x86.cmpccxadd32(ptr %__A, i32 %__B, i32 %__C, i32 2)91 ret i32 %092}93 94define dso_local i64 @test_cmplexadd64(ptr %__A, i64 %__B, i64 %__C) nounwind {95; CHECK-LABEL: test_cmplexadd64:96; CHECK: # %bb.0: # %entry97; CHECK-NEXT: movq %rsi, %rax # encoding: [0x48,0x89,0xf0]98; CHECK-NEXT: cmpbxadd %rdx, %rax, (%rdi) # encoding: [0xc4,0xe2,0xe9,0xe2,0x07]99; CHECK-NEXT: retq # encoding: [0xc3]100;101; EGPR-LABEL: test_cmplexadd64:102; EGPR: # %bb.0: # %entry103; EGPR-NEXT: movq %rsi, %rax # encoding: [0x48,0x89,0xf0]104; EGPR-NEXT: cmpbxadd %rdx, %rax, (%rdi) # EVEX TO VEX Compression encoding: [0xc4,0xe2,0xe9,0xe2,0x07]105; EGPR-NEXT: retq # encoding: [0xc3]106entry:107 %0 = tail call i64 @llvm.x86.cmpccxadd64(ptr %__A, i64 %__B, i64 %__C, i32 2)108 ret i64 %0109}110 111define dso_local i32 @test_cmplxadd32(ptr %__A, i32 %__B, i32 %__C) nounwind {112; CHECK-LABEL: test_cmplxadd32:113; CHECK: # %bb.0: # %entry114; CHECK-NEXT: movl %esi, %eax # encoding: [0x89,0xf0]115; CHECK-NEXT: cmpaexadd %edx, %eax, (%rdi) # encoding: [0xc4,0xe2,0x69,0xe3,0x07]116; CHECK-NEXT: retq # encoding: [0xc3]117;118; EGPR-LABEL: test_cmplxadd32:119; EGPR: # %bb.0: # %entry120; EGPR-NEXT: movl %esi, %eax # encoding: [0x89,0xf0]121; EGPR-NEXT: cmpaexadd %edx, %eax, (%rdi) # EVEX TO VEX Compression encoding: [0xc4,0xe2,0x69,0xe3,0x07]122; EGPR-NEXT: retq # encoding: [0xc3]123entry:124 %0 = tail call i32 @llvm.x86.cmpccxadd32(ptr %__A, i32 %__B, i32 %__C, i32 3)125 ret i32 %0126}127 128define dso_local i64 @test_cmplxadd64(ptr %__A, i64 %__B, i64 %__C) nounwind {129; CHECK-LABEL: test_cmplxadd64:130; CHECK: # %bb.0: # %entry131; CHECK-NEXT: movq %rsi, %rax # encoding: [0x48,0x89,0xf0]132; CHECK-NEXT: cmpaexadd %rdx, %rax, (%rdi) # encoding: [0xc4,0xe2,0xe9,0xe3,0x07]133; CHECK-NEXT: retq # encoding: [0xc3]134;135; EGPR-LABEL: test_cmplxadd64:136; EGPR: # %bb.0: # %entry137; EGPR-NEXT: movq %rsi, %rax # encoding: [0x48,0x89,0xf0]138; EGPR-NEXT: cmpaexadd %rdx, %rax, (%rdi) # EVEX TO VEX Compression encoding: [0xc4,0xe2,0xe9,0xe3,0x07]139; EGPR-NEXT: retq # encoding: [0xc3]140entry:141 %0 = tail call i64 @llvm.x86.cmpccxadd64(ptr %__A, i64 %__B, i64 %__C, i32 3)142 ret i64 %0143}144 145define dso_local i32 @test_cmpaxadd32(ptr %__A, i32 %__B, i32 %__C) nounwind {146; CHECK-LABEL: test_cmpaxadd32:147; CHECK: # %bb.0: # %entry148; CHECK-NEXT: movl %esi, %eax # encoding: [0x89,0xf0]149; CHECK-NEXT: cmpexadd %edx, %eax, (%rdi) # encoding: [0xc4,0xe2,0x69,0xe4,0x07]150; CHECK-NEXT: retq # encoding: [0xc3]151;152; EGPR-LABEL: test_cmpaxadd32:153; EGPR: # %bb.0: # %entry154; EGPR-NEXT: movl %esi, %eax # encoding: [0x89,0xf0]155; EGPR-NEXT: cmpexadd %edx, %eax, (%rdi) # EVEX TO VEX Compression encoding: [0xc4,0xe2,0x69,0xe4,0x07]156; EGPR-NEXT: retq # encoding: [0xc3]157entry:158 %0 = tail call i32 @llvm.x86.cmpccxadd32(ptr %__A, i32 %__B, i32 %__C, i32 4)159 ret i32 %0160}161 162define dso_local i64 @test_cmpaxadd64(ptr %__A, i64 %__B, i64 %__C) nounwind {163; CHECK-LABEL: test_cmpaxadd64:164; CHECK: # %bb.0: # %entry165; CHECK-NEXT: movq %rsi, %rax # encoding: [0x48,0x89,0xf0]166; CHECK-NEXT: cmpexadd %rdx, %rax, (%rdi) # encoding: [0xc4,0xe2,0xe9,0xe4,0x07]167; CHECK-NEXT: retq # encoding: [0xc3]168;169; EGPR-LABEL: test_cmpaxadd64:170; EGPR: # %bb.0: # %entry171; EGPR-NEXT: movq %rsi, %rax # encoding: [0x48,0x89,0xf0]172; EGPR-NEXT: cmpexadd %rdx, %rax, (%rdi) # EVEX TO VEX Compression encoding: [0xc4,0xe2,0xe9,0xe4,0x07]173; EGPR-NEXT: retq # encoding: [0xc3]174entry:175 %0 = tail call i64 @llvm.x86.cmpccxadd64(ptr %__A, i64 %__B, i64 %__C, i32 4)176 ret i64 %0177}178 179define dso_local i32 @test_cmpaexadd32(ptr %__A, i32 %__B, i32 %__C) nounwind {180; CHECK-LABEL: test_cmpaexadd32:181; CHECK: # %bb.0: # %entry182; CHECK-NEXT: movl %esi, %eax # encoding: [0x89,0xf0]183; CHECK-NEXT: cmpnexadd %edx, %eax, (%rdi) # encoding: [0xc4,0xe2,0x69,0xe5,0x07]184; CHECK-NEXT: retq # encoding: [0xc3]185;186; EGPR-LABEL: test_cmpaexadd32:187; EGPR: # %bb.0: # %entry188; EGPR-NEXT: movl %esi, %eax # encoding: [0x89,0xf0]189; EGPR-NEXT: cmpnexadd %edx, %eax, (%rdi) # EVEX TO VEX Compression encoding: [0xc4,0xe2,0x69,0xe5,0x07]190; EGPR-NEXT: retq # encoding: [0xc3]191entry:192 %0 = tail call i32 @llvm.x86.cmpccxadd32(ptr %__A, i32 %__B, i32 %__C, i32 5)193 ret i32 %0194}195 196define dso_local i64 @test_cmpaexadd64(ptr %__A, i64 %__B, i64 %__C) nounwind {197; CHECK-LABEL: test_cmpaexadd64:198; CHECK: # %bb.0: # %entry199; CHECK-NEXT: movq %rsi, %rax # encoding: [0x48,0x89,0xf0]200; CHECK-NEXT: cmpnexadd %rdx, %rax, (%rdi) # encoding: [0xc4,0xe2,0xe9,0xe5,0x07]201; CHECK-NEXT: retq # encoding: [0xc3]202;203; EGPR-LABEL: test_cmpaexadd64:204; EGPR: # %bb.0: # %entry205; EGPR-NEXT: movq %rsi, %rax # encoding: [0x48,0x89,0xf0]206; EGPR-NEXT: cmpnexadd %rdx, %rax, (%rdi) # EVEX TO VEX Compression encoding: [0xc4,0xe2,0xe9,0xe5,0x07]207; EGPR-NEXT: retq # encoding: [0xc3]208entry:209 %0 = tail call i64 @llvm.x86.cmpccxadd64(ptr %__A, i64 %__B, i64 %__C, i32 5)210 ret i64 %0211}212 213define dso_local i32 @test_cmpgxadd32(ptr %__A, i32 %__B, i32 %__C) nounwind {214; CHECK-LABEL: test_cmpgxadd32:215; CHECK: # %bb.0: # %entry216; CHECK-NEXT: movl %esi, %eax # encoding: [0x89,0xf0]217; CHECK-NEXT: cmpbexadd %edx, %eax, (%rdi) # encoding: [0xc4,0xe2,0x69,0xe6,0x07]218; CHECK-NEXT: retq # encoding: [0xc3]219;220; EGPR-LABEL: test_cmpgxadd32:221; EGPR: # %bb.0: # %entry222; EGPR-NEXT: movl %esi, %eax # encoding: [0x89,0xf0]223; EGPR-NEXT: cmpbexadd %edx, %eax, (%rdi) # EVEX TO VEX Compression encoding: [0xc4,0xe2,0x69,0xe6,0x07]224; EGPR-NEXT: retq # encoding: [0xc3]225entry:226 %0 = tail call i32 @llvm.x86.cmpccxadd32(ptr %__A, i32 %__B, i32 %__C, i32 6)227 ret i32 %0228}229 230define dso_local i64 @test_cmpgxadd64(ptr %__A, i64 %__B, i64 %__C) nounwind {231; CHECK-LABEL: test_cmpgxadd64:232; CHECK: # %bb.0: # %entry233; CHECK-NEXT: movq %rsi, %rax # encoding: [0x48,0x89,0xf0]234; CHECK-NEXT: cmpbexadd %rdx, %rax, (%rdi) # encoding: [0xc4,0xe2,0xe9,0xe6,0x07]235; CHECK-NEXT: retq # encoding: [0xc3]236;237; EGPR-LABEL: test_cmpgxadd64:238; EGPR: # %bb.0: # %entry239; EGPR-NEXT: movq %rsi, %rax # encoding: [0x48,0x89,0xf0]240; EGPR-NEXT: cmpbexadd %rdx, %rax, (%rdi) # EVEX TO VEX Compression encoding: [0xc4,0xe2,0xe9,0xe6,0x07]241; EGPR-NEXT: retq # encoding: [0xc3]242entry:243 %0 = tail call i64 @llvm.x86.cmpccxadd64(ptr %__A, i64 %__B, i64 %__C, i32 6)244 ret i64 %0245}246 247define dso_local i32 @test_cmpgexadd32(ptr %__A, i32 %__B, i32 %__C) nounwind {248; CHECK-LABEL: test_cmpgexadd32:249; CHECK: # %bb.0: # %entry250; CHECK-NEXT: movl %esi, %eax # encoding: [0x89,0xf0]251; CHECK-NEXT: cmpaxadd %edx, %eax, (%rdi) # encoding: [0xc4,0xe2,0x69,0xe7,0x07]252; CHECK-NEXT: retq # encoding: [0xc3]253;254; EGPR-LABEL: test_cmpgexadd32:255; EGPR: # %bb.0: # %entry256; EGPR-NEXT: movl %esi, %eax # encoding: [0x89,0xf0]257; EGPR-NEXT: cmpaxadd %edx, %eax, (%rdi) # EVEX TO VEX Compression encoding: [0xc4,0xe2,0x69,0xe7,0x07]258; EGPR-NEXT: retq # encoding: [0xc3]259entry:260 %0 = tail call i32 @llvm.x86.cmpccxadd32(ptr %__A, i32 %__B, i32 %__C, i32 7)261 ret i32 %0262}263 264define dso_local i64 @test_cmpgexadd64(ptr %__A, i64 %__B, i64 %__C) nounwind {265; CHECK-LABEL: test_cmpgexadd64:266; CHECK: # %bb.0: # %entry267; CHECK-NEXT: movq %rsi, %rax # encoding: [0x48,0x89,0xf0]268; CHECK-NEXT: cmpaxadd %rdx, %rax, (%rdi) # encoding: [0xc4,0xe2,0xe9,0xe7,0x07]269; CHECK-NEXT: retq # encoding: [0xc3]270;271; EGPR-LABEL: test_cmpgexadd64:272; EGPR: # %bb.0: # %entry273; EGPR-NEXT: movq %rsi, %rax # encoding: [0x48,0x89,0xf0]274; EGPR-NEXT: cmpaxadd %rdx, %rax, (%rdi) # EVEX TO VEX Compression encoding: [0xc4,0xe2,0xe9,0xe7,0x07]275; EGPR-NEXT: retq # encoding: [0xc3]276entry:277 %0 = tail call i64 @llvm.x86.cmpccxadd64(ptr %__A, i64 %__B, i64 %__C, i32 7)278 ret i64 %0279}280 281define dso_local i32 @test_cmpnoxadd32(ptr %__A, i32 %__B, i32 %__C) nounwind {282; CHECK-LABEL: test_cmpnoxadd32:283; CHECK: # %bb.0: # %entry284; CHECK-NEXT: movl %esi, %eax # encoding: [0x89,0xf0]285; CHECK-NEXT: cmpsxadd %edx, %eax, (%rdi) # encoding: [0xc4,0xe2,0x69,0xe8,0x07]286; CHECK-NEXT: retq # encoding: [0xc3]287;288; EGPR-LABEL: test_cmpnoxadd32:289; EGPR: # %bb.0: # %entry290; EGPR-NEXT: movl %esi, %eax # encoding: [0x89,0xf0]291; EGPR-NEXT: cmpsxadd %edx, %eax, (%rdi) # EVEX TO VEX Compression encoding: [0xc4,0xe2,0x69,0xe8,0x07]292; EGPR-NEXT: retq # encoding: [0xc3]293entry:294 %0 = tail call i32 @llvm.x86.cmpccxadd32(ptr %__A, i32 %__B, i32 %__C, i32 8)295 ret i32 %0296}297 298define dso_local i64 @test_cmpnoxadd64(ptr %__A, i64 %__B, i64 %__C) nounwind {299; CHECK-LABEL: test_cmpnoxadd64:300; CHECK: # %bb.0: # %entry301; CHECK-NEXT: movq %rsi, %rax # encoding: [0x48,0x89,0xf0]302; CHECK-NEXT: cmpsxadd %rdx, %rax, (%rdi) # encoding: [0xc4,0xe2,0xe9,0xe8,0x07]303; CHECK-NEXT: retq # encoding: [0xc3]304;305; EGPR-LABEL: test_cmpnoxadd64:306; EGPR: # %bb.0: # %entry307; EGPR-NEXT: movq %rsi, %rax # encoding: [0x48,0x89,0xf0]308; EGPR-NEXT: cmpsxadd %rdx, %rax, (%rdi) # EVEX TO VEX Compression encoding: [0xc4,0xe2,0xe9,0xe8,0x07]309; EGPR-NEXT: retq # encoding: [0xc3]310entry:311 %0 = tail call i64 @llvm.x86.cmpccxadd64(ptr %__A, i64 %__B, i64 %__C, i32 8)312 ret i64 %0313}314 315define dso_local i32 @test_cmpnpxadd32(ptr %__A, i32 %__B, i32 %__C) nounwind {316; CHECK-LABEL: test_cmpnpxadd32:317; CHECK: # %bb.0: # %entry318; CHECK-NEXT: movl %esi, %eax # encoding: [0x89,0xf0]319; CHECK-NEXT: cmpnsxadd %edx, %eax, (%rdi) # encoding: [0xc4,0xe2,0x69,0xe9,0x07]320; CHECK-NEXT: retq # encoding: [0xc3]321;322; EGPR-LABEL: test_cmpnpxadd32:323; EGPR: # %bb.0: # %entry324; EGPR-NEXT: movl %esi, %eax # encoding: [0x89,0xf0]325; EGPR-NEXT: cmpnsxadd %edx, %eax, (%rdi) # EVEX TO VEX Compression encoding: [0xc4,0xe2,0x69,0xe9,0x07]326; EGPR-NEXT: retq # encoding: [0xc3]327entry:328 %0 = tail call i32 @llvm.x86.cmpccxadd32(ptr %__A, i32 %__B, i32 %__C, i32 9)329 ret i32 %0330}331 332define dso_local i64 @test_cmpnpxadd64(ptr %__A, i64 %__B, i64 %__C) nounwind {333; CHECK-LABEL: test_cmpnpxadd64:334; CHECK: # %bb.0: # %entry335; CHECK-NEXT: movq %rsi, %rax # encoding: [0x48,0x89,0xf0]336; CHECK-NEXT: cmpnsxadd %rdx, %rax, (%rdi) # encoding: [0xc4,0xe2,0xe9,0xe9,0x07]337; CHECK-NEXT: retq # encoding: [0xc3]338;339; EGPR-LABEL: test_cmpnpxadd64:340; EGPR: # %bb.0: # %entry341; EGPR-NEXT: movq %rsi, %rax # encoding: [0x48,0x89,0xf0]342; EGPR-NEXT: cmpnsxadd %rdx, %rax, (%rdi) # EVEX TO VEX Compression encoding: [0xc4,0xe2,0xe9,0xe9,0x07]343; EGPR-NEXT: retq # encoding: [0xc3]344entry:345 %0 = tail call i64 @llvm.x86.cmpccxadd64(ptr %__A, i64 %__B, i64 %__C, i32 9)346 ret i64 %0347}348 349define dso_local i32 @test_cmpnsxadd32(ptr %__A, i32 %__B, i32 %__C) nounwind {350; CHECK-LABEL: test_cmpnsxadd32:351; CHECK: # %bb.0: # %entry352; CHECK-NEXT: movl %esi, %eax # encoding: [0x89,0xf0]353; CHECK-NEXT: cmppxadd %edx, %eax, (%rdi) # encoding: [0xc4,0xe2,0x69,0xea,0x07]354; CHECK-NEXT: retq # encoding: [0xc3]355;356; EGPR-LABEL: test_cmpnsxadd32:357; EGPR: # %bb.0: # %entry358; EGPR-NEXT: movl %esi, %eax # encoding: [0x89,0xf0]359; EGPR-NEXT: cmppxadd %edx, %eax, (%rdi) # EVEX TO VEX Compression encoding: [0xc4,0xe2,0x69,0xea,0x07]360; EGPR-NEXT: retq # encoding: [0xc3]361entry:362 %0 = tail call i32 @llvm.x86.cmpccxadd32(ptr %__A, i32 %__B, i32 %__C, i32 10)363 ret i32 %0364}365 366define dso_local i64 @test_cmpnsxadd64(ptr %__A, i64 %__B, i64 %__C) nounwind {367; CHECK-LABEL: test_cmpnsxadd64:368; CHECK: # %bb.0: # %entry369; CHECK-NEXT: movq %rsi, %rax # encoding: [0x48,0x89,0xf0]370; CHECK-NEXT: cmppxadd %rdx, %rax, (%rdi) # encoding: [0xc4,0xe2,0xe9,0xea,0x07]371; CHECK-NEXT: retq # encoding: [0xc3]372;373; EGPR-LABEL: test_cmpnsxadd64:374; EGPR: # %bb.0: # %entry375; EGPR-NEXT: movq %rsi, %rax # encoding: [0x48,0x89,0xf0]376; EGPR-NEXT: cmppxadd %rdx, %rax, (%rdi) # EVEX TO VEX Compression encoding: [0xc4,0xe2,0xe9,0xea,0x07]377; EGPR-NEXT: retq # encoding: [0xc3]378entry:379 %0 = tail call i64 @llvm.x86.cmpccxadd64(ptr %__A, i64 %__B, i64 %__C, i32 10)380 ret i64 %0381}382 383define dso_local i32 @test_cmpnexadd32(ptr %__A, i32 %__B, i32 %__C) nounwind {384; CHECK-LABEL: test_cmpnexadd32:385; CHECK: # %bb.0: # %entry386; CHECK-NEXT: movl %esi, %eax # encoding: [0x89,0xf0]387; CHECK-NEXT: cmpnpxadd %edx, %eax, (%rdi) # encoding: [0xc4,0xe2,0x69,0xeb,0x07]388; CHECK-NEXT: retq # encoding: [0xc3]389;390; EGPR-LABEL: test_cmpnexadd32:391; EGPR: # %bb.0: # %entry392; EGPR-NEXT: movl %esi, %eax # encoding: [0x89,0xf0]393; EGPR-NEXT: cmpnpxadd %edx, %eax, (%rdi) # EVEX TO VEX Compression encoding: [0xc4,0xe2,0x69,0xeb,0x07]394; EGPR-NEXT: retq # encoding: [0xc3]395entry:396 %0 = tail call i32 @llvm.x86.cmpccxadd32(ptr %__A, i32 %__B, i32 %__C, i32 11)397 ret i32 %0398}399 400define dso_local i64 @test_cmpnexadd64(ptr %__A, i64 %__B, i64 %__C) nounwind {401; CHECK-LABEL: test_cmpnexadd64:402; CHECK: # %bb.0: # %entry403; CHECK-NEXT: movq %rsi, %rax # encoding: [0x48,0x89,0xf0]404; CHECK-NEXT: cmpnpxadd %rdx, %rax, (%rdi) # encoding: [0xc4,0xe2,0xe9,0xeb,0x07]405; CHECK-NEXT: retq # encoding: [0xc3]406;407; EGPR-LABEL: test_cmpnexadd64:408; EGPR: # %bb.0: # %entry409; EGPR-NEXT: movq %rsi, %rax # encoding: [0x48,0x89,0xf0]410; EGPR-NEXT: cmpnpxadd %rdx, %rax, (%rdi) # EVEX TO VEX Compression encoding: [0xc4,0xe2,0xe9,0xeb,0x07]411; EGPR-NEXT: retq # encoding: [0xc3]412entry:413 %0 = tail call i64 @llvm.x86.cmpccxadd64(ptr %__A, i64 %__B, i64 %__C, i32 11)414 ret i64 %0415}416 417define dso_local i32 @test_cmpoxadd32(ptr %__A, i32 %__B, i32 %__C) nounwind {418; CHECK-LABEL: test_cmpoxadd32:419; CHECK: # %bb.0: # %entry420; CHECK-NEXT: movl %esi, %eax # encoding: [0x89,0xf0]421; CHECK-NEXT: cmplxadd %edx, %eax, (%rdi) # encoding: [0xc4,0xe2,0x69,0xec,0x07]422; CHECK-NEXT: retq # encoding: [0xc3]423;424; EGPR-LABEL: test_cmpoxadd32:425; EGPR: # %bb.0: # %entry426; EGPR-NEXT: movl %esi, %eax # encoding: [0x89,0xf0]427; EGPR-NEXT: cmplxadd %edx, %eax, (%rdi) # EVEX TO VEX Compression encoding: [0xc4,0xe2,0x69,0xec,0x07]428; EGPR-NEXT: retq # encoding: [0xc3]429entry:430 %0 = tail call i32 @llvm.x86.cmpccxadd32(ptr %__A, i32 %__B, i32 %__C, i32 12)431 ret i32 %0432}433 434define dso_local i64 @test_cmpoxadd64(ptr %__A, i64 %__B, i64 %__C) nounwind {435; CHECK-LABEL: test_cmpoxadd64:436; CHECK: # %bb.0: # %entry437; CHECK-NEXT: movq %rsi, %rax # encoding: [0x48,0x89,0xf0]438; CHECK-NEXT: cmplxadd %rdx, %rax, (%rdi) # encoding: [0xc4,0xe2,0xe9,0xec,0x07]439; CHECK-NEXT: retq # encoding: [0xc3]440;441; EGPR-LABEL: test_cmpoxadd64:442; EGPR: # %bb.0: # %entry443; EGPR-NEXT: movq %rsi, %rax # encoding: [0x48,0x89,0xf0]444; EGPR-NEXT: cmplxadd %rdx, %rax, (%rdi) # EVEX TO VEX Compression encoding: [0xc4,0xe2,0xe9,0xec,0x07]445; EGPR-NEXT: retq # encoding: [0xc3]446entry:447 %0 = tail call i64 @llvm.x86.cmpccxadd64(ptr %__A, i64 %__B, i64 %__C, i32 12)448 ret i64 %0449}450 451define dso_local i32 @test_cmppxadd32(ptr %__A, i32 %__B, i32 %__C) nounwind {452; CHECK-LABEL: test_cmppxadd32:453; CHECK: # %bb.0: # %entry454; CHECK-NEXT: movl %esi, %eax # encoding: [0x89,0xf0]455; CHECK-NEXT: cmpgexadd %edx, %eax, (%rdi) # encoding: [0xc4,0xe2,0x69,0xed,0x07]456; CHECK-NEXT: retq # encoding: [0xc3]457;458; EGPR-LABEL: test_cmppxadd32:459; EGPR: # %bb.0: # %entry460; EGPR-NEXT: movl %esi, %eax # encoding: [0x89,0xf0]461; EGPR-NEXT: cmpgexadd %edx, %eax, (%rdi) # EVEX TO VEX Compression encoding: [0xc4,0xe2,0x69,0xed,0x07]462; EGPR-NEXT: retq # encoding: [0xc3]463entry:464 %0 = tail call i32 @llvm.x86.cmpccxadd32(ptr %__A, i32 %__B, i32 %__C, i32 13)465 ret i32 %0466}467 468define dso_local i64 @test_cmppxadd64(ptr %__A, i64 %__B, i64 %__C) nounwind {469; CHECK-LABEL: test_cmppxadd64:470; CHECK: # %bb.0: # %entry471; CHECK-NEXT: movq %rsi, %rax # encoding: [0x48,0x89,0xf0]472; CHECK-NEXT: cmpgexadd %rdx, %rax, (%rdi) # encoding: [0xc4,0xe2,0xe9,0xed,0x07]473; CHECK-NEXT: retq # encoding: [0xc3]474;475; EGPR-LABEL: test_cmppxadd64:476; EGPR: # %bb.0: # %entry477; EGPR-NEXT: movq %rsi, %rax # encoding: [0x48,0x89,0xf0]478; EGPR-NEXT: cmpgexadd %rdx, %rax, (%rdi) # EVEX TO VEX Compression encoding: [0xc4,0xe2,0xe9,0xed,0x07]479; EGPR-NEXT: retq # encoding: [0xc3]480entry:481 %0 = tail call i64 @llvm.x86.cmpccxadd64(ptr %__A, i64 %__B, i64 %__C, i32 13)482 ret i64 %0483}484 485define dso_local i32 @test_cmpsxadd32(ptr %__A, i32 %__B, i32 %__C) nounwind {486; CHECK-LABEL: test_cmpsxadd32:487; CHECK: # %bb.0: # %entry488; CHECK-NEXT: movl %esi, %eax # encoding: [0x89,0xf0]489; CHECK-NEXT: cmplexadd %edx, %eax, (%rdi) # encoding: [0xc4,0xe2,0x69,0xee,0x07]490; CHECK-NEXT: retq # encoding: [0xc3]491;492; EGPR-LABEL: test_cmpsxadd32:493; EGPR: # %bb.0: # %entry494; EGPR-NEXT: movl %esi, %eax # encoding: [0x89,0xf0]495; EGPR-NEXT: cmplexadd %edx, %eax, (%rdi) # EVEX TO VEX Compression encoding: [0xc4,0xe2,0x69,0xee,0x07]496; EGPR-NEXT: retq # encoding: [0xc3]497entry:498 %0 = tail call i32 @llvm.x86.cmpccxadd32(ptr %__A, i32 %__B, i32 %__C, i32 14)499 ret i32 %0500}501 502define dso_local i64 @test_cmpsxadd64(ptr %__A, i64 %__B, i64 %__C) nounwind {503; CHECK-LABEL: test_cmpsxadd64:504; CHECK: # %bb.0: # %entry505; CHECK-NEXT: movq %rsi, %rax # encoding: [0x48,0x89,0xf0]506; CHECK-NEXT: cmplexadd %rdx, %rax, (%rdi) # encoding: [0xc4,0xe2,0xe9,0xee,0x07]507; CHECK-NEXT: retq # encoding: [0xc3]508;509; EGPR-LABEL: test_cmpsxadd64:510; EGPR: # %bb.0: # %entry511; EGPR-NEXT: movq %rsi, %rax # encoding: [0x48,0x89,0xf0]512; EGPR-NEXT: cmplexadd %rdx, %rax, (%rdi) # EVEX TO VEX Compression encoding: [0xc4,0xe2,0xe9,0xee,0x07]513; EGPR-NEXT: retq # encoding: [0xc3]514entry:515 %0 = tail call i64 @llvm.x86.cmpccxadd64(ptr %__A, i64 %__B, i64 %__C, i32 14)516 ret i64 %0517}518 519define dso_local i32 @test_cmpexadd32(ptr %__A, i32 %__B, i32 %__C) nounwind {520; CHECK-LABEL: test_cmpexadd32:521; CHECK: # %bb.0: # %entry522; CHECK-NEXT: movl %esi, %eax # encoding: [0x89,0xf0]523; CHECK-NEXT: cmpgxadd %edx, %eax, (%rdi) # encoding: [0xc4,0xe2,0x69,0xef,0x07]524; CHECK-NEXT: retq # encoding: [0xc3]525;526; EGPR-LABEL: test_cmpexadd32:527; EGPR: # %bb.0: # %entry528; EGPR-NEXT: movl %esi, %eax # encoding: [0x89,0xf0]529; EGPR-NEXT: cmpgxadd %edx, %eax, (%rdi) # EVEX TO VEX Compression encoding: [0xc4,0xe2,0x69,0xef,0x07]530; EGPR-NEXT: retq # encoding: [0xc3]531entry:532 %0 = tail call i32 @llvm.x86.cmpccxadd32(ptr %__A, i32 %__B, i32 %__C, i32 15)533 ret i32 %0534}535 536define dso_local i64 @test_cmpexadd64(ptr %__A, i64 %__B, i64 %__C) nounwind {537; CHECK-LABEL: test_cmpexadd64:538; CHECK: # %bb.0: # %entry539; CHECK-NEXT: movq %rsi, %rax # encoding: [0x48,0x89,0xf0]540; CHECK-NEXT: cmpgxadd %rdx, %rax, (%rdi) # encoding: [0xc4,0xe2,0xe9,0xef,0x07]541; CHECK-NEXT: retq # encoding: [0xc3]542;543; EGPR-LABEL: test_cmpexadd64:544; EGPR: # %bb.0: # %entry545; EGPR-NEXT: movq %rsi, %rax # encoding: [0x48,0x89,0xf0]546; EGPR-NEXT: cmpgxadd %rdx, %rax, (%rdi) # EVEX TO VEX Compression encoding: [0xc4,0xe2,0xe9,0xef,0x07]547; EGPR-NEXT: retq # encoding: [0xc3]548entry:549 %0 = tail call i64 @llvm.x86.cmpccxadd64(ptr %__A, i64 %__B, i64 %__C, i32 15)550 ret i64 %0551}552