@@ -64,6 +64,26 @@ func.func @expression_with_call(%arg0: i32, %arg1: i32, %arg2: i32, %arg3: i32)
6464 return %c : i1
6565}
6666
67+ // CHECK-LABEL: func.func @expression_with_dereference(
68+ // CHECK-SAME: %[[VAL_0:.*]]: i32, %[[VAL_1:.*]]: i32, %[[VAL_2:.*]]: !emitc.ptr<i32>) -> i1 {
69+ // CHECK: %[[VAL_3:.*]] = emitc.expression : i32 {
70+ // CHECK: %[[VAL_4:.*]] = emitc.apply "*"(%[[VAL_2]]) : (!emitc.ptr<i32>) -> i32
71+ // CHECK: emitc.yield %[[VAL_4]] : i32
72+ // CHECK: }
73+ // CHECK: %[[VAL_5:.*]] = emitc.expression : i1 {
74+ // CHECK: %[[VAL_6:.*]] = emitc.mul %[[VAL_0]], %[[VAL_1]] : (i32, i32) -> i32
75+ // CHECK: %[[VAL_7:.*]] = emitc.cmp lt, %[[VAL_6]], %[[VAL_3]] : (i32, i32) -> i1
76+ // CHECK: return %[[VAL_5]] : i1
77+ // CHECK: }
78+
79+ func.func @expression_with_dereference (%arg0: i32 , %arg1: i32 , %arg2: !emitc.ptr <i32 >) -> i1 {
80+ %a = emitc.mul %arg0 , %arg1 : (i32 , i32 ) -> i32
81+ %b = emitc.apply " *" (%arg2 ) : (!emitc.ptr <i32 >) -> (i32 )
82+ %c = emitc.cmp lt , %a , %b :(i32 , i32 ) -> i1
83+ return %c : i1
84+ }
85+
86+
6787// CHECK-LABEL: func.func @expression_with_address_taken(
6888// CHECK-SAME: %[[VAL_0:.*]]: i32, %[[VAL_1:.*]]: i32, %[[VAL_2:.*]]: !emitc.ptr<i32>, %[[VAL_3:.*]]: !emitc.lvalue<i32>) -> i1 {
6989// CHECK: %[[VAL_4:.*]] = emitc.expression : i1 {
0 commit comments