brintos

brintos / llvm-project-archived public Read only

0
0
Text · 7.0 KiB · eb02884 Raw
149 lines · plain
1// Test hlfir.assign operation parse, verify (no errors), and unparse.2 3// RUN: fir-opt %s | fir-opt | FileCheck %s4 5func.func @scalar_logical(%arg0: !fir.ref<!fir.logical<1>>, %arg1: !fir.ref<!fir.logical<1>>) {6  hlfir.assign %arg1 to %arg0 : !fir.ref<!fir.logical<1>>, !fir.ref<!fir.logical<1>>7  return8}9// CHECK-LABEL:   func.func @scalar_logical(10// CHECK-SAME:    %[[VAL_0:.*]]: !fir.ref<!fir.logical<1>>,11// CHECK-SAME:    %[[VAL_1:.*]]: !fir.ref<!fir.logical<1>>) {12// CHECK:  hlfir.assign %[[VAL_1]] to %[[VAL_0]] : !fir.ref<!fir.logical<1>>, !fir.ref<!fir.logical<1>>13 14func.func @scalar_logical_2(%arg0: !fir.ref<!fir.logical<1>>, %arg1: i1) {15  hlfir.assign %arg1 to %arg0 : i1, !fir.ref<!fir.logical<1>>16  return17}18// CHECK-LABEL:   func.func @scalar_logical_2(19// CHECK-SAME:    %[[VAL_0:.*]]: !fir.ref<!fir.logical<1>>,20// CHECK-SAME:    %[[VAL_1:.*]]: i1) {21// CHECK:  hlfir.assign %[[VAL_1]] to %[[VAL_0]] : i1, !fir.ref<!fir.logical<1>>22 23func.func @scalar_integer(%arg0: !fir.ref<i32>, %arg1: !fir.ref<i32>) {24  hlfir.assign %arg1 to %arg0 : !fir.ref<i32>, !fir.ref<i32>25  return26}27// CHECK-LABEL:   func.func @scalar_integer(28// CHECK-SAME:    %[[VAL_0:.*]]: !fir.ref<i32>,29// CHECK-SAME:    %[[VAL_1:.*]]: !fir.ref<i32>) {30// CHECK:  hlfir.assign %[[VAL_1]] to %[[VAL_0]] : !fir.ref<i32>, !fir.ref<i32>31 32func.func @scalar_integer_2(%arg0: !fir.ref<i32>, %arg1: i32) {33  hlfir.assign %arg1 to %arg0 : i32, !fir.ref<i32>34  return35}36// CHECK-LABEL:   func.func @scalar_integer_2(37// CHECK-SAME:    %[[VAL_0:.*]]: !fir.ref<i32>,38// CHECK-SAME:    %[[VAL_1:.*]]: i32) {39// CHECK:  hlfir.assign %[[VAL_1]] to %[[VAL_0]] : i32, !fir.ref<i32>40 41func.func @scalar_real(%arg0: !fir.ref<f16>, %arg1: !fir.ref<f16>) {42  hlfir.assign %arg1 to %arg0 : !fir.ref<f16>, !fir.ref<f16>43  return44}45// CHECK-LABEL:   func.func @scalar_real(46// CHECK-SAME:    %[[VAL_0:.*]]: !fir.ref<f16>,47// CHECK-SAME:    %[[VAL_1:.*]]: !fir.ref<f16>) {48// CHECK:  hlfir.assign %[[VAL_1]] to %[[VAL_0]] : !fir.ref<f16>, !fir.ref<f16>49 50func.func @scalar_complex(%arg0: !fir.ref<complex<f64>>, %arg1: !fir.ref<complex<f64>>) {51  hlfir.assign %arg1 to %arg0 : !fir.ref<complex<f64>>, !fir.ref<complex<f64>>52  return53}54// CHECK-LABEL:   func.func @scalar_complex(55// CHECK-SAME:    %[[VAL_0:.*]]: !fir.ref<complex<f64>>,56// CHECK-SAME:    %[[VAL_1:.*]]: !fir.ref<complex<f64>>) {57// CHECK:  hlfir.assign %[[VAL_1]] to %[[VAL_0]] : !fir.ref<complex<f64>>, !fir.ref<complex<f64>>58 59func.func @scalar_complex_2(%arg0: !fir.ref<complex<f64>>, %arg1: complex<f64>) {60  hlfir.assign %arg1 to %arg0 : complex<f64>, !fir.ref<complex<f64>>61  return62}63// CHECK-LABEL:   func.func @scalar_complex_2(64// CHECK-SAME:    %[[VAL_0:.*]]: !fir.ref<complex<f64>>,65// CHECK-SAME:    %[[VAL_1:.*]]: complex<f64>) {66// CHECK:  hlfir.assign %[[VAL_1]] to %[[VAL_0]] : complex<f64>, !fir.ref<complex<f64>>67 68 69func.func @scalar_character(%arg0: !fir.boxchar<1>, %arg1: !fir.boxchar<1>) {70  hlfir.assign %arg1 to %arg0 : !fir.boxchar<1>, !fir.boxchar<1>71  return72}73// CHECK-LABEL:   func.func @scalar_character(74// CHECK-SAME:    %[[VAL_0:.*]]: !fir.boxchar<1>,75// CHECK-SAME:    %[[VAL_1:.*]]: !fir.boxchar<1>) {76// CHECK:  hlfir.assign %[[VAL_1]] to %[[VAL_0]] : !fir.boxchar<1>, !fir.boxchar<1>77 78func.func @scalar_character_2(%arg0: !fir.ref<!fir.char<1,32>>, %arg1: !fir.ref<!fir.char<1,64>>) {79  hlfir.assign %arg1 to %arg0 : !fir.ref<!fir.char<1,64>>, !fir.ref<!fir.char<1,32>>80  return81}82// CHECK-LABEL:   func.func @scalar_character_2(83// CHECK-SAME:    %[[VAL_0:.*]]: !fir.ref<!fir.char<1,32>>,84// CHECK-SAME:    %[[VAL_1:.*]]: !fir.ref<!fir.char<1,64>>) {85// CHECK:  hlfir.assign %[[VAL_1]] to %[[VAL_0]] : !fir.ref<!fir.char<1,64>>, !fir.ref<!fir.char<1,32>>86 87func.func @scalar_character_3(%arg0: !fir.boxchar<1>, %arg1: !hlfir.expr<!fir.char<1,?>>) {88  hlfir.assign %arg1 to %arg0 : !hlfir.expr<!fir.char<1,?>>, !fir.boxchar<1>89  return90}91// CHECK-LABEL:   func.func @scalar_character_3(92// CHECK-SAME:    %[[VAL_0:.*]]: !fir.boxchar<1>,93// CHECK-SAME:    %[[VAL_1:.*]]: !hlfir.expr<!fir.char<1,?>>) {94// CHECK:  hlfir.assign %[[VAL_1]] to %[[VAL_0]] : !hlfir.expr<!fir.char<1,?>>, !fir.boxchar<1>95 96func.func @array(%arg0: !fir.ref<!fir.array<10xi32>>, %arg1: i32) {97  hlfir.assign %arg1 to %arg0 : i32, !fir.ref<!fir.array<10xi32>>98  return99}100// CHECK-LABEL:   func.func @array(101// CHECK-SAME:    %[[VAL_0:.*]]: !fir.ref<!fir.array<10xi32>>,102// CHECK-SAME:    %[[VAL_1:.*]]: i32) {103// CHECK:  hlfir.assign %[[VAL_1]] to %[[VAL_0]] : i32, !fir.ref<!fir.array<10xi32>>104 105func.func @array_2(%arg0: !fir.ref<!fir.array<10xi32>>, %arg1: !hlfir.expr<?xi32>) {106  hlfir.assign %arg1 to %arg0 : !hlfir.expr<?xi32>, !fir.ref<!fir.array<10xi32>>107  return108}109// CHECK-LABEL:   func.func @array_2(110// CHECK-SAME:    %[[VAL_0:.*]]: !fir.ref<!fir.array<10xi32>>,111// CHECK-SAME:    %[[VAL_1:.*]]: !hlfir.expr<?xi32>) {112// CHECK:  hlfir.assign %[[VAL_1]] to %[[VAL_0]] : !hlfir.expr<?xi32>, !fir.ref<!fir.array<10xi32>>113 114func.func @array_3(%arg0: !fir.box<!fir.array<?xi32>>, %arg1: !hlfir.expr<?xi32>) {115  hlfir.assign %arg1 to %arg0 : !hlfir.expr<?xi32>, !fir.box<!fir.array<?xi32>>116  return117}118// CHECK-LABEL:   func.func @array_3(119// CHECK-SAME:    %[[VAL_0:.*]]: !fir.box<!fir.array<?xi32>>,120// CHECK-SAME:    %[[VAL_1:.*]]: !hlfir.expr<?xi32>) {121// CHECK:  hlfir.assign %[[VAL_1]] to %[[VAL_0]] : !hlfir.expr<?xi32>, !fir.box<!fir.array<?xi32>>122 123func.func @array_4(%arg0: !fir.box<!fir.array<?xi32>>, %arg1: !fir.box<!fir.array<?xi32>>) {124  hlfir.assign %arg1 to %arg0 : !fir.box<!fir.array<?xi32>>, !fir.box<!fir.array<?xi32>>125  return126}127// CHECK-LABEL:   func.func @array_4(128// CHECK-SAME:    %[[VAL_0:.*]]: !fir.box<!fir.array<?xi32>>,129// CHECK-SAME:    %[[VAL_1:.*]]: !fir.box<!fir.array<?xi32>>) {130// CHECK:  hlfir.assign %[[VAL_1]] to %[[VAL_0]] : !fir.box<!fir.array<?xi32>>, !fir.box<!fir.array<?xi32>>131 132func.func @alloc_assign(%arg0: !fir.ref<!fir.box<!fir.heap<!fir.array<?xi32>>>>, %arg1: !fir.box<!fir.array<?xi32>>) {133  hlfir.assign %arg1 to %arg0 realloc : !fir.box<!fir.array<?xi32>>, !fir.ref<!fir.box<!fir.heap<!fir.array<?xi32>>>>134  return135}136// CHECK-LABEL:   func.func @alloc_assign(137// CHECK-SAME:    %[[VAL_0:.*]]: !fir.ref<!fir.box<!fir.heap<!fir.array<?xi32>>>>,138// CHECK-SAME:    %[[VAL_1:.*]]: !fir.box<!fir.array<?xi32>>) {139// CHECK:  hlfir.assign %[[VAL_1]] to %[[VAL_0]] realloc : !fir.box<!fir.array<?xi32>>, !fir.ref<!fir.box<!fir.heap<!fir.array<?xi32>>>>140 141func.func @alloc_assign_keep_lhs_len(%arg0: !fir.ref<!fir.box<!fir.heap<!fir.array<?x!fir.char<1,?>>>>>, %arg1: !fir.box<!fir.array<?x!fir.char<1,?>>>) {142  hlfir.assign %arg1 to %arg0 realloc keep_lhs_len : !fir.box<!fir.array<?x!fir.char<1,?>>>, !fir.ref<!fir.box<!fir.heap<!fir.array<?x!fir.char<1,?>>>>>143  return144}145// CHECK-LABEL:   func.func @alloc_assign_keep_lhs_len(146// CHECK-SAME:    %[[VAL_0:.*]]: !fir.ref<!fir.box<!fir.heap<!fir.array<?x!fir.char<1,?>>>>>,147// CHECK-SAME:    %[[VAL_1:.*]]: !fir.box<!fir.array<?x!fir.char<1,?>>>) {148// CHECK:  hlfir.assign %[[VAL_1]] to %[[VAL_0]] realloc keep_lhs_len : !fir.box<!fir.array<?x!fir.char<1,?>>>, !fir.ref<!fir.box<!fir.heap<!fir.array<?x!fir.char<1,?>>>>>149