; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py ; RUN: llc < %s -verify-machineinstrs -mtriple=x86_64-unknown-unknown --show-mc-encoding -mattr=+cmpccxadd | FileCheck %s ; RUN: llc < %s -verify-machineinstrs -mtriple=x86_64-unknown-unknown --show-mc-encoding -mattr=+cmpccxadd,+egpr | FileCheck %s --check-prefix=EGPR define dso_local i32 @test_cmpbexadd32(ptr %__A, i32 %__B, i32 %__C) nounwind { ; CHECK-LABEL: test_cmpbexadd32: ; CHECK: # %bb.0: # %entry ; CHECK-NEXT: movl %esi, %eax # encoding: [0x89,0xf0] ; CHECK-NEXT: cmpoxadd %edx, %eax, (%rdi) # encoding: [0xc4,0xe2,0x69,0xe0,0x07] ; CHECK-NEXT: retq # encoding: [0xc3] ; ; EGPR-LABEL: test_cmpbexadd32: ; EGPR: # %bb.0: # %entry ; EGPR-NEXT: movl %esi, %eax # encoding: [0x89,0xf0] ; EGPR-NEXT: cmpoxadd %edx, %eax, (%rdi) # EVEX TO VEX Compression encoding: [0xc4,0xe2,0x69,0xe0,0x07] ; EGPR-NEXT: retq # encoding: [0xc3] entry: %0 = tail call i32 @llvm.x86.cmpccxadd32(ptr %__A, i32 %__B, i32 %__C, i32 0) ret i32 %0 } declare i32 @llvm.x86.cmpccxadd32(ptr, i32, i32, i32 immarg) define dso_local i64 @test_cmpbexadd64(ptr %__A, i64 %__B, i64 %__C) nounwind { ; CHECK-LABEL: test_cmpbexadd64: ; CHECK: # %bb.0: # %entry ; CHECK-NEXT: movq %rsi, %rax # encoding: [0x48,0x89,0xf0] ; CHECK-NEXT: cmpoxadd %rdx, %rax, (%rdi) # encoding: [0xc4,0xe2,0xe9,0xe0,0x07] ; CHECK-NEXT: retq # encoding: [0xc3] ; ; EGPR-LABEL: test_cmpbexadd64: ; EGPR: # %bb.0: # %entry ; EGPR-NEXT: movq %rsi, %rax # encoding: [0x48,0x89,0xf0] ; EGPR-NEXT: cmpoxadd %rdx, %rax, (%rdi) # EVEX TO VEX Compression encoding: [0xc4,0xe2,0xe9,0xe0,0x07] ; EGPR-NEXT: retq # encoding: [0xc3] entry: %0 = tail call i64 @llvm.x86.cmpccxadd64(ptr %__A, i64 %__B, i64 %__C, i32 0) ret i64 %0 } declare i64 @llvm.x86.cmpccxadd64(ptr, i64, i64, i32 immarg) define dso_local i32 @test_cmpbxadd32(ptr %__A, i32 %__B, i32 %__C) nounwind { ; CHECK-LABEL: test_cmpbxadd32: ; CHECK: # %bb.0: # %entry ; CHECK-NEXT: movl %esi, %eax # encoding: [0x89,0xf0] ; CHECK-NEXT: cmpnoxadd %edx, %eax, (%rdi) # encoding: [0xc4,0xe2,0x69,0xe1,0x07] ; CHECK-NEXT: retq # encoding: [0xc3] ; ; EGPR-LABEL: test_cmpbxadd32: ; EGPR: # %bb.0: # %entry ; EGPR-NEXT: movl %esi, %eax # encoding: [0x89,0xf0] ; EGPR-NEXT: cmpnoxadd %edx, %eax, (%rdi) # EVEX TO VEX Compression encoding: [0xc4,0xe2,0x69,0xe1,0x07] ; EGPR-NEXT: retq # encoding: [0xc3] entry: %0 = tail call i32 @llvm.x86.cmpccxadd32(ptr %__A, i32 %__B, i32 %__C, i32 1) ret i32 %0 } define dso_local i64 @test_cmpbxadd64(ptr %__A, i64 %__B, i64 %__C) nounwind { ; CHECK-LABEL: test_cmpbxadd64: ; CHECK: # %bb.0: # %entry ; CHECK-NEXT: movq %rsi, %rax # encoding: [0x48,0x89,0xf0] ; CHECK-NEXT: cmpnoxadd %rdx, %rax, (%rdi) # encoding: [0xc4,0xe2,0xe9,0xe1,0x07] ; CHECK-NEXT: retq # encoding: [0xc3] ; ; EGPR-LABEL: test_cmpbxadd64: ; EGPR: # %bb.0: # %entry ; EGPR-NEXT: movq %rsi, %rax # encoding: [0x48,0x89,0xf0] ; EGPR-NEXT: cmpnoxadd %rdx, %rax, (%rdi) # EVEX TO VEX Compression encoding: [0xc4,0xe2,0xe9,0xe1,0x07] ; EGPR-NEXT: retq # encoding: [0xc3] entry: %0 = tail call i64 @llvm.x86.cmpccxadd64(ptr %__A, i64 %__B, i64 %__C, i32 1) ret i64 %0 } define dso_local i32 @test_cmplexadd32(ptr %__A, i32 %__B, i32 %__C) nounwind { ; CHECK-LABEL: test_cmplexadd32: ; CHECK: # %bb.0: # %entry ; CHECK-NEXT: movl %esi, %eax # encoding: [0x89,0xf0] ; CHECK-NEXT: cmpbxadd %edx, %eax, (%rdi) # encoding: [0xc4,0xe2,0x69,0xe2,0x07] ; CHECK-NEXT: retq # encoding: [0xc3] ; ; EGPR-LABEL: test_cmplexadd32: ; EGPR: # %bb.0: # %entry ; EGPR-NEXT: movl %esi, %eax # encoding: [0x89,0xf0] ; EGPR-NEXT: cmpbxadd %edx, %eax, (%rdi) # EVEX TO VEX Compression encoding: [0xc4,0xe2,0x69,0xe2,0x07] ; EGPR-NEXT: retq # encoding: [0xc3] entry: %0 = tail call i32 @llvm.x86.cmpccxadd32(ptr %__A, i32 %__B, i32 %__C, i32 2) ret i32 %0 } define dso_local i64 @test_cmplexadd64(ptr %__A, i64 %__B, i64 %__C) nounwind { ; CHECK-LABEL: test_cmplexadd64: ; CHECK: # %bb.0: # %entry ; CHECK-NEXT: movq %rsi, %rax # encoding: [0x48,0x89,0xf0] ; CHECK-NEXT: cmpbxadd %rdx, %rax, (%rdi) # encoding: [0xc4,0xe2,0xe9,0xe2,0x07] ; CHECK-NEXT: retq # encoding: [0xc3] ; ; EGPR-LABEL: test_cmplexadd64: ; EGPR: # %bb.0: # %entry ; EGPR-NEXT: movq %rsi, %rax # encoding: [0x48,0x89,0xf0] ; EGPR-NEXT: cmpbxadd %rdx, %rax, (%rdi) # EVEX TO VEX Compression encoding: [0xc4,0xe2,0xe9,0xe2,0x07] ; EGPR-NEXT: retq # encoding: [0xc3] entry: %0 = tail call i64 @llvm.x86.cmpccxadd64(ptr %__A, i64 %__B, i64 %__C, i32 2) ret i64 %0 } define dso_local i32 @test_cmplxadd32(ptr %__A, i32 %__B, i32 %__C) nounwind { ; CHECK-LABEL: test_cmplxadd32: ; CHECK: # %bb.0: # %entry ; CHECK-NEXT: movl %esi, %eax # encoding: [0x89,0xf0] ; CHECK-NEXT: cmpaexadd %edx, %eax, (%rdi) # encoding: [0xc4,0xe2,0x69,0xe3,0x07] ; CHECK-NEXT: retq # encoding: [0xc3] ; ; EGPR-LABEL: test_cmplxadd32: ; EGPR: # %bb.0: # %entry ; EGPR-NEXT: movl %esi, %eax # encoding: [0x89,0xf0] ; EGPR-NEXT: cmpaexadd %edx, %eax, (%rdi) # EVEX TO VEX Compression encoding: [0xc4,0xe2,0x69,0xe3,0x07] ; EGPR-NEXT: retq # encoding: [0xc3] entry: %0 = tail call i32 @llvm.x86.cmpccxadd32(ptr %__A, i32 %__B, i32 %__C, i32 3) ret i32 %0 } define dso_local i64 @test_cmplxadd64(ptr %__A, i64 %__B, i64 %__C) nounwind { ; CHECK-LABEL: test_cmplxadd64: ; CHECK: # %bb.0: # %entry ; CHECK-NEXT: movq %rsi, %rax # encoding: [0x48,0x89,0xf0] ; CHECK-NEXT: cmpaexadd %rdx, %rax, (%rdi) # encoding: [0xc4,0xe2,0xe9,0xe3,0x07] ; CHECK-NEXT: retq # encoding: [0xc3] ; ; EGPR-LABEL: test_cmplxadd64: ; EGPR: # %bb.0: # %entry ; EGPR-NEXT: movq %rsi, %rax # encoding: [0x48,0x89,0xf0] ; EGPR-NEXT: cmpaexadd %rdx, %rax, (%rdi) # EVEX TO VEX Compression encoding: [0xc4,0xe2,0xe9,0xe3,0x07] ; EGPR-NEXT: retq # encoding: [0xc3] entry: %0 = tail call i64 @llvm.x86.cmpccxadd64(ptr %__A, i64 %__B, i64 %__C, i32 3) ret i64 %0 } define dso_local i32 @test_cmpaxadd32(ptr %__A, i32 %__B, i32 %__C) nounwind { ; CHECK-LABEL: test_cmpaxadd32: ; CHECK: # %bb.0: # %entry ; CHECK-NEXT: movl %esi, %eax # encoding: [0x89,0xf0] ; CHECK-NEXT: cmpexadd %edx, %eax, (%rdi) # encoding: [0xc4,0xe2,0x69,0xe4,0x07] ; CHECK-NEXT: retq # encoding: [0xc3] ; ; EGPR-LABEL: test_cmpaxadd32: ; EGPR: # %bb.0: # %entry ; EGPR-NEXT: movl %esi, %eax # encoding: [0x89,0xf0] ; EGPR-NEXT: cmpexadd %edx, %eax, (%rdi) # EVEX TO VEX Compression encoding: [0xc4,0xe2,0x69,0xe4,0x07] ; EGPR-NEXT: retq # encoding: [0xc3] entry: %0 = tail call i32 @llvm.x86.cmpccxadd32(ptr %__A, i32 %__B, i32 %__C, i32 4) ret i32 %0 } define dso_local i64 @test_cmpaxadd64(ptr %__A, i64 %__B, i64 %__C) nounwind { ; CHECK-LABEL: test_cmpaxadd64: ; CHECK: # %bb.0: # %entry ; CHECK-NEXT: movq %rsi, %rax # encoding: [0x48,0x89,0xf0] ; CHECK-NEXT: cmpexadd %rdx, %rax, (%rdi) # encoding: [0xc4,0xe2,0xe9,0xe4,0x07] ; CHECK-NEXT: retq # encoding: [0xc3] ; ; EGPR-LABEL: test_cmpaxadd64: ; EGPR: # %bb.0: # %entry ; EGPR-NEXT: movq %rsi, %rax # encoding: [0x48,0x89,0xf0] ; EGPR-NEXT: cmpexadd %rdx, %rax, (%rdi) # EVEX TO VEX Compression encoding: [0xc4,0xe2,0xe9,0xe4,0x07] ; EGPR-NEXT: retq # encoding: [0xc3] entry: %0 = tail call i64 @llvm.x86.cmpccxadd64(ptr %__A, i64 %__B, i64 %__C, i32 4) ret i64 %0 } define dso_local i32 @test_cmpaexadd32(ptr %__A, i32 %__B, i32 %__C) nounwind { ; CHECK-LABEL: test_cmpaexadd32: ; CHECK: # %bb.0: # %entry ; CHECK-NEXT: movl %esi, %eax # encoding: [0x89,0xf0] ; CHECK-NEXT: cmpnexadd %edx, %eax, (%rdi) # encoding: [0xc4,0xe2,0x69,0xe5,0x07] ; CHECK-NEXT: retq # encoding: [0xc3] ; ; EGPR-LABEL: test_cmpaexadd32: ; EGPR: # %bb.0: # %entry ; EGPR-NEXT: movl %esi, %eax # encoding: [0x89,0xf0] ; EGPR-NEXT: cmpnexadd %edx, %eax, (%rdi) # EVEX TO VEX Compression encoding: [0xc4,0xe2,0x69,0xe5,0x07] ; EGPR-NEXT: retq # encoding: [0xc3] entry: %0 = tail call i32 @llvm.x86.cmpccxadd32(ptr %__A, i32 %__B, i32 %__C, i32 5) ret i32 %0 } define dso_local i64 @test_cmpaexadd64(ptr %__A, i64 %__B, i64 %__C) nounwind { ; CHECK-LABEL: test_cmpaexadd64: ; CHECK: # %bb.0: # %entry ; CHECK-NEXT: movq %rsi, %rax # encoding: [0x48,0x89,0xf0] ; CHECK-NEXT: cmpnexadd %rdx, %rax, (%rdi) # encoding: [0xc4,0xe2,0xe9,0xe5,0x07] ; CHECK-NEXT: retq # encoding: [0xc3] ; ; EGPR-LABEL: test_cmpaexadd64: ; EGPR: # %bb.0: # %entry ; EGPR-NEXT: movq %rsi, %rax # encoding: [0x48,0x89,0xf0] ; EGPR-NEXT: cmpnexadd %rdx, %rax, (%rdi) # EVEX TO VEX Compression encoding: [0xc4,0xe2,0xe9,0xe5,0x07] ; EGPR-NEXT: retq # encoding: [0xc3] entry: %0 = tail call i64 @llvm.x86.cmpccxadd64(ptr %__A, i64 %__B, i64 %__C, i32 5) ret i64 %0 } define dso_local i32 @test_cmpgxadd32(ptr %__A, i32 %__B, i32 %__C) nounwind { ; CHECK-LABEL: test_cmpgxadd32: ; CHECK: # %bb.0: # %entry ; CHECK-NEXT: movl %esi, %eax # encoding: [0x89,0xf0] ; CHECK-NEXT: cmpbexadd %edx, %eax, (%rdi) # encoding: [0xc4,0xe2,0x69,0xe6,0x07] ; CHECK-NEXT: retq # encoding: [0xc3] ; ; EGPR-LABEL: test_cmpgxadd32: ; EGPR: # %bb.0: # %entry ; EGPR-NEXT: movl %esi, %eax # encoding: [0x89,0xf0] ; EGPR-NEXT: cmpbexadd %edx, %eax, (%rdi) # EVEX TO VEX Compression encoding: [0xc4,0xe2,0x69,0xe6,0x07] ; EGPR-NEXT: retq # encoding: [0xc3] entry: %0 = tail call i32 @llvm.x86.cmpccxadd32(ptr %__A, i32 %__B, i32 %__C, i32 6) ret i32 %0 } define dso_local i64 @test_cmpgxadd64(ptr %__A, i64 %__B, i64 %__C) nounwind { ; CHECK-LABEL: test_cmpgxadd64: ; CHECK: # %bb.0: # %entry ; CHECK-NEXT: movq %rsi, %rax # encoding: [0x48,0x89,0xf0] ; CHECK-NEXT: cmpbexadd %rdx, %rax, (%rdi) # encoding: [0xc4,0xe2,0xe9,0xe6,0x07] ; CHECK-NEXT: retq # encoding: [0xc3] ; ; EGPR-LABEL: test_cmpgxadd64: ; EGPR: # %bb.0: # %entry ; EGPR-NEXT: movq %rsi, %rax # encoding: [0x48,0x89,0xf0] ; EGPR-NEXT: cmpbexadd %rdx, %rax, (%rdi) # EVEX TO VEX Compression encoding: [0xc4,0xe2,0xe9,0xe6,0x07] ; EGPR-NEXT: retq # encoding: [0xc3] entry: %0 = tail call i64 @llvm.x86.cmpccxadd64(ptr %__A, i64 %__B, i64 %__C, i32 6) ret i64 %0 } define dso_local i32 @test_cmpgexadd32(ptr %__A, i32 %__B, i32 %__C) nounwind { ; CHECK-LABEL: test_cmpgexadd32: ; CHECK: # %bb.0: # %entry ; CHECK-NEXT: movl %esi, %eax # encoding: [0x89,0xf0] ; CHECK-NEXT: cmpaxadd %edx, %eax, (%rdi) # encoding: [0xc4,0xe2,0x69,0xe7,0x07] ; CHECK-NEXT: retq # encoding: [0xc3] ; ; EGPR-LABEL: test_cmpgexadd32: ; EGPR: # %bb.0: # %entry ; EGPR-NEXT: movl %esi, %eax # encoding: [0x89,0xf0] ; EGPR-NEXT: cmpaxadd %edx, %eax, (%rdi) # EVEX TO VEX Compression encoding: [0xc4,0xe2,0x69,0xe7,0x07] ; EGPR-NEXT: retq # encoding: [0xc3] entry: %0 = tail call i32 @llvm.x86.cmpccxadd32(ptr %__A, i32 %__B, i32 %__C, i32 7) ret i32 %0 } define dso_local i64 @test_cmpgexadd64(ptr %__A, i64 %__B, i64 %__C) nounwind { ; CHECK-LABEL: test_cmpgexadd64: ; CHECK: # %bb.0: # %entry ; CHECK-NEXT: movq %rsi, %rax # encoding: [0x48,0x89,0xf0] ; CHECK-NEXT: cmpaxadd %rdx, %rax, (%rdi) # encoding: [0xc4,0xe2,0xe9,0xe7,0x07] ; CHECK-NEXT: retq # encoding: [0xc3] ; ; EGPR-LABEL: test_cmpgexadd64: ; EGPR: # %bb.0: # %entry ; EGPR-NEXT: movq %rsi, %rax # encoding: [0x48,0x89,0xf0] ; EGPR-NEXT: cmpaxadd %rdx, %rax, (%rdi) # EVEX TO VEX Compression encoding: [0xc4,0xe2,0xe9,0xe7,0x07] ; EGPR-NEXT: retq # encoding: [0xc3] entry: %0 = tail call i64 @llvm.x86.cmpccxadd64(ptr %__A, i64 %__B, i64 %__C, i32 7) ret i64 %0 } define dso_local i32 @test_cmpnoxadd32(ptr %__A, i32 %__B, i32 %__C) nounwind { ; CHECK-LABEL: test_cmpnoxadd32: ; CHECK: # %bb.0: # %entry ; CHECK-NEXT: movl %esi, %eax # encoding: [0x89,0xf0] ; CHECK-NEXT: cmpsxadd %edx, %eax, (%rdi) # encoding: [0xc4,0xe2,0x69,0xe8,0x07] ; CHECK-NEXT: retq # encoding: [0xc3] ; ; EGPR-LABEL: test_cmpnoxadd32: ; EGPR: # %bb.0: # %entry ; EGPR-NEXT: movl %esi, %eax # encoding: [0x89,0xf0] ; EGPR-NEXT: cmpsxadd %edx, %eax, (%rdi) # EVEX TO VEX Compression encoding: [0xc4,0xe2,0x69,0xe8,0x07] ; EGPR-NEXT: retq # encoding: [0xc3] entry: %0 = tail call i32 @llvm.x86.cmpccxadd32(ptr %__A, i32 %__B, i32 %__C, i32 8) ret i32 %0 } define dso_local i64 @test_cmpnoxadd64(ptr %__A, i64 %__B, i64 %__C) nounwind { ; CHECK-LABEL: test_cmpnoxadd64: ; CHECK: # %bb.0: # %entry ; CHECK-NEXT: movq %rsi, %rax # encoding: [0x48,0x89,0xf0] ; CHECK-NEXT: cmpsxadd %rdx, %rax, (%rdi) # encoding: [0xc4,0xe2,0xe9,0xe8,0x07] ; CHECK-NEXT: retq # encoding: [0xc3] ; ; EGPR-LABEL: test_cmpnoxadd64: ; EGPR: # %bb.0: # %entry ; EGPR-NEXT: movq %rsi, %rax # encoding: [0x48,0x89,0xf0] ; EGPR-NEXT: cmpsxadd %rdx, %rax, (%rdi) # EVEX TO VEX Compression encoding: [0xc4,0xe2,0xe9,0xe8,0x07] ; EGPR-NEXT: retq # encoding: [0xc3] entry: %0 = tail call i64 @llvm.x86.cmpccxadd64(ptr %__A, i64 %__B, i64 %__C, i32 8) ret i64 %0 } define dso_local i32 @test_cmpnpxadd32(ptr %__A, i32 %__B, i32 %__C) nounwind { ; CHECK-LABEL: test_cmpnpxadd32: ; CHECK: # %bb.0: # %entry ; CHECK-NEXT: movl %esi, %eax # encoding: [0x89,0xf0] ; CHECK-NEXT: cmpnsxadd %edx, %eax, (%rdi) # encoding: [0xc4,0xe2,0x69,0xe9,0x07] ; CHECK-NEXT: retq # encoding: [0xc3] ; ; EGPR-LABEL: test_cmpnpxadd32: ; EGPR: # %bb.0: # %entry ; EGPR-NEXT: movl %esi, %eax # encoding: [0x89,0xf0] ; EGPR-NEXT: cmpnsxadd %edx, %eax, (%rdi) # EVEX TO VEX Compression encoding: [0xc4,0xe2,0x69,0xe9,0x07] ; EGPR-NEXT: retq # encoding: [0xc3] entry: %0 = tail call i32 @llvm.x86.cmpccxadd32(ptr %__A, i32 %__B, i32 %__C, i32 9) ret i32 %0 } define dso_local i64 @test_cmpnpxadd64(ptr %__A, i64 %__B, i64 %__C) nounwind { ; CHECK-LABEL: test_cmpnpxadd64: ; CHECK: # %bb.0: # %entry ; CHECK-NEXT: movq %rsi, %rax # encoding: [0x48,0x89,0xf0] ; CHECK-NEXT: cmpnsxadd %rdx, %rax, (%rdi) # encoding: [0xc4,0xe2,0xe9,0xe9,0x07] ; CHECK-NEXT: retq # encoding: [0xc3] ; ; EGPR-LABEL: test_cmpnpxadd64: ; EGPR: # %bb.0: # %entry ; EGPR-NEXT: movq %rsi, %rax # encoding: [0x48,0x89,0xf0] ; EGPR-NEXT: cmpnsxadd %rdx, %rax, (%rdi) # EVEX TO VEX Compression encoding: [0xc4,0xe2,0xe9,0xe9,0x07] ; EGPR-NEXT: retq # encoding: [0xc3] entry: %0 = tail call i64 @llvm.x86.cmpccxadd64(ptr %__A, i64 %__B, i64 %__C, i32 9) ret i64 %0 } define dso_local i32 @test_cmpnsxadd32(ptr %__A, i32 %__B, i32 %__C) nounwind { ; CHECK-LABEL: test_cmpnsxadd32: ; CHECK: # %bb.0: # %entry ; CHECK-NEXT: movl %esi, %eax # encoding: [0x89,0xf0] ; CHECK-NEXT: cmppxadd %edx, %eax, (%rdi) # encoding: [0xc4,0xe2,0x69,0xea,0x07] ; CHECK-NEXT: retq # encoding: [0xc3] ; ; EGPR-LABEL: test_cmpnsxadd32: ; EGPR: # %bb.0: # %entry ; EGPR-NEXT: movl %esi, %eax # encoding: [0x89,0xf0] ; EGPR-NEXT: cmppxadd %edx, %eax, (%rdi) # EVEX TO VEX Compression encoding: [0xc4,0xe2,0x69,0xea,0x07] ; EGPR-NEXT: retq # encoding: [0xc3] entry: %0 = tail call i32 @llvm.x86.cmpccxadd32(ptr %__A, i32 %__B, i32 %__C, i32 10) ret i32 %0 } define dso_local i64 @test_cmpnsxadd64(ptr %__A, i64 %__B, i64 %__C) nounwind { ; CHECK-LABEL: test_cmpnsxadd64: ; CHECK: # %bb.0: # %entry ; CHECK-NEXT: movq %rsi, %rax # encoding: [0x48,0x89,0xf0] ; CHECK-NEXT: cmppxadd %rdx, %rax, (%rdi) # encoding: [0xc4,0xe2,0xe9,0xea,0x07] ; CHECK-NEXT: retq # encoding: [0xc3] ; ; EGPR-LABEL: test_cmpnsxadd64: ; EGPR: # %bb.0: # %entry ; EGPR-NEXT: movq %rsi, %rax # encoding: [0x48,0x89,0xf0] ; EGPR-NEXT: cmppxadd %rdx, %rax, (%rdi) # EVEX TO VEX Compression encoding: [0xc4,0xe2,0xe9,0xea,0x07] ; EGPR-NEXT: retq # encoding: [0xc3] entry: %0 = tail call i64 @llvm.x86.cmpccxadd64(ptr %__A, i64 %__B, i64 %__C, i32 10) ret i64 %0 } define dso_local i32 @test_cmpnexadd32(ptr %__A, i32 %__B, i32 %__C) nounwind { ; CHECK-LABEL: test_cmpnexadd32: ; CHECK: # %bb.0: # %entry ; CHECK-NEXT: movl %esi, %eax # encoding: [0x89,0xf0] ; CHECK-NEXT: cmpnpxadd %edx, %eax, (%rdi) # encoding: [0xc4,0xe2,0x69,0xeb,0x07] ; CHECK-NEXT: retq # encoding: [0xc3] ; ; EGPR-LABEL: test_cmpnexadd32: ; EGPR: # %bb.0: # %entry ; EGPR-NEXT: movl %esi, %eax # encoding: [0x89,0xf0] ; EGPR-NEXT: cmpnpxadd %edx, %eax, (%rdi) # EVEX TO VEX Compression encoding: [0xc4,0xe2,0x69,0xeb,0x07] ; EGPR-NEXT: retq # encoding: [0xc3] entry: %0 = tail call i32 @llvm.x86.cmpccxadd32(ptr %__A, i32 %__B, i32 %__C, i32 11) ret i32 %0 } define dso_local i64 @test_cmpnexadd64(ptr %__A, i64 %__B, i64 %__C) nounwind { ; CHECK-LABEL: test_cmpnexadd64: ; CHECK: # %bb.0: # %entry ; CHECK-NEXT: movq %rsi, %rax # encoding: [0x48,0x89,0xf0] ; CHECK-NEXT: cmpnpxadd %rdx, %rax, (%rdi) # encoding: [0xc4,0xe2,0xe9,0xeb,0x07] ; CHECK-NEXT: retq # encoding: [0xc3] ; ; EGPR-LABEL: test_cmpnexadd64: ; EGPR: # %bb.0: # %entry ; EGPR-NEXT: movq %rsi, %rax # encoding: [0x48,0x89,0xf0] ; EGPR-NEXT: cmpnpxadd %rdx, %rax, (%rdi) # EVEX TO VEX Compression encoding: [0xc4,0xe2,0xe9,0xeb,0x07] ; EGPR-NEXT: retq # encoding: [0xc3] entry: %0 = tail call i64 @llvm.x86.cmpccxadd64(ptr %__A, i64 %__B, i64 %__C, i32 11) ret i64 %0 } define dso_local i32 @test_cmpoxadd32(ptr %__A, i32 %__B, i32 %__C) nounwind { ; CHECK-LABEL: test_cmpoxadd32: ; CHECK: # %bb.0: # %entry ; CHECK-NEXT: movl %esi, %eax # encoding: [0x89,0xf0] ; CHECK-NEXT: cmplxadd %edx, %eax, (%rdi) # encoding: [0xc4,0xe2,0x69,0xec,0x07] ; CHECK-NEXT: retq # encoding: [0xc3] ; ; EGPR-LABEL: test_cmpoxadd32: ; EGPR: # %bb.0: # %entry ; EGPR-NEXT: movl %esi, %eax # encoding: [0x89,0xf0] ; EGPR-NEXT: cmplxadd %edx, %eax, (%rdi) # EVEX TO VEX Compression encoding: [0xc4,0xe2,0x69,0xec,0x07] ; EGPR-NEXT: retq # encoding: [0xc3] entry: %0 = tail call i32 @llvm.x86.cmpccxadd32(ptr %__A, i32 %__B, i32 %__C, i32 12) ret i32 %0 } define dso_local i64 @test_cmpoxadd64(ptr %__A, i64 %__B, i64 %__C) nounwind { ; CHECK-LABEL: test_cmpoxadd64: ; CHECK: # %bb.0: # %entry ; CHECK-NEXT: movq %rsi, %rax # encoding: [0x48,0x89,0xf0] ; CHECK-NEXT: cmplxadd %rdx, %rax, (%rdi) # encoding: [0xc4,0xe2,0xe9,0xec,0x07] ; CHECK-NEXT: retq # encoding: [0xc3] ; ; EGPR-LABEL: test_cmpoxadd64: ; EGPR: # %bb.0: # %entry ; EGPR-NEXT: movq %rsi, %rax # encoding: [0x48,0x89,0xf0] ; EGPR-NEXT: cmplxadd %rdx, %rax, (%rdi) # EVEX TO VEX Compression encoding: [0xc4,0xe2,0xe9,0xec,0x07] ; EGPR-NEXT: retq # encoding: [0xc3] entry: %0 = tail call i64 @llvm.x86.cmpccxadd64(ptr %__A, i64 %__B, i64 %__C, i32 12) ret i64 %0 } define dso_local i32 @test_cmppxadd32(ptr %__A, i32 %__B, i32 %__C) nounwind { ; CHECK-LABEL: test_cmppxadd32: ; CHECK: # %bb.0: # %entry ; CHECK-NEXT: movl %esi, %eax # encoding: [0x89,0xf0] ; CHECK-NEXT: cmpgexadd %edx, %eax, (%rdi) # encoding: [0xc4,0xe2,0x69,0xed,0x07] ; CHECK-NEXT: retq # encoding: [0xc3] ; ; EGPR-LABEL: test_cmppxadd32: ; EGPR: # %bb.0: # %entry ; EGPR-NEXT: movl %esi, %eax # encoding: [0x89,0xf0] ; EGPR-NEXT: cmpgexadd %edx, %eax, (%rdi) # EVEX TO VEX Compression encoding: [0xc4,0xe2,0x69,0xed,0x07] ; EGPR-NEXT: retq # encoding: [0xc3] entry: %0 = tail call i32 @llvm.x86.cmpccxadd32(ptr %__A, i32 %__B, i32 %__C, i32 13) ret i32 %0 } define dso_local i64 @test_cmppxadd64(ptr %__A, i64 %__B, i64 %__C) nounwind { ; CHECK-LABEL: test_cmppxadd64: ; CHECK: # %bb.0: # %entry ; CHECK-NEXT: movq %rsi, %rax # encoding: [0x48,0x89,0xf0] ; CHECK-NEXT: cmpgexadd %rdx, %rax, (%rdi) # encoding: [0xc4,0xe2,0xe9,0xed,0x07] ; CHECK-NEXT: retq # encoding: [0xc3] ; ; EGPR-LABEL: test_cmppxadd64: ; EGPR: # %bb.0: # %entry ; EGPR-NEXT: movq %rsi, %rax # encoding: [0x48,0x89,0xf0] ; EGPR-NEXT: cmpgexadd %rdx, %rax, (%rdi) # EVEX TO VEX Compression encoding: [0xc4,0xe2,0xe9,0xed,0x07] ; EGPR-NEXT: retq # encoding: [0xc3] entry: %0 = tail call i64 @llvm.x86.cmpccxadd64(ptr %__A, i64 %__B, i64 %__C, i32 13) ret i64 %0 } define dso_local i32 @test_cmpsxadd32(ptr %__A, i32 %__B, i32 %__C) nounwind { ; CHECK-LABEL: test_cmpsxadd32: ; CHECK: # %bb.0: # %entry ; CHECK-NEXT: movl %esi, %eax # encoding: [0x89,0xf0] ; CHECK-NEXT: cmplexadd %edx, %eax, (%rdi) # encoding: [0xc4,0xe2,0x69,0xee,0x07] ; CHECK-NEXT: retq # encoding: [0xc3] ; ; EGPR-LABEL: test_cmpsxadd32: ; EGPR: # %bb.0: # %entry ; EGPR-NEXT: movl %esi, %eax # encoding: [0x89,0xf0] ; EGPR-NEXT: cmplexadd %edx, %eax, (%rdi) # EVEX TO VEX Compression encoding: [0xc4,0xe2,0x69,0xee,0x07] ; EGPR-NEXT: retq # encoding: [0xc3] entry: %0 = tail call i32 @llvm.x86.cmpccxadd32(ptr %__A, i32 %__B, i32 %__C, i32 14) ret i32 %0 } define dso_local i64 @test_cmpsxadd64(ptr %__A, i64 %__B, i64 %__C) nounwind { ; CHECK-LABEL: test_cmpsxadd64: ; CHECK: # %bb.0: # %entry ; CHECK-NEXT: movq %rsi, %rax # encoding: [0x48,0x89,0xf0] ; CHECK-NEXT: cmplexadd %rdx, %rax, (%rdi) # encoding: [0xc4,0xe2,0xe9,0xee,0x07] ; CHECK-NEXT: retq # encoding: [0xc3] ; ; EGPR-LABEL: test_cmpsxadd64: ; EGPR: # %bb.0: # %entry ; EGPR-NEXT: movq %rsi, %rax # encoding: [0x48,0x89,0xf0] ; EGPR-NEXT: cmplexadd %rdx, %rax, (%rdi) # EVEX TO VEX Compression encoding: [0xc4,0xe2,0xe9,0xee,0x07] ; EGPR-NEXT: retq # encoding: [0xc3] entry: %0 = tail call i64 @llvm.x86.cmpccxadd64(ptr %__A, i64 %__B, i64 %__C, i32 14) ret i64 %0 } define dso_local i32 @test_cmpexadd32(ptr %__A, i32 %__B, i32 %__C) nounwind { ; CHECK-LABEL: test_cmpexadd32: ; CHECK: # %bb.0: # %entry ; CHECK-NEXT: movl %esi, %eax # encoding: [0x89,0xf0] ; CHECK-NEXT: cmpgxadd %edx, %eax, (%rdi) # encoding: [0xc4,0xe2,0x69,0xef,0x07] ; CHECK-NEXT: retq # encoding: [0xc3] ; ; EGPR-LABEL: test_cmpexadd32: ; EGPR: # %bb.0: # %entry ; EGPR-NEXT: movl %esi, %eax # encoding: [0x89,0xf0] ; EGPR-NEXT: cmpgxadd %edx, %eax, (%rdi) # EVEX TO VEX Compression encoding: [0xc4,0xe2,0x69,0xef,0x07] ; EGPR-NEXT: retq # encoding: [0xc3] entry: %0 = tail call i32 @llvm.x86.cmpccxadd32(ptr %__A, i32 %__B, i32 %__C, i32 15) ret i32 %0 } define dso_local i64 @test_cmpexadd64(ptr %__A, i64 %__B, i64 %__C) nounwind { ; CHECK-LABEL: test_cmpexadd64: ; CHECK: # %bb.0: # %entry ; CHECK-NEXT: movq %rsi, %rax # encoding: [0x48,0x89,0xf0] ; CHECK-NEXT: cmpgxadd %rdx, %rax, (%rdi) # encoding: [0xc4,0xe2,0xe9,0xef,0x07] ; CHECK-NEXT: retq # encoding: [0xc3] ; ; EGPR-LABEL: test_cmpexadd64: ; EGPR: # %bb.0: # %entry ; EGPR-NEXT: movq %rsi, %rax # encoding: [0x48,0x89,0xf0] ; EGPR-NEXT: cmpgxadd %rdx, %rax, (%rdi) # EVEX TO VEX Compression encoding: [0xc4,0xe2,0xe9,0xef,0x07] ; EGPR-NEXT: retq # encoding: [0xc3] entry: %0 = tail call i64 @llvm.x86.cmpccxadd64(ptr %__A, i64 %__B, i64 %__C, i32 15) ret i64 %0 }