diff --git a/mlir/test/Conversion/StandardToLLVM/convert-to-llvmir.mlir b/mlir/test/Conversion/StandardToLLVM/convert-to-llvmir.mlir --- a/mlir/test/Conversion/StandardToLLVM/convert-to-llvmir.mlir +++ b/mlir/test/Conversion/StandardToLLVM/convert-to-llvmir.mlir @@ -1216,27 +1216,27 @@ // ----- // CHECK-LABEL: func @generic_atomic_rmw -func @generic_atomic_rmw(%I : memref<10xf32>, %i : index) -> f32 { - %x = generic_atomic_rmw %I[%i] : memref<10xf32> { - ^bb0(%old_value : f32): - %c1 = constant 1.0 : f32 - atomic_yield %c1 : f32 +func @generic_atomic_rmw(%I : memref<10xi32>, %i : index) -> i32 { + %x = generic_atomic_rmw %I[%i] : memref<10xi32> { + ^bb0(%old_value : i32): + %c1 = constant 1 : i32 + atomic_yield %c1 : i32 } - // CHECK: [[init:%.*]] = llvm.load %{{.*}} : !llvm.ptr - // CHECK-NEXT: llvm.br ^bb1([[init]] : !llvm.float) - // CHECK-NEXT: ^bb1([[loaded:%.*]]: !llvm.float): - // CHECK-NEXT: [[c1:%.*]] = llvm.mlir.constant(1.000000e+00 : f32) + // CHECK: [[init:%.*]] = llvm.load %{{.*}} : !llvm.ptr + // CHECK-NEXT: llvm.br ^bb1([[init]] : !llvm.i32) + // CHECK-NEXT: ^bb1([[loaded:%.*]]: !llvm.i32): + // CHECK-NEXT: [[c1:%.*]] = llvm.mlir.constant(1 : i32) // CHECK-NEXT: [[pair:%.*]] = llvm.cmpxchg %{{.*}}, [[loaded]], [[c1]] - // CHECK-SAME: acq_rel monotonic : !llvm.float + // CHECK-SAME: acq_rel monotonic : !llvm.i32 // CHECK-NEXT: [[new:%.*]] = llvm.extractvalue [[pair]][0] // CHECK-NEXT: [[ok:%.*]] = llvm.extractvalue [[pair]][1] - // CHECK-NEXT: llvm.cond_br [[ok]], ^bb2, ^bb1([[new]] : !llvm.float) + // CHECK-NEXT: llvm.cond_br [[ok]], ^bb2, ^bb1([[new]] : !llvm.i32) // CHECK-NEXT: ^bb2: - %c2 = constant 2.0 : f32 - %add = addf %c2, %x : f32 - return %add : f32 - // CHECK-NEXT: [[c2:%.*]] = llvm.mlir.constant(2.000000e+00 : f32) - // CHECK-NEXT: [[add:%.*]] = llvm.fadd [[c2]], [[new]] : !llvm.float + %c2 = constant 2 : i32 + %add = addi %c2, %x : i32 + return %add : i32 + // CHECK-NEXT: [[c2:%.*]] = llvm.mlir.constant(2 : i32) + // CHECK-NEXT: [[add:%.*]] = llvm.add [[c2]], [[new]] : !llvm.i32 // CHECK-NEXT: llvm.return [[add]] } diff --git a/mlir/test/Dialect/LLVMIR/invalid.mlir b/mlir/test/Dialect/LLVMIR/invalid.mlir --- a/mlir/test/Dialect/LLVMIR/invalid.mlir +++ b/mlir/test/Dialect/LLVMIR/invalid.mlir @@ -463,9 +463,9 @@ // ----- // CHECK-LABEL: @cmpxchg_mismatched_operands -func @cmpxchg_mismatched_operands(%f32_ptr : !llvm.ptr, %i32 : !llvm.i32) { +func @cmpxchg_mismatched_operands(%i64_ptr : !llvm.ptr, %i32 : !llvm.i32) { // expected-error@+1 {{expected LLVM IR element type for operand #0 to match type for all other operands}} - %0 = "llvm.cmpxchg"(%f32_ptr, %i32, %i32) {success_ordering=2,failure_ordering=2} : (!llvm.ptr, !llvm.i32, !llvm.i32) -> !llvm.struct<(i32, i1)> + %0 = "llvm.cmpxchg"(%i64_ptr, %i32, %i32) {success_ordering=2,failure_ordering=2} : (!llvm.ptr, !llvm.i32, !llvm.i32) -> !llvm.struct<(i32, i1)> llvm.return } diff --git a/mlir/test/Dialect/LLVMIR/roundtrip.mlir b/mlir/test/Dialect/LLVMIR/roundtrip.mlir --- a/mlir/test/Dialect/LLVMIR/roundtrip.mlir +++ b/mlir/test/Dialect/LLVMIR/roundtrip.mlir @@ -256,9 +256,9 @@ } // CHECK-LABEL: @cmpxchg -func @cmpxchg(%ptr : !llvm.ptr, %cmp : !llvm.float, %new : !llvm.float) { - // CHECK: llvm.cmpxchg %{{.*}}, %{{.*}}, %{{.*}} acq_rel monotonic : !llvm.float - %0 = llvm.cmpxchg %ptr, %cmp, %new acq_rel monotonic : !llvm.float +func @cmpxchg(%ptr : !llvm.ptr, %cmp : !llvm.i32, %new : !llvm.i32) { + // CHECK: llvm.cmpxchg %{{.*}}, %{{.*}}, %{{.*}} acq_rel monotonic : !llvm.i32 + %0 = llvm.cmpxchg %ptr, %cmp, %new acq_rel monotonic : !llvm.i32 llvm.return } diff --git a/mlir/test/Target/llvmir.mlir b/mlir/test/Target/llvmir.mlir --- a/mlir/test/Target/llvmir.mlir +++ b/mlir/test/Target/llvmir.mlir @@ -1139,13 +1139,13 @@ } // CHECK-LABEL: @cmpxchg -llvm.func @cmpxchg(%ptr : !llvm.ptr, %cmp : !llvm.float, %val: !llvm.float) { - // CHECK: cmpxchg float* %{{.*}}, float %{{.*}}, float %{{.*}} acq_rel monotonic - %0 = llvm.cmpxchg %ptr, %cmp, %val acq_rel monotonic : !llvm.float - // CHECK: %{{[0-9]+}} = extractvalue { float, i1 } %{{[0-9]+}}, 0 - %1 = llvm.extractvalue %0[0] : !llvm.struct<(float, i1)> - // CHECK: %{{[0-9]+}} = extractvalue { float, i1 } %{{[0-9]+}}, 1 - %2 = llvm.extractvalue %0[1] : !llvm.struct<(float, i1)> +llvm.func @cmpxchg(%ptr : !llvm.ptr, %cmp : !llvm.i32, %val: !llvm.i32) { + // CHECK: cmpxchg i32* %{{.*}}, i32 %{{.*}}, i32 %{{.*}} acq_rel monotonic + %0 = llvm.cmpxchg %ptr, %cmp, %val acq_rel monotonic : !llvm.i32 + // CHECK: %{{[0-9]+}} = extractvalue { i32, i1 } %{{[0-9]+}}, 0 + %1 = llvm.extractvalue %0[0] : !llvm.struct<(i32, i1)> + // CHECK: %{{[0-9]+}} = extractvalue { i32, i1 } %{{[0-9]+}}, 1 + %2 = llvm.extractvalue %0[1] : !llvm.struct<(i32, i1)> llvm.return }